mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-12 14:21:18 +08:00
debug: Additional compiler barriers for backtrace tests [BZ #20956]
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.
This commit is contained in:
parent
fea34d51e0
commit
341657bc9c
14
ChangeLog
14
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
|
||||
|
@ -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
|
||||
|
@ -24,10 +24,6 @@
|
||||
|
||||
#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>
|
||||
|
@ -24,10 +24,6 @@
|
||||
|
||||
#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>
|
||||
|
@ -27,10 +27,6 @@
|
||||
|
||||
#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>
|
||||
|
@ -32,10 +32,6 @@
|
||||
# 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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user