From 0b7c7473b9ffaf5128acc40d53685e1c8bd5de73 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 30 Dec 2013 10:31:19 +0000 Subject: [PATCH] tst-backtrace4: expand output even on failures When debugging failures in this test, it's helpful to see as much output as possible. So rather than returning immediately, let the code run as far as it can. We still mark failures as soon as they happen. Signed-off-by: Mike Frysinger --- ChangeLog | 5 +++++ debug/tst-backtrace4.c | 15 ++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8e06921..73d38ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2014-02-08 Mike Frysinger + * debug/tst-backtrace4.c (handle_signal): Add NUM_FUNCTIONS to output. + Only return early when n is <= 0. Delete unused return statement. + +2014-02-08 Mike Frysinger + * debug/Makefile (CFLAGS-tst-longjmp_chk3.c): Define. (CPPFLAGS-tst-longjmp_chk3.c): Likewise. * debug/tst-longjmp_chk3.c: New file. diff --git a/debug/tst-backtrace4.c b/debug/tst-backtrace4.c index a98775a..26fbdd0 100644 --- a/debug/tst-backtrace4.c +++ b/debug/tst-backtrace4.c @@ -49,12 +49,16 @@ handle_signal (int signum) /* Get the backtrace addresses. */ n = backtrace (addresses, sizeof (addresses) / sizeof (addresses[0])); - printf ("Obtained backtrace with %d functions\n", n); - /* Check that there are at least six functions. */ + printf ("Obtained backtrace with %d functions (but wanted at least %d)\n", + n, NUM_FUNCTIONS); + /* Check that there are at least six functions. */ if (n < NUM_FUNCTIONS) { FAIL (); - return; + /* Only return if we got no symbols at all. The partial output is + still useful for debugging failures. */ + if (n <= 0) + return; } /* Convert them to symbols. */ symbols = backtrace_symbols (addresses, n); @@ -68,10 +72,7 @@ handle_signal (int signum) printf ("Function %d: %s\n", i, symbols[i]); /* Check that the function names obtained are accurate. */ if (!match (symbols[0], "handle_signal")) - { - FAIL (); - return; - } + FAIL (); /* Do not check name for signal trampoline. */ for (i = 2; i < n - 1; i++) if (!match (symbols[i], "fn")) -- 2.7.4