From: Tom Tromey Date: Fri, 6 Sep 2024 18:24:06 +0000 (-0600) Subject: Use dwarf2_full_name when computing type names X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5fce64293afc4fdd216e8bfe5b7abd0fbae71f16;p=thirdparty%2Fbinutils-gdb.git Use dwarf2_full_name when computing type names This changes a few spots in the DWARF reader to use dwarf2_full_name when computing the name of a type. This gives the correct name when a type is nested in a namespace. This oddity probably wasn't noticed before because some of the types in question are either normally anonymous in C++ (e.g, array type) or do not appear in a namespace (base type). --- diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index dda925e43db..08592624746 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -11625,7 +11625,8 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) { if (cu->lang () == language_cplus || cu->lang () == language_d - || cu->lang () == language_rust) + || cu->lang () == language_rust + || cu->lang () == language_ada) { const char *full_name = dwarf2_full_name (name, die, cu); @@ -12773,7 +12774,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) "than the total size of elements")); } - name = dwarf2_name (die, cu); + name = dwarf2_full_name (nullptr, die, cu); if (name) type->set_name (name); @@ -14228,7 +14229,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu) attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr != nullptr) bits = attr->constant_value (0) * TARGET_CHAR_BIT; - name = dwarf2_name (die, cu); + name = dwarf2_full_name (nullptr, die, cu); if (!name) complaint (_("DW_AT_name missing from DW_TAG_base_type")); @@ -14788,7 +14789,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) if (attr == NULL && cu->lang () != language_ada) range_type->bounds ()->high.set_undefined (); - name = dwarf2_name (die, cu); + name = dwarf2_full_name (nullptr, die, cu); if (name) range_type->set_name (name);