aboutsummaryrefslogtreecommitdiff
path: root/gdb/s390-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/s390-tdep.c')
-rw-r--r--gdb/s390-tdep.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index 08a032a..395c57e 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -1232,7 +1232,7 @@ s390_prologue_frame_unwind_cache (struct frame_info *next_frame,
bother searching for it -- with modern compilers this would be mostly
pointless anyway. Trust that we'll either have valid DWARF-2 CFI data
or else a valid backchain ... */
- func = frame_func_unwind (next_frame);
+ func = frame_func_unwind (next_frame, NORMAL_FRAME);
if (!func)
return 0;
@@ -1556,14 +1556,15 @@ static const struct frame_unwind s390_stub_frame_unwind = {
static const struct frame_unwind *
s390_stub_frame_sniffer (struct frame_info *next_frame)
{
- CORE_ADDR pc = frame_pc_unwind (next_frame);
+ CORE_ADDR addr_in_block;
bfd_byte insn[S390_MAX_INSTR_SIZE];
/* If the current PC points to non-readable memory, we assume we
have trapped due to an invalid function pointer call. We handle
the non-existing current function like a PLT stub. */
- if (in_plt_section (pc, NULL)
- || s390_readinstruction (insn, pc) < 0)
+ addr_in_block = frame_unwind_address_in_block (next_frame, NORMAL_FRAME);
+ if (in_plt_section (addr_in_block, NULL)
+ || s390_readinstruction (insn, frame_pc_unwind (next_frame)) < 0)
return &s390_stub_frame_unwind;
return NULL;
}