[gdb] Fix regression in dwarf2_name

Since commit 2c830f5475 "Change some uses of DW_STRING to string method" we
have these regressions:
...
FAIL: gdb.base/info-types-c++.exp: info types
FAIL: gdb.cp/anon-struct.exp: print type of t::t
FAIL: gdb.cp/anon-struct.exp: print type of X::t2
FAIL: gdb.cp/anon-struct.exp: print type of X::t2::t2
FAIL: gdb.cp/anon-struct.exp: print type of t3::~t3
...

Fix these in dwarf2_name by updating attr_name each time attr is updated.

Tested on x86_64-linux.

gdb/ChangeLog:

2020-09-30  Tom de Vries  <tdevries@suse.de>

	PR symtab/26683
	* dwarf2/read.c (dwarf2_name): Update attr_name after attr is updated.
This commit is contained in:
Tom de Vries 2020-09-30 21:49:01 +02:00
parent cae21f8ebf
commit 95eb9e54a5
2 changed files with 7 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2020-09-30 Tom de Vries <tdevries@suse.de>
PR symtab/26683
* dwarf2/read.c (dwarf2_name): Update attr_name after attr is updated.
2020-09-30 Tom Tromey <tromey@adacore.com>
* dwarf2/read.c (handle_variant): Use constant_value.

View File

@ -22632,6 +22632,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
if (!attr || attr_name == NULL)
{
attr = dw2_linkage_name_attr (die, cu);
attr_name = attr == nullptr ? nullptr : attr->as_string ();
if (attr == NULL || attr_name == NULL)
return NULL;
@ -22645,6 +22646,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
return nullptr;
attr->set_string_canonical (objfile->intern (demangled.get ()));
attr_name = attr->as_string ();
}
/* Strip any leading namespaces/classes, keep only the