diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ChangeLog | 6 | ||||
| -rw-r--r-- | tests/backtrace-subr.sh | 12 | ||||
| -rw-r--r-- | tests/backtrace.c | 30 |
3 files changed, 17 insertions, 31 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index c4e76d15..32dc48c8 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2017-04-24 Mark Wielaard <[email protected]> + + * backtrace.c: Remove option to allow unknown symbols in the trace. + * backtrace-substr.sh: Remove option to allow unknown symbols + to check_core() and allow failed symbol lookups in check_err(). + 2017-04-20 Ulf Hermann <[email protected]> * run-readelf-dwz-multi.sh: Expect readelf to output "yes" for flags diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh index 5d3937c2..e746dc19 100644 --- a/tests/backtrace-subr.sh +++ b/tests/backtrace-subr.sh @@ -44,9 +44,6 @@ check_gsignal() # In some cases we cannot reliably find out we got behind _start as some # operating system do not properly terminate CFI by undefined PC. # Ignore it here as it is a bug of OS, not a bug of elfutils. -# If the CFI is not terminated correctly, we might find another frame by -# checking for frame pointers. This is still not our problem, but only -# gives an error message when trying to look up the function name. check_err() { if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range|address out of range)$' \ @@ -64,9 +61,7 @@ check_all() bt=$1 err=$2 testname=$3 - if [ "x$4" != "x--allow-unknown" ]; then - check_main $bt $testname - fi + check_main $bt $testname check_gsignal $bt $testname check_err $err $testname } @@ -103,14 +98,13 @@ check_native_unsupported() check_core() { arch=$1 - args=$2 testfiles backtrace.$arch.{exec,core} tempfiles backtrace.$arch.{bt,err} echo ./backtrace ./backtrace.$arch.{exec,core} - testrun ${abs_builddir}/backtrace $args -e ./backtrace.$arch.exec --core=./backtrace.$arch.core 1>backtrace.$arch.bt 2>backtrace.$arch.err || true + testrun ${abs_builddir}/backtrace -e ./backtrace.$arch.exec --core=./backtrace.$arch.core 1>backtrace.$arch.bt 2>backtrace.$arch.err || true cat backtrace.$arch.{bt,err} check_unsupported backtrace.$arch.err backtrace.$arch.core - check_all backtrace.$arch.{bt,err} backtrace.$arch.core $args + check_all backtrace.$arch.{bt,err} backtrace.$arch.core } # Backtrace live process. diff --git a/tests/backtrace.c b/tests/backtrace.c index 34a2ab0b..1ff6353c 100644 --- a/tests/backtrace.c +++ b/tests/backtrace.c @@ -64,7 +64,6 @@ dump_modules (Dwfl_Module *mod, void **userdata __attribute__ ((unused)), return DWARF_CB_OK; } -static bool allow_unknown; static bool use_raise_jmp_patching; static pid_t check_tid; @@ -79,8 +78,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, seen_main = true; if (pc == 0) { - if (!allow_unknown) - assert (seen_main); + assert (seen_main); return; } if (check_tid == 0) @@ -105,12 +103,11 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, && (strcmp (symname, "__kernel_vsyscall") == 0 || strcmp (symname, "__libc_do_syscall") == 0)) reduce_frameno = true; - else if (!allow_unknown || symname) + else assert (symname && strcmp (symname, "raise") == 0); break; case 1: - if (!allow_unknown || symname) - assert (symname != NULL && strcmp (symname, "sigusr2") == 0); + assert (symname != NULL && strcmp (symname, "sigusr2") == 0); break; case 2: // x86_64 only /* __restore_rt - glibc maybe does not have to have this symbol. */ @@ -119,24 +116,20 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, if (use_raise_jmp_patching) { /* Verify we trapped on the very first instruction of jmp. */ - if (!allow_unknown || symname) - assert (symname != NULL && strcmp (symname, "jmp") == 0); + assert (symname != NULL && strcmp (symname, "jmp") == 0); mod = dwfl_addrmodule (dwfl, pc - 1); if (mod) symname2 = dwfl_module_addrname (mod, pc - 1); - if (!allow_unknown || symname2) - assert (symname2 == NULL || strcmp (symname2, "jmp") != 0); + assert (symname2 == NULL || strcmp (symname2, "jmp") != 0); break; } /* FALLTHRU */ case 4: - if (!allow_unknown || symname) - assert (symname != NULL && strcmp (symname, "stdarg") == 0); + assert (symname != NULL && strcmp (symname, "stdarg") == 0); break; case 5: /* Verify we trapped on the very last instruction of child. */ - if (!allow_unknown || symname) - assert (symname != NULL && strcmp (symname, "backtracegen") == 0); + assert (symname != NULL && strcmp (symname, "backtracegen") == 0); mod = dwfl_addrmodule (dwfl, pc); if (mod) symname2 = dwfl_module_addrname (mod, pc); @@ -145,7 +138,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, // there is no guarantee that the compiler doesn't reorder the // instructions or even inserts some padding instructions at the end // (which apparently happens on ppc64). - if (use_raise_jmp_patching && (!allow_unknown || symname2)) + if (use_raise_jmp_patching) assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0); break; } @@ -431,12 +424,10 @@ exec_dump (const char *exec) } #define OPT_BACKTRACE_EXEC 0x100 -#define OPT_ALLOW_UNKNOWN 0x200 static const struct argp_option options[] = { { "backtrace-exec", OPT_BACKTRACE_EXEC, "EXEC", 0, N_("Run executable"), 0 }, - { "allow-unknown", OPT_ALLOW_UNKNOWN, 0, 0, N_("Allow unknown symbols"), 0 }, { NULL, 0, NULL, 0, NULL, 0 } }; @@ -454,10 +445,6 @@ parse_opt (int key, char *arg, struct argp_state *state) exec_dump (arg); exit (0); - case OPT_ALLOW_UNKNOWN: - allow_unknown = true; - break; - default: return ARGP_ERR_UNKNOWN; } @@ -476,7 +463,6 @@ main (int argc __attribute__ ((unused)), char **argv) (void) setlocale (LC_ALL, ""); elf_version (EV_CURRENT); - allow_unknown = false; Dwfl *dwfl = NULL; const struct argp_child argp_children[] = |
