Commit Graph

37 Commits

Author SHA1 Message Date
Luis Machado
7fd8546853 [AArch64] Make gdbserver register set selection dynamic
The current register set selection mechanism for AArch64 is static, based
on a pre-populated array of register sets.

This means that we might potentially probe register sets that are not
available. This is OK if the kernel errors out during ptrace, but probing the
tag_ctl register, for example, does not result in a ptrace error if the kernel
supports the tagged address ABI but not MTE (PR 28355).

Making the register set selection dynamic, based on feature checks, solves
this and simplifies the code a bit. It allows us to list all of the register
sets only once, and pick and choose based on HWCAP/HWCAP2 or other properties.

I plan to backport this fix to GDB 11 as well.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28355
2021-11-03 09:50:53 -03:00
Luis Machado
41919a58ce AArch64: Add gdbserver MTE support
Adds the AArch64-specific memory tagging support (MTE) by implementing the
required hooks and checks for GDBserver.

gdbserver/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* Makefile.in (SFILES): Add /../gdb/nat/aarch64-mte-linux-ptrace.c.
	* configure.srv (aarch64*-*-linux*): Add arch/aarch64-mte-linux.o and
	nat/aarch64-mte-linux-ptrace.o.
	* linux-aarch64-low.cc: Include nat/aarch64-mte-linux-ptrace.h.
	(class aarch64_target) <supports_memory_tagging>
	<fetch_memtags, store_memtags>: New method overrides.
	(aarch64_target::supports_memory_tagging)
	(aarch64_target::fetch_memtags)
	(aarch64_target::store_memtags): New methods.
2021-03-24 14:56:33 -03:00
Luis Machado
5e984dbf35 AArch64: Add MTE register set support for GDB and gdbserver
AArch64 MTE support in the Linux kernel exposes a new register
through ptrace.  This patch adds the required code to support it.

include/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* elf/common.h (NT_ARM_TAGGED_ADDR_CTRL): Define.

gdb/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* aarch64-linux-nat.c (fetch_mteregs_from_thread): New function.
	(store_mteregs_to_thread): New function.
	(aarch64_linux_nat_target::fetch_registers): Update to call
	fetch_mteregs_from_thread.
	(aarch64_linux_nat_target::store_registers): Update to call
	store_mteregs_to_thread.
	* aarch64-tdep.c (aarch64_mte_register_names): New struct.
	(aarch64_cannot_store_register): Handle MTE registers.
	(aarch64_gdbarch_init): Initialize and setup MTE registers.
	* aarch64-tdep.h (gdbarch_tdep) <mte_reg_base>: New field.
	<has_mte>: New method.
	* arch/aarch64-linux.h (AARCH64_LINUX_SIZEOF_MTE): Define.

gdbserver/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* linux-aarch64-low.cc (aarch64_fill_mteregset): New function.
	(aarch64_store_mteregset): New function.
	(aarch64_regsets): Add MTE register set entry.
	(aarch64_sve_regsets): Add MTE register set entry.
2021-03-24 14:52:57 -03:00
Luis Machado
c1bd443b4d AArch64: Add target description/feature for MTE registers
This patch adds a target description and feature "mte" for aarch64.

It includes one new register, tag_ctl, that can be used to configure the
tag generation rules and sync/async modes.  It is 64-bit in size.

The patch also adjusts the code that creates the target descriptions at
runtime based on CPU feature checks.

gdb/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* aarch64-linux-nat.c
	(aarch64_linux_nat_target::read_description): Take MTE flag into
	account.
	Slight refactor to hwcap flag checking.
	* aarch64-linux-tdep.c
	(aarch64_linux_core_read_description): Likewise.
	* aarch64-tdep.c (tdesc_aarch64_list): Add one more dimension for
	MTE.
	(aarch64_read_description): Add mte_p parameter and update to use it.
	Update the documentation.
	(aarch64_gdbarch_init): Update call to aarch64_read_description.
	* aarch64-tdep.h (aarch64_read_description): Add mte_p parameter.
	* arch/aarch64.c: Include ../features/aarch64-mte.c.
	(aarch64_create_target_description): Add mte_p parameter and update
	the code to use it.
	* arch/aarch64.h (aarch64_create_target_description): Add mte_p
	parameter.
	* features/Makefile (FEATURE_XMLFILES): Add aarch64-mte.xml.
	* features/aarch64-mte.c: New file, generated.
	* features/aarch64-mte.xml: New file.

gdbserver/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* linux-aarch64-ipa.cc (get_ipa_tdesc): Update call to
	aarch64_linux_read_description.
	(initialize_low_tracepoint): Likewise.
	* linux-aarch64-low.cc (aarch64_target::low_arch_setup): Take MTE flag
	into account.
	* linux-aarch64-tdesc.cc (tdesc_aarch64_list): Add one more dimension
	for MTE.
	(aarch64_linux_read_description): Add mte_p parameter and update to
	use it.
	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Add mte_p
	parameter.
2021-03-24 14:52:08 -03:00
Luis Machado
0424512519 AArch64: Add MTE CPU feature check support
This patch is a preparation for the next patches implementing MTE. It just adds
a HWCAP2 constant for MTE, creates a new generic arch/aarch64-mte-linux.h file
and includes that file in the source files that will use it.

gdb/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* Makefile.in (HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h.
	* aarch64-linux-nat.c: Include arch/aarch64-mte-linux.h.
	* aarch64-linux-tdep.c: Likewise
	* arch/aarch64-mte-linux.h: New file.

gdbserver/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* linux-aarch64-low.cc: Include arch/aarch64-mte-linux.h.
2021-03-24 14:51:10 -03:00
Joel Brobecker
3666a04883 Update copyright year range in all GDB files
This commits the result of running gdb/copyright.py as per our Start
of New Year procedure...

gdb/ChangeLog

        Update copyright year range in copyright header of all GDB files.
2021-01-01 12:12:21 +04:00
Luis Machado
19007d9556 Fix TBI handling for watchpoints
When inserting hw watchpoints, we take care of masking off the top byte
of the address (and sign-extending it if needed).  This guarantees we won't
pass tagged addresses to the kernel via ptrace.

However, from the kernel documentation on tagged pointers...

"Non-zero tags are not preserved when delivering signals. This means that
signal handlers in applications making use of tags cannot rely on the tag
information for user virtual addresses being maintained for fields inside
siginfo_t.

One exception to this rule is for signals raised in response to watchpoint
debug exceptions, where the tag information will be preserved."

So the stopped data address after a hw watchpoint hit can be potentially
tagged, and we don't handle this in GDB at the moment.  This results in
GDB missing a hw watchpoint hit and attempting to step over an unsteppable
hw watchpoint, causing it to spin endlessly.

The following patch fixes this by adjusting the stopped data address and adds
some tests to expose the problem.

gdb/ChangeLog:

2020-12-16  Luis Machado  <luis.machado@linaro.org>

	* aarch64-linux-nat.c
	(aarch64_linux_nat_target::stopped_data_address): Handle the TBI.

gdbserver/ChangeLog:

2020-12-16  Luis Machado  <luis.machado@linaro.org>

	* linux-aarch64-low.cc (address_significant): New function.
	(aarch64_target::low_stopped_data_address): Handle the TBI.

gdb/testsuite/ChangeLog:

2020-12-16  Luis Machado  <luis.machado@linaro.org>

	* gdb.arch/aarch64-tagged-pointer.c (main): Add a few more
	pointer-based memory accesses.
	* gdb.arch/aarch64-tagged-pointer.exp: Exercise additional
	hw watchpoint cases.
2020-12-16 10:05:56 -03:00
Tankut Baris Aktemur
0dd7b52ede gdbserver/linux-low: delete 'linux_target_ops' and 'the_low_target'
All the linux target ops have been moved into linux_process_target
as methods.  The 'linux_target_ops' struct and its instantiations
are now obsolete.  Delete them.

gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* linux-low.h (struct linux_target_ops): Remove.
	(the_low_target): Remove.
	* linux-x86-low.cc (the_low_target): Remove.
	* linux-aarch64-low.cc (the_low_target): Ditto.
	* linux-arm-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-ia64-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.
2020-04-02 15:11:32 +02:00
Tankut Baris Aktemur
9eedd27d42 gdbserver/linux-low: turn 'get_syscall_trapinfo' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_syscall_trapinfo' linux target op into a method
	of process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <get_syscall_trapinfo>
	<gdb_catch_this_syscall>
	<low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	* linux-low.cc (get_syscall_trapinfo): Turn into...
	(linux_process_target::get_syscall_trapinfo): ...this.
	(linux_process_target::low_get_syscall_trapinfo): Define.
	(gdb_catch_this_syscall_p): Turn into...
	(linux_process_target::gdb_catch_this_syscall): ...this.
	(linux_process_target::low_supports_catch_syscall): Define.

	Update the callers below.

	(linux_process_target::wait_1)
	(linux_process_target::supports_catch_syscall)

	* linux-x86-low.cc (class x86_target) <low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(x86_target::low_supports_catch_syscall): Define.
	(x86_get_syscall_trapinfo): Turn into...
	(x86_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(aarch64_target::low_supports_catch_syscall): Define.
	(aarch64_get_syscall_trapinfo): Turn into...
	(aarch64_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(arm_target::low_supports_catch_syscall): Define.
	(arm_get_syscall_trapinfo): Turn into...
	(arm_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (the_low_target): Remove the op field.
	* linux-s390-low.cc (the_low_target): Remove the op field.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur
b31cdfa69f gdbserver/linux-low: turn 'supports_hardware_single_step' into a method
All the linux low targets except arm define the
'supports_hardware_single_step' op to return true.  Hence, we override
the method to return true in linux_process_target, and remove the
definitions in all the linux low targets but arm.

gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'supports_hardware_single_step' linux target op and
	override the process_stratum_target's op definition in
	linux_process_target to return true.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <finish_step_over>
	<maybe_hw_step>: Declare.
	* linux-low.cc (can_hardware_single_step): Remove.
	(maybe_hw_step): Turn into...
	(linux_process_target::maybe_hw_step): ...this.
	(finish_step_over): Turn into...
	(linux_process_target::finish_step_over): ...this.
	(linux_process_target::supports_hardware_single_step): Update
	to return true.

	Update the callers below.

	(linux_process_target::single_step)
	(linux_process_target::resume_one_lwp_throw)

	* linux-arm-low.cc (class arm_target)
	<supports_hardware_single_step>: Declare.
	(arm_supports_hardware_single_step): Turn into...
	(arm_target::supports_hardware_single_step): ...this.
	(the_low_target): Remove the op field.
	* linux-x86-low.cc (x86_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (aarch64_supports_hardware_single_step):
	Remove.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (bfin_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (cris_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-m32r-low.cc (m32r_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (m68k_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (ppc_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (s390_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (sh_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (tic6x_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (tile_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (xtensa_supports_hardware_single_step):
	Remove.
	(the_low_target): Remove the op field.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur
9cfd871551 gdbserver/linux-low: turn 'supports_range_stepping' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'supports_range_stepping' linux target op into a method
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_supports_range_stepping>: Declare.
	* linux-low.cc (linux_process_target::low_supports_range_stepping):
	Define.
	(linux_process_target::supports_range_stepping): Update the call
	site.
	* linux-x86-low.cc (class x86_target)
	<low_supports_range_stepping>: Declare.
	(x86_supports_range_stepping): Turn into...
	(x86_target::low_supports_range_stepping): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_range_stepping>: Declare.
	(aarch64_supports_range_stepping): Turn into...
	(aarch64_target::low_supports_range_stepping): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-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-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-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.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur
ab64c99982 gdbserver/linux-low: turn 'emit_ops' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'emit_ops' linux target ops and let the concrete
	linux target define the op by overriding the declaration of
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <emit_ops>: Remove.
	* linux-low.cc (linux_process_target::emit_ops): Remove.
	* linux-x86-low.cc (class x86_target) <emit_ops>: Declare.
	(x86_emit_ops): Turn into...
	(x86_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <emit_ops>: Declare.
	(aarch64_emit_ops): Turn into...
	(aarch64_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <emit_ops>: Declare.
	(ppc_emit_ops): Turn into...
	(ppc_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <emit_ops>: Declare.
	(s390_emit_ops): Turn into...
	(s390_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-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-sh-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.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur
809a0c354b gdbserver/linux-low: turn fast tracepoint ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'install_fast_tracepoint_jump_pad' and
	'get_min_fast_tracepoint_insn_len' linux target ops to let the
	concrete linux target define the ops by overriding the declarations
	of process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Remove.
	* linux-low.cc (linux_process_target::supports_fast_tracepoints)
	(linux_process_target::install_fast_tracepoint_jump_pad)
	(linux_process_target::get_min_fast_tracepoint_insn_len): Remove.
	* linux-x86-low.cc (class x86_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(x86_target::supports_fast_tracepoints): Define.
	(x86_install_fast_tracepoint_jump_pad): Turn into...
	(x86_target::install_fast_tracepoint_jump_pad): ...this.
	(x86_get_min_fast_tracepoint_insn_len): Turn into...
	(x86_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(aarch64_target::supports_fast_tracepoints): Define.
	(aarch64_install_fast_tracepoint_jump_pad): Turn into...
	(aarch64_target::install_fast_tracepoint_jump_pad): ...this.
	(aarch64_get_min_fast_tracepoint_insn_len): Turn into...
	(aarch64_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(ppc_target::supports_fast_tracepoints): Define.
	(ppc_install_fast_tracepoint_jump_pad): Turn into...
	(ppc_target::install_fast_tracepoint_jump_pad): ...this.
	(ppc_get_min_fast_tracepoint_insn_len): Turn into...
	(ppc_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(s390_target::supports_fast_tracepoints): Define.
	(s390_install_fast_tracepoint_jump_pad): Turn into...
	(s390_target::install_fast_tracepoint_jump_pad): ...this.
	(s390_get_min_fast_tracepoint_insn_len): Turn into...
	(s390_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (the_low_target): Remove the op fields.
	* linux-bfin-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-sh-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.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur
13e567af27 gdbserver/linux-low: turn 'get_thread_area' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_thread_area' linux target op into a method of
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <stuck_in_jump_pad>
	<linux_fast_tracepoint_collecting>
	<low_get_thread_area>: Declare.
	* linux-low.cc (supports_fast_tracepoints): Remove.
	(linux_fast_tracepoint_collecting): Turn into...
	(linux_process_target::linux_fast_tracepoint_collecting): ...this.
	(linux_process_target::low_get_thread_area): Define.
	(stuck_in_jump_pad_callback): Turn into...
	(linux_process_target::stuck_in_jump_pad): ...this.

	Update the caller below.

	(linux_process_target::stabilize_threads)

	* linux-x86-low.cc (class x86_target) <low_get_thread_area>:
	Declare.
	(x86_get_thread_area): Turn into...
	(x86_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <low_get_thread_area>:
	Declare.
	(aarch64_get_thread_area): Turn into...
	(aarch64_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <low_get_thread_area>:
	Declare.
	(ppc_get_thread_area): Turn into...
	(ppc_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <low_get_thread_area>:
	Declare.
	(s390_get_thread_area): Turn into...
	(s390_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-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-sh-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.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur
47f70aa768 gdbserver/linux-low: turn 'supports_tracepoints' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remote the 'supports_tracepoints' linux target op and let the
	concrete linux target define it by overriding the op declared in
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <supports_tracepoints>: Remove.
	* linux-low.cc (linux_process_target::supports_tracepoints): Remove.
	* linux-x86-low.cc (class x86_target) <supports_tracepoints>:
	Declare.
	(x86_supports_tracepoints): Turn into...
	(x86_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_tracepoints>: Declare.
	(aarch64_supports_tracepoints): Turn into...
	(aarch64_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <supports_tracepoints>:
	Declare.
	(ppc_supports_tracepoints): Turn into...
	(ppc_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <supports_tracepoints>:
	Declare.
	(s390_supports_tracepoints): Turn into...
	(s390_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-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-sh-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.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur
a5b5da9258 gdbserver/linux-low: turn 'process_qsupported' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'process_qsupported' linux target op and let a concrete
	linux target define the op by overriding the op declaration in
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <process_qsupported>: Remove.
	* linux-low.cc (linux_process_target::process_qsupported): Remove.
	* linux-x86-low.cc (class x86_target) <process_qsupported>: Declare.
	(x86_linux_process_qsupported): Turn into...
	(x86_target::process_qsupported): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (the_low_target): Remove the op
	field.
	* linux-arm-low.cc (the_low_target): Ditto.
	* linux-bfin-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-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-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.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur
d7599cc082 gdbserver/linux-low: turn 'prepare_to_resume' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'prepare_to_resume' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_prepare_to_resume>: Declare.
	* linux-low.cc (linux_process_target::low_prepare_to_resume):
	Define.

	Update the callers below:

	(linux_process_target::resume_one_lwp_throw)
	(linux_process_target::low_prepare_to_resume)

	* linux-x86-low.cc (class x86_target) <low_prepare_to_resume>:
	Declare.
	(x86_target::low_prepare_to_resume): Define.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_prepare_to_resume>: Declare.
	(aarch64_target::low_prepare_to_resume): Define.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <low_prepare_to_resume>:
	Declare.
	(arm_prepare_to_resume): Turn into...
	(arm_target::low_prepare_to_resume): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <low_prepare_to_resume>:
	Declare.
	(mips_linux_prepare_to_resume): Turn into...
	(mips_target::low_prepare_to_resume): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Remove the op field.
	* 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-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-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.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur
fd000fb3df gdbserver/linux-low: turn process/thread addition/deletion ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'new_process', 'delete_process', 'new_thread',
	'delete_thread', and 'new_fork' linux target ops into methods
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <add_linux_process>
	<add_lwp>
	<delete_lwp>
	<attach_lwp>
	<detach_one_lwp>
	<check_zombie_leaders>
	<filter_exit_event>
	<low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	* linux-low.cc (delete_lwp): Turn into...
	(linux_process_target::delete_lwp): ...this.
	(linux_process_target::low_delete_thread): Define.
	(linux_add_process): Turn into...
	(linux_process_target::add_linux_process): ...this.
	(linux_process_target::low_new_process): Define.
	(linux_process_target::low_delete_process): Define.
	(linux_process_target::low_new_fork): Define.
	(add_lwp): Turn into...
	(linux_process_target::add_lwp): ...this.
	(linux_process_target::low_new_thread): Define.
	(linux_attach_lwp): Turn into...
	(linux_process_target::attach_lwp): ...this.
	(linux_detach_one_lwp): Turn into...
	(linux_process_target::detach_one_lwp): ...this.
	(linux_detach_lwp_callback): Remove and inline...
	(linux_process_target::detach): ...here.
	(check_zombie_leaders): Turn into...
	(linux_process_target::check_zombie_leaders): ...this.
	(filter_exit_event): Turn into...
	(linux_process_target::filter_exit_event): ...this.

	Update the callers below.

	(linux_process_target::handle_extended_wait)
	(linux_process_target::create_inferior)
	(attach_proc_task_lwp_callback)
	(linux_process_target::attach)
	(linux_process_target::detach)
	(linux_process_target::mourn)
	* thread-db.cc (attach_thread)

	* linux-x86-low.cc (class x86_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(x86_linux_new_process): Turn into...
	(x86_target::low_new_process): ...this.
	(x86_linux_delete_process): Turn into...
	(x86_target::low_delete_process): ...this.
	(x86_target::low_new_thread): Define.
	(x86_target::low_delete_thread): Define.
	(x86_linux_new_fork): Turn into...
	(x86_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(aarch64_linux_new_process): Turn into...
	(aarch64_target::low_new_process): ...this.
	(aarch64_linux_delete_process): Turn into...
	(aarch64_target::low_delete_process): ...this.
	(aarch64_target::low_new_thread): Define.
	(aarch64_target::low_delete_thread): Define.
	(aarch64_linux_new_fork): Turn into...
	(aarch64_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(arm_new_process): Turn into...
	(arm_target::low_new_process): ...this.
	(arm_delete_process): Turn into...
	(arm_target::low_delete_process): ...this.
	(arm_new_thread): Turn into...
	(arm_target::low_new_thread): ...this.
	(arm_delete_thread): Turn into...
	(arm_target::low_delete_thread): ...this.
	(arm_new_fork): Turn into...
	(arm_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(mips_linux_new_process): Turn into...
	(mips_target::low_new_process): ...this.
	(mips_linux_delete_process): Turn into...
	(mips_target::low_delete_process): ...this.
	(mips_linux_new_thread): Turn into...
	(mips_target::low_new_thread): ...this.
	(mips_linux_delete_thread): Turn into...
	(mips_target::low_delete_thread): ...this.
	(mips_linux_new_fork): Turn into...
	(mips_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* 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-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-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.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur
cb63de7ca8 gdbserver/linux-low: turn 'siginfo_fixup' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'siginfo_fixup' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <siginfo_fixup>
	<low_siginfo_fixup>: Declare.
	* linux-low.cc (siginfo_fixup): Turn into...
	(linux_process_target::siginfo_fixup): ...this.
	(linux_process_target::low_siginfo_fixup): Define.
	* linux-x86-low.cc (class x86_target) <low_siginfo_fixup>: Declare.
	(x86_siginfo_fixup): Turn into...
	(x86_target::low_siginfo_fixup): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target):
	<low_siginfo_fixup>: Declare.
	(aarch64_linux_siginfo_fixup): Turn into...
	(aarch64_target::low_siginfo_fixup): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-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-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-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.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur
b35db73327 gdbserver/linux-low: turn '{collect, supply}_ptrace_register' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'collect_ptrace_register' and 'supply_ptrace_register'
	linux target ops into methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_collect_ptrace_register>
	<low_store_ptrace_register>: Declare.
	* linux-low.cc (linux_process_target::low_collect_ptrace_register)
	(linux_process_target::low_supply_ptrace_register): Define.

	Update the callers below.

	(linux_process_target::fetch_register)
	(linux_process_target::store_register)

	* linux-x86-low.cc (the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (the_low_target): Ditto.
	* linux-arm-low.cc (the_low_target): Ditto.
	* linux-bfin-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-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-mips-low.cc (class mips_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(mips_collect_ptrace_register): Turn into ...
	(mips_target::low_collect_ptrace_register): ...this.
	(mips_supply_ptrace_register): Turn into...
	(mips_target::low_supply_ptrace_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(ppc_collect_ptrace_register): Turn into ...
	(ppc_target::low_collect_ptrace_register): ...this.
	(ppc_supply_ptrace_register): Turn into ...
	(ppc_target::low_supply_ptrace_register): ...this.
	(ppc_fill_gregset): Update for the calls to
	low_collect_ptrace_register.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(s390_collect_ptrace_register): Turn into ...
	(s390_target::low_collect_ptrace_register): ...this.
	(s390_supply_ptrace_register): Turn into ...
	(s390_target::low_supply_ptrace_register): ...this.
	(s390_fill_gregset): Update for the calls to
	low_collect_ptrace_register.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur
ac1bbaca10 gdbserver/linux-low: turn watchpoint ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'stopped_by_watchpoint' and 'stopped_data_address' linux
	target ops into methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <check_stopped_by_watchpoint>
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	* linux-low.cc (check_stopped_by_watchpoint): Turn into...
	(linux_process_target::check_stopped_by_watchpoint): ...this.
	(linux_process_target::low_stopped_by_watchpoint): Define.
	(linux_process_target::low_stopped_data_address): Define.
	* linux-x86-low.cc (class x86_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(x86_stopped_by_watchpoint): Turn into...
	(x86_target::low_stopped_by_watchpoint): ...this.
	(x86_stopped_data_address): Turn into...
	(x86_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(aarch64_stopped_by_watchpoint): Turn into...
	(aarch64_target::low_stopped_by_watchpoint): ...this.
	(aarch64_stopped_data_address): Turn into...
	(aarch64_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(arm_stopped_by_watchpoint): Turn into...
	(arm_target::low_stopped_by_watchpoint): ...this.
	(arm_stopped_data_address): Turn into...
	(arm_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(cris_stopped_by_watchpoint): Turn into...
	(crisv32_target::low_stopped_by_watchpoint): ...this.
	(cris_stopped_data_address): Turn into...
	(crisv32_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(mips_stopped_by_watchpoint): Turn into...
	(mips_target::low_stopped_by_watchpoint): ...this.
	(mips_stopped_data_address): Turn into...
	(mips_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-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.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur
9db9aa232a gdbserver/linux-low: turn 'insert_point' and 'remove_point' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'insert_point' and 'remove_point' linux target ops into
	methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_insert_point>
	<low_remove_point>: Declare.
	* linux-low.cc (linux_process_target::low_insert_point)
	(linux_process_target::low_remove_point): Define.
	(linux_process_target::insert_point)
	(linux_process_target::remove_point): Update for calls to
	low_insert_point and low_remove_point.
	* linux-x86-low.cc (class x86_target) <low_insert_point>
	<low_remove_point>: Declare.
	(x86_insert_point): Turn into...
	(x86_target::low_insert_point): ...this.
	(x86_remove_point): Turn into...
	(x86_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target) <low_insert_point>
	<low_remove_point>: Declare.
	(aarch64_insert_point): Turn into...
	(aarch64_target::low_insert_point): ...this.
	(aarch64_remove_point): Turn into...
	(aarch64_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_insert_point>
	<low_remove_point>: Declare.
	(arm_insert_point): Turn into...
	(arm_target::low_insert_point): ...this.
	(arm_remove_point): Turn into...
	(arm_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target) <low_insert_point>
	<low_remove_point>: Declare.
	(crisv32_insert_point): Turn into...
	(crisv32_target::low_insert_point): ...this.
	(crisv32_remove_point): Turn into...
	(crisv32_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_insert_point>
	<low_remove_point>: Declare.
	(mips_insert_point): Turn into...
	(mips_target::low_insert_point): ...this.
	(mips_remove_point): Turn into...
	(mips_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target) <low_insert_point>
	<low_remove_point>: Declare.
	(ppc_insert_point): Turn into...
	(ppc_target::low_insert_point): ...this.
	(ppc_remove_point): Turn into...
	(ppc_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-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.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur
007c9b975d gdbserver/linux-low: turn 'supports_z_point_type' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'supports_z_point_type' linux target op and let the
	concrete linux target define it by overriding the op declared in
	process_stratum_target.

	* linux-low.cc (linux_process_target::supports_z_point_type):
	Remove.
	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <supports_z_point_type>: Remove.
	* linux-x86-low.cc (class x86_target) <supports_z_point_type>:
	Declare.
	(x86_supports_z_point_type): Turn into...
	(x86_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_z_point_type>: Declare.
	(aarch64_supports_z_point_type): Turn into...
	(aarch64_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <supports_z_point_type>:
	Declare.
	(arm_supports_z_point_type): Turn into...
	(arm_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<supports_z_point_type>: Declare.
	(cris_supports_z_point_type): Turn into...
	(crisv32_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <supports_z_point_type>:
	Declare.
	(mips_supports_z_point_type): Turn into...
	(mips_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <supports_z_point_type>:
	Declare.
	(ppc_supports_z_point_type): Turn into...
	(ppc_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <supports_z_point_type>:
	Declare.
	(s390_supports_z_point_type): Turn into...
	(s390_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Remove the op field.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-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.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur
d7146cda56 gdbserver/linux-low: turn 'breakpoint_at' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'breakpoint_at' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_breakpoint_at>: Declare.

	Update the callers below:

	* linux-low.cc (linux_process_target::save_stop_reason)
	(linux_process_target::thread_still_has_status_pending)
	(linux_process_target::wait_1)

	* linux-x86-low.cc (class x86_target)
	<low_breakpoint_at>: Declare.
	(x86_breakpoint_at): Turn into...
	(x86_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_breakpoint_at>: Declare.
	(aarch64_breakpoint_at): Turn into...
	(aarch64_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target)
	<low_breakpoint_at>: Declare.
	(arm_target::low_breakpoint_at): Define.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target)
	<low_breakpoint_at>: Declare.
	(bfin_breakpoint_at): Turn into...
	(bfin_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target)
	<low_breakpoint_at>: Declare.
	(cris_breakpoint_at): Turn into...
	(cris_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_breakpoint_at>: Declare.
	(crisv32_breakpoint_at): Turn into...
	(crisv32_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target)
	<low_breakpoint_at>: Declare.
	(ia64_target::low_breakpoint_at): Define.
	* linux-m32r-low.cc (class m32r_target)
	<low_breakpoint_at>: Declare.
	(m32r_breakpoint_at): Turn into...
	(m32r_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target)
	<low_breakpoint_at>: Declare.
	(m68k_breakpoint_at): Turn into...
	(m68k_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target)
	<low_breakpoint_at>: Declare.
	(mips_breakpoint_at): Turn into...
	(mips_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-nios2-low.cc (class nios2_target)
	<low_breakpoint_at>: Declare.
	(nios2_breakpoint_at): Turn into...
	(nios2_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target)
	<low_breakpoint_at>: Declare.
	(ppc_breakpoint_at): Turn into...
	(ppc_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target)
	<low_breakpoint_at>: Declare.
	(riscv_breakpoint_at): Turn into...
	(riscv_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target)
	<low_breakpoint_at>: Declare.
	(s390_breakpoint_at): Turn into...
	(s390_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (class sh_target)
	<low_breakpoint_at>: Declare.
	(sh_breakpoint_at): Turn into...
	(sh_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target)
	<low_breakpoint_at>: Declare.
	(sparc_breakpoint_at): Turn into...
	(sparc_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target)
	<low_breakpoint_at>: Declare.
	(tic6x_breakpoint_at): Turn into...
	(tic6x_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target)
	<low_breakpoint_at>: Declare.
	(tile_breakpoint_at): Turn into...
	(tile_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target)
	<low_breakpoint_at>: Declare.
	(xtensa_breakpoint_at): Turn into...
	(xtensa_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur
d4807ea231 gdbserver/linux-low: turn the 'decr_pc_after_break' field into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'decr_pc_after_break' linux_target_ops field into
	a method of linux_process_target.

	* linux-low.h (struct linux_target_ops)
	<decr_pc_after_break>: Remove.
	(class linux_process_target) <low_decr_pc_after_break>: New method
	declaration.
	* linux-low.cc (linux_process_target::low_decr_pc_after_break):
	New method implementation.

	Update the users below.

	(linux_process_target::save_stop_reason)
	(linux_process_target::wait_1)
	* linux-x86-low.cc (class x86_target) <low_decr_pc_after_break>:
	New declaration.
	(x86_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-bfin-low.cc (class bfin_target) <low_decr_pc_after_break>:
	New declaration.
	(bfin_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-m68k-low.cc (class m68k_target) <low_decr_pc_after_break>:
	New declaration.
	(m68k_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-s390-low.cc (class s390_target) <low_decr_pc_after_break>:
	New declaration.
	(s390_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-aarch64-low.cc (the_low_target): Remove the field.
	* linux-arm-low.cc (the_low_target): Remove the field.
	* linux-cris-low.cc (the_low_target): Remove the field.
	* linux-crisv32-low.cc (the_low_target): Remove the field.
	* linux-m32r-low.cc (the_low_target): Remove the field.
	* linux-mips-low.cc (the_low_target): Remove the field.
	* linux-nios2-low.cc (the_low_target): Remove the field.
	* linux-ppc-low.cc (the_low_target): Remove the field.
	* linux-riscv-low.cc (the_low_target): Remove the field.
	* linux-sh-low.cc (the_low_target): Remove the field.
	* linux-sparc-low.cc (the_low_target): Remove the field.
	* linux-tic6x-low.cc (the_low_target): Remove the field.
	* linux-tile-low.cc (the_low_target): Remove the field.
	* linux-xtensa-low.cc (the_low_target): Remove the field.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur
7582c77c1d 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.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur
3ca4edb661 gdbserver/linux-low: turn 'sw_breakpoint_from_kind' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'sw_breakpoint_from_kind' linux target op, and let
	the concrete linux target define it by overriding the op
	in process_stratum_target.

	* linux-low.cc (linux_process_target::sw_breakpoint_from_kind):
	Remove.
	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <sw_breakpoint_from_kind>: Remove.
	* linux-x86-low.cc (class x86_target) <sw_breakpoint_from_kind>:
	Declare.
	(x86_sw_breakpoint_from_kind): Turn into...
	(x86_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<sw_breakpoint_from_kind>: Declare.
	(aarch64_sw_breakpoint_from_kind): Turn into...
	(aarch64_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <sw_breakpoint_from_kind>:
	Declare.
	(arm_target::sw_breakpoint_from_kind): Define.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target) <sw_breakpoint_from_kind>:
	Declare.
	(bfin_sw_breakpoint_from_kind): Turn into...
	(bfin_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target) <sw_breakpoint_from_kind>:
	Declare.
	(cris_sw_breakpoint_from_kind): Turn into...
	(cris_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<sw_breakpoint_from_kind>: Declare.
	(cris_sw_breakpoint_from_kind): Turn into...
	(crisv32_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target) <sw_breakpoint_from_kind>:
	Declare.
	(ia64_target::sw_breakpoint_from_kind): Define.
	* linux-m32r-low.cc (class m32r_target) <sw_breakpoint_from_kind>:
	Declare.
	(m32r_sw_breakpoint_from_kind): Turn into...
	(m32r_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target) <sw_breakpoint_from_kind>:
	Declare.
	(m68k_sw_breakpoint_from_kind): Turn into...
	(m68k_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <sw_breakpoint_from_kind>:
	Declare.
	(mips_sw_breakpoint_from_kind): Turn into...
	(mips_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-nios2-low.cc (class nios2_target) <sw_breakpoint_from_kind>:
	Declare.
	(nios2_sw_breakpoint_from_kind): Turn into...
	(nios2_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <sw_breakpoint_from_kind>:
	Declare.
	(ppc_sw_breakpoint_from_kind): Turn into...
	(ppc_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target) <sw_breakpoint_from_kind>:
	Declare.
	(riscv_sw_breakpoint_from_kind): Turn into...
	(riscv_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <sw_breakpoint_from_kind>:
	Declare.
	(s390_sw_breakpoint_from_kind): Turn into...
	(s390_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (class sh_target) <sw_breakpoint_from_kind>:
	Declare.
	(sh_sw_breakpoint_from_kind): Turn into...
	(sh_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target) <sw_breakpoint_from_kind>:
	Declare.
	(sparc_sw_breakpoint_from_kind): Turn into...
	(sparc_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target) <sw_breakpoint_from_kind>:
	Declare.
	(tic6x_sw_breakpoint_from_kind): Turn into...
	(tic6x_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target) <sw_breakpoint_from_kind>:
	Declare.
	(tile_sw_breakpoint_from_kind): Turn into...
	(tile_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target)
	<sw_breakpoint_from_kind>: Declare.
	(xtensa_sw_breakpoint_from_kind): Turn into...
	(xtensa_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:25 +02:00
Tankut Baris Aktemur
06250e4e67 gdbserver/linux-low: turn 'breakpoint_kind_from_{pc, current_state}' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'breakpoint_kind_from_pc' and
	'breakpoint_kind_from_current_state' linux target ops, and let the
	concrete linux target define them by overriding the ops of
	process_stratum_target.

	* linux-low.cc (linux_process_target::breakpoint_kind_from_pc):
	Remove.
	(linux_process_target::breakpoint_kind_from_current_state): Remove.
	* linux-low.h (struct linux_target_ops): Remove ops.
	(class linux_process_target) <breakpoint_kind_from_pc>: Remove.
	<breakpoint_kind_from_current_state>: Remove.
	* linux-x86-low.cc (the_low_target): Remove the op fields.
	* 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-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-aarch64-low.cc (class aarch64_target)
	<breakpoint_kind_from_pc>
	<breakpoint_kind_from_current_state>: Declare.
	(aarch64_breakpoint_kind_from_pc): Turn into...
	(aarch64_target::breakpoint_kind_from_pc): ...this.
	(aarch64_breakpoint_kind_from_current_state): Turn into...
	(aarch64_target::breakpoint_kind_from_current_state): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target):
	<breakpoint_kind_from_pc>
	<breakpoint_kind_from_current_state>: Declare.
	(arm_target::breakpoint_kind_from_pc): Define.
	(arm_target::breakpoint_kind_from_current_state): Define.
	(the_low_target): Remove the op fields.
	* linux-riscv-low.cc (class riscv_target):
	<breakpoint_kind_from_pc>: Declare.
	(riscv_breakpoint_kind_from_pc): Turn into...
	(riscv_target::breakpoint_kind_from_pc): ...this.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:25 +02:00
Tankut Baris Aktemur
bf9ae9d8c3 gdbserver/linux-low: turn 'get_pc' and 'set_pc' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_pc' and 'set_pc' linux target ops into methods
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	* linux-low.cc (supports_breakpoints): Turn into...
	(linux_process_target::low_supports_breakpoints): ...this.
	(linux_process_target::low_get_pc): Define.
	(linux_process_target::low_set_pc): Define.

	Update the callers below.

	(linux_process_target::get_pc)
	(linux_process_target::save_stop_reason)
	(linux_process_target::maybe_move_out_of_jump_pad)
	(linux_process_target::wait_1)
	(linux_process_target::resume_one_lwp_throw)
	(linux_process_target::resume)
	(linux_process_target::proceed_all_lwps)
	(linux_process_target::read_pc)
	(linux_process_target::write_pc)

	* linux-x86-low.cc (class linux_process_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(x86_target::low_supports_breakpoints): Define.
	(x86_get_pc): Turn into...
	(x86_target::low_get_pc): ...this.
	(x86_set_pc): Turn into...
	(x86_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(arm_target::low_supports_breakpoints)
	(arm_target::low_get_pc)
	(arm_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (class bfin_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(bfin_target::low_supports_breakpoints)
	(bfin_target::low_get_pc)
	(bfin_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-cris-low.cc (class cris_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(cris_target::low_supports_breakpoints)
	(cris_target::low_get_pc)
	(cris_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(crisv32_target::low_supports_breakpoints)
	(crisv32_target::low_get_pc)
	(crisv32_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-m32r-low.cc (class m32r_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(m32r_target::low_supports_breakpoints)
	(m32r_target::low_get_pc)
	(m32r_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-m68k-low.cc (class m68k_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(m68k_target::low_supports_breakpoints)
	(m68k_target::low_get_pc)
	(m68k_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-nios2-low.cc (class nios2_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(nios2_target::low_supports_breakpoints)
	(nios2_target::low_get_pc)
	(nios2_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-sh-low.cc (class sh_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(sh_target::low_supports_breakpoints)
	(sh_target::low_get_pc)
	(sh_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-xtensa-low.cc (class xtensa_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(xtensa_target::low_supports_breakpoints)
	(xtensa_target::low_get_pc)
	(xtensa_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-sparc-low.cc (class sparc_target)
	<low_supports_breakpoints>
	<low_get_pc>: Declare.
	(sparc_target::low_supports_breakpoints)
	(sparc_target::low_get_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-tile-low.cc (class tile_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(tile_target::low_supports_breakpoints)
	(tile_target::low_get_pc)
	(tile_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(aarch64_target::low_supports_breakpoints): Define.
	(aarch64_get_pc): Turn into...
	(aarch64_target::low_get_pc): ...this.
	(aarch64_set_pc): Turn into...
	(aarch64_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(mips_target::low_supports_breakpoints): Define.
	(mips_get_pc): Turn into...
	(mips_target::low_get_pc): ...this.
	(mips_set_pc): Turn into...
	(mips_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(ppc_target::low_supports_breakpoints): Define.
	(ppc_get_pc): Turn into...
	(ppc_target::low_get_pc): ...this.
	(ppc_set_pc): Turn into...
	(ppc_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-riscv-low.cc (class riscv_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(riscv_target::low_supports_breakpoints): Define.
	(riscv_get_pc): Turn into...
	(riscv_target::low_get_pc): ...this.
	(riscv_set_pc): Turn into...
	(riscv_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(s390_target::low_supports_breakpoints): Define.
	(s390_get_pc): Turn into...
	(s390_target::low_get_pc): ...this.
	(s390_set_pc): Turn into...
	(s390_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-tic6x-low.cc (class tic6x_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(tic6x_target::low_supports_breakpoints): Define.
	(tic6x_get_pc): Turn into...
	(tic6x_target::low_get_pc): ...this.
	(tic6x_set_pc): Turn into...
	(tic6x_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:24 +02:00
Tankut Baris Aktemur
bd70b1f240 gdbserver/linux-low: turn 'fetch_register' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'fetch_register' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops) <fetch_register>: Remove.
	(class linux_process_target) <low_fetch_register>: Declare.
	* linux-x86-low.cc (the_low_target)
	* linux-aarch64-low.cc (the_low_target)
	* linux-arm-low.cc (the_low_target)
	* linux-bfin-low.cc (the_low_target)
	* linux-cris-low.cc (the_low_target)
	* linux-crisv32-low.cc (the_low_target)
	* linux-m32r-low.cc (the_low_target)
	* linux-m68k-low.cc (the_low_target)
	* linux-nios2-low.cc (the_low_target)
	* linux-ppc-low.cc (the_low_target)
	* linux-s390-low.cc (the_low_target)
	* linux-sh-low.cc (the_low_target)
	* linux-sparc-low.cc (the_low_target)
	* linux-tic6x-low.cc (the_low_target)
	* linux-tile-low.cc (the_low_target)
	* linux-xtensa-low.cc (the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target) <low_fetch_register>:
	Declare.
	(ia64_fetch_register): Turn into...
	(ia64_target::low_fetch_register): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <low_fetch_register>:
	Declare.
	(mips_fetch_register): Turn into...
	(mips_target::low_fetch_register): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target) <low_fetch_register>:
	Declare.
	(riscv_fetch_register): Turn into...
	(riscv_target::low_fetch_register): ...this.
	(the_low_target): Remove the op field.

	Update the callers below.

	* linux-low.cc (linux_process_target::fetch_registers)
	(linux_process_target::low_fetch_register)
2020-04-02 15:11:24 +02:00
Tankut Baris Aktemur
daca57a7de gdbserver/linux-low: turn 'cannot_{fetch/store}_register' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'cannot_fetch_register' and 'cannot_store_register'
	linux target ops into methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the low target ops.
	(class linux_process_target) <fetch_register>
	<store_register>
	<usr_fetch_inferior_registers>
	<usr_store_inferior_registers>
	<low_cannot_fetch_register>
	<low_cannot_fetch_register> Declare.
	* linux-low.cc (fetch_register): Turn into...
	(linux_process_target::fetch_register): ...this.
	(store_register): Turn into ...
	(linux_process_target::store_register): ...this.
	(usr_fetch_inferior_registers): Turn into...
	(linux_process_target::usr_fetch_inferior_registers): ...this.
	(usr_store_inferior_registers): Turn into...
	(linux_process_target::usr_store_inferior_registers): ...this.
	* linux-x86-low.cc (class x86_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(x86_cannot_store_register): Turn into...
	(x86_target::low_cannot_store_register): ...this.
	(x86_cannot_fetch_register): Turn into...
	(x86_target::low_cannot_fetch_register): ...this.
	(the_low_target): Remove the target op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(aarch64_target::low_cannot_fetch_register)
	(aarch64_target::low_cannot_store_register): Define.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(arm_cannot_fetch_register): Turn into...
	(arm_target::low_cannot_fetch_register): ...this.
	(arm_cannot_store_register): Turn into...
	(arm_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (class bfin_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(bfin_cannot_fetch_register): Turn into...
	(bfin_target::low_cannot_fetch_register): ...this.
	(bfin_cannot_store_register): Turn into...
	(bfin_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-cris-low.cc (class cris_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(cris_cannot_fetch_register): Turn into...
	(cris_target::low_cannot_fetch_register): ...this.
	(cris_cannot_store_register): Turn into...
	(cris_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(crisv32_target::low_cannot_fetch_register)
	(crisv32_target::low_cannot_store_register): Define.
	(the_low_target): Remove the op fields.
	* linux-ia64-low.cc (class ia64_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(ia64_cannot_fetch_register): Turn into...
	(ia64_target::low_cannot_fetch_register): ...this.
	(ia64_cannot_store_register): Turn into...
	(ia64_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-m32r-low.cc (class m32r_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(m32r_cannot_fetch_register): Turn into...
	(m32r_target::low_cannot_fetch_register): ...this.
	(m32r_cannot_store_register): Turn into...
	(m32r_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-m68k-low.cc (class m68k_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(m68k_cannot_fetch_register): Turn into...
	(m68k_target::low_cannot_fetch_register): ...this.
	(m68k_cannot_store_register): Turn into...
	(m68k_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(mips_cannot_fetch_register): Turn into...
	(mips_target::low_cannot_fetch_register): ...this.
	(mips_cannot_store_register): Turn into...
	(mips_target::low_cannot_store_register): ...this.
	(get_usrregs_info): Inline at the call sites in
	low_cannot_fetch_register and low_cannot_store_register,
	and remove.
	(the_low_target): Remove the op fields.
	* linux-nios2-low.cc (class nios2_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(nios2_cannot_fetch_register): Turn into...
	(nios2_target::low_cannot_fetch_register): ...this.
	(nios2_cannot_store_register): Turn into...
	(nios2_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(ppc_cannot_fetch_register): Turn into...
	(ppc_target::low_cannot_fetch_register): ...this.
	(ppc_cannot_store_register): Turn into...
	(ppc_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-riscv-low.cc (class riscv_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(riscv_target::low_cannot_fetch_register)
	(riscv_target::low_cannot_store_register): Define.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(s390_cannot_fetch_register): Turn into...
	(s390_target::low_cannot_fetch_register): ...this.
	(s390_cannot_store_register): Turn into...
	(s390_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-sh-low.cc (class sh_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(sh_cannot_fetch_register): Turn into...
	(sh_target::low_cannot_fetch_register): ...this.
	(sh_cannot_store_register): Turn into...
	(sh_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-sparc-low.cc (class sparc_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(sparc_cannot_fetch_register): Turn into...
	(sparc_target::low_cannot_fetch_register): ...this.
	(sparc_cannot_store_register): Turn into...
	(sparc_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-tic6x-low.cc (class tic6x_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(tic6x_cannot_fetch_register): Turn into...
	(tic6x_target::low_cannot_fetch_register): ...this.
	(tic6x_cannot_store_register): Turn into...
	(tic6x_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-tile-low.cc (class tile_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(tile_cannot_fetch_register): Turn into...
	(tile_target::low_cannot_fetch_register): ...this.
	(tile_cannot_store_register): Turn into...
	(tile_target::low_cannot_store_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-xtensa-low.cc (class xtensa_target)
	<low_cannot_fetch_register>
	<low_cannot_store_register>: Declare.
	(xtensa_target::low_cannot_fetch_register)
	(xtensa_target::low_cannot_store_register): Define.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:24 +02:00
Tankut Baris Aktemur
aa8d21c9bb gdbserver/linux-low: turn 'regs_info' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'regs_info' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops) <regs_info>: Remove.
	(class linux_process_target) <get_regs_info>: Define.

	Update the callers below.

	* linux-low.cc (linux_process_target::fetch_registers)
	(linux_process_target::store_registers)
	* proc-service.cc (gregset_info)

	* linux-x86-low.cc (class x86_target) <get_regs_info>: Declare.
	(x86_linux_regs_info): Turn into ...
	(x86_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <get_regs_info>:
	Declare.
	(aarch64_regs_info): Turn into ...
	(aarch64_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <get_regs_info>: Declare.
	(arm_regs_info): Turn into ...
	(arm_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target) <get_regs_info>: Declare.
	(bfin_regs_info): Turn into ...
	(bfin_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target) <get_regs_info>: Declare.
	(cris_regs_info): Turn into ...
	(cris_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target) <get_regs_info>:
	Declare.
	(crisv32_regs_info): Turn into ...
	(crisv32_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target) <get_regs_info>: Declare.
	(ia64_regs_info): Turn into ...
	(ia64_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-m32r-low.cc (class m32r_target) <get_regs_info>: Declare.
	(m32r_regs_info): Turn into ...
	(m32r_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target) <get_regs_info>: Declare.
	(m68k_regs_info): Turn into ...
	(m68k_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <get_regs_info>: Declare.
	(mips_regs_info): Turn into ...
	(mips_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	(get_usrregs_info): Update the call to the op.
	* linux-nios2-low.cc (class nios2_target) <get_regs_info>: Declare.
	(nios2_regs_info): Turn into ...
	(nios2_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <get_regs_info>: Declare.
	(ppc_regs_info): Turn into ...
	(ppc_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target) <get_regs_info>: Declare.
	(riscv_regs_info): Turn into ...
	(riscv_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <get_regs_info>: Declare.
	(s390_regs_info): Turn into ...
	(s390_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	(s390_collect_ptrace_register)
	(s390_supply_ptrace_register)
	(s390_fill_gregset): Update the call to the op.
	* linux-sh-low.cc (class sh_target) <get_regs_info>: Declare.
	(sh_regs_info): Turn into ...
	(sh_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target) <get_regs_info>: Declare.
	(sparc_regs_info): Turn into ...
	(sparc_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target) <get_regs_info>: Declare.
	(tic6x_regs_info): Turn into ...
	(tic6x_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target) <get_regs_info>: Declare.
	(tile_regs_info): Turn into ...
	(tile_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target) <get_regs_info>:
	Declare.
	(xtensa_regs_info): Turn into ...
	(xtensa_target::get_regs_info): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:23 +02:00
Tankut Baris Aktemur
797bcff595 gdbserver/linux-low: turn 'arch_setup' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'arch_setup' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops) <arch_setup>: Delete.
	(class linux_process_target) <arch_setup_thread>
	<low_arch_setup>: New declarations.
	* linux-low.cc (linux_arch_setup): Delete.
	(linux_arch_setup_thread): Turn into...
	(linux_process_target::arch_setup_thread): ... this.

	Update the callers below.

	(linux_process_target::handle_extended_wait)
	(linux_process_target::post_create_inferior)
	(linux_process_target::filter_event)

	* linux-x86-low.cc (class x86_target) <low_arch_setup>: New
	declaration.
	(x86_linux_update_xmltarget): Turn into...
	(x86_target::update_xmltarget): ...this.
	(x86_linux_process_qsupported): Update the call to
	x86_linux_update_xmltarget.
	(x86_arch_setup): Turn into ...
	(x86_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <low_arch_setup>: New
	declaration.
	(aarch64_arch_setup): Turn into ...
	(aarch64_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <low_arch_setup>: New
	declaration.
	(arm_arch_setup): Turn into ...
	(arm_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target) <low_arch_setup>: New
	declaration.
	(bfin_arch_setup): Turn into ...
	(bfin_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target) <low_arch_setup>: New
	declaration.
	(cris_arch_setup): Turn into ...
	(cris_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target) <low_arch_setup>: New
	declaration.
	(crisv32_arch_setup): Turn into ...
	(crisv32_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target) <low_arch_setup>: New
	declaration.
	(ia64_arch_setup): Turn into ...
	(ia64_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-m32r-low.cc (class m32r_target) <low_arch_setup>: New
	declaration.
	(m32r_arch_setup): Turn into ...
	(m32r_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target) <low_arch_setup>: New
	declaration.
	(m68k_arch_setup): Turn into ...
	(m68k_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <low_arch_setup>: New
	declaration.
	(mips_arch_setup): Turn into ...
	(mips_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-nios2-low.cc (class nios2_target) <low_arch_setup>: New
	declaration.
	(nios2_arch_setup): Turn into ...
	(nios2_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <low_arch_setup>: New
	declaration.
	(ppc_arch_setup): Turn into ...
	(ppc_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target) <low_arch_setup>: New
	declaration.
	(riscv_arch_setup): Turn into ...
	(riscv_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <low_arch_setup>: New
	declaration.
	(s390_arch_setup): Turn into ...
	(s390_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (class sh_target) <low_arch_setup>: New
	declaration.
	(sh_arch_setup): Turn into ...
	(sh_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target) <low_arch_setup>: New
	declaration.
	(sparc_arch_setup): Turn into ...
	(sparc_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target) <low_arch_setup>: New
	declaration.
	(tic6x_arch_setup): Turn into ...
	(tic6x_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target) <low_arch_setup>: New
	declaration.
	(tile_arch_setup): Turn into ...
	(tile_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target) <low_arch_setup>: New
	declaration.
	(xtensa_arch_setup): Turn into ...
	(xtensa_target::low_arch_setup): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:23 +02:00
Tankut Baris Aktemur
ef0478f611 gdbserver/linux-low: start turning linux target ops into methods
This is the beginning of a series of patches that convert the linux
low targets into classes derived from linux_process_target.  At the
end of the series we obtain a class hierarchy that looks like this:

process_stratum_target
^
|
|-- linux_process_target
    ^
    |
    |-- x86_target (defined in linux-x86-low)
    |-- aarch64_target (defined in linux-aarch64-low)
    |-- ppc_target (defined in linux-ppc-low)
    |-- ...

In several cases, linux_process_target simply forwards a target op
request to a corresponding linux_target_ops function.  For these
cases, the definition in linux_process_target will be removed and the
definition will be left to the deriving linux low target class; using
inheritance provides a nice and natural, object-oriented
simplification in these cases.

The series converts linux_target_ops into protected methods of
linux_process_target one by one.  Throughout the series, based on the
needs, static functions defined in linux-low.cc are converted to
private methods of linux_process_target as well.  This is done either
as separate patches or as integrated into a patch that convert a
particular linux_target_op into a method.

The series ends with the patch titled "gdbserver/linux-low: delete
'linux_target_ops' and 'the_low_target'".

Built and regression-tested on x86_64-linux.  The following linux low
targets have been built (but not tested) via cross-compilation:
aarch64, arm, m68k, mips, ppc, riscv, s390, sh, sparc.  The other
targets (bfin, cris, crisv32, ia64, m32r, nios2, tic6x, tile, xtensa)
were neither built nor tested.

gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* linux-low.h (the_linux_target): New extern declaration.
	* linux-low.cc (initialize_low): Use 'the_linux_target' to set
	'the_target'.
	(the_linux_target): Remove.
	* linux-x86-low.cc (class x86_target): New class.
	(the_x86_target): New static object.
	(the_linux_target): Define as pointer to the_x86_target.
	* linux-aarch64-low.cc (class aarch64_target): New class.
	(the_aarch64_target): New static object.
	(the_linux_target): Define as pointer to the_aarch64_target.
	* linux-arm-low.cc (class arm_target): New class.
	(the_arm_target): New static object.
	(the_linux_target): Define as pointer to the_arm_target.
	* linux-bfin-low.cc (class bfin_target): New class.
	(the_bfin_target): New static object.
	(the_linux_target): Define as pointer to the_bfin_target.
	* linux-cris-low.cc (class cris_target): New class.
	(the_cris_target): New static object.
	(the_linux_target): Define as pointer to the_cris_target.
	* linux-crisv32-low.cc (class crisv32_target): New class.
	(the_crisv32_target): New static object.
	(the_linux_target): Define as pointer to the_crisv32_target.
	* linux-ia64-low.cc (class ia64_target): New class.
	(the_ia64_target): New static object.
	(the_linux_target): Define as pointer to the_ia64_target.
	* linux-m32r-low.cc (class m32r_target): New class.
	(the_m32r_target): New static object.
	(the_linux_target): Define as pointer to the_m32r_target.
	* linux-m68k-low.cc (class m68k_target): New class.
	(the_m68k_target): New static object.
	(the_linux_target): Define as pointer to the_m68k_target.
	* linux-mips-low.cc (class mips_target): New class.
	(the_mips_target): New static object.
	(the_linux_target): Define as pointer to the_mips_target.
	* linux-nios2-low.cc (class nios2_target): New class.
	(the_nios2_target): New static object.
	(the_linux_target): Define as pointer to the_nios2_target.
	* linux-ppc-low.cc (class ppc_target): New class.
	(the_ppc_target): New static object.
	(the_linux_target): Define as pointer to the_ppc_target.
	* linux-riscv-low.cc (class riscv_target): New class.
	(the_riscv_target): New static object.
	(the_linux_target): Define as pointer to the_riscv_target.
	* linux-s390-low.cc (class s390_target): New class.
	(the_s390_target): New static object.
	(the_linux_target): Define as pointer to the_s390_target.
	* linux-sh-low.cc (class sh_target): New class.
	(the_sh_target): New static object.
	(the_linux_target): Define as pointer to the_sh_target.
	* linux-sparc-low.cc (class sparc_target): New class.
	(the_sparc_target): New static object.
	(the_linux_target): Define as pointer to the_sparc_target.
	* linux-tic6x-low.cc (class tic6x_target): New class.
	(the_tic6x_target): New static object.
	(the_linux_target): Define as pointer to the_tic6x_target.
	* linux-tile-low.cc (class tile_target): New class.
	(the_tile_target): New static object.
	(the_linux_target): Define as pointer to the_tile_target.
	* linux-xtensa-low.cc (class xtensa_target): New class.
	(the_xtensa_target): New static object.
	(the_linux_target): Define as pointer to the_xtensa_target.
2020-04-02 15:11:23 +02:00
Tankut Baris Aktemur
52405d85ec gdbserver: finish turning the target ops vector into a class
Now that 'process_stratum_target' has a single field left, namely 'pt'
of type 'process_target', and that all the requests to a
'process_stratum_target' are forwarded to 'pt', meld the
'process_target' class into 'process_stratum_target'.

This essentially means

1. All the references of the form 'the_target->pt' become 'the_target'.

2. All the uses of the name 'process_target' become
   'process_stratum_target'.

3. The platform-specific target op vectors (e.g. linux_target_ops) are
   removed and instances of their "process target" classes are used
   instead.

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* target.h (struct process_stratum_target): Remove.
	(class process_target): Rename to ...
	(class process_stratum_target): ... this.
	* linux-low.h (class linux_process_target): Derive from
	'process_stratum_target'.
	* linux-low.cc (linux_target_ops): Remove.
	(initialize_low): Set the_target to the singleton instance of
	linux_process_target.
	* lynx-low.h (class lynx_process_target): Derive from
	'process_stratum_target'.
	* lynx-low.cc (lynx_target_ops): Remove.
	(initialize_low): Set the_target to the singleton instance of
	lynx_process_target.
	* nto-low.h (class nto_process_target): Derive from
	'process_stratum_target'.
	* nto-low.cc (nto_target_ops): Remove.
	(initialize_low): Set the_target to the singleton instance of
	nto_process_target.
	* win32-low.h (class win32_process_target): Derive from
	'process_stratum_target'.
	* win32-low.cc (win32_target_ops): Remove.
	(initialize_low): Set the_target to the singleton instance of
	win32_process_target.

	Replace 'the_target->pt' with 'the_target' in the uses below.

	* hostio.cc (hostio_error)
	(handle_setfs)
	(handle_open)
	(handle_unlink)
	(handle_readlink)
	* linux-aarch32-low.cc (arm_breakpoint_at)
	* linux-aarch64-low.cc (aarch64_breakpoint_at)
	* linux-arm-low.cc (arm_sigreturn_next_pc)
	(arm_get_hwcap)
	(arm_get_syscall_trapinfo)
	* linux-cris-low.cc (cris_breakpoint_at)
	* linux-crisv32-low.cc (cris_breakpoint_at)
	* linux-low.cc (handle_extended_wait)
	(linux_wait_1)
	(linux_read_memory)
	(linux_process_target::breakpoint_kind_from_pc)
	(linux_get_auxv)
	* linux-m32r-low.cc (m32r_breakpoint_at)
	* linux-mips-low.cc (mips_breakpoint_at)
	* linux-nios2-low.cc (nios2_breakpoint_at)
	* linux-ppc-low.cc (ppc_breakpoint_at)
	* linux-s390-low.cc (s390_get_hwcap)
	* linux-sh-low.cc (sh_breakpoint_at)
	* linux-sparc-low.cc (sparc_fill_gregset_to_stack)
	(sparc_store_gregset_from_stack)
	(sparc_breakpoint_at)
	* linux-tic6x-low.cc (tic6x_breakpoint_at)
	* linux-tile-low.cc (tile_breakpoint_at)
	* linux-x86-low.cc (x86_breakpoint_at)
	* linux-xtensa-low.cc (xtensa_breakpoint_at)
	* mem-break.cc (bp_size)
	(bp_opcode)
	(insert_memory_breakpoint)
	(set_raw_breakpoint_at)
	(delete_raw_breakpoint)
	(z_type_supported)
	(uninsert_raw_breakpoint)
	(reinsert_raw_breakpoint)
	(validate_inserted_breakpoint)
	* regcache.cc (regcache_read_pc)
	(regcache_write_pc)
	* remote-utils.cc (putpkt_binary_1)
	(input_interrupt)
	(getpkt)
	(prepare_resume_reply)
	* server.cc (handle_general_set)
	(handle_detach)
	(handle_qxfer_auxv)
	(handle_qxfer_exec_file)
	(handle_qxfer_libraries_svr4)
	(handle_qxfer_osdata)
	(handle_qxfer_siginfo)
	(handle_qxfer_fdpic)
	(handle_query)
	(resume)
	(handle_v_requests)
	(queue_stop_reply_callback)
	(captured_main)
	* target.cc (prepare_to_access_memory)
	(done_accessing_memory)
	(read_inferior_memory)
	(target_write_memory)
	(target_stop_and_wait)
	(target_wait)
	(target_mourn_inferior)
	(target_continue_no_signal)
	(target_continue)
	(target_supports_multi_process)
	(kill_inferior)
	* target.h
	(target_create_inferior)
	(target_post_create_inferior)
	(myattach)
	(target_supports_fork_events)
	(target_supports_vfork_events)
	(target_supports_exec_events)
	(target_handle_new_gdb_connection)
	(detach_inferior)
	(mythread_alive)
	(fetch_inferior_registers)
	(store_inferior_registers)
	(join_inferior)
	(target_supports_non_stop)
	(target_async)
	(target_process_qsupported)
	(target_supports_catch_syscall)
	(target_get_ipa_tdesc_idx)
	(target_supports_tracepoints)
	(target_supports_fast_tracepoints)
	(target_get_min_fast_tracepoint_insn_len)
	(target_thread_stopped)
	(target_pause_all)
	(target_unpause_all)
	(target_stabilize_threads)
	(target_install_fast_tracepoint_jump_pad)
	(target_emit_ops)
	(target_supports_disable_randomization)
	(target_supports_agent)
	(target_enable_btrace)
	(target_disable_btrace)
	(target_read_btrace)
	(target_read_btrace_conf)
	(target_supports_range_stepping)
	(target_supports_stopped_by_sw_breakpoint)
	(target_stopped_by_sw_breakpoint)
	(target_supports_stopped_by_hw_breakpoint)
	(target_supports_hardware_single_step)
	(target_stopped_by_hw_breakpoint)
	(target_breakpoint_kind_from_pc)
	(target_breakpoint_kind_from_current_state)
	(target_supports_software_single_step)
	(target_core_of_thread)
	(target_thread_name)
	(target_thread_handle)
	* win32-low.cc (do_initial_child_stuff)

	Rename target op default definitions listed below.

	* target.cc (process_target::post_create_inferior): Rename as ...
	(process_stratum_target::post_create_inferior): ... this.
	(process_target::prepare_to_access_memory): Rename as ...
	(process_stratum_target::prepare_to_access_memory): ... this.
	(process_target::done_accessing_memory): Rename as ...
	(process_stratum_target::done_accessing_memory): ... this.
	(process_target::look_up_symbols): Rename as ...
	(process_stratum_target::look_up_symbols): ... this.
	(process_target::supports_read_auxv): Rename as ...
	(process_stratum_target::supports_read_auxv): ... this.
	(process_target::read_auxv): Rename as ...
	(process_stratum_target::read_auxv): ... this.
	(process_target::supports_z_point_type): Rename as ...
	(process_stratum_target::supports_z_point_type): ... this.
	(process_target::insert_point): Rename as ...
	(process_stratum_target::insert_point): ... this.
	(process_target::remove_point): Rename as ...
	(process_stratum_target::remove_point): ... this.
	(process_target::stopped_by_sw_breakpoint): Rename as ...
	(process_stratum_target::stopped_by_sw_breakpoint): ... this.
	(process_target::supports_stopped_by_sw_breakpoint): Rename as ...
	(process_stratum_target::supports_stopped_by_sw_breakpoint): ... this.
	(process_target::stopped_by_hw_breakpoint): Rename as ...
	(process_stratum_target::stopped_by_hw_breakpoint): ... this.
	(process_target::supports_stopped_by_hw_breakpoint): Rename as ...
	(process_stratum_target::supports_stopped_by_hw_breakpoint): ... this.
	(process_target::supports_hardware_single_step): Rename as ...
	(process_stratum_target::supports_hardware_single_step): ... this.
	(process_target::stopped_by_watchpoint): Rename as ...
	(process_stratum_target::stopped_by_watchpoint): ... this.
	(process_target::stopped_data_address): Rename as ...
	(process_stratum_target::stopped_data_address): ... this.
	(process_target::supports_read_offsets): Rename as ...
	(process_stratum_target::supports_read_offsets): ... this.
	(process_target::read_offsets): Rename as ...
	(process_stratum_target::read_offsets): ... this.
	(process_target::supports_get_tls_address): Rename as ...
	(process_stratum_target::supports_get_tls_address): ... this.
	(process_target::get_tls_address): Rename as ...
	(process_stratum_target::get_tls_address): ... this.
	(process_target::hostio_last_error): Rename as ...
	(process_stratum_target::hostio_last_error): ... this.
	(process_target::supports_qxfer_osdata): Rename as ...
	(process_stratum_target::supports_qxfer_osdata): ... this.
	(process_target::qxfer_osdata): Rename as ...
	(process_stratum_target::qxfer_osdata): ... this.
	(process_target::supports_qxfer_siginfo): Rename as ...
	(process_stratum_target::supports_qxfer_siginfo): ... this.
	(process_target::qxfer_siginfo): Rename as ...
	(process_stratum_target::qxfer_siginfo): ... this.
	(process_target::supports_non_stop): Rename as ...
	(process_stratum_target::supports_non_stop): ... this.
	(process_target::async): Rename as ...
	(process_stratum_target::async): ... this.
	(process_target::start_non_stop): Rename as ...
	(process_stratum_target::start_non_stop): ... this.
	(process_target::supports_multi_process): Rename as ...
	(process_stratum_target::supports_multi_process): ... this.
	(process_target::supports_fork_events): Rename as ...
	(process_stratum_target::supports_fork_events): ... this.
	(process_target::supports_vfork_events): Rename as ...
	(process_stratum_target::supports_vfork_events): ... this.
	(process_target::supports_exec_events): Rename as ...
	(process_stratum_target::supports_exec_events): ... this.
	(process_target::handle_new_gdb_connection): Rename as ...
	(process_stratum_target::handle_new_gdb_connection): ... this.
	(process_target::handle_monitor_command): Rename as ...
	(process_stratum_target::handle_monitor_command): ... this.
	(process_target::core_of_thread): Rename as ...
	(process_stratum_target::core_of_thread): ... this.
	(process_target::supports_read_loadmap): Rename as ...
	(process_stratum_target::supports_read_loadmap): ... this.
	(process_target::read_loadmap): Rename as ...
	(process_stratum_target::read_loadmap): ... this.
	(process_target::process_qsupported): Rename as ...
	(process_stratum_target::process_qsupported): ... this.
	(process_target::supports_tracepoints): Rename as ...
	(process_stratum_target::supports_tracepoints): ... this.
	(process_target::read_pc): Rename as ...
	(process_stratum_target::read_pc): ... this.
	(process_target::write_pc): Rename as ...
	(process_stratum_target::write_pc): ... this.
	(process_target::supports_thread_stopped): Rename as ...
	(process_stratum_target::supports_thread_stopped): ... this.
	(process_target::thread_stopped): Rename as ...
	(process_stratum_target::thread_stopped): ... this.
	(process_target::supports_get_tib_address): Rename as ...
	(process_stratum_target::supports_get_tib_address): ... this.
	(process_target::get_tib_address): Rename as ...
	(process_stratum_target::get_tib_address): ... this.
	(process_target::pause_all): Rename as ...
	(process_stratum_target::pause_all): ... this.
	(process_target::unpause_all): Rename as ...
	(process_stratum_target::unpause_all): ... this.
	(process_target::stabilize_threads): Rename as ...
	(process_stratum_target::stabilize_threads): ... this.
	(process_target::supports_fast_tracepoints): Rename as ...
	(process_stratum_target::supports_fast_tracepoints): ... this.
	(process_target::get_min_fast_tracepoint_insn_len): Rename as ...
	(process_stratum_target::get_min_fast_tracepoint_insn_len): ... this.
	(process_target::emit_ops): Rename as ...
	(process_stratum_target::emit_ops): ... this.
	(process_target::supports_disable_randomization): Rename as ...
	(process_stratum_target::supports_disable_randomization): ... this.
	(process_target::supports_qxfer_libraries_svr4): Rename as ...
	(process_stratum_target::supports_qxfer_libraries_svr4): ... this.
	(process_target::qxfer_libraries_svr4): Rename as ...
	(process_stratum_target::qxfer_libraries_svr4): ... this.
	(process_target::supports_agent): Rename as ...
	(process_stratum_target::supports_agent): ... this.
	(process_target::enable_btrace): Rename as ...
	(process_stratum_target::enable_btrace): ... this.
	(process_target::disable_btrace): Rename as ...
	(process_stratum_target::disable_btrace): ... this.
	(process_target::read_btrace): Rename as ...
	(process_stratum_target::read_btrace): ... this.
	(process_target::read_btrace_conf): Rename as ...
	(process_stratum_target::read_btrace_conf): ... this.
	(process_target::supports_range_stepping): Rename as ...
	(process_stratum_target::supports_range_stepping): ... this.
	(process_target::supports_pid_to_exec_file): Rename as ...
	(process_stratum_target::supports_pid_to_exec_file): ... this.
	(process_target::pid_to_exec_file): Rename as ...
	(process_stratum_target::pid_to_exec_file): ... this.
	(process_target::supports_multifs): Rename as ...
	(process_stratum_target::supports_multifs): ... this.
	(process_target::multifs_open): Rename as ...
	(process_stratum_target::multifs_open): ... this.
	(process_target::multifs_unlink): Rename as ...
	(process_stratum_target::multifs_unlink): ... this.
	(process_target::multifs_readlink): Rename as ...
	(process_stratum_target::multifs_readlink): ... this.
	(process_target::breakpoint_kind_from_pc): Rename as ...
	(process_stratum_target::breakpoint_kind_from_pc): ... this.
	(process_target::breakpoint_kind_from_current_state): Rename as ...
	(process_stratum_target::breakpoint_kind_from_current_state): ... this.
	(process_target::thread_name): Rename as ...
	(process_stratum_target::thread_name): ... this.
	(process_target::thread_handle): Rename as ...
	(process_stratum_target::thread_handle): ... this.
	(process_target::supports_software_single_step): Rename as ...
	(process_stratum_target::supports_software_single_step): ... this.
	(process_target::supports_catch_syscall): Rename as ...
	(process_stratum_target::supports_catch_syscall): ... this.
	(process_target::get_ipa_tdesc_idx): Rename as ...
	(process_stratum_target::get_ipa_tdesc_idx): ... this.
2020-02-20 17:35:20 +01:00
Tankut Baris Aktemur
e2558df32b gdbserver: turn target ops 'read_memory' and 'write_memory' into methods
gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn process_stratum_target's read_memory and write_memory
	ops into methods of process_target.

	* target.h (struct process_stratum_target): Remove the target ops.
	(class process_target): Add the target ops.

	Update the derived classes and callers below.

	* linux-aarch32-low.cc (arm_breakpoint_at): Update.
	* linux-aarch64-low.cc (aarch64_breakpoint_at): Update.
	* linux-arm-low.cc (arm_sigreturn_next_pc): Update.
	(arm_get_syscall_trapinfo): Update.
	* linux-cris-low.cc (cris_breakpoint_at): Update.
	* linux-crisv32-low.cc (cris_breakpoint_at): Update.
	* linux-m32r-low.cc (m32r_breakpoint_at): Update.
	* linux-mips-low.cc (mips_breakpoint_at): Update.
	* linux-nios2-low.cc (nios2_breakpoint_at): Update.
	* linux-ppc-low.cc (ppc_breakpoint_at): Update.
	* linux-sh-low.cc (sh_breakpoint_at): Update.
	* linux-sparc-low.cc (sparc_fill_gregset_to_stack): Update.
	(sparc_store_gregset_from_stack): Update.
	(sparc_breakpoint_at): Update.
	* linux-tic6x-low.cc (tic6x_breakpoint_at): Update.
	* linux-tile-low.cc (tile_breakpoint_at): Update.
	* linux-x86-low.cc (x86_breakpoint_at): Update.
	* linux-xtensa-low.cc (xtensa_breakpoint_at): Update.
	* mem-brea.cc (insert_memory_breakpoint): Update.
	(validate_inserted_breakpoint): Update.
	* target.cc (read_inferior_memory): Update.
	(target_write_memory): Update.
	* linux-low.cc (linux_target_ops): Update.
	(linux_read_memory): Make a wrapper around the read_memory target
	op call.
	(linux_process_target::read_memory): Rename from linux_read_memory.
	(linux_write_memory): Turn into ...
	(linux_process_target::write_memory): ... this.
	* linux-low.h (class linux_process_target): Update.
	* lynx-low.cc (lynx_target_ops): Update.
	(lynx_read_memory): Turn into ...
	(lynx_process_target::read_memory): ... this.
	(lynx_write_memory): Turn into ...
	(lynx_process_target::write_memory): ... this.
	* lynx-low.h (class lynx_process_target): Update.
	* nto-low.cc (nto_target_ops): Update.
	(nto_read_memory): Turn into ...
	(nto_process_target::read_memory): ... this.
	(nto_write_memory): Turn into ...
	(nto_process_target::write_memory): ... this.
	* nto-low.h (class nto_process_target): Update.
	* win32-low.cc (win32_target_ops): Update.
	(win32_read_inferior_memory): Turn into ...
	(win32_process_target::read_memory): ... this.
	(win32_write_inferior_memory): Turn into ...
	(win32_process_target::write_memory): ... this.
	* win32-low.h (class win32_process_target): Update.
2020-02-20 17:35:05 +01:00
Simon Marchi
feacfcacaa gdbserver: rename source files to .cc
For the same reasons outlined in the previous patch, this patch renames
gdbserver source files to .cc.

I have moved the "-x c++" switch to only those rules that require it.

gdbserver/ChangeLog:

	* Makefile.in: Rename source files from .c to .cc.
	* %.c: Rename to %.cc.
	* configure.ac: Rename server.c to server.cc.
	* configure: Re-generate.
2020-02-13 16:27:51 -05:00