aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2023-08-10 21:16:30 +0200
committerTom de Vries <tdevries@suse.de>2023-08-10 21:16:30 +0200
commit8f258a6c979420c33845f60575e7ed025e6dcd9d (patch)
treebd0ec572b8a757e16f51c09d55713da84c60d428
parent22f46409aaf95a0dc92e028ab9c2747be4d2df0a (diff)
downloadgdb-8f258a6c979420c33845f60575e7ed025e6dcd9d.zip
gdb-8f258a6c979420c33845f60575e7ed025e6dcd9d.tar.gz
gdb-8f258a6c979420c33845f60575e7ed025e6dcd9d.tar.bz2
[gdb/symtab] Dump qualified name of cooked_index_entry
When doing "maint print objfiles" for the exec of test-case gdb.dwarf2/pr13961.exp, we get: ... [25] ((cooked_index_entry *) 0x37b25d0) name: foo canonical: foo DWARF tag: DW_TAG_class_type flags: 0x0 [] DIE offset: 0x2a parent: ((cooked_index_entry *) 0) [26] ((cooked_index_entry *) 0x37b2630) name: foo canonical: foo DWARF tag: DW_TAG_class_type flags: 0x0 [] DIE offset: 0x25 parent: ((cooked_index_entry *) 0x37b25d0) [foo] ... By following the parent links in the text, we can conclude that the qualified name of DIE 0x25 is foo::foo (which is incorrect, that's PR symtab/30739). But it's not evident, and also hard to verify in a test-case. Add dumping of the qualified name, such that we have: ... [25] ((cooked_index_entry *) 0x333b5d0) name: foo canonical: foo qualified: foo DWARF tag: DW_TAG_class_type flags: 0x0 [] DIE offset: 0x2a parent: ((cooked_index_entry *) 0) [26] ((cooked_index_entry *) 0x333b630) name: foo canonical: foo qualified: foo::foo DWARF tag: DW_TAG_class_type flags: 0x0 [] DIE offset: 0x25 parent: ((cooked_index_entry *) 0x333b5d0) [foo] ... Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/dwarf2/cooked-index.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c
index 92ef0e3..351f001 100644
--- a/gdb/dwarf2/cooked-index.c
+++ b/gdb/dwarf2/cooked-index.c
@@ -565,6 +565,8 @@ cooked_index::get_main () const
void
cooked_index::dump (gdbarch *arch) const
{
+ auto_obstack temp_storage;
+
/* Ensure the index is done building. */
this->wait ();
@@ -579,6 +581,7 @@ cooked_index::dump (gdbarch *arch) const
gdb_printf (" [%zu] ((cooked_index_entry *) %p)\n", i++, entry);
gdb_printf (" name: %s\n", entry->name);
gdb_printf (" canonical: %s\n", entry->canonical);
+ gdb_printf (" qualified: %s\n", entry->full_name (&temp_storage, false));
gdb_printf (" DWARF tag: %s\n", dwarf_tag_name (entry->tag));
gdb_printf (" flags: %s\n", to_string (entry->flags).c_str ());
gdb_printf (" DIE offset: 0x%" PRIx64 "\n",