diff options
author | Jim Blandy <jimb@codesourcery.com> | 2001-11-14 22:34:38 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2001-11-14 22:34:38 +0000 |
commit | 9a1befc91642f549ca6b00de46a083cffdc5f58b (patch) | |
tree | 2fc8ee387a7f9b8858e206f1c19c295857c20f3c | |
parent | f2c6cfba862c4a82626386344da1864d82214efa (diff) | |
download | gdb-9a1befc91642f549ca6b00de46a083cffdc5f58b.zip gdb-9a1befc91642f549ca6b00de46a083cffdc5f58b.tar.gz gdb-9a1befc91642f549ca6b00de46a083cffdc5f58b.tar.bz2 |
* s390-tdep.c (s390_pop_frame_regular): On the S/390, the frame
pointer and the SP are often the same, so we can't pop the frame
by setting the SP to the FP; we need to get the old SP from
saved_regs.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/s390-tdep.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5f245cc..f13b54a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2001-11-14 Jim Blandy <jimb@redhat.com> + * s390-tdep.c (s390_pop_frame_regular): On the S/390, the frame + pointer and the SP are often the same, so we can't pop the frame + by setting the SP to the FP; we need to get the old SP from + saved_regs. + * s390-tdep.c (s390_extract_return_value): Returned `float' values can simply be copied bitwise from the registers into the value object's buffer. diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 632261e..d2fa1a0 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -1169,8 +1169,10 @@ s390_pop_frame_regular (struct frame_info *frame) write_register (regnum, value); } - /* Actually cut back the stack. */ - write_register (S390_SP_REGNUM, FRAME_FP (frame)); + /* Actually cut back the stack. Remember that the SP's element of + saved_regs is the old SP itself, not the address at which it is + saved. */ + write_register (S390_SP_REGNUM, frame->saved_regs[S390_SP_REGNUM]); /* Throw away any cached frame information. */ flush_cached_frames (); |