diff options
author | Antoine Tremblay <antoine.tremblay@ericsson.com> | 2015-12-18 11:33:58 -0500 |
---|---|---|
committer | Antoine Tremblay <antoine.tremblay@ericsson.com> | 2015-12-18 11:33:58 -0500 |
commit | fa5308bdcc4967861d1277b45205c2623b154a64 (patch) | |
tree | ef7f8c9ae03a5754106957d4f75946d9ac48cb80 /gdb/gdbserver/linux-low.h | |
parent | c9f203207d418f72217f4bc0997acd809a0479ce (diff) | |
download | gdb-fa5308bdcc4967861d1277b45205c2623b154a64.zip gdb-fa5308bdcc4967861d1277b45205c2623b154a64.tar.gz gdb-fa5308bdcc4967861d1277b45205c2623b154a64.tar.bz2 |
Replace breakpoint_reinsert_addr by get_next_pcs operation in GDBServer
This patch in preparation for software single step support on ARM. It refactors
breakpoint_reinsert_addr into get_next_pcs so that multiple location can be
returned.
When software single stepping there can be multiple possible next addresses
because we're stepping over a conditional branch instruction, for example.
The operation get_next_pcs handles that by returning a vector of all the
possible next addresses.
Software breakpoints are installed at each location returned.
No regressions, tested on ubuntu 14.04 ARMv7 and x86.
With gdbserver-{native,extended} / { -marm -mthumb }
gdb/gdbserver/ChangeLog:
* linux-aarch64-low.c (the_low_targets): Rename
breakpoint_reinsert_addr to get_next_pcs.
* linux-arm-low.c (the_low_targets): Likewise.
* linux-bfin-low.c (the_low_targets): Likewise.
* linux-cris-low.c (the_low_targets): Likewise.
* linux-crisv32-low.c (the_low_targets): Likewise.
* linux-low.c (can_software_single_step): Likewise.
(install_software_single_step_breakpoints): New function.
(start_step_over): Use install_software_single_step_breakpoints.
* linux-low.h: New CORE_ADDR vector.
(struct linux_target_ops) Rename breakpoint_reinsert_addr to
get_next_pcs.
* linux-mips-low.c (the_low_targets): Likewise.
* linux-nios2-low.c (the_low_targets): Likewise.
* linux-sparc-low.c (the_low_targets): Likewise.
Diffstat (limited to 'gdb/gdbserver/linux-low.h')
-rw-r--r-- | gdb/gdbserver/linux-low.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h index c211a37..cd455a8 100644 --- a/gdb/gdbserver/linux-low.h +++ b/gdb/gdbserver/linux-low.h @@ -124,6 +124,8 @@ struct process_info_private struct lwp_info; +DEF_VEC_I (CORE_ADDR); + struct linux_target_ops { /* Architecture-specific setup. */ @@ -153,7 +155,8 @@ struct linux_target_ops /* See target.h for details. */ const gdb_byte *(*sw_breakpoint_from_kind) (int kind, int *size); - CORE_ADDR (*breakpoint_reinsert_addr) (void); + /* Find the next possible PCs after the current instruction executes. */ + VEC (CORE_ADDR) *(*get_next_pcs) (CORE_ADDR pc, struct regcache *regcache); int decr_pc_after_break; int (*breakpoint_at) (CORE_ADDR pc); |