From: Kamil Rytarowski Date: Wed, 2 Sep 2020 17:18:55 +0000 (+0200) Subject: Add netbsd_nat::enable_proc_events in gdb/nat X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=feedfcc77379667e4af19e266abc00072e2d262d;p=binutils-gdb.git Add netbsd_nat::enable_proc_events in gdb/nat Add generic function to enable debugger events in a process. gdb/ChangeLog: * netbsd-nat.h (netbsd_nat::enable_proc_events): Add. * netbsd-nat.c: Include . * (netbsd_nat::enable_proc_events): Add. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 21f30e4b297..41bd6998bb9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-09-10 Kamil Rytarowski + + * netbsd-nat.h (netbsd_nat::enable_proc_events): Add. + * netbsd-nat.c: Include . + * (netbsd_nat::enable_proc_events): Add. + 2020-09-10 Kamil Rytarowski * netbsd-nat.h: Include "gdbsupport/function-view.h". diff --git a/gdb/nat/netbsd-nat.c b/gdb/nat/netbsd-nat.c index 3f8b8b8eeab..d805b892404 100644 --- a/gdb/nat/netbsd-nat.c +++ b/gdb/nat/netbsd-nat.c @@ -22,6 +22,7 @@ #include "gdbsupport/common-debug.h" #include +#include #include #include @@ -163,4 +164,21 @@ for_each_thread (pid_t pid, gdb::function_view callback) netbsd_thread_lister (pid, fn); } +/* See netbsd-nat.h. */ + +void +enable_proc_events (pid_t pid) +{ + int events; + + if (ptrace (PT_GET_EVENT_MASK, pid, &events, sizeof (events)) == -1) + perror_with_name (("ptrace")); + + events |= PTRACE_LWP_CREATE; + events |= PTRACE_LWP_EXIT; + + if (ptrace (PT_SET_EVENT_MASK, pid, &events, sizeof (events)) == -1) + perror_with_name (("ptrace")); +} + } diff --git a/gdb/nat/netbsd-nat.h b/gdb/nat/netbsd-nat.h index 3f2650f5cad..6472cc56da4 100644 --- a/gdb/nat/netbsd-nat.h +++ b/gdb/nat/netbsd-nat.h @@ -50,6 +50,13 @@ extern const char *thread_name (ptid_t ptid); extern void for_each_thread (pid_t pid, gdb::function_view callback); + +/* Enable additional event reporting in a new process specified by PID. + + This function assumes internally that the queried process is stopped and + traced. */ + +extern void enable_proc_events (pid_t pid); } #endif