aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2016-06-27 17:44:58 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2016-07-01 07:01:05 -0700
commit5077bfff905136e9d9a8fdf0886f6217887622ad (patch)
treef4718adea158b0093fee7a20c004f9d74eb87431
parenta3405d124e1388b613a35af49f19f0cc1b8d959d (diff)
downloadbinutils-5077bfff905136e9d9a8fdf0886f6217887622ad.zip
binutils-5077bfff905136e9d9a8fdf0886f6217887622ad.tar.gz
binutils-5077bfff905136e9d9a8fdf0886f6217887622ad.tar.bz2
Set debug registers on all threads belonging to the current inferior.
gdb/ChangeLog: * x86bsd-nat.c: Include 'gdbthread.h'. (x86bsd_dr_set): Set debug registers on all threads belonging to the current inferior.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/x86bsd-nat.c12
2 files changed, 15 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0089d68..e4f7e3a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2016-07-01 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-07-01 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..bde25ab 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