diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/arm-linux-tdep.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index acb408b..a97e720 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Yao Qi <yao.qi@linaro.org> + + * arm-linux-tdep.c (arm_linux_cleanup_svc): Use + dsc->insn_size instead of 4. + 2015-04-14 Gary Benson <gbenson@redhat.com> * jit.c (mem_bfd_iovec_stat): Zero supplied buffer. diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index f58da84..60266b5 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -939,7 +939,6 @@ arm_linux_cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs, struct displaced_step_closure *dsc) { - CORE_ADDR from = dsc->insn_addr; ULONGEST apparent_pc; int within_scratch; @@ -960,7 +959,8 @@ arm_linux_cleanup_svc (struct gdbarch *gdbarch, } if (within_scratch) - displaced_write_reg (regs, dsc, ARM_PC_REGNUM, from + 4, BRANCH_WRITE_PC); + displaced_write_reg (regs, dsc, ARM_PC_REGNUM, + dsc->insn_addr + dsc->insn_size, BRANCH_WRITE_PC); } static int @@ -1027,7 +1027,7 @@ arm_linux_copy_svc (struct gdbarch *gdbarch, struct regcache *regs, /* Preparation: If we detect sigreturn, set momentary breakpoint at resume location, else nothing. Insn: unmodified svc. - Cleanup: if pc lands in scratch space, pc <- insn_addr + 4 + Cleanup: if pc lands in scratch space, pc <- insn_addr + insn_size else leave pc alone. */ |