summaryrefslogtreecommitdiff
path: root/gdb/s390-tdep.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2001-12-20 08:54:02 +0000
committerJim Blandy <jimb@codesourcery.com>2001-12-20 08:54:02 +0000
commitc6fabecf08b2dc3d18f4742a8bd3a6df8b733b54 (patch)
tree22627550c18d303e31323faf6ab5725d24a47c15 /gdb/s390-tdep.c
parent8a92efa1a9ed867e670a2b6f87c9e65abce38d25 (diff)
downloadgdb-c6fabecf08b2dc3d18f4742a8bd3a6df8b733b54.tar.gz
* s390-tdep.c (s390_frame_saved_pc_nofix): If we get the saved PC
out of the return address register, cache that in the frame's extra info, just as if we'd gotten it from the saved regs array; that way, it's not a lie to set the saved_pc_valid flag.
Diffstat (limited to 'gdb/s390-tdep.c')
-rw-r--r--gdb/s390-tdep.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index 555d05f2a71..c524657a57a 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -960,18 +960,16 @@ s390_frame_saved_pc_nofix (struct frame_info *fi)
if (fi->extra_info)
{
fi->extra_info->saved_pc_valid = 1;
- if (fi->extra_info->good_prologue)
- {
- if (fi->saved_regs[S390_RETADDR_REGNUM])
- {
- return (fi->extra_info->saved_pc =
- ADDR_BITS_REMOVE (read_memory_integer
- (fi->saved_regs[S390_RETADDR_REGNUM],
- S390_GPR_SIZE)));
- }
- else
- return read_register (S390_RETADDR_REGNUM);
- }
+ if (fi->extra_info->good_prologue
+ && fi->saved_regs[S390_RETADDR_REGNUM])
+ fi->extra_info->saved_pc
+ = ADDR_BITS_REMOVE (read_memory_integer
+ (fi->saved_regs[S390_RETADDR_REGNUM],
+ S390_GPR_SIZE));
+ else
+ fi->extra_info->saved_pc
+ = ADDR_BITS_REMOVE (read_register (S390_RETADDR_REGNUM));
+ return fi->extra_info->saved_pc;
}
return 0;
}