summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandolph Chung <tausq@debian.org>2005-11-19 12:39:50 +0000
committerRandolph Chung <tausq@debian.org>2005-11-19 12:39:50 +0000
commit9e9a13ae3bb5da1dd72bb5b8f49bd657e03b4917 (patch)
treec2c589697af1629fae35844dcc859eba62770ae9
parent698ecb4a0306205b19c9a64986ed026d527c78ce (diff)
downloadgdb-9e9a13ae3bb5da1dd72bb5b8f49bd657e03b4917.tar.gz
2005-11-19 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (skip_prologue_hard_way): Add one more insn pattern for "std rp,-0x10(sp)". (hppa_frame_cache): Likewise. (hppa_fallback_frame_cache): Likewise.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/hppa-tdep.c8
2 files changed, 12 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 466d0178705..9deea608d36 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2005-11-19 Randolph Chung <tausq@debian.org>
+ * hppa-tdep.c (skip_prologue_hard_way): Add one more insn pattern
+ for "std rp,-0x10(sp)".
+ (hppa_frame_cache): Likewise.
+ (hppa_fallback_frame_cache): Likewise.
+
+2005-11-19 Randolph Chung <tausq@debian.org>
+
* hppa-tdep.c (hppa_frame_cache): Reformat code and enhance
debugging.
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 6dfb2419540..94de581cb13 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1491,7 +1491,7 @@ restart:
/* There are limited ways to store the return pointer into the
stack. */
- if (inst == 0x6bc23fd9 || inst == 0x0fc212c1)
+ if (inst == 0x6bc23fd9 || inst == 0x0fc212c1 || inst == 0x73c23fe1)
save_rp = 0;
/* These are the only ways we save SP into the stack. At this time
@@ -1846,7 +1846,8 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache)
looking_for_rp = 0;
cache->saved_regs[HPPA_RP_REGNUM].addr = -24;
}
- else if (inst == 0x0fc212c1) /* std rp,-0x10(sr0,sp) */
+ else if (inst == 0x0fc212c1
+ || inst == 0x73c23fe1) /* std rp,-0x10(sr0,sp) */
{
looking_for_rp = 0;
cache->saved_regs[HPPA_RP_REGNUM].addr = -16;
@@ -2187,7 +2188,8 @@ hppa_fallback_frame_cache (struct frame_info *next_frame, void **this_cache)
cache->saved_regs[HPPA_RP_REGNUM].addr = -20;
found_rp = 1;
}
- else if (insn == 0x0fc212c1) /* std rp,-0x10(sr0,sp) */
+ else if (insn == 0x0fc212c1
+ || insn == 0x73c23fe1) /* std rp,-0x10(sr0,sp) */
{
cache->saved_regs[HPPA_RP_REGNUM].addr = -16;
found_rp = 1;