+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
/* 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
#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
check do_test. */
}
-NO_INLINE static int
+NO_INLINE int
fn2 (void)
{
fn1 ();
return x;
}
-NO_INLINE static int
+NO_INLINE int
do_test (void)
{
/* Test BZ #18084. */
fn3 ();
return ret;
}
+
+#include <support/test-driver.c>
#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
return x;
}
-NO_INLINE static int
+NO_INLINE int
do_test (void)
{
fn (2);
return ret;
}
+
+#include <support/test-driver.c>
#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
return 0;
}
-NO_INLINE static int
+NO_INLINE int
do_test (void)
{
fn (2);
return ret;
}
+
+#include <support/test-driver.c>
# 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
return 0;
}
-NO_INLINE static int
+NO_INLINE int
do_test (void)
{
fn (2, SIGACTION_FLAGS);
return ret;
}
+
+#include <support/test-driver.c>