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'.
This commit is contained in:
David Carlton 2003-04-14 19:55:27 +00:00
parent e227b13c67
commit 980cae7a71
3 changed files with 41 additions and 24 deletions

View File

@ -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> 2003-04-14 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE, * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE,

View File

@ -484,40 +484,49 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol,
return NULL; return NULL;
} }
/* Set both the mangled and demangled (if any) names for GSYMBOL based on /* Set both the mangled and demangled (if any) names for GSYMBOL based
NAME and LEN. The hash table corresponding to OBJFILE is used, and the on LINKAGE_NAME and LEN. The hash table corresponding to OBJFILE
memory comes from that objfile's symbol_obstack. NAME is copied, so the is used, and the memory comes from that objfile's symbol_obstack.
pointer can be discarded after calling this function. */ LINKAGE_NAME is copied, so the pointer can be discarded after
calling this function. */
void void
symbol_set_names (struct general_symbol_info *gsymbol, 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; char **slot;
const char *tmpname; /* A 0-terminated copy of the linkage name. */
const char *linkage_name_copy;
if (objfile->demangled_names_hash == NULL) if (objfile->demangled_names_hash == NULL)
create_demangled_names_hash (objfile); create_demangled_names_hash (objfile);
/* The stabs reader generally provides names that are not NULL-terminated; /* The stabs reader generally provides names that are not
most of the other readers don't do this, so we can just use the given NUL-terminated; most of the other readers don't do this, so we
copy. */ can just use the given copy. */
if (name[len] != 0) if (linkage_name[len] != '\0')
{ {
char *alloc_name = alloca (len + 1); char *alloc_name;
memcpy (alloc_name, name, len);
alloc_name[len] = 0; alloc_name = alloca (len + 1);
tmpname = alloc_name; memcpy (alloc_name, linkage_name, len);
alloc_name[len] = '\0';
linkage_name_copy = alloc_name;
} }
else 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 this name is not in the hash table, add it. */
if (*slot == NULL) 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; int demangled_len = demangled_name ? strlen (demangled_name) : 0;
/* If there is a demangled name, place it right after the mangled name. /* 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. */ name. */
*slot = obstack_alloc (&objfile->symbol_obstack, *slot = obstack_alloc (&objfile->symbol_obstack,
len + demangled_len + 2); len + demangled_len + 2);
memcpy (*slot, tmpname, len + 1); memcpy (*slot, linkage_name_copy, len + 1);
if (demangled_name) if (demangled_name != NULL)
{ {
memcpy (*slot + len + 1, demangled_name, demangled_len + 1); memcpy (*slot + len + 1, demangled_name, demangled_len + 1);
xfree (demangled_name); xfree (demangled_name);
} }
else else
(*slot)[len + 1] = 0; (*slot)[len + 1] = '\0';
} }
gsymbol->name = *slot; gsymbol->name = *slot;
if ((*slot)[len + 1]) if ((*slot)[len + 1] != '\0')
gsymbol->language_specific.cplus_specific.demangled_name gsymbol->language_specific.cplus_specific.demangled_name
= &(*slot)[len + 1]; = &(*slot)[len + 1];
else else

View File

@ -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, extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
struct obstack *obstack); struct obstack *obstack);
#define SYMBOL_SET_NAMES(symbol,name,len,objfile) \ #define SYMBOL_SET_NAMES(symbol,linkage_name,len,objfile) \
symbol_set_names (&(symbol)->ginfo, name, len, objfile) symbol_set_names (&(symbol)->ginfo, linkage_name, len, objfile)
extern void symbol_set_names (struct general_symbol_info *symbol, extern void symbol_set_names (struct general_symbol_info *symbol,
const char *name, int len, const char *linkage_name, int len,
struct objfile *objfile); struct objfile *objfile);
/* Now come lots of name accessor macros. Short version as to when to /* Now come lots of name accessor macros. Short version as to when to