aboutsummaryrefslogtreecommitdiff
path: root/gdb/rs6000-tdep.c
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>2007-02-27 17:29:51 +0000
committerFred Fish <fnf@specifix.com>2007-02-27 17:29:51 +0000
commit7313566fe3ccb5fadf5f1dfdeb007cc84b8f689a (patch)
tree0a8e357289fc849f50c9e57184980db75db1e7ba /gdb/rs6000-tdep.c
parent64a69107228184640d76cf2dace4ac17b78cc049 (diff)
downloadgdb-7313566fe3ccb5fadf5f1dfdeb007cc84b8f689a.zip
gdb-7313566fe3ccb5fadf5f1dfdeb007cc84b8f689a.tar.gz
gdb-7313566fe3ccb5fadf5f1dfdeb007cc84b8f689a.tar.bz2
Reviewed by Mark Kettenis <mark.kettenis@xs4all.nl>
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.
Diffstat (limited to 'gdb/rs6000-tdep.c')
-rw-r--r--gdb/rs6000-tdep.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index cf9eefb..e107114 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -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,... */