Remove lookup_objfile_from_block
lookup_objfile_from_block mostly duplicates the functionality of block_objfile, but in a less efficient way. This patch removes this function and changes the callers to use block_objfile instead. Tested by the buildbot. gdb/ChangeLog 2020-05-15 Tom Tromey <tom@tromey.com> * symtab.c (lookup_language_this, lookup_symbol_aux): Use block_objfile. (lookup_objfile_from_block): Remove. (lookup_symbol_in_block, lookup_symbol_in_static_block) (lookup_global_symbol): Use block_objfile. * symtab.h (lookup_objfile_from_block): Don't declare. * printcmd.c (clear_dangling_display_expressions): Use block_objfile. * parse.c (operator_check_standard): Use block_objfile.
This commit is contained in:
parent
8c14c3a373
commit
d6bc0792ed
@ -1,3 +1,15 @@
|
||||
2020-05-15 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symtab.c (lookup_language_this, lookup_symbol_aux): Use
|
||||
block_objfile.
|
||||
(lookup_objfile_from_block): Remove.
|
||||
(lookup_symbol_in_block, lookup_symbol_in_static_block)
|
||||
(lookup_global_symbol): Use block_objfile.
|
||||
* symtab.h (lookup_objfile_from_block): Don't declare.
|
||||
* printcmd.c (clear_dangling_display_expressions): Use
|
||||
block_objfile.
|
||||
* parse.c (operator_check_standard): Use block_objfile.
|
||||
|
||||
2020-05-15 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* language.c (language_alloc_type_symbol): Set
|
||||
|
@ -1340,7 +1340,7 @@ operator_check_standard (struct expression *exp, int pos,
|
||||
return 1;
|
||||
|
||||
/* Check objfile where is placed the code touching the variable. */
|
||||
objfile = lookup_objfile_from_block (block);
|
||||
objfile = block_objfile (block);
|
||||
|
||||
type = SYMBOL_TYPE (symbol);
|
||||
}
|
||||
|
@ -2128,12 +2128,20 @@ clear_dangling_display_expressions (struct objfile *objfile)
|
||||
if (d->pspace != pspace)
|
||||
continue;
|
||||
|
||||
if (lookup_objfile_from_block (d->block) == objfile
|
||||
struct objfile *bl_objf = nullptr;
|
||||
if (d->block != nullptr)
|
||||
{
|
||||
bl_objf = block_objfile (d->block);
|
||||
if (bl_objf->separate_debug_objfile_backlink != nullptr)
|
||||
bl_objf = bl_objf->separate_debug_objfile_backlink;
|
||||
}
|
||||
|
||||
if (bl_objf == objfile
|
||||
|| (d->exp != NULL && exp_uses_objfile (d->exp.get (), objfile)))
|
||||
{
|
||||
d->exp.reset ();
|
||||
d->block = NULL;
|
||||
}
|
||||
{
|
||||
d->exp.reset ();
|
||||
d->block = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
46
gdb/symtab.c
46
gdb/symtab.c
@ -1917,7 +1917,7 @@ lookup_language_this (const struct language_defn *lang,
|
||||
|
||||
if (symbol_lookup_debug > 1)
|
||||
{
|
||||
struct objfile *objfile = lookup_objfile_from_block (block);
|
||||
struct objfile *objfile = block_objfile (block);
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"lookup_language_this (%s, %s (objfile %s))",
|
||||
@ -2012,7 +2012,8 @@ lookup_symbol_aux (const char *name, symbol_name_match_type match_type,
|
||||
|
||||
if (symbol_lookup_debug)
|
||||
{
|
||||
struct objfile *objfile = lookup_objfile_from_block (block);
|
||||
struct objfile *objfile = (block == nullptr
|
||||
? nullptr : block_objfile (block));
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"lookup_symbol_aux (%s, %s (objfile %s), %s, %s)\n",
|
||||
@ -2157,32 +2158,6 @@ lookup_local_symbol (const char *name,
|
||||
|
||||
/* See symtab.h. */
|
||||
|
||||
struct objfile *
|
||||
lookup_objfile_from_block (const struct block *block)
|
||||
{
|
||||
if (block == NULL)
|
||||
return NULL;
|
||||
|
||||
block = block_global_block (block);
|
||||
/* Look through all blockvectors. */
|
||||
for (objfile *obj : current_program_space->objfiles ())
|
||||
{
|
||||
for (compunit_symtab *cust : obj->compunits ())
|
||||
if (block == BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
|
||||
GLOBAL_BLOCK))
|
||||
{
|
||||
if (obj->separate_debug_objfile_backlink)
|
||||
obj = obj->separate_debug_objfile_backlink;
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* See symtab.h. */
|
||||
|
||||
struct symbol *
|
||||
lookup_symbol_in_block (const char *name, symbol_name_match_type match_type,
|
||||
const struct block *block,
|
||||
@ -2192,7 +2167,8 @@ lookup_symbol_in_block (const char *name, symbol_name_match_type match_type,
|
||||
|
||||
if (symbol_lookup_debug > 1)
|
||||
{
|
||||
struct objfile *objfile = lookup_objfile_from_block (block);
|
||||
struct objfile *objfile = (block == nullptr
|
||||
? nullptr : block_objfile (block));
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"lookup_symbol_in_block (%s, %s (objfile %s), %s)",
|
||||
@ -2482,7 +2458,8 @@ lookup_symbol_in_static_block (const char *name,
|
||||
|
||||
if (symbol_lookup_debug)
|
||||
{
|
||||
struct objfile *objfile = lookup_objfile_from_block (static_block);
|
||||
struct objfile *objfile = (block == nullptr
|
||||
? nullptr : block_objfile (block));
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"lookup_symbol_in_static_block (%s, %s (objfile %s),"
|
||||
@ -2704,7 +2681,14 @@ lookup_global_symbol (const char *name,
|
||||
return { sym, global_block };
|
||||
}
|
||||
|
||||
struct objfile *objfile = lookup_objfile_from_block (block);
|
||||
struct objfile *objfile = nullptr;
|
||||
if (block != nullptr)
|
||||
{
|
||||
objfile = block_objfile (block);
|
||||
if (objfile->separate_debug_objfile_backlink != nullptr)
|
||||
objfile = objfile->separate_debug_objfile_backlink;
|
||||
}
|
||||
|
||||
block_symbol bs
|
||||
= lookup_global_or_static_symbol (name, GLOBAL_BLOCK, objfile, domain);
|
||||
if (better_symbol (sym, bs.symbol, domain) == sym)
|
||||
|
@ -2238,10 +2238,6 @@ bool producer_is_realview (const char *producer);
|
||||
void fixup_section (struct general_symbol_info *ginfo,
|
||||
CORE_ADDR addr, struct objfile *objfile);
|
||||
|
||||
/* Look up objfile containing BLOCK. */
|
||||
|
||||
struct objfile *lookup_objfile_from_block (const struct block *block);
|
||||
|
||||
extern unsigned int symtab_create_debug;
|
||||
|
||||
extern unsigned int symbol_lookup_debug;
|
||||
|
Loading…
Reference in New Issue
Block a user