diff options
author | Stu Grossman <grossman@cygnus> | 1993-05-05 22:39:23 +0000 |
---|---|---|
committer | Stu Grossman <grossman@cygnus> | 1993-05-05 22:39:23 +0000 |
commit | 4b01383bcd20363075b8923d7ad2c037aff665f3 (patch) | |
tree | 2436bdd8197680a7655652da10080f20a6ccc30d /gdb/hppa-tdep.c | |
parent | b227992a7642750bb84d3908db66b89422e14518 (diff) | |
download | gdb-4b01383bcd20363075b8923d7ad2c037aff665f3.zip gdb-4b01383bcd20363075b8923d7ad2c037aff665f3.tar.gz gdb-4b01383bcd20363075b8923d7ad2c037aff665f3.tar.bz2 |
* Patches from Jeffrey Law <law@cs.utah.edu>.
* gdb/hppa-tdep.c (frame_chain_valid): If "use_unwind" is true, then
use unwind descriptors to determine if the frame chain is valid.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index ca23938..2163ed5 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -437,13 +437,28 @@ frame_chain_valid (chain, thisframe) if (!chain) return 0; - msym = lookup_minimal_symbol_by_pc (FRAME_SAVED_PC (thisframe)); + if (use_unwind) + { - if (msym - && (strcmp (SYMBOL_NAME (msym), "_start") == 0)) - return 0; + struct unwind_table_entry *u; + + u = find_unwind_entry (thisframe->pc); + + if (u && (u->Save_SP || u->Total_frame_size)) + return 1; + else + return 0; + } else - return 1; + { + msym = lookup_minimal_symbol_by_pc (FRAME_SAVED_PC (thisframe)); + + if (msym + && (strcmp (SYMBOL_NAME (msym), "_start") == 0)) + return 0; + else + return 1; + } } /* |