This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH RFA] dwarf2read.c: symbol relocation in new_symbol()
- To: Elena Zannoni <ezannoni at redhat dot com>
- Subject: [PATCH RFA] dwarf2read.c: symbol relocation in new_symbol()
- From: Kevin Buettner <kevinb at cygnus dot com>
- Date: Sat, 28 Oct 2000 14:34:34 -0700
- Cc: gdb-patches at sourceware dot cygnus dot com
AIX5/IA-64 relocates read-only and read/write sections by different
amounts. The patch below fixes dwarf2read.c to account for this
scenario.
I was tempted to try to fix the other occurrences of baseaddr in
this file, but decided to leave that for one our symtabs/dwarf2
experts.
I've tested this patch on linux/x86 w/ -gdwarf-2 and saw no
regressions. (I've also done some limited testing on AIX5 and it does
indeed fix the problems that I was seeing.)
Okay to commit?
* dwarf2read.c (new_symbol): Relocate address of symbol by the
base address of the section it is in rather than always using
the base address of the .text section.
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.16
diff -u -p -r1.16 dwarf2read.c
--- dwarf2read.c 2000/08/04 16:51:47 1.16
+++ dwarf2read.c 2000/10/28 20:59:09
@@ -4185,7 +4185,10 @@ new_symbol (struct die_info *die, struct
the variable is referenced. */
if (SYMBOL_VALUE_ADDRESS (sym))
{
- SYMBOL_VALUE_ADDRESS (sym) += baseaddr;
+ fixup_symbol_section (sym, objfile);
+ SYMBOL_VALUE_ADDRESS (sym) +=
+ ANOFFSET (objfile->section_offsets,
+ SYMBOL_SECTION (sym));
SYMBOL_CLASS (sym) = LOC_STATIC;
}
else
@@ -4215,8 +4218,11 @@ new_symbol (struct die_info *die, struct
}
else
{
+ fixup_symbol_section (sym, objfile);
SYMBOL_CLASS (sym) = LOC_STATIC;
- SYMBOL_VALUE_ADDRESS (sym) = addr + baseaddr;
+ SYMBOL_VALUE_ADDRESS (sym) =
+ addr + ANOFFSET (objfile->section_offsets,
+ SYMBOL_SECTION (sym));
}
}
}