Fixed stabs cplus_specific issue 2010-07-28 Sami Wagiaalla * symtab.c (symbol_get_demangled_name): Remove assertion and return NULL when language_specific.cplus_specific is not initialized. * stabsread.c (define_symbol): Set the name before calling cp_scan_for_anonymous_namespaces. diff --git a/gdb/stabsread.c b/gdb/stabsread.c index b62156c..7a68d7a 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -712,7 +712,6 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, memcpy (name, string, p - string); name[p - string] = '\0'; new_name = cp_canonicalize_string (name); - cp_scan_for_anonymous_namespaces (sym); } if (new_name != NULL) { @@ -721,6 +720,10 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, } else SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile); + + if (SYMBOL_LANGUAGE (sym) == language_cplus) + cp_scan_for_anonymous_namespaces (sym); + } p++; diff --git a/gdb/symtab.c b/gdb/symtab.c index ec0e809..822c89c 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -381,10 +381,10 @@ char * symbol_get_demangled_name (const struct general_symbol_info *gsymbol) { if (gsymbol->language == language_cplus) - { - gdb_assert (gsymbol->language_specific.cplus_specific != NULL); + if (gsymbol->language_specific.cplus_specific != NULL) return gsymbol->language_specific.cplus_specific->demangled_name; - } + else + return NULL; else return gsymbol->language_specific.mangled_lang.demangled_name; }