2001-12-19 Jim Blandy <jimb@redhat.com>
+ * 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.
+
* s390-tdep.c (s390_get_frame_info): Give orig_sp a reasonable
value, even when fextra_info->stack_bought can't be trusted,
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;
}