gdbserver/linux-low: replace direct assignment to current_thread
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 13 Dec 2021 11:22:48 +0000 (12:22 +0100)
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 13 Dec 2021 11:22:48 +0000 (12:22 +0100)
Use scoped_restore_current_thread and switch_to_thread in
linux_process_target::wait_for_sigstop.

gdbserver/linux-low.cc

index 373bacbb74d84b934e7da948202c6189b809f344..185dab4527f85fc888697c4da74454d4b5127fb4 100644 (file)
@@ -3826,6 +3826,8 @@ linux_process_target::wait_for_sigstop ()
   else
     saved_tid = null_ptid; /* avoid bogus unused warning */
 
+  scoped_restore_current_thread restore_thread;
+
   if (debug_threads)
     debug_printf ("wait_for_sigstop: pulling events\n");
 
@@ -3836,7 +3838,7 @@ linux_process_target::wait_for_sigstop ()
   gdb_assert (ret == -1);
 
   if (saved_thread == NULL || mythread_alive (saved_tid))
-    current_thread = saved_thread;
+    return;
   else
     {
       if (debug_threads)
@@ -3845,7 +3847,8 @@ linux_process_target::wait_for_sigstop ()
       /* We can't change the current inferior behind GDB's back,
         otherwise, a subsequent command may apply to the wrong
         process.  */
-      current_thread = NULL;
+      restore_thread.dont_restore ();
+      switch_to_thread (nullptr);
     }
 }