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.
This commit is contained in:
Tankut Baris Aktemur
2020-04-02 15:11:26 +02:00
parent 3ca4edb661
commit 7582c77c1d
21 changed files with 84 additions and 50 deletions

View File

@@ -131,9 +131,6 @@ struct lwp_info;
struct linux_target_ops
{
/* Find the next possible PCs after the current instruction executes. */
std::vector<CORE_ADDR> (*get_next_pcs) (struct regcache *regcache);
int decr_pc_after_break;
int (*breakpoint_at) (CORE_ADDR pc);
@@ -440,8 +437,6 @@ public:
int *handle_len) override;
#endif
bool supports_software_single_step () override;
bool supports_catch_syscall () override;
int get_ipa_tdesc_idx () override;
@@ -666,6 +661,11 @@ protected:
virtual CORE_ADDR low_get_pc (regcache *regcache);
virtual void low_set_pc (regcache *regcache, CORE_ADDR newpc);
/* Find the next possible PCs after the current instruction executes.
Targets that override this method should also override
'supports_software_single_step' to return true. */
virtual std::vector<CORE_ADDR> low_get_next_pcs (regcache *regcache);
};
extern linux_process_target *the_linux_target;