aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/arm-linux-tdep.c6
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. */