aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-07-06 10:58:43 +0200
committerTom de Vries <tdevries@suse.de>2021-07-06 10:58:43 +0200
commit752e419362eae28f7fcf6347b333347e472bc10f (patch)
tree5a21be53a93c82e0015d7df3254725645737d936 /gdb/dwarf2
parentfbc95f1e11facf233e89a9c2b4dde06b9aaf4b86 (diff)
downloadgdb-752e419362eae28f7fcf6347b333347e472bc10f.zip
gdb-752e419362eae28f7fcf6347b333347e472bc10f.tar.gz
gdb-752e419362eae28f7fcf6347b333347e472bc10f.tar.bz2
[gdb/symtab] Fix skipping of import of C++ CU
Tom Tromey observed that when changing the language in gdb.dwarf2/imported-unit-bp.exp from c to c++, the test failed. This is due to this code in process_imported_unit_die: ... /* We're importing a C++ compilation unit with tag DW_TAG_compile_unit into another compilation unit, at root level. Regard this as a hint, and ignore it. */ if (die->parent && die->parent->parent == NULL && per_cu->unit_type == DW_UT_compile && per_cu->lang == language_cplus) return; ... which should have a partial symtabs counterpart. Add the missing counterpart in process_psymtab_comp_unit. Tested on x86_64-linux (openSUSE Leap 15.2), no regressions for config: - using default gcc version 7.5.0 (with 5 unexpected FAILs) - gcc 10.3.0 and target board unix/-flto/-O0/-flto-partition=none/-ffat-lto-objects (with 1000 unexpected FAILs) gdb/ChangeLog: 2021-07-06 Tom de Vries <tdevries@suse.de> * dwarf2/read.c (scan_partial_symbols): Skip top-level imports of c++ CU. * testsuite/gdb.dwarf2/imported-unit-bp.exp: Moved to ... * testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl: ... here. * testsuite/gdb.dwarf2/imported-unit-bp-c++.exp: New test. * testsuite/gdb.dwarf2/imported-unit-bp-c.exp: New test. * testsuite/gdb.dwarf2/imported-unit.exp: Update.
Diffstat (limited to 'gdb/dwarf2')
-rw-r--r--gdb/dwarf2/read.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index fe82175..a13a53e 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -7639,6 +7639,13 @@ scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
process_psymtab_comp_unit (per_cu, cu->per_objfile, true,
cu->per_cu->lang);
+ if (pdi->die_parent == nullptr
+ && per_cu->unit_type == DW_UT_compile
+ && per_cu->lang == language_cplus)
+ /* Regard import as hint. See corresponding code in
+ process_imported_unit_die. */
+ break;
+
cu->per_cu->imported_symtabs_push (per_cu);
}
break;