* symtab.c (symbol_set_names): Do not add an entry in the demangling

hash table for Ada symbols. Just store the linkage name as is,
        and leave the demangled_name as NULL.
This commit is contained in:
Joel Brobecker 2008-02-01 23:12:23 +00:00
parent 92273c8de8
commit b06ead72a9
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2008-02-01 Joel Brobecker <brobecker@adacore.com>
* symtab.c (symbol_set_names): Do not add an entry in the demangling
hash table for Ada symbols. Just store the linkage name as is,
and leave the demangled_name as NULL.
2007-02-01 Joel Brobecker <brobecker@adacore.com>
* dwarf2read.c (add_partial_symbol): Always store all Ada subprograms

View File

@ -517,6 +517,24 @@ symbol_set_names (struct general_symbol_info *gsymbol,
if (objfile->demangled_names_hash == NULL)
create_demangled_names_hash (objfile);
if (gsymbol->language == language_ada)
{
/* In Ada, we do the symbol lookups using the mangled name, so
we can save some space by not storing the demangled name.
As a side note, we have also observed some overlap between
the C++ mangling and Ada mangling, similarly to what has
been observed with Java. Because we don't store the demangled
name with the symbol, we don't need to use the same trick
as Java. */
gsymbol->name = obstack_alloc (&objfile->objfile_obstack, len + 1);
memcpy (gsymbol->name, linkage_name, len);
gsymbol->name[len] = '\0';
gsymbol->language_specific.cplus_specific.demangled_name = NULL;
return;
}
/* 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, unless we're in the Java case. */