diff options
author | Jim Blandy <jimb@codesourcery.com> | 2003-09-12 23:34:55 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2003-09-12 23:34:55 +0000 |
commit | 61c45d396df1ba790a7e23aef27e6b711fa413a5 (patch) | |
tree | 0c6b487dbb61f030986740794c96816a0a2b14b1 /gdb | |
parent | ae55c0bf3c5fb36bd7cb51ebcc1b75f4500b56cf (diff) | |
download | gdb-61c45d396df1ba790a7e23aef27e6b711fa413a5.tar.gz |
* dbxread.c (read_dbx_symtab): Add FIXME about finding section
offsets for global and static variables.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 3 | ||||
-rw-r--r-- | gdb/dbxread.c | 21 |
2 files changed, 23 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0060e87e798..17f2be97218 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2003-09-12 Jim Blandy <jimb@redhat.com> + * dbxread.c (read_dbx_symtab): Add FIXME about finding section + offsets for global and static variables. + * dbxread.c (read_dbx_symtab): The N_DATA and N_DATA | N_EXT symbol types are, by definition, in the .data section, so it is correct to use SECT_OFF_DATA (objfile) here, not data_sect_index. diff --git a/gdb/dbxread.c b/gdb/dbxread.c index d0b3710c5d8..57201307066 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -1357,7 +1357,26 @@ read_dbx_symtab (struct objfile *objfile) textlow_not_set = 1; has_line_numbers = 0; - /* If the objfile has no .data section, try using the .bss section. */ + /* 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); |