aboutsummaryrefslogtreecommitdiff
path: root/gdbserver/inferiors.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-12-15 07:37:06 -0700
committerTom Tromey <tromey@adacore.com>2020-02-07 08:42:25 -0700
commit919adfe8409211c726c1d05b47ca59890ee648f1 (patch)
treed2ef4abf9e5590b43a59f3f8747b0d5bab94ab6f /gdbserver/inferiors.h
parente8319fde715960466aca2461c74cec8907abd391 (diff)
downloadfsf-binutils-gdb-919adfe8409211c726c1d05b47ca59890ee648f1.zip
fsf-binutils-gdb-919adfe8409211c726c1d05b47ca59890ee648f1.tar.gz
fsf-binutils-gdb-919adfe8409211c726c1d05b47ca59890ee648f1.tar.bz2
Move gdbserver to top level
This patch moves gdbserver to the top level. This patch is as close to a pure move as possible -- gdbserver still builds its own variant of gnulib and gdbsupport. Changing this will be done in a separate patch. [v2] Note that, per Simon's review comment, this patch changes the tree so that gdbserver is not built for or1k or score. This makes sense, because there is apparently not actually a gdbserver port here. [v3] This version of the patch also splits out some configury into a new file, gdbserver/configure.host, so that the top-level configure script can simply rely on it in order to decide whether gdbserver should be built. [v4] This version adds documentation and removes some unnecessary top-level dependencies. [v5] Update docs to mention "make all-gdbserver" and change how top-level configure decides whether to build gdbserver, switching to a single, shared script. Tested by the buildbot. ChangeLog 2020-02-07 Tom Tromey <tom@tromey.com> Pedro Alves <palves@redhat.com> * src-release.sh (GDB_SUPPORT_DIRS): Add gdbserver. * gdbserver: New directory, moved from gdb/gdbserver. * configure.ac (host_tools): Add gdbserver. Only build gdbserver on certain systems. * Makefile.in, configure: Rebuild. * Makefile.def (host_modules, dependencies): Add gdbserver. * MAINTAINERS: Add gdbserver. gdb/ChangeLog 2020-02-07 Tom Tromey <tom@tromey.com> * README: Update gdbserver documentation. * gdbserver: Move to top level. * configure.tgt (build_gdbserver): Remove. * configure.ac: Remove --enable-gdbserver. * configure: Rebuild. * Makefile.in (distclean): Don't mention gdbserver. Change-Id: I826b7565b54604711dc7a11edea0499cd51ff39e
Diffstat (limited to 'gdbserver/inferiors.h')
-rw-r--r--gdbserver/inferiors.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/gdbserver/inferiors.h b/gdbserver/inferiors.h
new file mode 100644
index 0000000..4e24b2c
--- /dev/null
+++ b/gdbserver/inferiors.h
@@ -0,0 +1,147 @@
+/* Inferior process information for the remote server for GDB.
+ Copyright (C) 1993-2020 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 GDBSERVER_INFERIORS_H
+#define GDBSERVER_INFERIORS_H
+
+#include "gdbsupport/gdb_vecs.h"
+#include <list>
+
+struct thread_info;
+struct regcache;
+struct target_desc;
+struct sym_cache;
+struct breakpoint;
+struct raw_breakpoint;
+struct fast_tracepoint_jump;
+struct process_info_private;
+
+struct process_info
+{
+ process_info (int pid_, int attached_)
+ : pid (pid_), attached (attached_)
+ {}
+
+ /* This process' pid. */
+ int pid;
+
+ /* Nonzero if this child process was attached rather than
+ spawned. */
+ int attached;
+
+ /* True if GDB asked us to detach from this process, but we remained
+ attached anyway. */
+ int gdb_detached = 0;
+
+ /* The symbol cache. */
+ struct sym_cache *symbol_cache = NULL;
+
+ /* The list of memory breakpoints. */
+ struct breakpoint *breakpoints = NULL;
+
+ /* The list of raw memory breakpoints. */
+ struct raw_breakpoint *raw_breakpoints = NULL;
+
+ /* The list of installed fast tracepoints. */
+ struct fast_tracepoint_jump *fast_tracepoint_jumps = NULL;
+
+ /* The list of syscalls to report, or just a single element, ANY_SYSCALL,
+ for unfiltered syscall reporting. */
+ std::vector<int> syscalls_to_catch;
+
+ const struct target_desc *tdesc = NULL;
+
+ /* Private target data. */
+ struct process_info_private *priv = NULL;
+};
+
+/* Get the pid of PROC. */
+
+static inline int
+pid_of (const process_info *proc)
+{
+ return proc->pid;
+}
+
+/* Return a pointer to the process that corresponds to the current
+ thread (current_thread). It is an error to call this if there is
+ no current thread selected. */
+
+struct process_info *current_process (void);
+struct process_info *get_thread_process (const struct thread_info *);
+
+extern std::list<process_info *> all_processes;
+
+/* Invoke FUNC for each process. */
+
+template <typename Func>
+static void
+for_each_process (Func func)
+{
+ std::list<process_info *>::iterator next, cur = all_processes.begin ();
+
+ while (cur != all_processes.end ())
+ {
+ next = cur;
+ next++;
+ func (*cur);
+ cur = next;
+ }
+}
+
+/* Find the first process for which FUNC returns true. Return NULL if no
+ process satisfying FUNC is found. */
+
+template <typename Func>
+static process_info *
+find_process (Func func)
+{
+ std::list<process_info *>::iterator next, cur = all_processes.begin ();
+
+ while (cur != all_processes.end ())
+ {
+ next = cur;
+ next++;
+
+ if (func (*cur))
+ return *cur;
+
+ cur = next;
+ }
+
+ return NULL;
+}
+
+extern struct thread_info *current_thread;
+
+/* Return the first process in the processes list. */
+struct process_info *get_first_process (void);
+
+struct process_info *add_process (int pid, int attached);
+void remove_process (struct process_info *process);
+struct process_info *find_process_pid (int pid);
+int have_started_inferiors_p (void);
+int have_attached_inferiors_p (void);
+
+void clear_inferiors (void);
+
+void *thread_target_data (struct thread_info *);
+struct regcache *thread_regcache_data (struct thread_info *);
+void set_thread_regcache_data (struct thread_info *, struct regcache *);
+
+#endif /* GDBSERVER_INFERIORS_H */