gdb/gdbserver:
authorYao Qi <yao@codesourcery.com>
Sun, 29 Apr 2012 06:28:30 +0000 (06:28 +0000)
committerYao Qi <yao@codesourcery.com>
Sun, 29 Apr 2012 06:28:30 +0000 (06:28 +0000)
* server.h: Move some code to ...
* gdbthread.h: ... here.  New.
* Makefile.in (inferiors.o, regcache.o): Depends on gdbthread.h
(remote-utils.o, server.o, target.o tracepoint.o): Likewise.
(nto-low.o, win32-low.o): Likewise.
* inferiors.c, linux-low.h, nto-low.c: Include gdbthread.h.
* regcache.c, remote-utils.c, server.c: Likewise.
* target.c, tracepoint.c, win32-low.c: Likewise.

12 files changed:
gdb/gdbserver/ChangeLog
gdb/gdbserver/Makefile.in
gdb/gdbserver/gdbthread.h [new file with mode: 0644]
gdb/gdbserver/inferiors.c
gdb/gdbserver/linux-low.h
gdb/gdbserver/nto-low.c
gdb/gdbserver/regcache.c
gdb/gdbserver/remote-utils.c
gdb/gdbserver/server.c
gdb/gdbserver/server.h
gdb/gdbserver/tracepoint.c
gdb/gdbserver/win32-low.c

index 739b99eac56440c160b1252421b9ae7e5bd1a8e2..7b79cd14e8fcb461e07c3ca0e13ca8c8b9012a69 100644 (file)
@@ -1,3 +1,14 @@
+2012-04-29  Yao Qi  <yao@codesourcery.com>
+
+       * server.h: Move some code to ...
+       * gdbthread.h: ... here.  New.
+       * Makefile.in (inferiors.o, regcache.o): Depends on gdbthread.h
+       (remote-utils.o, server.o, target.o tracepoint.o): Likewise.
+       (nto-low.o, win32-low.o): Likewise.
+       * inferiors.c, linux-low.h, nto-low.c: Include gdbthread.h.
+       * regcache.c, remote-utils.c, server.c: Likewise.
+       * target.c, tracepoint.c, win32-low.c: Likewise.
+
 2012-04-24  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
 
        * linux-low.h (PTRACE_ARG3_TYPE): Move macro from linux-low.c.
index 1e50ae2ff25f1398820e7f55910f2b9239cb474b..50786d54b08bf56c636cda38d3d723a87e855cc8 100644 (file)
@@ -423,7 +423,8 @@ server_h = $(srcdir)/server.h $(regcache_h) $(srcdir)/target.h \
                $(signals_h) \
                $(generated_files)
 
-linux_low_h = $(srcdir)/linux-low.h
+gdbthread_h = $(srcdir)/gdbthread.h $(target_h) $(srcdir)/server.h
+linux_low_h = $(srcdir)/linux-low.h $(gdbthread_h)
 
 linux_ptrace_h = $(srcdir)/../common/linux-ptrace.h
 
@@ -469,16 +470,16 @@ ax.o: ax.c $(server_h) $(ax_h) $(srcdir)/../common/ax.def
 event-loop.o: event-loop.c $(server_h)
 hostio.o: hostio.c $(server_h)
 hostio-errno.o: hostio-errno.c $(server_h)
-inferiors.o: inferiors.c $(server_h)
+inferiors.o: inferiors.c $(server_h) $(gdbthread_h)
 mem-break.o: mem-break.c $(server_h) $(ax_h)
 proc-service.o: proc-service.c $(server_h) $(gdb_proc_service_h)
-regcache.o: regcache.c $(server_h) $(regdef_h)
-remote-utils.o: remote-utils.c terminal.h $(server_h)
-server.o: server.c $(server_h) $(agent_h)
-target.o: target.c $(server_h)
+regcache.o: regcache.c $(server_h) $(regdef_h) $(gdbthread_h)
+remote-utils.o: remote-utils.c terminal.h $(server_h) $(gdbthread_h)
+server.o: server.c $(server_h) $(agent_h) $(gdbthread_h)
+target.o: target.c $(server_h) 
 thread-db.o: thread-db.c $(server_h) $(linux_low_h) $(gdb_proc_service_h) \
        $(gdb_thread_db_h)
-tracepoint.o: tracepoint.c $(server_h) $(ax_h) $(agent_h)
+tracepoint.o: tracepoint.c $(server_h) $(ax_h) $(agent_h) $(gdbthread_h)
 utils.o: utils.c $(server_h)
 gdbreplay.o: gdbreplay.c config.h
 dll.o: dll.c $(server_h)
@@ -551,12 +552,12 @@ linux-xtensa-low.o: linux-xtensa-low.c xtensa-xtregs.c $(linux_low_h) $(server_h
 
 lynx-low.o: lynx-low.c $(server_h) $(target_h) $(lynx_low_h)
 lynx-ppc-low.o: lynx-ppc-low.c $(server_h) $(lynx_low_h)
-nto-low.o: nto-low.c $(server_h) $(nto_low_h)
+nto-low.o: nto-low.c $(server_h) $(nto_low_h) $(gdbthread_h)
 nto-x86-low.o: nto-x86-low.c $(server_h) $(nto_low_h) $(regdef_h) $(regcache_h)
 
 win32_low_h = $(srcdir)/win32-low.h
 
-win32-low.o: win32-low.c $(win32_low_h) $(server_h) $(regdef_h) $(regcache_h)
+win32-low.o: win32-low.c $(win32_low_h) $(server_h) $(regdef_h) $(regcache_h) $(gdbthread_h)
 
 win32-arm-low.o: win32-arm-low.c $(win32_low_h) $(server_h)
 win32-i386-low.o: win32-i386-low.c $(win32_low_h) $(server_h) $(i386_low_h)
diff --git a/gdb/gdbserver/gdbthread.h b/gdb/gdbserver/gdbthread.h
new file mode 100644 (file)
index 0000000..d863ec0
--- /dev/null
@@ -0,0 +1,71 @@
+/* Multi-thread control defs for remote server for GDB.
+   Copyright (C) 1993, 1995, 1997-2000, 2002-2012 Free Software
+   Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDB_THREAD_H
+#define GDB_THREAD_H
+
+#include "server.h"
+
+struct thread_info
+{
+  struct inferior_list_entry entry;
+  void *target_data;
+  void *regcache_data;
+
+  /* The last resume GDB requested on this thread.  */
+  enum resume_kind last_resume_kind;
+
+  /* The last wait status reported for this thread.  */
+  struct target_waitstatus last_status;
+
+  /* Given `while-stepping', a thread may be collecting data for more
+     than one tracepoint simultaneously.  E.g.:
+
+    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
+    ff0002  INSN2
+    ff0003  INSN3 <-- TP2, collect $regs
+    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
+    ff0005  INSN5
+
+   Notice that when instruction INSN5 is reached, the while-stepping
+   actions of both TP1 and TP3 are still being collected, and that TP2
+   had been collected meanwhile.  The whole range of ff0001-ff0005
+   should be single-stepped, due to at least TP1's while-stepping
+   action covering the whole range.
+
+   On the other hand, the same tracepoint with a while-stepping action
+   may be hit by more than one thread simultaneously, hence we can't
+   keep the current step count in the tracepoint itself.
+
+   This is the head of the list of the states of `while-stepping'
+   tracepoint actions this thread is now collecting; NULL if empty.
+   Each item in the list holds the current step of the while-stepping
+   action.  */
+  struct wstep_state *while_stepping;
+};
+
+extern struct inferior_list all_threads;
+
+void remove_thread (struct thread_info *thread);
+void add_thread (ptid_t ptid, void *target_data);
+
+struct thread_info *find_thread_ptid (ptid_t ptid);
+struct thread_info *gdb_id_to_thread (unsigned int);
+
+#endif /* GDB_THREAD_H */
index 2b9169a3e44fc8a04b43d1af4d3c447d69545074..76abaf5353ee57747f72fa9f99f93b42c2d5138a 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 
 #include "server.h"
+#include "gdbthread.h"
 
 struct inferior_list all_processes;
 struct inferior_list all_threads;
index 82b33998ba5aed692e50cc9ac89f737af7bd3d41..99d882aa5e0141e85c2ef75a7afd715e063802de 100644 (file)
@@ -22,6 +22,7 @@
 #endif
 #include <signal.h>
 
+#include "gdbthread.h"
 #include "gdb_proc_service.h"
 
 #define PTRACE_ARG3_TYPE void *
index eabee10b58626fd002594e12f40f0b3b9009f5c4..bfff8250e4de5969bf88860202bb6539a620bc65 100644 (file)
@@ -19,6 +19,7 @@
 
 
 #include "server.h"
+#include "gdbthread.h"
 #include "nto-low.h"
 
 #include <limits.h>
index 5eda9df976777739e014357bf023ccb2dee3379e..5e4c149a0129f343024254a440fd4af83ce76a25 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "server.h"
 #include "regdef.h"
+#include "gdbthread.h"
 
 #include <stdlib.h>
 #include <string.h>
index 995e3b1074e53ec2a481b6208b748e9060697a94..0b3adace79c55a5bb970d654a499cd7ac0d75777 100644 (file)
@@ -19,6 +19,7 @@
 #include "server.h"
 #include "terminal.h"
 #include "target.h"
+#include "gdbthread.h"
 #include <stdio.h>
 #include <string.h>
 #if HAVE_SYS_IOCTL_H
index 23c9d47c3b5cdc7bbfe33880eccf23810db84bc1..b3d1b41186b3fa7c41c52888d5cc87dddb2697e8 100644 (file)
@@ -18,6 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "server.h"
+#include "gdbthread.h"
 #include "agent.h"
 
 #if HAVE_UNISTD_H
index 49f94d03f260d2c01da97ed62a4df9f4528788d0..02dfa292beeb596fafddae1973653bba4a1dc9c0 100644 (file)
@@ -141,44 +141,7 @@ struct regcache;
 #include "gdb_signals.h"
 #include "target.h"
 #include "mem-break.h"
-
-struct thread_info
-{
-  struct inferior_list_entry entry;
-  void *target_data;
-  void *regcache_data;
-
-  /* The last resume GDB requested on this thread.  */
-  enum resume_kind last_resume_kind;
-
-  /* The last wait status reported for this thread.  */
-  struct target_waitstatus last_status;
-
-  /* Given `while-stepping', a thread may be collecting data for more
-     than one tracepoint simultaneously.  E.g.:
-
-    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
-    ff0002  INSN2
-    ff0003  INSN3 <-- TP2, collect $regs
-    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
-    ff0005  INSN5
-
-   Notice that when instruction INSN5 is reached, the while-stepping
-   actions of both TP1 and TP3 are still being collected, and that TP2
-   had been collected meanwhile.  The whole range of ff0001-ff0005
-   should be single-stepped, due to at least TP1's while-stepping
-   action covering the whole range.
-
-   On the other hand, the same tracepoint with a while-stepping action
-   may be hit by more than one thread simultaneously, hence we can't
-   keep the current step count in the tracepoint itself.
-
-   This is the head of the list of the states of `while-stepping'
-   tracepoint actions this thread is now collecting; NULL if empty.
-   Each item in the list holds the current step of the while-stepping
-   action.  */
-  struct wstep_state *while_stepping;
-};
+#include "gdbthread.h"
 
 struct dll_info
 {
@@ -235,7 +198,6 @@ void initialize_low ();
 /* From inferiors.c.  */
 
 extern struct inferior_list all_processes;
-extern struct inferior_list all_threads;
 extern struct inferior_list all_dlls;
 extern int dlls_changed;
 extern void clear_dlls (void);
@@ -248,8 +210,6 @@ void for_each_inferior (struct inferior_list *list,
 extern struct thread_info *current_inferior;
 void remove_inferior (struct inferior_list *list,
                      struct inferior_list_entry *entry);
-void remove_thread (struct thread_info *thread);
-void add_thread (ptid_t ptid, void *target_data);
 
 struct process_info *add_process (int pid, int attached);
 void remove_process (struct process_info *process);
@@ -257,12 +217,10 @@ struct process_info *find_process_pid (int pid);
 int have_started_inferiors_p (void);
 int have_attached_inferiors_p (void);
 
-struct thread_info *find_thread_ptid (ptid_t ptid);
-
 ptid_t thread_id_to_gdb_id (ptid_t);
 ptid_t thread_to_gdb_id (struct thread_info *);
 ptid_t gdb_id_to_thread_id (ptid_t);
-struct thread_info *gdb_id_to_thread (unsigned int);
+
 void clear_inferiors (void);
 struct inferior_list_entry *find_inferior
      (struct inferior_list *,
index 2d5cb058de38002098b690e4687c32fd4f1315d2..f103dfce81a8ffe54d468554deb43e19a195074b 100644 (file)
@@ -17,6 +17,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "server.h"
+#include "gdbthread.h"
 #include "agent.h"
 
 #include <ctype.h>
index 3e10490959bcb6624f4a7d61db12174dd4860e03..315d4498adb704e024adcdb5630c7d421a4bece0 100644 (file)
@@ -24,6 +24,7 @@
 #include "gdb/fileio.h"
 #include "mem-break.h"
 #include "win32-low.h"
+#include "gdbthread.h"
 
 #include <stdint.h>
 #include <windows.h>