mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
* 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:
parent
76cc2cf029
commit
529765f487
@ -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,
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user