debug: Additional compiler barriers for backtrace tests [BZ #20956]
authorFlorian Weimer <fweimer@redhat.com>
Sat, 10 Dec 2016 20:16:57 +0000 (21:16 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Sat, 10 Dec 2016 20:16:57 +0000 (21:16 +0100)
The new test framework changed the call stacks.  The weak attribute
acts as a strong compiler barrier.  Some static functions had to be
declared extern as a consequence.

ChangeLog
debug/tst-backtrace.h
debug/tst-backtrace2.c
debug/tst-backtrace3.c
debug/tst-backtrace4.c
debug/tst-backtrace5.c

index 5d51e9a..4d31f4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2016-12-10  Florian Weimer  <fweimer@redhat.com>
+
+       [BZ #20956]
+       * debug/tst-backtrace.h (NO_INLINE): Add noclone, weak attributes
+       as additional compiler barriers.
+       * debug/tst-backtrace2.c: Switch to <support/test-driver.c>.
+       (fn2, do_test): Declare with external linkage.
+       * debug/tst-backtrace3.c: Switch to <support/test-driver.c>.
+       (do_test): Declare with external linkage.
+       * debug/tst-backtrace4.c: Switch to <support/test-driver.c>.
+       (do_test): Declare with external linkage.
+       * debug/tst-backtrace5.c: Switch to <support/test-driver.c>.
+       (do_test): Declare with external linkage.
+
 2016-12-10  Andreas Schwab  <schwab@linux-m68k.org>
 
        * support/support_test_main.c (support_test_main): Use correct
index 1a53048..6a4b200 100644 (file)
@@ -33,7 +33,7 @@ volatile int x;
 
 /* Use this attribute to prevent inlining, so that all expected frames
    are present.  */
-#define NO_INLINE __attribute__ ((noinline))
+#define NO_INLINE __attribute__ ((noinline, noclone, weak))
 
 /* Look for a match in SYM from backtrace_symbols to NAME, a fragment
    of a function name.  Ignore the filename before '(', but presume
index d139c10..4224b55 100644 (file)
 
 #include "tst-backtrace.h"
 
-static int do_test (void);
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
 /* The backtrace should include at least f1, f2, f3, and do_test.  */
 #define NUM_FUNCTIONS 4
 
@@ -75,7 +71,7 @@ fn1 (void)
      check do_test.  */
 }
 
-NO_INLINE static int
+NO_INLINE int
 fn2 (void)
 {
   fn1 ();
@@ -91,7 +87,7 @@ fn3 (void)
   return x;
 }
 
-NO_INLINE static int
+NO_INLINE int
 do_test (void)
 {
   /* Test BZ #18084.  */
@@ -103,3 +99,5 @@ do_test (void)
   fn3 ();
   return ret;
 }
+
+#include <support/test-driver.c>
index 74514d7..f3135f2 100644 (file)
 
 #include "tst-backtrace.h"
 
-static int do_test (void);
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
 /* The backtrace should include at least 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 4
 
@@ -75,9 +71,11 @@ fn (int c)
   return x;
 }
 
-NO_INLINE static int
+NO_INLINE int
 do_test (void)
 {
   fn (2);
   return ret;
 }
+
+#include <support/test-driver.c>
index 965e6bd..db2be10 100644 (file)
 
 #include "tst-backtrace.h"
 
-static int do_test (void);
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
 /* The backtrace should include at least handle_signal, a signal
    trampoline, 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 6
@@ -115,9 +111,11 @@ fn (int c)
   return 0;
 }
 
-NO_INLINE static int
+NO_INLINE int
 do_test (void)
 {
   fn (2);
   return ret;
 }
+
+#include <support/test-driver.c>
index c049bca..a6ed474 100644 (file)
 # define SIGACTION_FLAGS 0
 #endif
 
-static int do_test (void);
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
 /* The backtrace should include at least handle_signal, a signal
    trampoline, read, 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 7
@@ -133,9 +129,11 @@ fn (int c, int flags)
   return 0;
 }
 
-NO_INLINE static int
+NO_INLINE int
 do_test (void)
 {
   fn (2, SIGACTION_FLAGS);
   return ret;
 }
+
+#include <support/test-driver.c>