diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 18 |
2 files changed, 14 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6cb3cb5..9211708 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-03-16 Tom Tromey <tromey@adacore.com> + + PR gdb/25663: + * dwarf2/read.c (dwarf2_name): Strip leading namespaces after + putting value into bcache. + 2020-03-16 Simon Marchi <simon.marchi@efficios.com> PR gdb/21500 diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 1706b96..88a60c1 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -21799,19 +21799,17 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) if (demangled == nullptr) return nullptr; - const char *base; - DW_STRING (attr) = objfile->intern (demangled.get ()); DW_STRING_IS_CANONICAL (attr) = 1; - - /* Strip any leading namespaces/classes, keep only the base name. - DW_AT_name for named DIEs does not contain the prefixes. */ - base = strrchr (DW_STRING (attr), ':'); - if (base && base > DW_STRING (attr) && base[-1] == ':') - return &base[1]; - else - return DW_STRING (attr); } + + /* Strip any leading namespaces/classes, keep only the base name. + DW_AT_name for named DIEs does not contain the prefixes. */ + const char *base = strrchr (DW_STRING (attr), ':'); + if (base && base > DW_STRING (attr) && base[-1] == ':') + return &base[1]; + else + return DW_STRING (attr); } break; |