This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
PATCH: Add FIXME about section offsets in dbxread
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 12 Sep 2003 19:01:33 -0500
- Subject: PATCH: Add FIXME about section offsets in dbxread
2003-09-12 Jim Blandy <jimb@redhat.com>
* dbxread.c (read_dbx_symtab): Add FIXME about finding section
offsets for global and static variables.
Index: gdb/dbxread.c
===================================================================
RCS file: /cvs/src/src/gdb/dbxread.c,v
retrieving revision 1.51
diff -c -r1.51 dbxread.c
*** gdb/dbxread.c 12 Sep 2003 22:49:25 -0000 1.51
--- gdb/dbxread.c 12 Sep 2003 23:31:37 -0000
***************
*** 1357,1363 ****
textlow_not_set = 1;
has_line_numbers = 0;
! /* If the objfile has no .data section, try using the .bss section. */
data_sect_index = objfile->sect_index_data;
if (data_sect_index == -1)
data_sect_index = SECT_OFF_BSS (objfile);
--- 1357,1382 ----
textlow_not_set = 1;
has_line_numbers = 0;
! /* FIXME: jimb/2003-09-12: We don't apply the right section's offset
! to global and static variables. The stab for a global or static
! variable doesn't give us any indication of which section it's in,
! so we can't tell immediately which offset in
! objfile->section_offsets we should apply to the variable's
! address.
!
! We could certainly find out which section contains the variable
! by looking up the variable's unrelocated address with
! find_pc_section, but that would be expensive; this is the
! function that constructs the partial symbol tables by examining
! every symbol in the entire executable, and it's
! performance-critical. So that expense would not be welcome. I'm
! not sure what to do about this at the moment.
!
! What we have done for years is to simply assume that the .data
! section's offset is appropriate for all global and static
! variables. Recently, this was expanded to fall back to the .bss
! section's offset if there is no .data section, and then to the
! .rodata section's offset. */
data_sect_index = objfile->sect_index_data;
if (data_sect_index == -1)
data_sect_index = SECT_OFF_BSS (objfile);