From df5c6c503133136c5d6e5c5eea6f43d276a8eda0 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Thu, 31 Mar 2011 19:37:54 +0000 Subject: [PATCH] gdb/ * dwarf2read.c (dwarf2_name): Initialize DEMANGLED. Avoid demangling struct linkage name twice. --- gdb/ChangeLog | 5 +++++ gdb/dwarf2read.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cae0cd6c0a1..2476919b65f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-03-31 Jan Kratochvil + + * dwarf2read.c (dwarf2_name): Initialize DEMANGLED. Avoid demangling + struct linkage name twice. + 2011-03-31 Tom Tromey * python/py-prettyprint.c (print_stack_unless_memory_error): Add diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index df8f863583a..64c9da0feff 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -12043,7 +12043,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */ if (!attr || DW_STRING (attr) == NULL) { - char *demangled; + char *demangled = NULL; attr = dwarf2_attr (die, DW_AT_linkage_name, cu); if (attr == NULL) @@ -12052,7 +12052,10 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) if (attr == NULL || DW_STRING (attr) == NULL) return NULL; - demangled = cplus_demangle (DW_STRING (attr), DMGL_TYPES); + /* Avoid demangling DW_STRING (attr) the second time on a second + call for the same DIE. */ + if (!DW_STRING_IS_CANONICAL (attr)) + demangled = cplus_demangle (DW_STRING (attr), DMGL_TYPES); if (demangled) { -- 2.30.2