aboutsummaryrefslogtreecommitdiff
path: root/gdb/hppa-tdep.c
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-07-30 15:52:26 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-07-30 15:52:26 +0000
commit247145e6f09b18f41117b8239dae0d4d9b539950 (patch)
treed3c059dbe509ee788dcea27b3fe4883b70bc493d /gdb/hppa-tdep.c
parentca33fca1f9185cb1f128ce4e8ab72bbbdcd648c0 (diff)
downloadgdb-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.c17
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)