gdbserver: turn target op 'stabilize_threads' into a method
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 17 Feb 2020 15:12:00 +0000 (16:12 +0100)
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Thu, 20 Feb 2020 16:35:15 +0000 (17:35 +0100)
gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's stabilize_threads op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_stabilize_threads): Update the macro.
* target.cc (process_target::stabilize_threads): Define.

Update the derived classes and callers below.

* server.cc (handle_status): Update.
* tracepoint.cc (cmd_qtdp): Update.
(cmd_qtstart): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_stabilize_threads): Turn into ...
(linux_process_target::stabilize_threads): ... this.
(linux_wait_1): Update.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

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

index 162077b10a58ec56a81cb8aa4f5b7e0e52a46d4f..e15a43312cb9cedc607eda81a46b14b24957a170 100644 (file)
@@ -1,3 +1,27 @@
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+       Turn process_stratum_target's stabilize_threads op into a
+       method of process_target.
+
+       * target.h (struct process_stratum_target): Remove the target op.
+       (class process_target): Add the target op.
+       (target_stabilize_threads): Update the macro.
+       * target.cc (process_target::stabilize_threads): Define.
+
+       Update the derived classes and callers below.
+
+       * server.cc (handle_status): Update.
+       * tracepoint.cc (cmd_qtdp): Update.
+       (cmd_qtstart): Update.
+       * linux-low.cc (linux_target_ops): Update.
+       (linux_stabilize_threads): Turn into ...
+       (linux_process_target::stabilize_threads): ... this.
+       (linux_wait_1): Update.
+       * linux-low.h (class linux_process_target): Update.
+       * lynx-low.cc (lynx_target_ops): Update.
+       * nto-low.cc (nto_target_ops): Update.
+       * win32-low.cc (win32_target_ops): Update.
+
 2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
        Turn process_stratum_target's pause_all and unpause_all ops
index 1a1af7953448b5a496f9af0d28450452c8a143a2..1e516d6bc7097077b361591a1ad8594e3020f847 100644 (file)
@@ -1628,7 +1628,7 @@ linux_process_target::detach (process_info *process)
 #endif
 
   /* Stabilize threads (move out of jump pads).  */
-  stabilize_threads ();
+  target_stabilize_threads ();
 
   /* Detach from the clone lwps first.  If the thread group exits just
      while we're detaching, we must reap the clone lwps before we're
@@ -2934,8 +2934,8 @@ static ptid_t linux_wait_1 (ptid_t ptid,
    since for something else in the new run, the thread would now
    execute the wrong / random instructions.  */
 
-static void
-linux_stabilize_threads (void)
+void
+linux_process_target::stabilize_threads ()
 {
   thread_info *thread_stuck = find_thread (stuck_in_jump_pad_callback);
 
@@ -3721,7 +3721,7 @@ linux_wait_1 (ptid_t ptid,
 
       /* Stabilize threads (move out of jump pads).  */
       if (!non_stop)
-       stabilize_threads ();
+       target_stabilize_threads ();
     }
   else
     {
@@ -7455,7 +7455,6 @@ linux_get_hwcap2 (int wordsize)
 static linux_process_target the_linux_target;
 
 static process_stratum_target linux_target_ops = {
-  linux_stabilize_threads,
   linux_install_fast_tracepoint_jump_pad,
   linux_emit_ops,
   linux_supports_disable_randomization,
index e5d54c5e08dac5d5b27021a355e936135a37ea53..d3866de03a27dceee9c740e7eb5721ba37ec9cd3 100644 (file)
@@ -400,6 +400,8 @@ public:
   void pause_all (bool freeze) override;
 
   void unpause_all (bool unfreeze) override;
+
+  void stabilize_threads () override;
 };
 
 #define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))
index 92c086d97c39c3628a15dec079e3c9e9d80407ff..5ea50b4415daf632af0d2b252b415243b7fb0da8 100644 (file)
@@ -735,7 +735,6 @@ static lynx_process_target the_lynx_target;
 /* The LynxOS target_ops vector.  */
 
 static process_stratum_target lynx_target_ops = {
-  NULL,  /* stabilize_threads */
   NULL,  /* install_fast_tracepoint_jump_pad */
   NULL,  /* emit_ops */
   NULL,  /* supports_disable_randomization */
index ee411a1e3756cec3ff62c820c2cc518a12d92198..ef7a70ad97ab734656dc3a63334c946de741c411 100644 (file)
@@ -947,7 +947,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size)
 static nto_process_target the_nto_target;
 
 static process_stratum_target nto_target_ops = {
-  NULL, /* stabilize_threads */
   NULL, /* install_fast_tracepoint_jump_pad */
   NULL, /* emit_ops */
   NULL, /* supports_disable_randomization */
index 670c0fed968c1f56296d8d09ccf391f950792990..448089fd47c454b2150c48894957d27c682d5270 100644 (file)
@@ -3324,7 +3324,7 @@ handle_status (char *own_buf)
       thread_info *thread = NULL;
 
       target_pause_all (false);
-      stabilize_threads ();
+      target_stabilize_threads ();
       gdb_wants_all_threads_stopped ();
 
       /* We can only report one status, but we might be coming out of
index 912f4b8bdad404271e3d9e48143a23faed9e43a8..42f22846d026789b63792f9e6b419245ac01e91b 100644 (file)
@@ -662,3 +662,9 @@ process_target::unpause_all (bool unfreeze)
 {
   /* Nop.  */
 }
+
+void
+process_target::stabilize_threads ()
+{
+  /* Nop.  */
+}
index 60fb14f69e66a2ed03ec34946bd8f3c1080b7146..c56267fb1f827173e3df44af60911848c73b7296 100644 (file)
@@ -70,9 +70,6 @@ class process_target;
    shared code.  */
 struct process_stratum_target
 {
-  /* Stabilize all threads.  That is, force them out of jump pads.  */
-  void (*stabilize_threads) (void);
-
   /* Install a fast tracepoint jump pad.  TPOINT is the address of the
      tracepoint internal object as used by the IPA agent.  TPADDR is
      the address of tracepoint.  COLLECTOR is address of the function
@@ -494,6 +491,9 @@ public:
      pair should not end up resuming threads that were stopped before
      the pause call.  */
   virtual void unpause_all (bool unfreeze);
+
+  /* Stabilize all threads.  That is, force them out of jump pads.  */
+  virtual void stabilize_threads ();
 };
 
 extern process_stratum_target *the_target;
@@ -574,12 +574,8 @@ int kill_inferior (process_info *proc);
 #define target_unpause_all(unfreeze)           \
   the_target->pt->unpause_all (unfreeze)
 
-#define stabilize_threads()                    \
-  do                                           \
-    {                                          \
-      if (the_target->stabilize_threads)       \
-       (*the_target->stabilize_threads) ();    \
-    } while (0)
+#define target_stabilize_threads()             \
+  the_target->pt->stabilize_threads ()
 
 #define install_fast_tracepoint_jump_pad(tpoint, tpaddr,               \
                                         collector, lockaddr,           \
index ffa819cf24e773c4966dd23c9684374dec7b869c..be40c9b4cf1c9a7beff77237d341ed61c8f5cdb9 100644 (file)
@@ -2606,7 +2606,7 @@ cmd_qtdp (char *own_buf)
 
       /* download_tracepoint will update global `tracepoints'
         list, so it is unsafe to leave threads in jump pad.  */
-      stabilize_threads ();
+      target_stabilize_threads ();
 
       /* Freeze threads.  */
       target_pause_all (true);
@@ -3226,7 +3226,7 @@ cmd_qtstart (char *packet)
      top level command.  And, required to do here, since we're
      deleting/rewriting jump pads.  */
 
-  stabilize_threads ();
+  target_stabilize_threads ();
 
   /* Freeze threads.  */
   target_pause_all (true);
index a06cea22fc8eb85bbce228c9b12de01a04757ae9..8e0be15fdaf8d294ed155162f36d2c68db68a292 100644 (file)
@@ -1858,7 +1858,6 @@ win32_sw_breakpoint_from_kind (int kind, int *size)
 static win32_process_target the_win32_target;
 
 static process_stratum_target win32_target_ops = {
-  NULL, /* stabilize_threads */
   NULL, /* install_fast_tracepoint_jump_pad */
   NULL, /* emit_ops */
   NULL, /* supports_disable_randomization */