* ada-lang.c: Update throughout to use symbol_matches_domain
instead of matching the symbol domain explictly. * dwarf2read.c (add_partial_symbol): Do not add new psym for STRUCT_DOMAIN. Make sure you recognize c++ struct and java and ada class as typedefs. See lookup_partial_symbol function. (new_symbol): Similar to add_partial_symbol, do not create symbol for the typedef. See lookup_block_symbol. * symtab.c (symbol_matches_domain): New function, takes care of dual meaning of STRUCT_DOMAIN symbol for c++, ada and java. (lookup_partial_symbol): Use symbol_matches_domain to see if the found psym domain matches the given domain. (lookup_block_symbol): Likewise.
This commit is contained in:
parent
e8db345894
commit
5eeb253942
5 changed files with 62 additions and 31 deletions
|
@ -4177,7 +4177,8 @@ ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name,
|
|||
{
|
||||
struct partial_symbol *psym = start[i];
|
||||
|
||||
if (SYMBOL_DOMAIN (psym) == namespace
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (psym),
|
||||
SYMBOL_DOMAIN (psym), namespace)
|
||||
&& wild_match (name, name_len, SYMBOL_LINKAGE_NAME (psym)))
|
||||
return psym;
|
||||
}
|
||||
|
@ -4211,7 +4212,8 @@ ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name,
|
|||
{
|
||||
struct partial_symbol *psym = start[i];
|
||||
|
||||
if (SYMBOL_DOMAIN (psym) == namespace)
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (psym),
|
||||
SYMBOL_DOMAIN (psym), namespace))
|
||||
{
|
||||
int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym), name_len);
|
||||
|
||||
|
@ -4254,7 +4256,8 @@ ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name,
|
|||
{
|
||||
struct partial_symbol *psym = start[i];
|
||||
|
||||
if (SYMBOL_DOMAIN (psym) == namespace)
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (psym),
|
||||
SYMBOL_DOMAIN (psym), namespace))
|
||||
{
|
||||
int cmp;
|
||||
|
||||
|
@ -5254,7 +5257,8 @@ ada_add_block_symbols (struct obstack *obstackp,
|
|||
struct symbol *sym;
|
||||
ALL_BLOCK_SYMBOLS (block, iter, sym)
|
||||
{
|
||||
if (SYMBOL_DOMAIN (sym) == domain
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain)
|
||||
&& wild_match (name, name_len, SYMBOL_LINKAGE_NAME (sym)))
|
||||
{
|
||||
switch (SYMBOL_CLASS (sym))
|
||||
|
@ -5284,7 +5288,8 @@ ada_add_block_symbols (struct obstack *obstackp,
|
|||
{
|
||||
ALL_BLOCK_SYMBOLS (block, iter, sym)
|
||||
{
|
||||
if (SYMBOL_DOMAIN (sym) == domain)
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain))
|
||||
{
|
||||
int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym), name_len);
|
||||
if (cmp == 0
|
||||
|
@ -5329,7 +5334,8 @@ ada_add_block_symbols (struct obstack *obstackp,
|
|||
|
||||
ALL_BLOCK_SYMBOLS (block, iter, sym)
|
||||
{
|
||||
if (SYMBOL_DOMAIN (sym) == domain)
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain))
|
||||
{
|
||||
int cmp;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue