mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-28 18:10:46 +00:00
Use domain_search_flags in lookup_symbol et al
This changes lookup_symbol and associated APIs to accept domain_search_flags rather than a domain_enum. Note that this introduces some new constants to Python and Guile. I chose to break out the documentation patch for this, because the internals here do not change until a later patch, and it seemed simpler to patch the docs just once, rather than twice.
This commit is contained in:
@@ -210,7 +210,7 @@ convert_one_symbol (compile_c_instance *context,
|
||||
|
||||
static void
|
||||
convert_symbol_sym (compile_c_instance *context, const char *identifier,
|
||||
struct block_symbol sym, domain_enum domain)
|
||||
struct block_symbol sym, domain_search_flags domain)
|
||||
{
|
||||
int is_local_symbol;
|
||||
|
||||
@@ -325,19 +325,19 @@ gcc_convert_symbol (void *datum,
|
||||
{
|
||||
compile_c_instance *context
|
||||
= static_cast<compile_c_instance *> (datum);
|
||||
domain_enum domain;
|
||||
domain_search_flags domain;
|
||||
int found = 0;
|
||||
|
||||
switch (request)
|
||||
{
|
||||
case GCC_C_ORACLE_SYMBOL:
|
||||
domain = VAR_DOMAIN;
|
||||
domain = SEARCH_VFT;
|
||||
break;
|
||||
case GCC_C_ORACLE_TAG:
|
||||
domain = STRUCT_DOMAIN;
|
||||
domain = SEARCH_STRUCT_DOMAIN;
|
||||
break;
|
||||
case GCC_C_ORACLE_LABEL:
|
||||
domain = LABEL_DOMAIN;
|
||||
domain = SEARCH_LABEL_DOMAIN;
|
||||
break;
|
||||
default:
|
||||
gdb_assert_not_reached ("Unrecognized oracle request.");
|
||||
@@ -355,7 +355,7 @@ gcc_convert_symbol (void *datum,
|
||||
convert_symbol_sym (context, identifier, sym, domain);
|
||||
found = 1;
|
||||
}
|
||||
else if (domain == VAR_DOMAIN)
|
||||
else if (request == GCC_C_ORACLE_SYMBOL)
|
||||
{
|
||||
struct bound_minimal_symbol bmsym;
|
||||
|
||||
@@ -398,8 +398,9 @@ gcc_symbol_address (void *datum, struct gcc_c_context *gcc_context,
|
||||
struct symbol *sym;
|
||||
|
||||
/* We only need global functions here. */
|
||||
sym = lookup_symbol (identifier, NULL, VAR_DOMAIN, NULL).symbol;
|
||||
if (sym != NULL && sym->aclass () == LOC_BLOCK)
|
||||
sym = lookup_symbol (identifier, nullptr, SEARCH_FUNCTION_DOMAIN,
|
||||
nullptr).symbol;
|
||||
if (sym != nullptr)
|
||||
{
|
||||
if (compile_debug)
|
||||
gdb_printf (gdb_stdlog,
|
||||
|
||||
@@ -227,7 +227,7 @@ convert_one_symbol (compile_cplus_instance *instance,
|
||||
static void
|
||||
convert_symbol_sym (compile_cplus_instance *instance,
|
||||
const char *identifier, struct block_symbol sym,
|
||||
domain_enum domain)
|
||||
domain_search_flags domain)
|
||||
{
|
||||
/* If we found a symbol and it is not in the static or global
|
||||
scope, then we should first convert any static or global scope
|
||||
@@ -355,12 +355,12 @@ gcc_cplus_convert_symbol (void *datum,
|
||||
This will find variables in the current scope. */
|
||||
|
||||
struct block_symbol sym
|
||||
= lookup_symbol (identifier, instance->block (), VAR_DOMAIN, nullptr);
|
||||
= lookup_symbol (identifier, instance->block (), SEARCH_VFT, nullptr);
|
||||
|
||||
if (sym.symbol != nullptr)
|
||||
{
|
||||
found = true;
|
||||
convert_symbol_sym (instance, identifier, sym, VAR_DOMAIN);
|
||||
convert_symbol_sym (instance, identifier, sym, SEARCH_VFT);
|
||||
}
|
||||
|
||||
/* Then use linespec.c's multi-symbol search. This should find
|
||||
@@ -378,7 +378,7 @@ gcc_cplus_convert_symbol (void *datum,
|
||||
{
|
||||
found = true;
|
||||
convert_symbol_sym (instance, identifier, it,
|
||||
it.symbol->domain ());
|
||||
to_search_flags (it.symbol->domain ()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,9 +437,10 @@ gcc_cplus_symbol_address (void *datum, struct gcc_cp_context *gcc_context,
|
||||
try
|
||||
{
|
||||
struct symbol *sym
|
||||
= lookup_symbol (identifier, nullptr, VAR_DOMAIN, nullptr).symbol;
|
||||
= lookup_symbol (identifier, nullptr, SEARCH_FUNCTION_DOMAIN,
|
||||
nullptr).symbol;
|
||||
|
||||
if (sym != nullptr && sym->aclass () == LOC_BLOCK)
|
||||
if (sym != nullptr)
|
||||
{
|
||||
if (compile_debug)
|
||||
gdb_printf (gdb_stdlog,
|
||||
|
||||
@@ -154,7 +154,7 @@ type_name_to_scope (const char *type_name, const struct block *block)
|
||||
|
||||
/* Look up the resulting name. */
|
||||
struct block_symbol bsymbol
|
||||
= lookup_symbol (lookup_name.c_str (), block, VAR_DOMAIN, nullptr);
|
||||
= lookup_symbol (lookup_name.c_str (), block, SEARCH_VFT, nullptr);
|
||||
|
||||
if (bsymbol.symbol != nullptr)
|
||||
{
|
||||
@@ -384,7 +384,7 @@ compile_cplus_instance::new_scope (const char *type_name, struct type *type)
|
||||
scope_component comp
|
||||
= {
|
||||
decl_name (type->name ()).get (),
|
||||
lookup_symbol (type->name (), block (), VAR_DOMAIN, nullptr)
|
||||
lookup_symbol (type->name (), block (), SEARCH_VFT, nullptr)
|
||||
};
|
||||
scope.push_back (comp);
|
||||
}
|
||||
@@ -617,7 +617,7 @@ compile_cplus_convert_struct_or_union_members
|
||||
const char *physname = type->field (i).loc_physname ();
|
||||
struct block_symbol sym
|
||||
= lookup_symbol (physname, instance->block (),
|
||||
VAR_DOMAIN, nullptr);
|
||||
SEARCH_VFT, nullptr);
|
||||
|
||||
if (sym.symbol == nullptr)
|
||||
{
|
||||
@@ -729,7 +729,7 @@ compile_cplus_convert_struct_or_union_methods (compile_cplus_instance *instance,
|
||||
gcc_type method_type;
|
||||
struct block_symbol sym
|
||||
= lookup_symbol (TYPE_FN_FIELD_PHYSNAME (methods, j),
|
||||
instance->block (), VAR_DOMAIN, nullptr);
|
||||
instance->block (), SEARCH_VFT, nullptr);
|
||||
|
||||
if (sym.symbol == nullptr)
|
||||
{
|
||||
|
||||
@@ -437,7 +437,7 @@ get_out_value_type (struct symbol *func_sym, struct objfile *objfile,
|
||||
gdb_val_sym = block_lookup_symbol (block,
|
||||
COMPILE_I_EXPR_VAL,
|
||||
symbol_name_match_type::SEARCH_NAME,
|
||||
VAR_DOMAIN);
|
||||
SEARCH_VFT);
|
||||
if (gdb_val_sym == NULL)
|
||||
continue;
|
||||
|
||||
@@ -463,7 +463,7 @@ get_out_value_type (struct symbol *func_sym, struct objfile *objfile,
|
||||
|
||||
gdb_ptr_type_sym = block_lookup_symbol (block, COMPILE_I_EXPR_PTR_TYPE,
|
||||
symbol_name_match_type::SEARCH_NAME,
|
||||
VAR_DOMAIN);
|
||||
SEARCH_VFT);
|
||||
if (gdb_ptr_type_sym == NULL)
|
||||
error (_("No \"%s\" symbol found"), COMPILE_I_EXPR_PTR_TYPE);
|
||||
gdb_ptr_type = gdb_ptr_type_sym->type ();
|
||||
@@ -652,7 +652,7 @@ compile_object_load (const compile_file_names &file_names,
|
||||
func_sym = lookup_global_symbol_from_objfile (objfile,
|
||||
GLOBAL_BLOCK,
|
||||
GCC_FE_WRAPPER_FUNCTION,
|
||||
VAR_DOMAIN).symbol;
|
||||
SEARCH_VFT).symbol;
|
||||
if (func_sym == NULL)
|
||||
error (_("Cannot find function \"%s\" in compiled module \"%s\"."),
|
||||
GCC_FE_WRAPPER_FUNCTION, objfile_name (objfile));
|
||||
|
||||
Reference in New Issue
Block a user