diff options
author | Sami Wagiaalla <swagiaal@redhat.com> | 2010-08-09 20:13:51 +0000 |
---|---|---|
committer | Sami Wagiaalla <swagiaal@redhat.com> | 2010-08-09 20:13:51 +0000 |
commit | 45c58896fccae96ae023059410027791537cb285 (patch) | |
tree | 90afe95f7ea77cfb0c72dbc1489444c030ce97a6 /gdb | |
parent | 776167e8fa07df96f999a0593f1dc536c80bc1cb (diff) | |
download | gdb-45c58896fccae96ae023059410027791537cb285.zip gdb-45c58896fccae96ae023059410027791537cb285.tar.gz gdb-45c58896fccae96ae023059410027791537cb285.tar.bz2 |
Fixed stabs cplus_specific issue
2010-08-09 Sami Wagiaalla <swagiaal@redhat.com>
* 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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/stabsread.c | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 6 |
3 files changed, 15 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aa4bd19..d0522f8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2010-08-09 Sami Wagiaalla <swagiaal@redhat.com> + * 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. + +2010-08-09 Sami Wagiaalla <swagiaal@redhat.com> + * symtab.h: Renamed SYMBOL_INIT_LANGUAGE_SPECIFIC to SYMBOL_SET_LANGUAGE. (symbol_init_language_specific): Renamed to symbol_set_language. diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 5f6b004..43b09f1 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 5fbe58c..d43d573 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -382,8 +382,10 @@ symbol_get_demangled_name (const struct general_symbol_info *gsymbol) { if (gsymbol->language == language_cplus) { - gdb_assert (gsymbol->language_specific.cplus_specific != NULL); - return gsymbol->language_specific.cplus_specific->demangled_name; + 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; |