aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSami Wagiaalla <swagiaal@redhat.com>2010-08-09 20:13:51 +0000
committerSami Wagiaalla <swagiaal@redhat.com>2010-08-09 20:13:51 +0000
commit45c58896fccae96ae023059410027791537cb285 (patch)
tree90afe95f7ea77cfb0c72dbc1489444c030ce97a6 /gdb
parent776167e8fa07df96f999a0593f1dc536c80bc1cb (diff)
downloadgdb-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/ChangeLog7
-rw-r--r--gdb/stabsread.c5
-rw-r--r--gdb/symtab.c6
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;