summaryrefslogtreecommitdiff
path: root/gdb/findvar.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-04-08 20:18:10 +0000
committerTom Tromey <tromey@redhat.com>2013-04-08 20:18:10 +0000
commit98e1b3e3b904aca13666570f9480066f01984daf (patch)
tree91a9c776be313067db107af610f3a91f4971b36b /gdb/findvar.c
parent79b7922fc17b9346596842f51f44c2e68d8c661d (diff)
downloadgdb-98e1b3e3b904aca13666570f9480066f01984daf.tar.gz
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.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 22be47a887c..fdce436baac 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);