Reviewed by Mark Kettenis <mark.kettenis@xs4all.nl>
authorFred Fish <fnf@specifix.com>
Tue, 27 Feb 2007 17:29:51 +0000 (17:29 +0000)
committerFred Fish <fnf@specifix.com>
Tue, 27 Feb 2007 17:29:51 +0000 (17:29 +0000)
2007-02-27  Fred Fish  <fnf@specifix.com>
* rs6000-tdep.c (skip_prologue): Recognize addi instructions that
directly decrement the stack pointer, accumulate their operand into
the stack offset, and mark the function as not being frameless.

gdb/ChangeLog
gdb/rs6000-tdep.c

index 137cf70..12cdcd2 100644 (file)
@@ -1,3 +1,9 @@
+2007-02-27  Fred Fish  <fnf@specifix.com>
+
+       * rs6000-tdep.c (skip_prologue): Recognize addi instructions that 
+       directly decrement the stack pointer, accumulate their operand into 
+       the stack offset, and mark the function as not being frameless.
+
 2007-02-26  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * arch-utils.c (selected_byte_order): New.
index cf9eefb..e107114 100644 (file)
@@ -1219,6 +1219,13 @@ skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
          offset = fdata->offset;
          continue;
        }
+      else if ((op & 0xffff0000) == 0x38210000)
+       {                       /* addi r1,r1,SIMM */
+         fdata->frameless = 0;
+         fdata->offset += SIGNED_SHORT (op);
+         offset = fdata->offset;
+         continue;
+       }
       /* Load up minimal toc pointer */
       else if (((op >> 22) == 0x20f    ||      /* l r31,... or l r30,... */
               (op >> 22) == 0x3af)             /* ld r31,... or ld r30,... */