diff options
author | Tom Tromey <tromey@redhat.com> | 2013-04-08 20:18:11 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-04-08 20:18:11 +0000 |
commit | e27d198cc40537237b23d1f34f972d3b2e1c805e (patch) | |
tree | 814a2a2f860353484bac1491ffd361a1bc77d2db /gdb/findvar.c | |
parent | e6dc44a8f5a3df8a1799ee1c8a0c7703988923ae (diff) | |
download | gdb-e27d198cc40537237b23d1f34f972d3b2e1c805e.zip gdb-e27d198cc40537237b23d1f34f972d3b2e1c805e.tar.gz gdb-e27d198cc40537237b23d1f34f972d3b2e1c805e.tar.bz2 |
PR symtab/8424:
* blockframe.c (find_pc_partial_function_gnu_ifunc): Check
SYMBOL_SECTION, not SYMBOL_OBJ_SECTION.
* breakpoint.c (resolve_sal_pc): Update.
* elfread.c (elf_gnu_ifunc_record_cache): Update.
* findvar.c (struct minsym_lookup_data) <objfile>: New field.
(minsym_lookup_iterator_cb): Use it.
(default_read_var_value): Update.
* hppa-hpux-tdep.c (hppa64_hpux_in_solib_call_trampoline):
Update.
* infcmd.c (jump_command): Update.
* linespec.c (minsym_found): Update.
* maint.c (maintenance_translate_address): Update.
* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Update.
(prim_record_minimal_symbol_full): Don't set SYMBOL_OBJ_SECTION.
* parse.c (write_exp_msymbol): Update.
* printcmd.c (address_info): Update.
* psymtab.c (find_pc_sect_psymbol): Update.
(fixup_psymbol_section): Check SYMBOL_SECTION, not
SYMBOL_OBJ_SECTION.
(add_psymbol_to_bcache): Correctly initialize SYMBOL_SECTION.
Don't initialize SYMBOL_OBJ_SECTION.
* spu-tdep.c (spu_catch_start): Update.
* stabsread.c (define_symbol): Don't set SYMBOL_SECTION.
* symmisc.c (dump_msymbols, print_symbol): Update.
* symtab.c (fixup_section): Don't set 'obj_section'. Change
how fallback section is computed.
(fixup_symbol_section): Update.
(find_pc_sect_symtab, find_function_start_sal, skip_prologue_sal):
Update.
(allocate_symbol, initialize_symbol, allocate_template_symbol):
Initialize SYMBOL_SECTION.
* symtab.h (struct general_symbol_info) <section>: Update comment.
<obj_section>: Remove.
(SYMBOL_OBJ_SECTION): Add 'objfile' argument. Rewrite.
(SYMBOL_OBJFILE): New macro.
Diffstat (limited to 'gdb/findvar.c')
-rw-r--r-- | gdb/findvar.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gdb/findvar.c b/gdb/findvar.c index 22be47a..fdce436 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -414,6 +414,9 @@ struct minsym_lookup_data if found. It should be initialized to NULL before the search is started. */ struct minimal_symbol *result; + + /* The objfile in which the symbol was found. */ + struct objfile *objfile; }; /* A callback function for gdbarch_iterate_over_objfiles_in_search_order. @@ -429,6 +432,7 @@ minsym_lookup_iterator_cb (struct objfile *objfile, void *cb_data) gdb_assert (data->result == NULL); data->result = lookup_minimal_symbol (data->name, NULL, objfile); + data->objfile = objfile; /* The iterator should stop iff a match was found. */ return (data->result != NULL); @@ -475,7 +479,8 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) { CORE_ADDR addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), - SYMBOL_OBJ_SECTION (var)); + SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var), + var)); store_typed_address (value_contents_raw (v), type, addr); } @@ -496,7 +501,8 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) v = allocate_value_lazy (type); if (overlay_debugging) addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), - SYMBOL_OBJ_SECTION (var)); + SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var), + var)); else addr = SYMBOL_VALUE_ADDRESS (var); break; @@ -541,7 +547,8 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) v = allocate_value_lazy (type); if (overlay_debugging) addr = symbol_overlayed_address - (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (var)); + (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var), + var)); else addr = BLOCK_START (SYMBOL_BLOCK_VALUE (var)); break; @@ -600,11 +607,12 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) error (_("No global symbol \"%s\"."), SYMBOL_LINKAGE_NAME (var)); if (overlay_debugging) addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (msym), - SYMBOL_OBJ_SECTION (msym)); + SYMBOL_OBJ_SECTION (lookup_data.objfile, + msym)); else addr = SYMBOL_VALUE_ADDRESS (msym); - obj_section = SYMBOL_OBJ_SECTION (msym); + obj_section = SYMBOL_OBJ_SECTION (lookup_data.objfile, msym); if (obj_section && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0) addr = target_translate_tls_address (obj_section->objfile, addr); |