diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2020-04-02 15:11:26 +0200 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2020-04-02 15:11:26 +0200 |
commit | 7582c77c1d2cab3f53b70697529c1644ceeb94a2 (patch) | |
tree | 12a99919ee6846daf70b83723c9b416d19a9f73b /gdbserver/linux-arm-low.cc | |
parent | 3ca4edb6617353defacd3bf3a4ee3d458238419e (diff) | |
download | gdb-7582c77c1d2cab3f53b70697529c1644ceeb94a2.zip gdb-7582c77c1d2cab3f53b70697529c1644ceeb94a2.tar.gz gdb-7582c77c1d2cab3f53b70697529c1644ceeb94a2.tar.bz2 |
gdbserver/linux-low: turn 'supports_software_single_step' and 'get_next_pcs' into methods
gdbserver/ChangeLog:
2020-04-02 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Remove the 'supports_software_single_step' linux target op and let
the concrete linux target define it by overriding the op in
process_stratum_target.
Turn the 'get_next_pcs' linux target op into a method of
linux_process_target.
* linux-low.h (struct linux_target_ops): Remove the ops.
(class linux_process_target) <supports_software_single_step>:
Remove.
<low_get_next_pcs>: Declare.
* linux-low.cc (can_software_single_step): Remove.
(linux_process_target::low_get_next_pcs): Define.
(linux_process_target::supports_software_single_step): Remove.
Update the callers below.
(linux_process_target::handle_extended_wait)
(linux_process_target::wait_1)
(linux_process_target::install_software_single_step_breakpoints)
(linux_process_target::single_step)
(linux_process_target::thread_needs_step_over)
(linux_process_target::proceed_one_lwp)
(linux_process_target::supports_range_stepping)
* linux-x86-low.cc (the_low_target): Remove the op field.
* linux-aarch64-low.cc (the_low_target): Ditto.
* linux-bfin-low.cc (the_low_target): Ditto.
* linux-cris-low.cc (the_low_target): Ditto.
* linux-crisv32-low.cc (the_low_target): Ditto.
* linux-m32r-low.cc (the_low_target): Ditto.
* linux-m68k-low.cc (the_low_target): Ditto.
* linux-mips-low.cc (the_low_target): Ditto.
* linux-nios2-low.cc (the_low_target): Ditto.
* linux-ppc-low.cc (the_low_target): Ditto.
* linux-riscv-low.cc (the_low_target): Ditto.
* linux-s390-low.cc (the_low_target): Ditto.
* linux-sh-low.cc (the_low_target): Ditto.
* linux-sparc-low.cc (the_low_target): Ditto.
* linux-tic6x-low.cc (the_low_target): Ditto.
* linux-tile-low.cc (the_low_target): Ditto.
* linux-xtensa-low.cc (the_low_target): Ditto.
* linux-arm-low.cc (class arm_target) <low_get_next_pcs>
<supports_software_single_step>: Declare.
(arm_target::supports_software_single_step): Define.
(arm_gdbserver_get_next_pcs): Turn into...
(arm_target::low_get_next_pcs): ...this.
(the_low_target): Remove the op field.
Diffstat (limited to 'gdbserver/linux-arm-low.cc')
-rw-r--r-- | gdbserver/linux-arm-low.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc index aab2c42..bd42feba 100644 --- a/gdbserver/linux-arm-low.cc +++ b/gdbserver/linux-arm-low.cc @@ -68,6 +68,8 @@ public: const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override; + bool supports_software_single_step () override; + protected: void low_arch_setup () override; @@ -81,6 +83,8 @@ protected: CORE_ADDR low_get_pc (regcache *regcache) override; void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; + + std::vector<CORE_ADDR> low_get_next_pcs (regcache *regcache) override; }; /* The singleton target ops object. */ @@ -968,10 +972,16 @@ arm_target::low_arch_setup () have_ptrace_getregset = 0; } +bool +arm_target::supports_software_single_step () +{ + return true; +} + /* Fetch the next possible PCs after the current instruction executes. */ -static std::vector<CORE_ADDR> -arm_gdbserver_get_next_pcs (struct regcache *regcache) +std::vector<CORE_ADDR> +arm_target::low_get_next_pcs (regcache *regcache) { struct arm_get_next_pcs next_pcs_ctx; @@ -1075,7 +1085,6 @@ arm_target::get_regs_info () } struct linux_target_ops the_low_target = { - arm_gdbserver_get_next_pcs, 0, arm_breakpoint_at, arm_supports_z_point_type, |