This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Use "switch_to_thread" more thoroughly on gdbserver


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=75352e283fb2b265d14c750859156943f6eb2693

commit 75352e283fb2b265d14c750859156943f6eb2693
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Fri Sep 15 00:27:53 2017 -0400

    Use "switch_to_thread" more thoroughly on gdbserver
    
    This is a technical debt that I left when I ported "switch_to_thread"
    to gdbserver.  It's a simple patch that converts occurences of:
    
      current_thread = find_thread_ptid (ptid);
    
    to:
    
      switch_to_thread (ptid);
    
    This patch also converts a simple "if" to a "gdb_assert" on
    gdbserver's version of "switch_to_thread":
    
      gdb_assert (ptid != minus_one_ptid);
    
    This change makes the code more similar to what GDB already does.
    
    Regtested on BuildBot.
    
    gdb/gdbserver/ChangeLog:
    2017-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
    
    	* gdbthread.h: Include "common-gdbthread.h".
    	* inferiors.c (switch_to_thread): Use "gdb_assert" instead of
    	"if" when validating the ptid.
    	* remote-utils.c: Include "gdbthread.h".
    	(prepare_resume_reply): Use "switch_to_thread".
    	* target.c (done_accessing_memory): Likewise.

Diff:
---
 gdb/gdbserver/ChangeLog      | 9 +++++++++
 gdb/gdbserver/gdbthread.h    | 1 +
 gdb/gdbserver/inferiors.c    | 4 ++--
 gdb/gdbserver/remote-utils.c | 3 ++-
 gdb/gdbserver/target.c       | 2 +-
 5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index a628b96..63fb653 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,12 @@
+2017-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdbthread.h: Include "common-gdbthread.h".
+	* inferiors.c (switch_to_thread): Use "gdb_assert" instead of
+	"if" when validating the ptid.
+	* remote-utils.c: Include "gdbthread.h".
+	(prepare_resume_reply): Use "switch_to_thread".
+	* target.c (done_accessing_memory): Likewise.
+
 2017-09-25  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
 	* configure.srv (s390*-*-linux*): Add s390-gs-linux64.o and
diff --git a/gdb/gdbserver/gdbthread.h b/gdb/gdbserver/gdbthread.h
index 04cc47b..a864f95 100644
--- a/gdb/gdbserver/gdbthread.h
+++ b/gdb/gdbserver/gdbthread.h
@@ -19,6 +19,7 @@
 #ifndef GDB_THREAD_H
 #define GDB_THREAD_H
 
+#include "common-gdbthread.h"
 #include "inferiors.h"
 
 struct btrace_target_info;
diff --git a/gdb/gdbserver/inferiors.c b/gdb/gdbserver/inferiors.c
index 72f0412..3a45959 100644
--- a/gdb/gdbserver/inferiors.c
+++ b/gdb/gdbserver/inferiors.c
@@ -442,6 +442,6 @@ make_cleanup_restore_current_thread (void)
 void
 switch_to_thread (ptid_t ptid)
 {
-  if (!ptid_equal (ptid, minus_one_ptid))
-    current_thread = find_thread_ptid (ptid);
+  gdb_assert (ptid != minus_one_ptid);
+  current_thread = find_thread_ptid (ptid);
 }
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index 25b7e41..7616046 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -23,6 +23,7 @@
 #include "tdesc.h"
 #include "dll.h"
 #include "rsp-low.h"
+#include "gdbthread.h"
 #include <ctype.h>
 #if HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
@@ -1188,7 +1189,7 @@ prepare_resume_reply (char *buf, ptid_t ptid,
 
 	saved_thread = current_thread;
 
-	current_thread = find_thread_ptid (ptid);
+	switch_to_thread (ptid);
 
 	regp = current_target_desc ()->expedite_regs;
 
diff --git a/gdb/gdbserver/target.c b/gdb/gdbserver/target.c
index 7f5bed7..94224a8 100644
--- a/gdb/gdbserver/target.c
+++ b/gdb/gdbserver/target.c
@@ -138,7 +138,7 @@ done_accessing_memory (void)
 
   /* Restore the previous selected thread.  */
   general_thread = prev_general_thread;
-  current_thread = find_thread_ptid (general_thread);
+  switch_to_thread (general_thread);
 }
 
 int


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]