gdb, testsuite: enforce lazy binding for gdb.btrace/rn-dl-bind.exp
authorMarkus Metzger <markus.t.metzger@intel.com>
Wed, 13 Jan 2021 15:41:43 +0000 (16:41 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Wed, 3 Mar 2021 08:18:58 +0000 (09:18 +0100)
In gdb.btrace/rn-dl-bind.exp we test that we can reverse-step over
recorded dynamic linking.  The test covers specific behaviour to support
_dl_runtime_resolve calling the resolved function by returning to it.
This would normally mess up stepping as we'd end up with backtraces that
contain the same functions but different frame ids.

Since GDB needs to recognize a return from _dl_runtime_resolve, the test
only passes when debug information for _dl_runtime_resolve is available.

The test requires that symbols are bound lazily.  Otherwise, we won't
record dynamic linking and the test will be fairly pointless.

Recent GCC pass -z now by default to bind symbols eagerly.  Add -z lazy to
the test's ldflags to enforce lazy binding.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.btrace/rn-dl-bind.exp

index 970d6fef727b50d84478e25dd9fe887391739c0f..e861ec1129ddae61e4d4998d3dab9a2c5f88205c 100644 (file)
@@ -1,3 +1,7 @@
+2021-03-03  Markus Metzger  <markus.t.metzger@intel.com>
+
+       * gdb.btrace/rn-dl-bind.exp: Add ldflags=-Wl,-z,lazy.
+
 2021-03-03  Markus Metzger  <markus.t.metzger@intel.com>
 
        * gdb.btrace/non-stop.exp: Adjust expected source lines.
index 65e445334af4176a0218fcbe67ccb254e7a813ac..204e88093a44171774c5f1f3ed3c98d80c49fdd4 100644 (file)
@@ -27,7 +27,8 @@ if { [skip_btrace_tests] } {
 }
 
 standard_testfile
-if [prepare_for_testing "failed to prepare" $testfile $srcfile {c++ debug}] {
+if [prepare_for_testing "failed to prepare" $testfile $srcfile \
+       {c++ debug ldflags=-Wl,-z,lazy}] {
     return -1
 }