diff options
author | Tom Tromey <tromey@redhat.com> | 2009-03-31 20:21:08 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2009-03-31 20:21:08 +0000 |
commit | 71c25deab3d61e4cfbaffc7006704a27d1bc0737 (patch) | |
tree | 197ec5630b7db57b6f8d1cf23309bed4047417c2 /gdb/stabsread.c | |
parent | 45ac276db3f6ee73f955254e5ef055c673b5fbb3 (diff) | |
download | gdb-71c25deab3d61e4cfbaffc7006704a27d1bc0737.zip gdb-71c25deab3d61e4cfbaffc7006704a27d1bc0737.tar.gz gdb-71c25deab3d61e4cfbaffc7006704a27d1bc0737.tar.bz2 |
gdb
2009-03-31 Daniel Jacobowitz <dan@codesourcery.com>
Keith Seitz <keiths@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
PR gdb/6817
* Makefile.in (dbxread.o): Update.
* dbxread.c (read_dbx_symtab): Use cp_canonicalize_string.
* dwarf2read.c (GDB_FORM_cached_string): New.
(read_partial_die): Use dwarf2_canonicalize_name.
(dwarf2_linkage_name): Use dwarf2_name.
(dwarf2_canonicalize_name): New.
(dwarf2_name): Use dwarf2_canonicalize_name.
(dwarf_form_name, dump_die): Handle GDB_FORM_cached_string.
* stabsread.c (define_symbol, read_type): Use cp_canonicalize_string.
* symtab.c (lookup_symbol_in_language): Canonicalize input before
searching.
* cp-name-parser.y: operator() requires two parameters,
according to libiberty.
* minsyms.c (lookup_minimal_symbol): Canonicalize input
before searching.
* NEWS: Update.
gdb/testsuite
2009-03-31 Daniel Jacobowitz <dan@codesourcery.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
PR gdb/931
* gdb.cp/gdb1355.exp (f_li, f_lui, f_si, f_sui): Allow canonical
output.
* gdb.cp/templates.exp: Allow canonical output. Remove KFAILs
for gdb/931.
* dw2-strp.S (DW_AT_language): Change to C++.
(DW_TAG_variable (name ""), Abbrev code 7, .Lemptyname): New.
Diffstat (limited to 'gdb/stabsread.c')
-rw-r--r-- | gdb/stabsread.c | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 2d7eb15..17dfce4 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -589,6 +589,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, int deftype; int synonym = 0; int i; + char *new_name = NULL; /* We would like to eliminate nameless symbols, but keep their types. E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer @@ -683,9 +684,21 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, { normal: SYMBOL_LANGUAGE (sym) = current_subfile->language; - SYMBOL_SET_NAMES (sym, string, p - string, objfile); if (SYMBOL_LANGUAGE (sym) == language_cplus) - cp_scan_for_anonymous_namespaces (sym); + { + char *name = alloca (p - string + 1); + 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) + { + SYMBOL_SET_NAMES (sym, new_name, strlen (new_name), objfile); + xfree (new_name); + } + else + SYMBOL_SET_NAMES (sym, string, p - string, objfile); } p++; @@ -1519,18 +1532,35 @@ again: if (*p != ':') return error_type (pp, objfile); } - to = type_name = - (char *) obstack_alloc (&objfile->objfile_obstack, p - *pp + 1); - - /* Copy the name. */ - from = *pp + 1; - while (from < p) - *to++ = *from++; - *to = '\0'; + type_name = NULL; + if (current_subfile->language == language_cplus) + { + char *new_name, *name = alloca (p - *pp + 1); + memcpy (name, *pp, p - *pp); + name[p - *pp] = '\0'; + new_name = cp_canonicalize_string (name); + if (new_name != NULL) + { + type_name = obsavestring (new_name, strlen (new_name), + &objfile->objfile_obstack); + xfree (new_name); + } + } + if (type_name == NULL) + { + to = type_name = + (char *) obstack_alloc (&objfile->objfile_obstack, p - *pp + 1); + + /* Copy the name. */ + from = *pp + 1; + while (from < p) + *to++ = *from++; + *to = '\0'; + } /* Set the pointer ahead of the name which we just read, and the colon. */ - *pp = from + 1; + *pp = p + 1; } /* If this type has already been declared, then reuse the same |