diff options
author | Tom Tromey <tromey@redhat.com> | 2009-11-16 18:40:23 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2009-11-16 18:40:23 +0000 |
commit | 04a679b8f5aed2c56ed5cb02f798d87df8415671 (patch) | |
tree | 5705c33f3946a993bf65136dbb4add9d599b7e55 /gdb/minsyms.c | |
parent | fd7dd3e67aa6a8d3f8019a4b3e19837660db1414 (diff) | |
download | gdb-04a679b8f5aed2c56ed5cb02f798d87df8415671.zip gdb-04a679b8f5aed2c56ed5cb02f798d87df8415671.tar.gz gdb-04a679b8f5aed2c56ed5cb02f798d87df8415671.tar.bz2 |
* xcoffread.c (scan_xcoff_symtab): Update.
* symfile.h (add_psymbol_to_list): Update prototype.
* symfile.c (add_psymbol_to_bcache): Add copy_name argument.
(add_psymbol_to_list): Likewise.
* stabsread.c (define_symbol): Update.
* mdebugread.c (parse_partial_symbols): Update.
(handle_psymbol_enumerators): Update.
(new_symbol): Update.
* dbxread.c (read_dbx_symtab): Update.
* coffread.c (process_coff_symbol): Update.
* symtab.h (prim_record_minimal_symbol_full): Declare.
(SYMBOL_SET_NAMES): Add copy_name argument.
* symtab.c (struct demangled_name_entry): New struct.
(hash_demangled_name_entry): New function.
(eq_demangled_name_entry): Likewise.
(create_demangled_names_hash): Use new functions.
(symbol_set_names): Use struct demangled_name_entry. Add
copy_name argument.
* minsyms.c (prim_record_minimal_symbol_full): New function.
(prim_record_minimal_symbol_and_info): Use it.
* elfread.c (record_minimal_symbol): Add name_len and copy_name
arguments. Call prim_record_minimal_symbol_full.
(elf_symtab_read): Add copy_names argument.
(elf_symfile_read): Update calls to elf_symtab_read.
* dwarf2read.c (add_partial_symbol): Don't copy symbol names.
(load_partial_dies): Likewise.
(new_symbol): Likewise.
* cp-namespace.c (check_one_possible_namespace_symbol): Don't save
name on the obstack. Update call to SYMBOL_SET_NAMES.
Diffstat (limited to 'gdb/minsyms.c')
-rw-r--r-- | gdb/minsyms.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 64d20d2..393a0ea 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -757,11 +757,12 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address, newly created. */ struct minimal_symbol * -prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, - enum minimal_symbol_type ms_type, - int section, - asection *bfd_section, - struct objfile *objfile) +prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name, + CORE_ADDR address, + enum minimal_symbol_type ms_type, + int section, + asection *bfd_section, + struct objfile *objfile) { struct obj_section *obj_section; struct msym_bunch *new; @@ -780,7 +781,10 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, /* It's safe to strip the leading char here once, since the name is also stored stripped in the minimal symbol table. */ if (name[0] == get_symbol_leading_char (objfile->obfd)) - ++name; + { + ++name; + --name_len; + } if (ms_type == mst_file_text && strncmp (name, "__gnu_compiled", 14) == 0) return (NULL); @@ -795,7 +799,7 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, msymbol = &msym_bunch->contents[msym_bunch_index]; SYMBOL_INIT_LANGUAGE_SPECIFIC (msymbol, language_unknown); SYMBOL_LANGUAGE (msymbol) = language_auto; - SYMBOL_SET_NAMES (msymbol, (char *)name, strlen (name), objfile); + SYMBOL_SET_NAMES (msymbol, name, name_len, copy_name, objfile); SYMBOL_VALUE_ADDRESS (msymbol) = address; SYMBOL_SECTION (msymbol) = section; @@ -828,6 +832,21 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, return msymbol; } +/* Record a minimal symbol in the msym bunches. Returns the symbol + newly created. */ + +struct minimal_symbol * +prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, + enum minimal_symbol_type ms_type, + int section, + asection *bfd_section, + struct objfile *objfile) +{ + return prim_record_minimal_symbol_full (name, strlen (name), 1, + address, ms_type, section, + bfd_section, objfile); +} + /* Compare two minimal symbols by address and return a signed result based on unsigned comparisons, so that we sort into unsigned numeric order. Within groups with the same address, sort by name. */ |