diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1994-03-08 18:22:56 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1994-03-08 18:22:56 +0000 |
commit | 9d2b8d50f43914294f27d0a2a7ce1188b2408575 (patch) | |
tree | dbbe652ec1d772b01551d1058064f98163d7ffd8 /gdb/dbxread.c | |
parent | d16938f52e306395a0e73ba71c87aa5b68f3382d (diff) | |
download | gdb-9d2b8d50f43914294f27d0a2a7ce1188b2408575.zip gdb-9d2b8d50f43914294f27d0a2a7ce1188b2408575.tar.gz gdb-9d2b8d50f43914294f27d0a2a7ce1188b2408575.tar.bz2 |
* dbxread.c: New variable lowest_text_address.
(record_minimal_symbol, read_dbx_symtab): Set it.
(read_dbx_symtab): Use lowest_text_address + text_size instead of
end_of_text_address.
* config/gould/tm-pn.h: Add comment regarding END_OF_TEXT_DEFAULT.
Diffstat (limited to 'gdb/dbxread.c')
-rw-r--r-- | gdb/dbxread.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c index b2bcb32..02441f2 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -138,6 +138,9 @@ static unsigned string_table_offset; offset for the current and next .o files. */ static unsigned int file_string_table_offset; static unsigned int next_file_string_table_offset; + +/* This is the lowest text address we have yet encountered. */ +static CORE_ADDR lowest_text_address; /* Complaints about the symbols we have encountered. */ @@ -450,6 +453,10 @@ record_minimal_symbol (name, address, type, objfile) default: ms_type = mst_unknown; break; } + if (ms_type == mst_file_text || ms_type == mst_text + && address < lowest_text_address) + lowest_text_address = address; + prim_record_minimal_symbol (obsavestring (name, strlen (name), &objfile -> symbol_obstack), address, @@ -881,12 +888,7 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) last_source_file = NULL; -#ifdef END_OF_TEXT_DEFAULT - end_of_text_addr = END_OF_TEXT_DEFAULT; -#else - end_of_text_addr = text_addr + section_offsets->offsets[SECT_OFF_TEXT] - + text_size; /* Relocate */ -#endif + lowest_text_address = (CORE_ADDR)-1; symfile_bfd = objfile->obfd; /* For next_text_symbol */ abfd = objfile->obfd; @@ -959,7 +961,10 @@ read_dbx_symtab (section_offsets, objfile, text_addr, text_size) if (pst) { end_psymtab (pst, psymtab_include_list, includes_used, - symnum * symbol_size, end_of_text_addr, + symnum * symbol_size, + (lowest_text_address == (CORE_ADDR)-1 + ? text_addr : lowest_text_address) + + text_size, dependency_list, dependencies_used); } @@ -1025,7 +1030,6 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, CORE_ADDR capping_text; struct partial_symtab **dependency_list; int number_dependencies; -/* struct partial_symbol *capping_global, *capping_static;*/ { int i; struct partial_symtab *p1; @@ -1104,7 +1108,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, if (pst->textlow == 0) /* This loses if the text section really starts at address zero (generally true when we are debugging a .o file, for example). - That is why this whole thing is inside N_SO_ADDRESS_MIGHT_LIE. */ + That is why this whole thing is inside N_SO_ADDRESS_MAYBE_MISSING. */ pst->textlow = pst->texthigh; /* If we know our own starting text address, then walk through all other @@ -1124,7 +1128,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset, } /* End of kludge for patching Solaris textlow and texthigh. */ -#endif /* NO_SO_ADDRESS_MAYBE_MISSING. */ +#endif /* N_SO_ADDRESS_MAYBE_MISSING. */ pst->n_global_syms = objfile->global_psymbols.next - (objfile->global_psymbols.list + pst->globals_offset); @@ -1518,12 +1522,14 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) N_STSYM or N_GSYM for SunOS4 acc; N_FUN for other compilers. */ static int function_stab_type = 0; - /* This is true for Solaris (and all other stabs-in-elf systems, hopefully, - since it would be silly to do things differently from Solaris), and - false for SunOS4 and other a.out file formats. */ + /* This is true for Solaris (and all other systems which put stabs + in sections, hopefully, since it would be silly to do things + differently from Solaris), and false for SunOS4 and other a.out + file formats. */ block_address_function_relative = - (0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3)) - || (0 == strncmp (bfd_get_target (objfile->obfd), "som", 3)); + ((0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3)) + || (0 == strncmp (bfd_get_target (objfile->obfd), "som", 3)) + || (0 == strncmp (bfd_get_target (objfile->obfd), "coff", 4))); if (!block_address_function_relative) /* N_LBRAC, N_RBRAC and N_SLINE entries are not relative to the @@ -1818,8 +1824,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) case N_NBBSS: case N_NBSTS: case N_NBLCS: - complain (&unknown_symtype_complaint, - local_hex_string((unsigned long) type)); + complain (&unknown_symtype_complaint, local_hex_string (type)); /* FALLTHROUGH */ /* The following symbol types don't need the address field relocated, |