gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 17 Feb 2020 15:11:53 +0000 (16:11 +0100)
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Thu, 20 Feb 2020 16:35:05 +0000 (17:35 +0100)
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.

gdbserver/ChangeLog
gdbserver/linux-low.cc
gdbserver/linux-low.h
gdbserver/lynx-low.cc
gdbserver/lynx-low.h
gdbserver/nto-low.cc
gdbserver/nto-low.h
gdbserver/target.h
gdbserver/win32-low.cc
gdbserver/win32-low.h

index e0ba3077dfa324e239565653eeb016ae8e86e59d..73adc6542a4e223d3d877315eca7732437117cb1 100644 (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
index 49511125897dcad50055cfefac91f13af6069a3a..7cf7d90fdbc6aa30032d49fc6bbdcf53c055018a 100644 (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,
index d1d89106e50c50178ebf8a9259912edb342e74fa..85b5c8a62d11353fc57fd10508f9bd411548285c 100644 (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)))
index f38c3110cbd69853d349b1b42fb5b4d12b6c45a0..5c46567f9ede1c0e8e70510062dce3fabf04d3b6 100644 (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,
index 35714713fd2d4e5fe1ebed218195a7808df40a11..ea6cf008f5b134a84a656e9dab8c957725a35248 100644 (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
index 6cac6eb4329f96307267e5fa1797cc9744b6f9ca..a051f36eeccf78a3c261e42b7e0f83e2f39adbcc 100644 (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,
index 94837ab605134ee86f6e8c1d20617e36009748dd..f630360a2f43007447c0ee0e98d552b129edb054 100644 (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
index 16daf93440ed00ee3d5585983ffd34cc9474fabd..e42c7509bb18168baa366bfddd774821fabca32f 100644 (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)
index e7df444451df8588952396d81bebd047a60aa90d..9e4e4c368ca19eb23464907ec05864ffb3b6b241 100644 (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,
index 9c74ffa9c585cc497f14963cd52795749a6badf2..ff3659f6dabac6213c3c0348382a5f22dcab9b85 100644 (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.  */