Use setter and getter for demangled_name.
2010-07-16 Sami Wagiaalla <swagiaal@redhat.com> * symtab.h (symbol_set_demangled_name): New function. (symbol_get_demangled_name): New function. * symtab.c (symbol_set_demangled_name): New function. (symbol_get_demangled_name): New function. (symbol_init_language_specific): Use demangled_name setter and getter. (symbol_set_names): Ditto. (symbol_natural_name): Ditto. (symbol_demangled_name): Ditto. * dwarf2read.c (new_symbol): Ditto.
This commit is contained in:
parent
afa1672571
commit
b250c185b3
4 changed files with 46 additions and 16 deletions
|
@ -1,3 +1,15 @@
|
|||
2010-07-16 Sami Wagiaalla <swagiaal@redhat.com>
|
||||
|
||||
* symtab.h (symbol_set_demangled_name): New function.
|
||||
(symbol_get_demangled_name): New function.
|
||||
* symtab.c (symbol_set_demangled_name): New function.
|
||||
(symbol_get_demangled_name): New function.
|
||||
(symbol_init_language_specific): Use demangled_name setter and getter.
|
||||
(symbol_set_names): Ditto.
|
||||
(symbol_natural_name): Ditto.
|
||||
(symbol_demangled_name): Ditto.
|
||||
* dwarf2read.c (new_symbol): Ditto.
|
||||
|
||||
2010-07-16 Sami Wagiaalla <swagiaal@redhat.com>
|
||||
|
||||
* symtab.h: Renamed cplus_specific to mangled_lang.
|
||||
|
|
|
@ -9743,9 +9743,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
|||
/* Fortran does not have mangling standard and the mangling does differ
|
||||
between gfortran, iFort etc. */
|
||||
if (cu->language == language_fortran
|
||||
&& sym->ginfo.language_specific.mangled_lang.demangled_name == NULL)
|
||||
sym->ginfo.language_specific.mangled_lang.demangled_name
|
||||
= (char *) dwarf2_full_name (name, die, cu);
|
||||
&& symbol_get_demangled_name (&(sym->ginfo)) == NULL)
|
||||
symbol_set_demangled_name (&(sym->ginfo), (char *) dwarf2_full_name (name, die, cu));
|
||||
|
||||
/* Default assumptions.
|
||||
Use the passed type or decode it from the die. */
|
||||
|
|
41
gdb/symtab.c
41
gdb/symtab.c
|
@ -340,6 +340,22 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
|
|||
return (mangled_name);
|
||||
}
|
||||
|
||||
/* Set the demangled name of GSYMBOL to NAME. NAME must be already
|
||||
correctly allocated. */
|
||||
void
|
||||
symbol_set_demangled_name (struct general_symbol_info *gsymbol,
|
||||
char *name)
|
||||
{
|
||||
gsymbol->language_specific.mangled_lang.demangled_name = name;
|
||||
}
|
||||
|
||||
/* Return the demangled name of GSYMBOL. */
|
||||
char *
|
||||
symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
|
||||
{
|
||||
return gsymbol->language_specific.mangled_lang.demangled_name;
|
||||
}
|
||||
|
||||
|
||||
/* Initialize the language dependent portion of a symbol
|
||||
depending upon the language for the symbol. */
|
||||
|
@ -354,7 +370,7 @@ symbol_init_language_specific (struct general_symbol_info *gsymbol,
|
|||
|| gsymbol->language == language_objc
|
||||
|| gsymbol->language == language_fortran)
|
||||
{
|
||||
gsymbol->language_specific.mangled_lang.demangled_name = NULL;
|
||||
symbol_set_demangled_name (gsymbol, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -537,7 +553,7 @@ symbol_set_names (struct general_symbol_info *gsymbol,
|
|||
memcpy (gsymbol->name, linkage_name, len);
|
||||
gsymbol->name[len] = '\0';
|
||||
}
|
||||
gsymbol->language_specific.mangled_lang.demangled_name = NULL;
|
||||
symbol_set_demangled_name (gsymbol, NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -633,10 +649,9 @@ symbol_set_names (struct general_symbol_info *gsymbol,
|
|||
|
||||
gsymbol->name = (*slot)->mangled + lookup_len - len;
|
||||
if ((*slot)->demangled[0] != '\0')
|
||||
gsymbol->language_specific.mangled_lang.demangled_name
|
||||
= (*slot)->demangled;
|
||||
symbol_set_demangled_name (gsymbol, (*slot)->demangled);
|
||||
else
|
||||
gsymbol->language_specific.mangled_lang.demangled_name = NULL;
|
||||
symbol_set_demangled_name (gsymbol, NULL);
|
||||
}
|
||||
|
||||
/* Return the source code name of a symbol. In languages where
|
||||
|
@ -652,12 +667,12 @@ symbol_natural_name (const struct general_symbol_info *gsymbol)
|
|||
case language_java:
|
||||
case language_objc:
|
||||
case language_fortran:
|
||||
if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
|
||||
return gsymbol->language_specific.mangled_lang.demangled_name;
|
||||
if (symbol_get_demangled_name (gsymbol) != NULL)
|
||||
return symbol_get_demangled_name (gsymbol);
|
||||
break;
|
||||
case language_ada:
|
||||
if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
|
||||
return gsymbol->language_specific.mangled_lang.demangled_name;
|
||||
if (symbol_get_demangled_name (gsymbol) != NULL)
|
||||
return symbol_get_demangled_name (gsymbol);
|
||||
else
|
||||
return ada_decode_symbol (gsymbol);
|
||||
break;
|
||||
|
@ -679,12 +694,12 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol)
|
|||
case language_java:
|
||||
case language_objc:
|
||||
case language_fortran:
|
||||
if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
|
||||
return gsymbol->language_specific.mangled_lang.demangled_name;
|
||||
if (symbol_get_demangled_name (gsymbol) != NULL)
|
||||
return symbol_get_demangled_name (gsymbol);
|
||||
break;
|
||||
case language_ada:
|
||||
if (gsymbol->language_specific.mangled_lang.demangled_name != NULL)
|
||||
return gsymbol->language_specific.mangled_lang.demangled_name;
|
||||
if (symbol_get_demangled_name (gsymbol) != NULL)
|
||||
return symbol_get_demangled_name (gsymbol);
|
||||
else
|
||||
return ada_decode_symbol (gsymbol);
|
||||
break;
|
||||
|
|
|
@ -154,6 +154,10 @@ struct general_symbol_info
|
|||
struct obj_section *obj_section;
|
||||
};
|
||||
|
||||
extern void symbol_set_demangled_name (struct general_symbol_info *, char *);
|
||||
|
||||
extern char *symbol_get_demangled_name (const struct general_symbol_info *);
|
||||
|
||||
extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
|
||||
|
||||
/* Note that all the following SYMBOL_* macros are used with the
|
||||
|
|
Loading…
Reference in a new issue