diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/imported-unit-bp-c++.exp | 18 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/imported-unit-bp-c.exp | 18 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl (renamed from gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp) | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/imported-unit.exp | 9 |
6 files changed, 60 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f7a6ccc..f1071a7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +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. + 2021-07-03 Joel Brobecker <brobecker@adacore.com> * NEWS: Create a new section for the next release branch. 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; diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c++.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c++.exp new file mode 100644 index 0000000..c376113 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c++.exp @@ -0,0 +1,18 @@ +# Copyright 2021 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set lang DW_LANG_C_plus_plus + +source $srcdir/$subdir/imported-unit-bp.exp.tcl diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c.exp new file mode 100644 index 0000000..6f9c3ad --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/imported-unit-bp-c.exp @@ -0,0 +1,18 @@ +# Copyright 2021 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set lang DW_LANG_C + +source $srcdir/$subdir/imported-unit-bp.exp.tcl diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp b/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl index b6a0f25..83bca7d 100644 --- a/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp +++ b/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl @@ -38,13 +38,14 @@ set asm_file [standard_output_file $srcfile2] Dwarf::assemble $asm_file { global srcdir subdir srcfile srcfile global build_options + global lang declare_labels lines_label callee_subprog_label cu_label get_func_info func "$build_options additional_flags=-DWITHMAIN" cu {} { compile_unit { - {language @DW_LANG_C} + {language @$lang} {name "<artificial>"} } { imported_unit { @@ -56,7 +57,7 @@ Dwarf::assemble $asm_file { cu {} { cu_label: compile_unit { {producer "gcc"} - {language @DW_LANG_C} + {language @$lang} {name ${srcfile}} {comp_dir "/tmp"} {low_pc 0 addr} diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit.exp b/gdb/testsuite/gdb.dwarf2/imported-unit.exp index 2bd72a6..efce3a0 100644 --- a/gdb/testsuite/gdb.dwarf2/imported-unit.exp +++ b/gdb/testsuite/gdb.dwarf2/imported-unit.exp @@ -136,15 +136,14 @@ gdb_test_no_output "set language c++" set psymtabs_p [psymtabs_p] -# Verify that the partial symtab for the unit importing the partial unit does -# not contain the static partial symbol int, which is defined in the partial -# unit. Test-case for PR25646. +# Verify that the partial symtab for CU "<artificial>" does +# not contain the static partial symbol int, which is defined in the +# CU "imported_unit.c". Test-case for PR25646. set test "no static partial symbols in importing unit" if { $psymtabs_p } { gdb_test "main print psymbols" \ [multi_line \ - " Depends on 1 other partial symtabs\." \ - "\[^\r\n\]*" \ + " Depends on 0 other partial symtabs\." \ " Global partial symbols:" \ " `main', function, $hex" \ "" \ |