2005-11-19 Randolph Chung <tausq@debian.org>
authorRandolph Chung <tausq@debian.org>
Sat, 19 Nov 2005 12:39:50 +0000 (12:39 +0000)
committerRandolph Chung <tausq@debian.org>
Sat, 19 Nov 2005 12:39:50 +0000 (12:39 +0000)
* 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.

gdb/ChangeLog
gdb/hppa-tdep.c

index 466d01787052a609b817e65578d9ab60734ed75a..9deea608d36db6ff24568dca2cfa3179e986c410 100644 (file)
@@ -1,3 +1,10 @@
+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 
index 6dfb2419540417da56d90b46bdb93fa70bc2e968..94de581cb13903555b4b44d1d669f6c12dbcd905 100644 (file)
@@ -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;