* 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.
This commit is contained in:
Jim Blandy 2001-12-20 08:54:02 +00:00
parent 76cc2cf029
commit 529765f487
2 changed files with 15 additions and 12 deletions

View file

@ -1,5 +1,10 @@
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,

View file

@ -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;
}