diff options
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/symtab.c | 51 | ||||
-rw-r--r-- | gdb/symtab.h | 6 |
3 files changed, 41 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 081d73c..9b0e63e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2003-04-14 David Carlton <carlton@math.stanford.edu> + + * symtab.c (symbol_set_names): Rename 'name' arg to + 'linkage_name', and 'tmpname' variable to 'linkage_name_copy'. + * symtab.h: Change 'name' argument in declaration of + symbol_set_names to 'linkage_name'. + (SYMBOL_SET_NAMES): Change 'name' argument to 'linkage_name'. + 2003-04-14 Andrew Cagney <cagney@redhat.com> * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE, diff --git a/gdb/symtab.c b/gdb/symtab.c index 173d08a..1337e64 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -484,40 +484,49 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol, return NULL; } -/* Set both the mangled and demangled (if any) names for GSYMBOL based on - NAME and LEN. The hash table corresponding to OBJFILE is used, and the - memory comes from that objfile's symbol_obstack. NAME is copied, so the - pointer can be discarded after calling this function. */ +/* Set both the mangled and demangled (if any) names for GSYMBOL based + on LINKAGE_NAME and LEN. The hash table corresponding to OBJFILE + is used, and the memory comes from that objfile's symbol_obstack. + LINKAGE_NAME is copied, so the pointer can be discarded after + calling this function. */ void symbol_set_names (struct general_symbol_info *gsymbol, - const char *name, int len, struct objfile *objfile) + const char *linkage_name, int len, struct objfile *objfile) { char **slot; - const char *tmpname; + /* A 0-terminated copy of the linkage name. */ + const char *linkage_name_copy; if (objfile->demangled_names_hash == NULL) create_demangled_names_hash (objfile); - /* The stabs reader generally provides names that are not NULL-terminated; - most of the other readers don't do this, so we can just use the given - copy. */ - if (name[len] != 0) + /* The stabs reader generally provides names that are not + NUL-terminated; most of the other readers don't do this, so we + can just use the given copy. */ + if (linkage_name[len] != '\0') { - char *alloc_name = alloca (len + 1); - memcpy (alloc_name, name, len); - alloc_name[len] = 0; - tmpname = alloc_name; + char *alloc_name; + + alloc_name = alloca (len + 1); + memcpy (alloc_name, linkage_name, len); + alloc_name[len] = '\0'; + + linkage_name_copy = alloc_name; } else - tmpname = name; + { + linkage_name_copy = linkage_name; + } - slot = (char **) htab_find_slot (objfile->demangled_names_hash, tmpname, INSERT); + slot = (char **) htab_find_slot (objfile->demangled_names_hash, + linkage_name_copy, INSERT); /* If this name is not in the hash table, add it. */ if (*slot == NULL) { - char *demangled_name = symbol_find_demangled_name (gsymbol, tmpname); + char *demangled_name = symbol_find_demangled_name (gsymbol, + linkage_name_copy); int demangled_len = demangled_name ? strlen (demangled_name) : 0; /* If there is a demangled name, place it right after the mangled name. @@ -525,18 +534,18 @@ symbol_set_names (struct general_symbol_info *gsymbol, name. */ *slot = obstack_alloc (&objfile->symbol_obstack, len + demangled_len + 2); - memcpy (*slot, tmpname, len + 1); - if (demangled_name) + memcpy (*slot, linkage_name_copy, len + 1); + if (demangled_name != NULL) { memcpy (*slot + len + 1, demangled_name, demangled_len + 1); xfree (demangled_name); } else - (*slot)[len + 1] = 0; + (*slot)[len + 1] = '\0'; } gsymbol->name = *slot; - if ((*slot)[len + 1]) + if ((*slot)[len + 1] != '\0') gsymbol->language_specific.cplus_specific.demangled_name = &(*slot)[len + 1]; else diff --git a/gdb/symtab.h b/gdb/symtab.h index 49ec2b5..0527536 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -158,10 +158,10 @@ extern void symbol_init_language_specific (struct general_symbol_info *symbol, extern void symbol_init_demangled_name (struct general_symbol_info *symbol, struct obstack *obstack); -#define SYMBOL_SET_NAMES(symbol,name,len,objfile) \ - symbol_set_names (&(symbol)->ginfo, name, len, objfile) +#define SYMBOL_SET_NAMES(symbol,linkage_name,len,objfile) \ + symbol_set_names (&(symbol)->ginfo, linkage_name, len, objfile) extern void symbol_set_names (struct general_symbol_info *symbol, - const char *name, int len, + const char *linkage_name, int len, struct objfile *objfile); /* Now come lots of name accessor macros. Short version as to when to |