diff options
author | Tom de Vries <tdevries@suse.de> | 2021-07-14 11:37:19 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-07-14 11:37:19 +0200 |
commit | be36c6e3374821fe5699556bbfa2280e3a4696df (patch) | |
tree | e09ee12055e325b11b3569badf38ecc2deb9e36d /gdb | |
parent | 90d7916ac136613b8118f6429c3436664a700a2e (diff) | |
download | binutils-gdb-be36c6e3374821fe5699556bbfa2280e3a4696df.tar.gz |
[gdb/testsuite] Fix gdb.base/gold-gdb-index.exp
When running test-case gdb.base/gold-gdb-index.exp on openSUSE Tumbleweed,
I run into:
...
FAIL: gdb.base/gold-gdb-index.exp: maint info symtabs
...
This is due to a dummy .gdb_index:
...
Contents of the .gdb_index section:
Version 7
CU table:
TU table:
Address table:
Symbol table:
...
The dummy .gdb_index is ignored when loading the symbols, and instead partial
symbols are used. Consequently, we get the same result as if we'd removed
-Wl,--gdb-index from the compilation.
Presumably, gold fails to generate a proper .gdb_index because it lacks
DWARF5 support.
Anyway, without a proper .gdb_index we can't test the gdb behaviour we're
trying to excercise. Fix this by detecting whether we actually used a
.gdb_index for symbol loading.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2021-07-14 Tom de Vries <tdevries@suse.de>
* lib/gdb.exp (have_index): New proc.
* gdb.base/gold-gdb-index.exp: Use have_index.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/gdb.base/gold-gdb-index.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/gold-gdb-index.exp b/gdb/testsuite/gdb.base/gold-gdb-index.exp index 2a6da322dfd..1af756ac0ec 100644 --- a/gdb/testsuite/gdb.base/gold-gdb-index.exp +++ b/gdb/testsuite/gdb.base/gold-gdb-index.exp @@ -28,7 +28,7 @@ if {[prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \ return -1 } -if { [readnow] } { +if { [have_index $binfile] != "gdb_index" } { return -1 } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 6b6a70a89b0..04ca56168a1 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -7670,6 +7670,34 @@ proc readnow { args } { return $readnow_p } +# Return index name if symbols were read in using an index. +# Otherwise, return "". + +proc have_index { objfile } { + + set res "" + set cmd "maint print objfiles $objfile" + gdb_test_multiple $cmd "" -lbl { + -re "\r\n.gdb_index: faked for \"readnow\"" { + set res "" + exp_continue + } + -re "\r\n.gdb_index:" { + set res "gdb_index" + exp_continue + } + -re "\r\n.debug_names:" { + set res "debug_names" + exp_continue + } + -re -wrap "" { + # We don't care about any other input. + } + } + + return $res +} + # Return 1 if partial symbols are available. Otherwise, return 0. proc psymtabs_p { } { |