]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Analysis/make-it-work for arm-linux.
authorJulian Seward <jseward@acm.org>
Mon, 4 Jan 2010 12:10:24 +0000 (12:10 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 4 Jan 2010 12:10:24 +0000 (12:10 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11014

memcheck/tests/partiallydefinedeq.c
memcheck/tests/partiallydefinedeq.stderr.exp2

index 888240ea486a79b757b3dee8ac60db3d026dea0e..7d63126cbaf97cc0f79ea43a09125cd33a3c2bc3 100644 (file)
@@ -57,9 +57,16 @@ int main ( void )
 // Note: on ppc32/64 the second call to foo() does give an error,
 // since the expensive EQ/NE scheme does not apply to the CmpORD
 // primops used by ppc.
-static void bar ( void )
+//
+// On arm, the "normal" (x86-like) comparison primops are used, so
+// the expensive EQ/NE scheme could apply.  However, it doesn't,
+// because the constant 0x80808080 is placed in a constant pool
+// and so never appears as a literal, and so the instrumenter
+// never spots it and so doesn't use the expensive scheme (for foo).
+// Hence also on ARM we get 3 errors, not 2.
+static __attribute__((noinline)) void bar ( void )
 {
-#if defined(__powerpc__) || defined(__powerpc64__)
-  fprintf(stderr, "Currently running on ppc32/64: this test should give 3 errors, not 2.\n");
+#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__)
+  fprintf(stderr, "Currently running on ppc32/64/arm: this test should give 3 errors, not 2.\n");
 #endif
 }
index 3b81c251bc3c907cc0b848de5d2339e4e00dbafd..19b46ae8c5ab9194dded696e0d197735ee455e28 100644 (file)
@@ -1,5 +1,5 @@
 
-Currently running on ppc32/64: this test should give 3 errors, not 2.
+Currently running on ppc32/64/arm: this test should give 3 errors, not 2.
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: foo (partiallydefinedeq.c:15)
    by 0x........: main (partiallydefinedeq.c:37)
@@ -22,4 +22,3 @@ For a detailed leak analysis, rerun with: --leak-check=full
 For counts of detected and suppressed errors, rerun with: -v
 Use --track-origins=yes to see where uninitialised values come from
 ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
-