[gdb] Fix regression in dwarf2_name
authorTom de Vries <tdevries@suse.de>
Wed, 30 Sep 2020 19:49:01 +0000 (21:49 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 30 Sep 2020 19:49:01 +0000 (21:49 +0200)
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.

gdb/ChangeLog
gdb/dwarf2/read.c

index c448589b6790f9077c2ba524863dda4afa452d75..e297075f00b5ed2e4fef957d9223426ee0537c42 100644 (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.
index c0a89ecbe1e37d0ed2b35cd831367dd93226e78a..973a375641e8b7d064899d187841750dd3b7634d 100644 (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