forked from Imagelibrary/binutils-gdb
Simplify some symbol searches in Ada code
This changes some of the Ada code to simplify symbol searches. For example, if a function is being looked for, the search is narrowed to use SEARCH_FUNCTION_DOMAIN rather than SEARCH_VFT. In one spot, a search of the "struct" domain is removed, because Ada does not have a tag domain.
This commit is contained in:
@@ -1404,7 +1404,7 @@ block_lookup (const struct block *context, const char *raw_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector<struct block_symbol> syms
|
std::vector<struct block_symbol> syms
|
||||||
= ada_lookup_symbol_list (name, context, SEARCH_VFT);
|
= ada_lookup_symbol_list (name, context, SEARCH_FUNCTION_DOMAIN);
|
||||||
|
|
||||||
if (context == NULL
|
if (context == NULL
|
||||||
&& (syms.empty () || syms[0].symbol->aclass () != LOC_BLOCK))
|
&& (syms.empty () || syms[0].symbol->aclass () != LOC_BLOCK))
|
||||||
@@ -1483,7 +1483,7 @@ find_primitive_type (struct parser_state *par_state, const char *name)
|
|||||||
(char *) alloca (strlen (name) + sizeof ("standard__"));
|
(char *) alloca (strlen (name) + sizeof ("standard__"));
|
||||||
strcpy (expanded_name, "standard__");
|
strcpy (expanded_name, "standard__");
|
||||||
strcat (expanded_name, name);
|
strcat (expanded_name, name);
|
||||||
sym = ada_lookup_symbol (expanded_name, NULL, SEARCH_VFT).symbol;
|
sym = ada_lookup_symbol (expanded_name, NULL, SEARCH_TYPE_DOMAIN).symbol;
|
||||||
if (sym != NULL && sym->aclass () == LOC_TYPEDEF)
|
if (sym != NULL && sym->aclass () == LOC_TYPEDEF)
|
||||||
type = sym->type ();
|
type = sym->type ();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7436,14 +7436,8 @@ field_alignment (struct type *type, int f)
|
|||||||
static struct symbol *
|
static struct symbol *
|
||||||
ada_find_any_type_symbol (const char *name)
|
ada_find_any_type_symbol (const char *name)
|
||||||
{
|
{
|
||||||
struct symbol *sym;
|
return standard_lookup (name, get_selected_block (nullptr),
|
||||||
|
SEARCH_TYPE_DOMAIN);
|
||||||
sym = standard_lookup (name, get_selected_block (NULL), SEARCH_VFT);
|
|
||||||
if (sym != NULL && sym->aclass () == LOC_TYPEDEF)
|
|
||||||
return sym;
|
|
||||||
|
|
||||||
sym = standard_lookup (name, NULL, SEARCH_STRUCT_DOMAIN);
|
|
||||||
return sym;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find a type named NAME. Ignores ambiguity. This routine will look
|
/* Find a type named NAME. Ignores ambiguity. This routine will look
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ ada_alias_get_block_value (const struct symbol *sym)
|
|||||||
{
|
{
|
||||||
const char *name = get_imported_name (sym);
|
const char *name = get_imported_name (sym);
|
||||||
block_symbol real_symbol = lookup_global_symbol (name, nullptr,
|
block_symbol real_symbol = lookup_global_symbol (name, nullptr,
|
||||||
SEARCH_VFT);
|
SEARCH_FUNCTION_DOMAIN);
|
||||||
if (real_symbol.symbol == nullptr)
|
if (real_symbol.symbol == nullptr)
|
||||||
error (_("could not find alias '%s' for function '%s'"),
|
error (_("could not find alias '%s' for function '%s'"),
|
||||||
name, sym->print_name ());
|
name, sym->print_name ());
|
||||||
|
|||||||
Reference in New Issue
Block a user