diff options
author | Stu Grossman <grossman@cygnus> | 1996-07-23 01:24:58 +0000 |
---|---|---|
committer | Stu Grossman <grossman@cygnus> | 1996-07-23 01:24:58 +0000 |
commit | 3a179be14970730a9bfb864aa8c8c91baccbb4bd (patch) | |
tree | 0e979ed9b43934e41da13c80834c4072d6ad6164 /gdb/partial-stab.h | |
parent | bf9884d41d4604d287ce495d1b0b87b028805951 (diff) | |
download | gdb-3a179be14970730a9bfb864aa8c8c91baccbb4bd.zip gdb-3a179be14970730a9bfb864aa8c8c91baccbb4bd.tar.gz gdb-3a179be14970730a9bfb864aa8c8c91baccbb4bd.tar.bz2 |
* Makefile.in (os9kread.o): Remove dependency on partial-stab.h.
* dbxread.c (read_dbx_symtab end_psymtab), partial-stab.h: Don't
use partial_symtab->textlow==0 as a flag, as 0 is a legitimate
text address. Use a seperate flag (textlow_not_set) instead.
This makes stabs in ELF .o files work a lot better.
* mdebugread.c xcoffread.c: Define textlow_not_set for
partial-stab.h.
* stabsread.h (end_psymtab): Add textlow_not_set arg to prototype.
Diffstat (limited to 'gdb/partial-stab.h')
-rw-r--r-- | gdb/partial-stab.h | 54 |
1 files changed, 39 insertions, 15 deletions
diff --git a/gdb/partial-stab.h b/gdb/partial-stab.h index 9fe653b..c51f091 100644 --- a/gdb/partial-stab.h +++ b/gdb/partial-stab.h @@ -106,7 +106,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ symnum * symbol_size, CUR_SYMBOL_VALUE > pst->texthigh ? CUR_SYMBOL_VALUE : pst->texthigh, - dependency_list, dependencies_used); + dependency_list, dependencies_used, textlow_not_set); pst = (struct partial_symtab *) 0; includes_used = 0; dependencies_used = 0; @@ -197,16 +197,27 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static int prev_so_symnum = -10; static int first_so_symnum; char *p; + int prev_textlow_not_set; valu = CUR_SYMBOL_VALUE + ANOFFSET (section_offsets, SECT_OFF_TEXT); + + prev_textlow_not_set = textlow_not_set; + #ifdef SOFUN_ADDRESS_MAYBE_MISSING /* A zero value is probably an indication for the SunPRO 3.0 compiler. end_psymtab explicitly tests for zero, so don't relocate it. */ + if (CUR_SYMBOL_VALUE == 0) - valu = 0; + { + textlow_not_set = 1; + valu = 0; + } + else + textlow_not_set = 0; +#else + textlow_not_set = 0; #endif - past_first_source_file = 1; if (prev_so_symnum != symnum - 1) @@ -218,7 +229,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ END_PSYMTAB (pst, psymtab_include_list, includes_used, symnum * symbol_size, valu > pst->texthigh ? valu : pst->texthigh, - dependency_list, dependencies_used); + dependency_list, dependencies_used, + prev_textlow_not_set); pst = (struct partial_symtab *) 0; includes_used = 0; dependencies_used = 0; @@ -554,9 +566,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef SOFUN_ADDRESS_MAYBE_MISSING /* Do not fix textlow==0 for .o or NLM files, as 0 is a legit value for the bottom of the text seg in those cases. */ - if (pst && pst->textlow == 0 && !symfile_relocatable) - pst->textlow = - find_stab_function_addr (namestring, pst, objfile); + if (pst && textlow_not_set) + { + pst->textlow = + find_stab_function_addr (namestring, pst, objfile); + textlow_not_set = 0; + } #endif #if 0 if (startup_file_end == 0) @@ -568,11 +583,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ the bounds created by N_SO symbols. If that's the case use the address of this function as the low bound for the partial symbol table. */ - if (pst->textlow == 0 + if (textlow_not_set || (CUR_SYMBOL_VALUE < pst->textlow && CUR_SYMBOL_VALUE != ANOFFSET (section_offsets, SECT_OFF_TEXT))) - pst->textlow = CUR_SYMBOL_VALUE; + { + pst->textlow = CUR_SYMBOL_VALUE; + textlow_not_set = 0; + } #endif /* DBXREAD_ONLY */ add_psymbol_to_list (namestring, p - namestring, VAR_NAMESPACE, LOC_BLOCK, @@ -594,9 +612,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef SOFUN_ADDRESS_MAYBE_MISSING /* Do not fix textlow==0 for .o or NLM files, as 0 is a legit value for the bottom of the text seg in those cases. */ - if (pst && pst->textlow == 0 && !symfile_relocatable) - pst->textlow = - find_stab_function_addr (namestring, pst, objfile); + if (pst && textlow_not_set) + { + pst->textlow = + find_stab_function_addr (namestring, pst, objfile); + textlow_not_set = 0; + } #endif #if 0 if (startup_file_end == 0) @@ -607,11 +628,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ the bounds created by N_SO symbols. If that's the case use the address of this function as the low bound for the partial symbol table. */ - if (pst->textlow == 0 + if (textlow_not_set || (CUR_SYMBOL_VALUE < pst->textlow && CUR_SYMBOL_VALUE != ANOFFSET (section_offsets, SECT_OFF_TEXT))) - pst->textlow = CUR_SYMBOL_VALUE; + { + pst->textlow = CUR_SYMBOL_VALUE; + textlow_not_set = 0; + } #endif /* DBXREAD_ONLY */ add_psymbol_to_list (namestring, p - namestring, VAR_NAMESPACE, LOC_BLOCK, @@ -728,7 +752,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ END_PSYMTAB (pst, psymtab_include_list, includes_used, symnum * symbol_size, (CORE_ADDR) 0, - dependency_list, dependencies_used); + dependency_list, dependencies_used, textlow_not_set); pst = (struct partial_symtab *) 0; includes_used = 0; dependencies_used = 0; |