gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods

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

	Turn process_stratum_target's fetch_registers and store_registers
	ops into methods of process_target.

	* target.h (struct process_stratum_target): Remove the target ops.
	(class process_target): Add the target ops.
	(fetch_inferior_registers): Update the macro.
	(store_inferior_registers): Update the macro.

	Update the derived classes and callers below.

	* linux-low.cc (linux_target_ops): Update.
	(linux_fetch_registers): Turn into ...
	(linux_process_target::fetch_registers): ... this.
	(linux_store_registers): Turn into ...
	(linux_process_target::store_registers): ... this.
	* linux-low.h (class linux_process_target): Update.
	* lynx-low.cc (lynx_target_ops): Update.
	(lynx_fetch_registers): Turn into ...
	(lynx_process_target::fetch_registers): ... this.
	(lynx_store_registers): Turn into ...
	(lynx_process_target::store_registers): ... this.
	* lynx-low.h (class lynx_process_target): Update.
	* nto-low.cc (nto_target_ops): Update.
	(nto_fetch_registers): Turn into ...
	(nto_process_target::fetch_registers): ... this.
	(nto_store_registers): Turn into ...
	(nto_process_target::store_registers): ... this.
	* nto-low.h (class nto_process_target): Update.
	* win32-low.cc (win32_target_ops): Update.
	(win32_fetch_inferior_registers): Turn into ...
	(win32_process_target::fetch_registers): ... this.
	(win32_store_inferior_registers): Turn into ...
	(win32_process_target::store_registers): ... this.
	* win32-low.h (class win32_process_target): Update.
This commit is contained in:
Tankut Baris Aktemur 2020-02-17 16:11:53 +01:00
parent 6532e7e378
commit a5a4d4cd0c
10 changed files with 83 additions and 40 deletions

View File

@ -1,3 +1,40 @@
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Turn process_stratum_target's fetch_registers and store_registers
ops into methods of process_target.
* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(fetch_inferior_registers): Update the macro.
(store_inferior_registers): Update the macro.
Update the derived classes and callers below.
* linux-low.cc (linux_target_ops): Update.
(linux_fetch_registers): Turn into ...
(linux_process_target::fetch_registers): ... this.
(linux_store_registers): Turn into ...
(linux_process_target::store_registers): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_fetch_registers): Turn into ...
(lynx_process_target::fetch_registers): ... this.
(lynx_store_registers): Turn into ...
(lynx_process_target::store_registers): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_fetch_registers): Turn into ...
(nto_process_target::fetch_registers): ... this.
(nto_store_registers): Turn into ...
(nto_process_target::store_registers): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_fetch_inferior_registers): Turn into ...
(win32_process_target::fetch_registers): ... this.
(win32_store_inferior_registers): Turn into ...
(win32_process_target::store_registers): ... this.
* win32-low.h (class win32_process_target): Update.
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Turn process_stratum_target's wait op into a method of

View File

@ -5650,8 +5650,8 @@ usr_store_inferior_registers (const struct regs_info *regs_info,
#endif
static void
linux_fetch_registers (struct regcache *regcache, int regno)
void
linux_process_target::fetch_registers (regcache *regcache, int regno)
{
int use_regsets;
int all = 0;
@ -5683,8 +5683,8 @@ linux_fetch_registers (struct regcache *regcache, int regno)
}
}
static void
linux_store_registers (struct regcache *regcache, int regno)
void
linux_process_target::store_registers (regcache *regcache, int regno)
{
int use_regsets;
int all = 0;
@ -7359,8 +7359,6 @@ linux_get_hwcap2 (int wordsize)
static linux_process_target the_linux_target;
static process_stratum_target linux_target_ops = {
linux_fetch_registers,
linux_store_registers,
linux_prepare_to_access_memory,
linux_done_accessing_memory,
linux_read_memory,

View File

@ -291,6 +291,10 @@ public:
ptid_t wait (ptid_t ptid, target_waitstatus *status,
int options) override;
void fetch_registers (regcache *regcache, int regno) override;
void store_registers (regcache *regcache, int regno) override;
};
#define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))

View File

@ -581,13 +581,13 @@ lynx_process_target::thread_alive (ptid_t ptid)
/* Implement the fetch_registers target_ops method. */
static void
lynx_fetch_registers (struct regcache *regcache, int regno)
void
lynx_process_target::fetch_registers (regcache *regcache, int regno)
{
struct lynx_regset_info *regset = lynx_target_regsets;
ptid_t inferior_ptid = ptid_of (current_thread);
lynx_debug ("lynx_fetch_registers (regno = %d)", regno);
lynx_debug ("fetch_registers (regno = %d)", regno);
while (regset->size >= 0)
{
@ -606,13 +606,13 @@ lynx_fetch_registers (struct regcache *regcache, int regno)
/* Implement the store_registers target_ops method. */
static void
lynx_store_registers (struct regcache *regcache, int regno)
void
lynx_process_target::store_registers (regcache *regcache, int regno)
{
struct lynx_regset_info *regset = lynx_target_regsets;
ptid_t inferior_ptid = ptid_of (current_thread);
lynx_debug ("lynx_store_registers (regno = %d)", regno);
lynx_debug ("store_registers (regno = %d)", regno);
while (regset->size >= 0)
{
@ -727,8 +727,6 @@ static lynx_process_target the_lynx_target;
/* The LynxOS target_ops vector. */
static process_stratum_target lynx_target_ops = {
lynx_fetch_registers,
lynx_store_registers,
NULL, /* prepare_to_access_memory */
NULL, /* done_accessing_memory */
lynx_read_memory,

View File

@ -77,6 +77,10 @@ public:
ptid_t wait (ptid_t ptid, target_waitstatus *status,
int options) override;
void fetch_registers (regcache *regcache, int regno) override;
void store_registers (regcache *regcache, int regno) override;
};
/* The inferior's target description. This is a global because the

View File

@ -623,8 +623,8 @@ nto_process_target::wait (ptid_t ptid, target_waitstatus *ourstatus,
/* Fetch inferior's registers for currently selected thread (CURRENT_INFERIOR).
If REGNO is -1, fetch all registers, or REGNO register only otherwise. */
static void
nto_fetch_registers (struct regcache *regcache, int regno)
void
nto_process_target::fetch_registers (regcache *regcache, int regno)
{
int regsize;
procfs_greg greg;
@ -671,8 +671,8 @@ nto_fetch_registers (struct regcache *regcache, int regno)
/* Store registers for currently selected thread (CURRENT_INFERIOR).
We always store all registers, regardless of REGNO. */
static void
nto_store_registers (struct regcache *regcache, int regno)
void
nto_process_target::store_registers (regcache *regcache, int regno)
{
procfs_greg greg;
int err;
@ -941,8 +941,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size)
static nto_process_target the_nto_target;
static process_stratum_target nto_target_ops = {
nto_fetch_registers,
nto_store_registers,
NULL, /* prepare_to_access_memory */
NULL, /* done_accessing_memory */
nto_read_memory,

View File

@ -67,6 +67,10 @@ public:
ptid_t wait (ptid_t ptid, target_waitstatus *status,
int options) override;
void fetch_registers (regcache *regcache, int regno) override;
void store_registers (regcache *regcache, int regno) override;
};
/* The inferior's target description. This is a global because the

View File

@ -70,18 +70,6 @@ class process_target;
shared code. */
struct process_stratum_target
{
/* Fetch registers from the inferior process.
If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */
void (*fetch_registers) (struct regcache *regcache, int regno);
/* Store registers to the inferior process.
If REGNO is -1, store all registers; otherwise, store at least REGNO. */
void (*store_registers) (struct regcache *regcache, int regno);
/* Prepare to read or write memory from the inferior process.
Targets use this to do what is necessary to get the state of the
inferior such that it is possible to access memory.
@ -482,6 +470,16 @@ public:
null_ptid/TARGET_WAITKIND_IGNORE. */
virtual ptid_t wait (ptid_t ptid, target_waitstatus *status,
int options) = 0;
/* Fetch registers from the inferior process.
If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */
virtual void fetch_registers (regcache *regcache, int regno) = 0;
/* Store registers to the inferior process.
If REGNO is -1, store all registers; otherwise, store at least REGNO. */
virtual void store_registers (regcache *regcache, int regno) = 0;
};
extern process_stratum_target *the_target;
@ -525,10 +523,10 @@ int kill_inferior (process_info *proc);
the_target->pt->thread_alive (pid)
#define fetch_inferior_registers(regcache, regno) \
(*the_target->fetch_registers) (regcache, regno)
the_target->pt->fetch_registers (regcache, regno)
#define store_inferior_registers(regcache, regno) \
(*the_target->store_registers) (regcache, regno)
the_target->pt->store_registers (regcache, regno)
#define join_inferior(pid) \
the_target->pt->join (pid)

View File

@ -1659,16 +1659,16 @@ win32_process_target::wait (ptid_t ptid, target_waitstatus *ourstatus,
/* Fetch registers from the inferior process.
If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */
static void
win32_fetch_inferior_registers (struct regcache *regcache, int regno)
void
win32_process_target::fetch_registers (regcache *regcache, int regno)
{
child_fetch_inferior_registers (regcache, regno);
}
/* Store registers to the inferior process.
If REGNO is -1, store all registers; otherwise, store at least REGNO. */
static void
win32_store_inferior_registers (struct regcache *regcache, int regno)
void
win32_process_target::store_registers (regcache *regcache, int regno)
{
child_store_inferior_registers (regcache, regno);
}
@ -1837,8 +1837,6 @@ win32_sw_breakpoint_from_kind (int kind, int *size)
static win32_process_target the_win32_target;
static process_stratum_target win32_target_ops = {
win32_fetch_inferior_registers,
win32_store_inferior_registers,
NULL, /* prepare_to_access_memory */
NULL, /* done_accessing_memory */
win32_read_inferior_memory,

View File

@ -126,6 +126,10 @@ public:
ptid_t wait (ptid_t ptid, target_waitstatus *status,
int options) override;
void fetch_registers (regcache *regcache, int regno) override;
void store_registers (regcache *regcache, int regno) override;
};
/* Retrieve the context for this thread, if not already retrieved. */