From 0fe69a94d4c4793d7247442e0611e5d3b8f542f5 Mon Sep 17 00:00:00 2001 From: Markus Metzger Date: Fri, 4 Dec 2020 10:29:06 +0100 Subject: [PATCH] testsuite, gdb.btrace: fix 32-bit PIE false positives For 32-bit position independent executables, GCC generates an extra call to __x86.get_pc_thunk. which appears in the function call history. It is correct to appear there but this confuses the tests, which check for an expected sequence of functions. Build with nopie to avoid this complication. gdb/testsuite/ChangeLog: 2020-12-04 Markus Metzger * gdb.btrace/exception.exp: Build with nopie. * gdb.btrace/function_call_history.exp: Likewise. * gdb.btrace/unknown_functions.exp: Likewise. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.btrace/exception.exp | 5 ++++- gdb/testsuite/gdb.btrace/function_call_history.exp | 4 +++- gdb/testsuite/gdb.btrace/unknown_functions.exp | 9 ++++++--- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4a6d48e2af7..2c0633d1fc2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-12-21 Markus Metzger + + * gdb.btrace/exception.exp: Build with nopie. + * gdb.btrace/function_call_history.exp: Likewise. + * gdb.btrace/unknown_functions.exp: Likewise. + 2020-12-21 Markus Metzger * gdb.btrace/multi-inferior.exp: Skip if use_gdb_stub. diff --git a/gdb/testsuite/gdb.btrace/exception.exp b/gdb/testsuite/gdb.btrace/exception.exp index 0d242227938..dc1a68cdb68 100755 --- a/gdb/testsuite/gdb.btrace/exception.exp +++ b/gdb/testsuite/gdb.btrace/exception.exp @@ -22,8 +22,11 @@ if { [skip_btrace_tests] } { return -1 } +# We expect a specific function call history. This gets messed up with +# PIE on 32-bit. standard_testfile exception.cc -if [prepare_for_testing "failed to prepare" $testfile $srcfile {c++ debug}] { +if [prepare_for_testing "failed to prepare" $testfile $srcfile \ + {nopie c++ debug}] { return -1 } diff --git a/gdb/testsuite/gdb.btrace/function_call_history.exp b/gdb/testsuite/gdb.btrace/function_call_history.exp index 51536ff6035..871d37ba031 100644 --- a/gdb/testsuite/gdb.btrace/function_call_history.exp +++ b/gdb/testsuite/gdb.btrace/function_call_history.exp @@ -22,8 +22,10 @@ if { [skip_btrace_tests] } { return -1 } +# We expect a specific function call history. This gets messed up with +# PIE on 32-bit. standard_testfile -if [prepare_for_testing "failed to prepare" $testfile {} {debug}] { +if [prepare_for_testing "failed to prepare" $testfile {} {nopie debug}] { return -1 } diff --git a/gdb/testsuite/gdb.btrace/unknown_functions.exp b/gdb/testsuite/gdb.btrace/unknown_functions.exp index 4db9c70f496..beb1acaedee 100644 --- a/gdb/testsuite/gdb.btrace/unknown_functions.exp +++ b/gdb/testsuite/gdb.btrace/unknown_functions.exp @@ -24,9 +24,12 @@ if { [skip_btrace_tests] } { standard_testfile -# discard local symbols -set ldflags "additional_flags=-Wl,-x" -if [prepare_for_testing "failed to prepare" $testfile $srcfile $ldflags] { +# We expect a specific function call history. This gets messed up with +# PIE on 32-bit. +# +# Also discard local symbols. +if [prepare_for_testing "failed to prepare" $testfile $srcfile \ + {additional_flags=-Wl,-x nopie}] { return -1 } -- 2.30.2