diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc61dab5861..7b808eb3a76 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-07-13 Andreas Arnez + + * s390-tdep.c (s390_displaced_step_fixup): Adjust PC for a + non-branching basr. + 2018-07-12 Philippe Waroquiers * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 77e64af5839..e962824ca04 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -492,6 +492,9 @@ s390_displaced_step_fixup (struct gdbarch *gdbarch, /* Recompute saved return address in R1. */ regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1, amode | (from + insnlen)); + /* Update PC iff the instruction doesn't actually branch. */ + if (insn[0] == op_basr && r2 == 0) + regcache_write_pc (regs, from + insnlen); } /* Handle absolute branch instructions. */