diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S | 93 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c | 22 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp | 44 |
6 files changed, 75 insertions, 102 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bf96cfe..5544993 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2020-04-24 Tom Tromey <tom@tromey.com> + * dwarf2/read.c (add_partial_symbol): Do not call + compute_and_set_names. + +2020-04-24 Tom Tromey <tom@tromey.com> + * dwarf2/read.c (add_partial_symbol): Use new add_psymbol_to_list overload. diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index ddf4b5b..d71bf91 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -8376,9 +8376,9 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) if (where.has_value ()) { - psymbol.ginfo.compute_and_set_names (actual_name, - built_actual_name != nullptr, - objfile->per_bfd); + if (built_actual_name != nullptr) + actual_name = objfile->intern (actual_name); + psymbol.ginfo.set_linkage_name (actual_name); add_psymbol_to_list (psymbol, *where, objfile); } } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ba79290..5c4dc6e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2020-04-24 Tom Tromey <tom@tromey.com> + + * gdb.dwarf2/dw2-namespaceless-anonymous.S: Remove. + * gdb.dwarf2/dw2-namespaceless-anonymous.c: New file. + * gdb.dwarf2/dw2-namespaceless-anonymous.exp: Use DWARF + assembler. + 2020-04-24 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Set language of CU to diff --git a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S deleted file mode 100644 index e5b1d66..0000000 --- a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S +++ /dev/null @@ -1,93 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2012-2020 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/>. */ - - .data -var: .4byte 1 - - .section .debug_info -.Lcu1_begin: - /* CU header */ - .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ -.Lcu1_start: - .2byte 2 /* DWARF Version */ - .4byte .Labbrev1_begin /* Offset into abbrev section */ - .byte 4 /* Pointer size */ - - /* CU die */ - .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ - .ascii "file1.txt\0" /* DW_AT_name */ - .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ - .byte 4 /* DW_LANG_C_plus_plus (C++) */ - -.Ltype_myint: - .uleb128 2 /* Abbrev: DW_TAG_base_type */ - .ascii "myint\0" /* DW_AT_name */ - .byte 4 /* DW_AT_byte_size */ - .byte 5 /* DW_AT_encoding */ - - .uleb128 7 /* Abbrev: DW_TAG_variable (location) */ - .ascii "_ZN12_GLOBAL__N_11vE\0" /* DW_AT_name = "(anonymous namespace)::v" */ - .byte 2f - 1f /* DW_AT_location */ -1: .byte 3 /* DW_OP_addr */ - .4byte var /* <addr> */ -2: .4byte .Ltype_myint-.Lcu1_begin /* DW_AT_type */ - - .byte 0 /* End of children of CU */ - -.Lcu1_end: - -/* Abbrev table */ - .section .debug_abbrev -.Labbrev1_begin: - .uleb128 1 /* Abbrev code */ - .uleb128 0x11 /* DW_TAG_compile_unit */ - .byte 1 /* has_children */ - .uleb128 0x3 /* DW_AT_name */ - .uleb128 0x8 /* DW_FORM_string */ - .uleb128 0x25 /* DW_AT_producer */ - .uleb128 0x8 /* DW_FORM_string */ - .uleb128 0x13 /* DW_AT_language */ - .uleb128 0xb /* DW_FORM_data1 */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - - .uleb128 2 /* Abbrev code */ - .uleb128 0x24 /* DW_TAG_base_type */ - .byte 0 /* has_children */ - .uleb128 0x3 /* DW_AT_name */ - .uleb128 0x8 /* DW_FORM_string */ - .uleb128 0xb /* DW_AT_byte_size */ - .uleb128 0xb /* DW_FORM_data1 */ - .uleb128 0x3e /* DW_AT_encoding */ - .uleb128 0xb /* DW_FORM_data1 */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - - .uleb128 7 /* Abbrev code (location) */ - .uleb128 0x34 /* DW_TAG_variable */ - .byte 0 /* has_children */ - .uleb128 0x3 /* DW_AT_name */ - .uleb128 0x8 /* DW_FORM_string */ - .uleb128 0x2 /* DW_AT_location */ - .uleb128 0xa /* DW_FORM_block1 */ - .uleb128 0x49 /* DW_AT_type */ - .uleb128 0x13 /* DW_FORM_ref4 */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ diff --git a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c new file mode 100644 index 0000000..3c5e258 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 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/>. */ + +char _ZN12_GLOBAL__N_11vE = 1; + +int main () +{ +} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp index 1edc468..5b61a6b 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp @@ -14,19 +14,51 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. load_lib dwarf.exp +load_lib dwarf.exp + # This test can only be run on targets which support DWARF-2 and use gas. if {![dwarf2_support]} { return 0 } -standard_testfile .S +standard_testfile dw2-namespaceless-anonymous.c dw2-namespaceless-anonymous.S -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $binfile \ - object {nodebug}] != "" } { - return -1 +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + global srcdir subdir srcfile + + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C_plus_plus} + {DW_AT_name dw2-namespaceless-anonymous.c} + {DW_AT_comp_dir /tmp} + } { + declare_labels myint + + myint: DW_TAG_base_type { + {DW_AT_byte_size 1 DW_FORM_sdata} + {DW_AT_encoding @DW_ATE_signed} + {DW_AT_name myint} + } + + DW_TAG_namespace {} { + DW_TAG_variable { + {DW_AT_name v} + {DW_AT_linkage_name _ZN12_GLOBAL__N_11vE} + {DW_AT_location { + DW_OP_addr [gdb_target_symbol _ZN12_GLOBAL__N_11vE] + } SPECIAL_expr} + {DW_AT_type :$myint} + } + } + } + } } -clean_restart $testfile +if {[prepare_for_testing ${testfile}.exp ${testfile} \ + [list $srcfile $asm_file] {nodebug}] } { + return -1 +} gdb_test "ptype '(anonymous namespace)::v'" "type = myint" -gdb_test "p '(anonymous namespace)::v'" " = 1" +gdb_test "p/d '(anonymous namespace)::v'" " = 1" |