testsuite, gdb.btrace: fix 32-bit PIE false positives
authorMarkus Metzger <markus.t.metzger@intel.com>
Fri, 4 Dec 2020 09:29:06 +0000 (10:29 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Mon, 21 Dec 2020 08:00:28 +0000 (09:00 +0100)
For 32-bit position independent executables, GCC generates an extra call to

    __x86.get_pc_thunk.<reg>

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  <markus.t.metzger@intel.com>

* gdb.btrace/exception.exp: Build with nopie.
* gdb.btrace/function_call_history.exp: Likewise.
* gdb.btrace/unknown_functions.exp: Likewise.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.btrace/exception.exp
gdb/testsuite/gdb.btrace/function_call_history.exp
gdb/testsuite/gdb.btrace/unknown_functions.exp

index 4a6d48e2af700e475a4f44cd154574d56116220b..2c0633d1fc22e76196a75f609e47d6bfd58863dc 100644 (file)
@@ -1,3 +1,9 @@
+2020-12-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+       * 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  <markus.t.metzger@intel.com>
 
        * gdb.btrace/multi-inferior.exp: Skip if use_gdb_stub.
index 0d242227938886fd8ab8d800437f6ca3e5e7eee6..dc1a68cdb68084c4c127bd430dabdd3aaaa66b3b 100755 (executable)
@@ -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
 }
 
index 51536ff60353b38f01bdf60ca256cb0c36526e78..871d37ba0315fb76af473f5df5d7a53c0446ccc3 100644 (file)
@@ -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
 }
 
index 4db9c70f4966ad207be8a3c4c8b5b88e451e877a..beb1acaedee6ca03a5557e31d58648a76e735cf7 100644 (file)
@@ -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
 }