mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
remove msymbol_objfile
This is another patch in my ongoing series to "split" objfile to share
more read-only data across inferiors. See
http://sourceware.org/gdb/wiki/ObjfileSplitting
When symbols are finally shared, there will be no back-link from the
symbol to its containing objfile, because there may be more than one
such objfile. So, all such back-links must be removed.
One hidden back-link is the msymbol_objfile function. Since
(eventually) a symbol may appear in more than one objfile, trying to
look up the objfile given just a symbol cannot work.
This patch removes msymbol_objfile in favor of using a bound minimal
symbol. It introduces a new function to make this conversion simpler
in some spots.
The bonus of this patch is that using msymbol_objfile is slower than
simply looking up the owning objfile in the first place.
Built and regtested on x86-64 Fedora 18.
* ada-exp.y (write_var_or_type): Use bound_minimal_symbol.
* ada-lang.c (ada_lookup_simple_minsym): Return
bound_minimal_symbol.
* ada-lang.h (ada_lookup_simple_minsym): Update.
* c-exp.y (variable): Use lookup_bound_minimal_symbol.
* f-exp.y (variable): Use lookup_bound_minimal_symbol.
* go-exp.y (variable): Use lookup_bound_minimal_symbol.
* jv-exp.y (push_expression_name): Use lookup_bound_minimal_symbol.
* m2-exp.y (variable): Use lookup_bound_minimal_symbol.
* minsyms.c (msymbol_objfile): Remove.
(lookup_minimal_symbol_internal): New function, from
lookup_minimal_symbol.
(lookup_minimal_symbol): Rewrite using
lookup_minimal_symbol_internal.
(lookup_bound_minimal_symbol): New function.
* minsyms.h (msymbol_objfile): Remove.
(lookup_bound_minimal_symbol): Declare.
* p-exp.y (variable): Use lookup_bound_minimal_symbol.
* parse.c (write_exp_msymbol): Change parameter to a
bound_minimal_symbol.
(write_dollar_variable): Use lookup_bound_minimal_symbol.
* parser-defs.h (write_exp_msymbol): Update.
* printcmd.c (address_info): Use lookup_bound_minimal_symbol.
* symfile.c (simple_read_overlay_table): Use
lookup_bound_minimal_symbol.
* symtab.c (skip_prologue_sal): Don't use msymbol_objfile.
(search_symbols): Likewise.
(print_msymbol_info): Take a bound_minimal_symbol argument.
(symtab_symbol_info, rbreak_command): Update.
* symtab.h (struct symbol_search) <msymbol>: Change type
to bound_minimal_symbol.
* valops.c (find_function_in_inferior): Use
lookup_bound_minimal_symbol.
* value.c (value_fn_field): Use lookup_bound_minimal_symbol.
This commit is contained in:
11
gdb/parse.c
11
gdb/parse.c
@@ -496,9 +496,10 @@ write_exp_bitstring (struct stoken str)
|
||||
the expression. */
|
||||
|
||||
void
|
||||
write_exp_msymbol (struct minimal_symbol *msymbol)
|
||||
write_exp_msymbol (struct bound_minimal_symbol bound_msym)
|
||||
{
|
||||
struct objfile *objfile = msymbol_objfile (msymbol);
|
||||
struct minimal_symbol *msymbol = bound_msym.minsym;
|
||||
struct objfile *objfile = bound_msym.objfile;
|
||||
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||
|
||||
CORE_ADDR addr = SYMBOL_VALUE_ADDRESS (msymbol);
|
||||
@@ -640,7 +641,7 @@ void
|
||||
write_dollar_variable (struct stoken str)
|
||||
{
|
||||
struct symbol *sym = NULL;
|
||||
struct minimal_symbol *msym = NULL;
|
||||
struct bound_minimal_symbol msym;
|
||||
struct internalvar *isym = NULL;
|
||||
|
||||
/* Handle the tokens $digits; also $ (short for $0) and $$ (short for $$1)
|
||||
@@ -704,8 +705,8 @@ write_dollar_variable (struct stoken str)
|
||||
write_exp_elt_opcode (OP_VAR_VALUE);
|
||||
return;
|
||||
}
|
||||
msym = lookup_minimal_symbol (copy_name (str), NULL, NULL);
|
||||
if (msym)
|
||||
msym = lookup_bound_minimal_symbol (copy_name (str));
|
||||
if (msym.minsym)
|
||||
{
|
||||
write_exp_msymbol (msym);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user