aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-04-22 08:24:11 +0200
committerTom de Vries <tdevries@suse.de>2020-04-22 08:24:11 +0200
commiteea9e35758138f83e8c44e0e5a5e47e351f8f31a (patch)
tree4fbf30003271537af2dce86fcc8d45ece18bb945 /gdb/testsuite/gdb.dwarf2
parent3d5afab3393064e563305bc27264fde5a7598635 (diff)
downloadfsf-binutils-gdb-eea9e35758138f83e8c44e0e5a5e47e351f8f31a.zip
fsf-binutils-gdb-eea9e35758138f83e8c44e0e5a5e47e351f8f31a.tar.gz
fsf-binutils-gdb-eea9e35758138f83e8c44e0e5a5e47e351f8f31a.tar.bz2
[gdb/symtab] Find filename in shared psymtab
When running test-case gdb.ada/dgopt.exp with target board unix/-flto/-O0/-flto-partition=none/-ffat-lto-objects and gcc-8, gcc-9 or gcc-10, and the fix for PR25700, we run into this regression: ... (gdb) list x.adb:16, 16^M No source file named x.adb.^M (gdb) FAIL: gdb.ada/dgopt.exp: list x.adb:16, 16 ... The reason for the failure is that without the fix for PR25700, we have an unshared psymtab: ... { psymtab gdb.ada/dgopt/x.adb ((struct partial_symtab *) $hex)^M readin no^M fullname (null)^M text addresses 0x0 -- 0x0^M psymtabs_addrmap_supported yes^M globals (none)^M statics (none)^M dependencies (none)^M }^M ... and a shared psymtab (with user field set): ... { psymtab gdb.ada/dgopt/x.adb ((struct partial_symtab *) $hex)^M readin no^M fullname (null)^M text addresses 0x0 -- 0x0^M psymtabs_addrmap_supported yes^M globals (none)^M statics (none)^M user <artificial>@0x159a ((struct partial_symtab *) 0x37b57c0)^M dependencies (none)^M }^M ... The fix for PR25700 removes the unshared psymtab. Then when trying to find a psymtab matching x.adb in psym_map_symtabs_matching_filename, we run into this continue for the shared psymtab: ... for (partial_symtab *pst : require_partial_symbols (objfile, true)) { /* We can skip shared psymtabs here, because any file name will be attached to the unshared psymtab. */ if (pst->user != NULL) continue; ... and consequently cannot find the file. Fix this by not skipping the shared symtab in psym_map_symtabs_matching_filename. Build and reg-tested on x86_64-linux. gdb/ChangeLog: 2020-04-22 Tom de Vries <tdevries@suse.de> PR symtab/25801 * psymtab.c (psym_map_symtabs_matching_filename): Don't skip shared symtabs. gdb/testsuite/ChangeLog: 2020-04-22 Tom de Vries <tdevries@suse.de> PR symtab/25801 * gdb.dwarf2/imported-unit.exp: Test that we can get imported_unit.c in "info source" output.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2')
-rw-r--r--gdb/testsuite/gdb.dwarf2/imported-unit.exp6
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit.exp b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
index d7b3d4c..32a9abf 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
@@ -186,6 +186,12 @@ if { $psymtabs_p } {
unsupported $test
}
+gdb_test "l imported_unit.c:1" \
+ "1\timported_unit.c: No such file or directory\."
+
+gdb_test "info source" "\r\nCurrent source file is imported_unit.c\r\n.*" \
+ "info source for imported_unit.c"
+
# Sanity check
gdb_test "ptype main" "= int \\(void\\)"