Index: /trunk/src/VBox/Runtime/testcase/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Runtime/testcase/Makefile.kmk	(revision 31374)
+++ /trunk/src/VBox/Runtime/testcase/Makefile.kmk	(revision 31375)
@@ -124,10 +124,6 @@
 	tstRTProcIsRunningByName \
 	tstRTBitOperationsPIC3 \
+	tstInlineAsmPIC \
 	tstInlineAsmPIC3
-if1of ($(USERNAME), umoeller)
-else
-PROGRAMS.linux += \
-	tstInlineAsmPIC
-endif
 PROGRAMS.l4 += \
 	tstIoCtl
Index: /trunk/src/VBox/Runtime/testcase/tstInlineAsm.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstInlineAsm.cpp	(revision 31374)
+++ /trunk/src/VBox/Runtime/testcase/tstInlineAsm.cpp	(revision 31375)
@@ -30,5 +30,15 @@
 #include <iprt/asm.h>
 #include <iprt/asm-math.h>
-#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
+
+/* See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44018. Only gcc version 4.4
+ * is affected. No harm for the VBox code: If the cpuid code compiles, it works
+ * fine. */
+#if defined(__GNUC__) && defined(RT_ARCH_X86) && defined(__PIC__)
+# if __GNUC__ == 4 && __GNUC_MINOR__ == 4
+#  define GCC44_32BIT_PIC
+# endif
+#endif
+
+#if !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
 # include <iprt/asm-amd64-x86.h>
 #else
@@ -69,5 +79,5 @@
 
 
-#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
+#if !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
 
 const char *getCacheAss(unsigned u)
@@ -166,4 +176,6 @@
     for (unsigned iStd = 0; iStd <= cFunctions + 3; iStd++)
     {
+        if (iStd == 4)
+            continue; /* Leaf 04 output depends on the initial value of ECX */
         ASMCpuId(iStd, &s.uEAX, &s.uEBX, &s.uECX, &s.uEDX);
         RTPrintf("%08x  %08x %08x %08x %08x%s\n",
@@ -1226,5 +1238,5 @@
     RTPrintf("tstInlineASM: Benchmarking:\n");
 
-#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
+#if !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
 # define BENCH(op, str) \
     do { \
@@ -1321,5 +1333,5 @@
      * Execute the tests.
      */
-#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
+#if !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
     tstASMCpuId();
 #endif
