[PUSHED] Clear addr bit in next_pcs vector
Commit Message
This patch is to split the loop of calling gdbarch_addr_bits_remove
and insert_single_step_breakpoint into two loops.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* arm-linux-tdep.c (arm_linux_software_single_step): Write
adjusted address back to vector. Call insert_single_step_breakpoint
in a new loop.
* arm-tdep.c (arm_software_single_step): Likewise.
---
gdb/ChangeLog | 7 +++++++
gdb/arm-linux-tdep.c | 5 ++++-
gdb/arm-tdep.c | 5 ++++-
3 files changed, 15 insertions(+), 2 deletions(-)
@@ -1,5 +1,12 @@
2016-11-08 Yao Qi <yao.qi@linaro.org>
+ * arm-linux-tdep.c (arm_linux_software_single_step): Write
+ adjusted address back to vector. Call insert_single_step_breakpoint
+ in a new loop.
+ * arm-tdep.c (arm_software_single_step): Likewise.
+
+2016-11-08 Yao Qi <yao.qi@linaro.org>
+
* arm-linux-tdep.c (arm_linux_software_single_step): Don't
call arm_insert_single_step_breakpoint, call
insert_single_step_breakpoint instead.
@@ -952,9 +952,12 @@ arm_linux_software_single_step (struct frame_info *frame)
for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
{
pc = gdbarch_addr_bits_remove (gdbarch, pc);
- insert_single_step_breakpoint (gdbarch, aspace, pc);
+ VEC_replace (CORE_ADDR, next_pcs, i, pc);
}
+ for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
+ insert_single_step_breakpoint (gdbarch, aspace, pc);
+
do_cleanups (old_chain);
return 1;
@@ -6310,9 +6310,12 @@ arm_software_single_step (struct frame_info *frame)
for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
{
pc = gdbarch_addr_bits_remove (gdbarch, pc);
- insert_single_step_breakpoint (gdbarch, aspace, pc);
+ VEC_replace (CORE_ADDR, next_pcs, i, pc);
}
+ for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
+ insert_single_step_breakpoint (gdbarch, aspace, pc);
+
do_cleanups (old_chain);
return 1;