diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-30 15:52:26 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-30 15:52:26 +0000 |
commit | 247145e6f09b18f41117b8239dae0d4d9b539950 (patch) | |
tree | d3c059dbe509ee788dcea27b3fe4883b70bc493d /gdb/hppa-tdep.c | |
parent | ca33fca1f9185cb1f128ce4e8ab72bbbdcd648c0 (diff) | |
download | gdb-247145e6f09b18f41117b8239dae0d4d9b539950.zip gdb-247145e6f09b18f41117b8239dae0d4d9b539950.tar.gz gdb-247145e6f09b18f41117b8239dae0d4d9b539950.tar.bz2 |
* paread.c (pa_symtab_read): Put file-local symbols in minimal symbols.
* hppa-tdep.c (frame_chain_valid): Check that our function has the
same address as _start, not that it must be the same symbol.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index e8b3893..3bae845 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -540,7 +540,8 @@ frame_chain_valid (chain, thisframe) FRAME_ADDR chain; FRAME thisframe; { - struct minimal_symbol *msym; + struct minimal_symbol *msym_us; + struct minimal_symbol *msym_start; struct unwind_table_entry *u; if (!chain) @@ -548,9 +549,17 @@ frame_chain_valid (chain, thisframe) u = find_unwind_entry (thisframe->pc); - msym = lookup_minimal_symbol_by_pc (FRAME_SAVED_PC (thisframe)); - if (msym - && (strcmp (SYMBOL_NAME (msym), "_start") == 0)) + /* We can't just check that the same of msym_us is "_start", because + someone idiotically decided that they were going to make a Ltext_end + symbol with the same address. This Ltext_end symbol is totally + indistinguishable (as nearly as I can tell) from the symbol for a function + which is (legitimately, since it is in the user's namespace) + named Ltext_end, so we can't just ignore it. */ + msym_us = lookup_minimal_symbol_by_pc (FRAME_SAVED_PC (thisframe)); + msym_start = lookup_minimal_symbol ("_start", NULL); + if (msym_us + && msym_start + && SYMBOL_VALUE_ADDRESS (msym_us) == SYMBOL_VALUE_ADDRESS (msym_start)) return 0; if (u == NULL) |