pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
gdb-netbsd: Remove gdb/nbsd-nat.c and gdb/nbsd-nat.h patches
Module Name: pkgsrc-wip
Committed By: Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By: kamil
Date: Fri Apr 17 17:57:25 2020 +0200
Changeset: 3f67f70a78ca39015f6fe59fa71c0dddd99e5f75
Modified Files:
gdb-netbsd/distinfo
Removed Files:
gdb-netbsd/patches/patch-gdb_nbsd-nat.c
gdb-netbsd/patches/patch-gdb_nbsd-nat.h
Log Message:
gdb-netbsd: Remove gdb/nbsd-nat.c and gdb/nbsd-nat.h patches
Most of the functionality reimplemented and merged upstream.
Basic event tracing is pending upstream.
Fork/vfork/vfork-done/spawn etc support will be submitted upstream
soon.
Nothing left is kept locally.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=3f67f70a78ca39015f6fe59fa71c0dddd99e5f75
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
gdb-netbsd/distinfo | 2 -
gdb-netbsd/patches/patch-gdb_nbsd-nat.c | 533 --------------------------------
gdb-netbsd/patches/patch-gdb_nbsd-nat.h | 32 --
3 files changed, 567 deletions(-)
diffs:
diff --git a/gdb-netbsd/distinfo b/gdb-netbsd/distinfo
index 5b285da38f..b52269cf8a 100644
--- a/gdb-netbsd/distinfo
+++ b/gdb-netbsd/distinfo
@@ -41,8 +41,6 @@ SHA1 (patch-gdb_ia64-nbsd-tdep.c) = 4d1795b806b1b957f7959d57cdab7090c9510fe5
SHA1 (patch-gdb_mips-nbsd-nat.c) = 1f71cb0d0c8792bfc80a456d294dad6d75b526b5
SHA1 (patch-gdb_mips-tdep.h) = 24b3cf83513716492297645b2d5c4281ab12b493
SHA1 (patch-gdb_nat_fork-inferior.c) = c15d3964c448e010958d8977825d6d46f8708e09
-SHA1 (patch-gdb_nbsd-nat.c) = 60b1b2164206e52254e743cca3de762770f7ab9d
-SHA1 (patch-gdb_nbsd-nat.h) = 4188f1edfb1b0b437c931fa60049221164a6e59e
SHA1 (patch-gdb_objfiles.c) = 25bcbc07b2a919db28c1145489e30dcb38b5a230
SHA1 (patch-gdb_ppc-nbsd-nat.c) = 9986c45717729ffc4db04068296543e3449495a7
SHA1 (patch-gdb_sh-nbsd-nat.c) = f316feea0192b6926ebe01d0fc83effe632ae063
diff --git a/gdb-netbsd/patches/patch-gdb_nbsd-nat.c b/gdb-netbsd/patches/patch-gdb_nbsd-nat.c
deleted file mode 100644
index c32c6812d7..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nbsd-nat.c
+++ /dev/null
@@ -1,533 +0,0 @@
-$NetBSD$
-
---- gdb/nbsd-nat.c.orig 2019-07-16 00:00:27.000000000 +0000
-+++ gdb/nbsd-nat.c
-@@ -1,4 +1,4 @@
--/* Native-dependent code for NetBSD.
-+/* Native-dependent code for NetBSD
-
- Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-@@ -18,7 +18,21 @@
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
- #include "defs.h"
-+#include "gdbcore.h"
-+#include "inferior.h"
-+#include "regcache.h"
-+#include "regset.h"
-+#include "gdbcmd.h"
-+#include "gdbthread.h"
-+#include "gdbsupport/gdb_wait.h"
-+#include <sys/types.h>
-+#include <sys/ptrace.h>
-+#include <sys/sysctl.h>
-+#ifdef HAVE_KINFO_GETVMMAP
-+#include <util.h>
-+#endif
-
-+#include "elf-bfd.h"
- #include "nbsd-nat.h"
-
- /* Return the name of a file that can be opened to get the symbols for
-@@ -31,6 +45,17 @@ nbsd_nat_target::pid_to_exec_file (int p
- static char buf[PATH_MAX];
- char name[PATH_MAX];
-
-+ size_t buflen;
-+ int mib[4];
-+
-+ mib[0] = CTL_KERN;
-+ mib[1] = KERN_PROC_ARGS;
-+ mib[2] = pid;
-+ mib[3] = KERN_PROC_PATHNAME;
-+ buflen = sizeof buf;
-+ if (sysctl (mib, 4, buf, &buflen, NULL, 0) == 0)
-+ return buf;
-+
- xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
- len = readlink (name, buf, PATH_MAX - 1);
- if (len != -1)
-@@ -41,3 +66,482 @@ nbsd_nat_target::pid_to_exec_file (int p
-
- return NULL;
- }
-+
-+/* Iterate over all the memory regions in the current inferior,
-+ calling FUNC for each memory region. OBFD is passed as the last
-+ argument to FUNC. */
-+
-+int
-+nbsd_nat_target::find_memory_regions (find_memory_region_ftype func,
-+ void *obfd)
-+{
-+ pid_t pid = inferior_ptid.pid ();
-+ struct kinfo_vmentry *vmentl, *kve;
-+ uint64_t size;
-+ int i;
-+ size_t nitems;
-+
-+ vmentl = kinfo_getvmmap (pid, &nitems);
-+ if (vmentl == NULL)
-+ perror_with_name (_("Couldn't fetch VM map entries."));
-+
-+ for (i = 0; i < nitems; i++)
-+ {
-+ kve = &vmentl[i];
-+
-+ /* Skip unreadable segments and those where MAP_NOCORE has been set. */
-+ if (!(kve->kve_protection & KVME_PROT_READ)
-+ || kve->kve_flags & KVME_FLAG_NOCOREDUMP)
-+ continue;
-+
-+ /* Skip segments with an invalid type. */
-+ switch (kve->kve_type) {
-+ case KVME_TYPE_VNODE:
-+ case KVME_TYPE_ANON:
-+ case KVME_TYPE_SUBMAP:
-+ case KVME_TYPE_OBJECT:
-+ break;
-+ default:
-+ continue;
-+ }
-+
-+ size = kve->kve_end - kve->kve_start;
-+ if (info_verbose)
-+ {
-+ fprintf_filtered (gdb_stdout,
-+ "Save segment, %ld bytes at %llx (%c%c%c)\n",
-+ (long) size,
-+ (long long int)kve->kve_start,
-+ kve->kve_protection & KVME_PROT_READ ? 'r' : '-',
-+ kve->kve_protection & KVME_PROT_WRITE ? 'w' : '-',
-+ kve->kve_protection & KVME_PROT_EXEC ? 'x' : '-');
-+ }
-+
-+ /* Invoke the callback function to create the corefile segment.
-+ Pass MODIFIED as true, we do not know the real modification state. */
-+ func (kve->kve_start, size, kve->kve_protection & KVME_PROT_READ,
-+ kve->kve_protection & KVME_PROT_WRITE,
-+ kve->kve_protection & KVME_PROT_EXEC, 1, obfd);
-+ }
-+ free(vmentl);
-+ return 0;
-+}
-+
-+static int debug_nbsd_lwp;
-+
-+static void
-+show_nbsd_lwp_debug (struct ui_file *file, int from_tty,
-+ struct cmd_list_element *c, const char *value)
-+{
-+ fprintf_filtered (file, _("Debugging of NetBSD lwp module is %s.\n"), value);
-+}
-+
-+/* Return true if PTID is still active in the inferior. */
-+
-+bool
-+nbsd_nat_target::thread_alive (ptid_t ptid)
-+{
-+ if (ptid.lwp_p ())
-+ {
-+ struct ptrace_lwpinfo pl;
-+
-+ pl.pl_lwpid = ptid.lwp ();
-+ if (ptrace (PT_LWPINFO, ptid.pid (), (caddr_t) &pl, sizeof pl)
-+ == -1)
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+/* Convert PTID to a string. Returns the string in a static
-+ buffer. */
-+
-+std::string
-+nbsd_nat_target::pid_to_str (ptid_t ptid)
-+{
-+ lwpid_t lwp;
-+
-+ lwp = ptid.lwp ();
-+ if (lwp != 0)
-+ {
-+ static char buf[64];
-+ int pid = ptid.pid ();
-+
-+ xsnprintf (buf, sizeof buf, "LWP %d of process %d", lwp, pid);
-+ return buf;
-+ }
-+
-+ return normal_pid_to_str (ptid);
-+}
-+
-+/* Return the name assigned to a thread by an application. Returns
-+ the string in a static buffer. */
-+
-+const char *
-+nbsd_nat_target::thread_name (struct thread_info *thr)
-+{
-+ struct kinfo_lwp *kl;
-+ pid_t pid = thr->ptid.pid ();
-+ lwpid_t lwp = thr->ptid.lwp ();
-+ static char buf[KI_LNAMELEN];
-+ int mib[5];
-+ size_t i, nlwps;
-+ size_t size;
-+
-+ mib[0] = CTL_KERN;
-+ mib[1] = KERN_LWP;
-+ mib[2] = pid;
-+ mib[3] = sizeof(struct kinfo_lwp);
-+ mib[4] = 0;
-+
-+ if (sysctl(mib, 5, NULL, &size, NULL, 0) == -1 || size == 0)
-+ perror_with_name (("sysctl"));
-+
-+ mib[4] = size / sizeof(size_t);
-+
-+ kl = (struct kinfo_lwp *) xmalloc (size);
-+ if (kl == NULL)
-+ perror_with_name (("malloc"));
-+
-+ if (sysctl(mib, 5, kl, &size, NULL, 0) == -1 || size == 0)
-+ perror_with_name (("sysctl"));
-+
-+ nlwps = size / sizeof(struct kinfo_lwp);
-+ buf[0] = '\0';
-+ for (i = 0; i < nlwps; i++) {
-+ if (kl[i].l_lid == lwp) {
-+ xsnprintf (buf, sizeof buf, "%s", kl[i].l_name);
-+ break;
-+ }
-+ }
-+ xfree(kl);
-+
-+ return buf;
-+}
-+
-+/* Enable additional event reporting on new processes. */
-+
-+static void
-+nbsd_enable_proc_events (pid_t pid)
-+{
-+ int events;
-+
-+ if (ptrace (PT_GET_EVENT_MASK, pid, (PTRACE_TYPE_ARG3)&events,
-+ sizeof (events)) == -1)
-+ perror_with_name (("ptrace"));
-+ events |= PTRACE_FORK;
-+ events |= PTRACE_VFORK;
-+ events |= PTRACE_VFORK_DONE;
-+ events |= PTRACE_LWP_CREATE;
-+ events |= PTRACE_LWP_EXIT;
-+#if notyet
-+ events |= PTRACE_POSIX_SPAWN;
-+#endif
-+ if (ptrace (PT_SET_EVENT_MASK, pid, (PTRACE_TYPE_ARG3)&events,
-+ sizeof (events)) == -1)
-+ perror_with_name (("ptrace"));
-+}
-+
-+/* Add threads for any new LWPs in a process.
-+
-+ When LWP events are used, this function is only used to detect existing
-+ threads when attaching to a process. On older systems, this function is
-+ called to discover new threads each time the thread list is updated. */
-+
-+static void
-+nbsd_add_threads (pid_t pid)
-+{
-+ int val;
-+ struct ptrace_lwpinfo pl;
-+
-+ pl.pl_lwpid = 0;
-+ while ((val = ptrace (PT_LWPINFO, pid, (void *)&pl, sizeof(pl))) != -1
-+ && pl.pl_lwpid != 0)
-+ {
-+ ptid_t ptid = ptid_t (pid, pl.pl_lwpid, 0);
-+ if (!in_thread_list (ptid))
-+ {
-+ if (inferior_ptid.lwp () == 0)
-+ thread_change_ptid (inferior_ptid, ptid);
-+ else
-+ add_thread (ptid);
-+ }
-+ }
-+}
-+
-+/* Implement the "to_update_thread_list" target_ops method. */
-+
-+void
-+nbsd_nat_target::update_thread_list ()
-+{
-+ prune_threads ();
-+
-+ nbsd_add_threads (inferior_ptid.pid ());
-+}
-+
-+
-+struct nbsd_fork_info
-+{
-+ struct nbsd_fork_info *next;
-+ ptid_t ptid;
-+};
-+
-+void
-+nbsd_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
-+{
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog,
-+ "NLWP: nbsd_resume for ptid (%d, %ld, %ld)\n",
-+ ptid.pid (), ptid.lwp (), ptid.tid ());
-+ if (ptid.pid () == -1)
-+ ptid = inferior_ptid;
-+ inf_ptrace_target::resume (ptid, step, signo);
-+}
-+
-+/* Wait for the child specified by PTID to do something. Return the
-+ process ID of the child, or MINUS_ONE_PTID in case of error; store
-+ the status in *OURSTATUS. */
-+
-+ptid_t
-+nbsd_nat_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
-+ int target_options)
-+{
-+ ptid_t wptid;
-+
-+ /*
-+ * Always perform polling on exact PID, overwrite the default polling on
-+ * WAIT_ANY.
-+ *
-+ * This avoids events reported in random order reported for FORK / VFORK.
-+ *
-+ * Polling on traced parent always simplifies the code.
-+ */
-+ ptid = inferior_ptid;
-+
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog, "NLWP: calling super_wait (%d, %ld, %ld) target_options=%#x\n",
-+ ptid.pid (), ptid.lwp (), ptid.tid (), target_options);
-+
-+ wptid = inf_ptrace_target::wait (ptid, ourstatus, target_options);
-+
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog, "NLWP: returned from super_wait (%d, %ld, %ld) target_options=%#x with ourstatus->kind=%d\n",
-+ ptid.pid (), ptid.lwp (), ptid.tid (),
-+ target_options, ourstatus->kind);
-+
-+ if (ourstatus->kind == TARGET_WAITKIND_STOPPED)
-+ {
-+ ptrace_state_t pst;
-+ ptrace_siginfo_t psi, child_psi;
-+ int status;
-+ pid_t pid, child, wchild;
-+ ptid_t child_ptid;
-+ lwpid_t lwp;
-+
-+ pid = wptid.pid ();
-+ // Find the lwp that caused the wait status change
-+ if (ptrace(PT_GET_SIGINFO, pid, &psi, sizeof(psi)) == -1)
-+ perror_with_name (("ptrace"));
-+
-+ /* For whole-process signals pick random thread */
-+ if (psi.psi_lwpid == 0) {
-+ // XXX: Is this always valid?
-+ lwp = inferior_ptid.lwp ();
-+ } else {
-+ lwp = psi.psi_lwpid;
-+ }
-+
-+ wptid = ptid_t (pid, lwp, 0);
-+
-+ /* Set LWP in the process */
-+ if (in_thread_list (ptid_t (pid))) {
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog,
-+ "NLWP: using LWP %d for first thread\n",
-+ lwp);
-+ thread_change_ptid (ptid_t (pid), wptid);
-+ }
-+
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog,
-+ "NLWP: received signal=%d si_code=%d in process=%d lwp=%d\n",
-+ psi.psi_siginfo.si_signo, psi.psi_siginfo.si_code, pid, lwp);
-+
-+ switch (psi.psi_siginfo.si_signo) {
-+ case SIGTRAP:
-+ switch (psi.psi_siginfo.si_code) {
-+ case TRAP_BRKPT:
-+// lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
-+ break;
-+ case TRAP_DBREG:
-+// if (hardware_breakpoint_inserted_here_p (get_regcache_aspace (regcache), pc))
-+// lp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
-+// else
-+// lp->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
-+ break;
-+ case TRAP_TRACE:
-+// lp->stop_reason = TARGET_STOPPED_BY_SINGLE_STEP;
-+ break;
-+ case TRAP_SCE:
-+ ourstatus->kind = TARGET_WAITKIND_SYSCALL_ENTRY;
-+ ourstatus->value.syscall_number = psi.psi_siginfo.si_sysnum;
-+ break;
-+ case TRAP_SCX:
-+ ourstatus->kind = TARGET_WAITKIND_SYSCALL_RETURN;
-+ ourstatus->value.syscall_number = psi.psi_siginfo.si_sysnum;
-+ break;
-+ case TRAP_EXEC:
-+ ourstatus->kind = TARGET_WAITKIND_EXECD;
-+ ourstatus->value.execd_pathname = xstrdup(pid_to_exec_file (pid));
-+ break;
-+ case TRAP_LWP:
-+ case TRAP_CHLD:
-+ if (ptrace(PT_GET_PROCESS_STATE, pid, &pst, sizeof(pst)) == -1)
-+ perror_with_name (("ptrace"));
-+ switch (pst.pe_report_event) {
-+ case PTRACE_FORK:
-+ case PTRACE_VFORK:
-+ if (pst.pe_report_event == PTRACE_FORK)
-+ ourstatus->kind = TARGET_WAITKIND_FORKED;
-+ else
-+ ourstatus->kind = TARGET_WAITKIND_VFORKED;
-+ child = pst.pe_other_pid;
-+
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog,
-+ "NLWP: registered %s event for PID %d\n",
-+ (pst.pe_report_event == PTRACE_FORK) ? "FORK" : "VFORK", child);
-+
-+ wchild = waitpid (child, &status, 0);
-+
-+ if (wchild == -1)
-+ perror_with_name (("waitpid"));
-+
-+ gdb_assert (wchild == child);
-+
-+ if (!WIFSTOPPED(status)) {
-+ /* Abnormal situation (SIGKILLed?).. bail out */
-+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+ return wptid;
-+ }
-+
-+ if (ptrace(PT_GET_SIGINFO, child, &child_psi, sizeof(child_psi)) == -1)
-+ perror_with_name (("ptrace"));
-+
-+ if (child_psi.psi_siginfo.si_signo != SIGTRAP) {
-+ /* Abnormal situation.. bail out */
-+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+ return wptid;
-+ }
-+
-+ if (child_psi.psi_siginfo.si_code != TRAP_CHLD) {
-+ /* Abnormal situation.. bail out */
-+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+ return wptid;
-+ }
-+
-+ child_ptid = ptid_t (child, child_psi.psi_lwpid, 0);
-+ nbsd_enable_proc_events (child_ptid.pid ());
-+ ourstatus->value.related_pid = child_ptid;
-+ break;
-+ case PTRACE_VFORK_DONE:
-+ ourstatus->kind = TARGET_WAITKIND_VFORK_DONE;
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog, "NLWP: reported VFORK_DONE parent=%d child=%d\n", pid, pst.pe_other_pid);
-+ break;
-+ case PTRACE_LWP_CREATE:
-+ wptid = ptid_t (pid, pst.pe_lwp, 0);
-+ if (in_thread_list (wptid)) {
-+ /* Newborn reported after attach? */
-+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+ return wptid;
-+ }
-+ if (inferior_ptid.lwp () == 0)
-+ thread_change_ptid (inferior_ptid, wptid);
-+ else
-+ add_thread (wptid);
-+ ourstatus->kind = TARGET_WAITKIND_THREAD_CREATED;
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog, "NLWP: created LWP %d\n", pst.pe_lwp);
-+ break;
-+ case PTRACE_LWP_EXIT:
-+ wptid = ptid_t (pid, pst.pe_lwp, 0);
-+ if (!in_thread_list (wptid)) {
-+ /* Dead child reported after attach? */
-+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+ return wptid;
-+ }
-+ delete_thread (find_thread_ptid (wptid));
-+ ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog, "NLWP: exited LWP %d\n", pst.pe_lwp);
-+ if (ptrace (PT_CONTINUE, pid, (void *)1, 0) == -1)
-+ perror_with_name (("ptrace"));
-+ break;
-+ }
-+ break;
-+ }
-+ break;
-+ }
-+
-+ if (debug_nbsd_lwp)
-+ fprintf_unfiltered (gdb_stdlog,
-+ "NLWP: nbsd_wait returned (%d, %ld, %ld)\n",
-+ wptid.pid (), wptid.lwp (),
-+ wptid.tid ());
-+ inferior_ptid = wptid;
-+
-+ }
-+ return wptid;
-+}
-+
-+/* Target hook for follow_fork. On entry and at return inferior_ptid is
-+ the ptid of the followed inferior. */
-+
-+int
-+nbsd_nat_target::follow_fork (int follow_child, int detach_fork)
-+{
-+ if (!follow_child && detach_fork)
-+ {
-+ struct thread_info *tp = inferior_thread ();
-+ pid_t child_pid = tp->pending_follow.value.related_pid.pid ();
-+
-+ /* Breakpoints have already been detached from the child by
-+ infrun.c. */
-+
-+ if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) == -1)
-+ perror_with_name (("ptrace"));
-+ }
-+
-+ return 0;
-+}
-+
-+void
-+nbsd_nat_target::post_startup_inferior (ptid_t pid)
-+{
-+ nbsd_enable_proc_events (pid.pid ());
-+}
-+
-+void
-+nbsd_nat_target::post_attach (int pid)
-+{
-+ nbsd_enable_proc_events (pid);
-+ nbsd_add_threads (pid);
-+}
-+
-+/* Provide a prototype to silence -Wmissing-prototypes. */
-+extern initialize_file_ftype _initialize_nbsd_nat;
-+
-+void
-+_initialize_nbsd_nat (void)
-+{
-+ add_setshow_boolean_cmd ("nbsd-lwp", class_maintenance,
-+ &debug_nbsd_lwp, _("\
-+Set debugging of NetBSD lwp module."), _("\
-+Show debugging of NetBSD lwp module."), _("\
-+Enables printf debugging output."),
-+ NULL,
-+ &show_nbsd_lwp_debug,
-+ &setdebuglist, &showdebuglist);
-+}
diff --git a/gdb-netbsd/patches/patch-gdb_nbsd-nat.h b/gdb-netbsd/patches/patch-gdb_nbsd-nat.h
deleted file mode 100644
index 4bd269081b..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nbsd-nat.h
+++ /dev/null
@@ -1,32 +0,0 @@
-$NetBSD$
-
---- gdb/nbsd-nat.h.orig 2019-07-16 00:00:27.000000000 +0000
-+++ gdb/nbsd-nat.h
-@@ -27,6 +27,27 @@
- struct nbsd_nat_target : public inf_ptrace_target
- {
- char *pid_to_exec_file (int pid) override;
-+ int find_memory_regions (find_memory_region_ftype func, void *data) override;
-+
-+ bool thread_alive (ptid_t ptid) override;
-+ std::string pid_to_str (ptid_t) override;
-+
-+ const char *thread_name (struct thread_info *) override;
-+
-+ void update_thread_list () override;
-+
-+ thread_control_capabilities get_thread_control_capabilities () override
-+ { return tc_schedlock; }
-+
-+ void resume (ptid_t, int, enum gdb_signal) override;
-+
-+ ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
-+
-+ void post_startup_inferior (ptid_t) override;
-+ void post_attach (int) override;
-+
-+ int follow_fork (int, int) override;
-+
- };
-
- #endif /* nbsd-nat.h */
Home |
Main Index |
Thread Index |
Old Index