This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/2] Set debug registers on all threads belonging to the current inferior.
- From: John Baldwin <jhb at FreeBSD dot org>
- To: gdb-patches at sourceware dot org
- Date: Tue, 28 Jun 2016 15:55:07 -0700
- Subject: [PATCH 2/2] Set debug registers on all threads belonging to the current inferior.
- Authentication-results: sourceware.org; auth=none
- References: <20160628225507 dot 80772-1-jhb at FreeBSD dot org>
gdb/ChangeLog:
* x86bsd-nat.c: Include 'gdbthread.h'.
(x86bsd_dr_set): Set debug registers on all threads belonging to
the current inferior.
---
gdb/ChangeLog | 6 ++++++
gdb/x86bsd-nat.c | 12 +++++++++---
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 50c441f..0d9a68b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2016-06-27 John Baldwin <jhb@FreeBSD.org>
+ * x86bsd-nat.c: Include 'gdbthread.h'.
+ (x86bsd_dr_set): Set debug registers on all threads belonging to
+ the current inferior.
+
+2016-06-27 John Baldwin <jhb@FreeBSD.org>
+
* Makefile.in [HFILES_NO_SRCDIR]: Replace 'amd64bsd-nat.h' with
'x86bsd-nat.h'.
* amd64bsd-nat.c: Include 'x86bsd-nat.h' instead of
diff --git a/gdb/x86bsd-nat.c b/gdb/x86bsd-nat.c
index 0c56848..7703ed5 100644
--- a/gdb/x86bsd-nat.c
+++ b/gdb/x86bsd-nat.c
@@ -19,6 +19,7 @@
#include "defs.h"
#include "inferior.h"
+#include "gdbthread.h"
/* We include <signal.h> to make sure `struct fxsave64' is defined on
NetBSD, since NetBSD's <machine/reg.h> needs it. */
@@ -71,6 +72,7 @@ x86bsd_dr_get (ptid_t ptid, int regnum)
static void
x86bsd_dr_set (int regnum, unsigned long value)
{
+ struct thread_info *thread;
struct dbreg dbregs;
if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid),
@@ -84,9 +86,13 @@ x86bsd_dr_set (int regnum, unsigned long value)
DBREG_DRX ((&dbregs), regnum) = value;
- if (ptrace (PT_SETDBREGS, get_ptrace_pid (inferior_ptid),
- (PTRACE_TYPE_ARG3) &dbregs, 0) == -1)
- perror_with_name (_("Couldn't write debug registers"));
+ ALL_NON_EXITED_THREADS(thread)
+ if (thread->inf == current_inferior ())
+ {
+ if (ptrace (PT_SETDBREGS, get_ptrace_pid (thread->ptid),
+ (PTRACE_TYPE_ARG3) &dbregs, 0) == -1)
+ perror_with_name (_("Couldn't write debug registers"));
+ }
}
static void
--
2.8.4