diff options
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 41 | ||||
-rw-r--r-- | gdb/symtab.h | 4 |
4 files changed, 46 insertions, 16 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7e7aaa0..69d2288 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 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. * symtab.c (symbol_init_language_specific): Updated. (symbol_set_names): Updated. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8f129b9..234c5cc 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -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. */ diff --git a/gdb/symtab.c b/gdb/symtab.c index dbe6b24..8701d1f 100644 --- a/gdb/symtab.c +++ b/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; diff --git a/gdb/symtab.h b/gdb/symtab.h index 30de42d..7f18fb3 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -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 |