diff mbox

[v2,2/2] Enable support for x86 debug registers on NetBSD.

Message ID 20170725165051.9132-3-jhb@FreeBSD.org
State New
Headers show

Commit Message

John Baldwin July 25, 2017, 4:50 p.m. UTC
NetBSD recently added PT_GETDBREGS and PT_SETDBREGS ptrace operations
that match the existing ones supported by x86-bsd-nat.c.  NetBSD's
headers do not provide the DBREG_DRX helper macro, so define a local
version in x86-bsd-nat.c.  In addition, add the x86-nat.o and x86-dregs.o
object files to the native NetBSD x86 build targets.

gdb/ChangeLog:

	* configure.nat: Add "x86-nat.o x86-dregs.o" for NetBSD/amd64 and
	NetBSD/i386.
	* x86-bsd-nat.c [!DBREG_DRX && __NetBSD__]: Define DBREG_DRX.
---
 gdb/ChangeLog     | 6 ++++++
 gdb/configure.nat | 8 ++++----
 gdb/x86-bsd-nat.c | 9 +++++++--
 3 files changed, 17 insertions(+), 6 deletions(-)
diff mbox

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e06712d645..e24698ae30 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@ 
 2017-07-25  John Baldwin  <jhb@FreeBSD.org>
 
+	* configure.nat: Add "x86-nat.o x86-dregs.o" for NetBSD/amd64 and
+	NetBSD/i386.
+	* x86-bsd-nat.c [!DBREG_DRX && __NetBSD__]: Define DBREG_DRX.
+
+2017-07-25  John Baldwin  <jhb@FreeBSD.org>
+
 	* bsd-kvm.o: Define _KMEMUSER.
 	* configure.ac: Define _KMEMUSER when checking for "struct lwp".
 	* configure: Regenerate.
diff --git a/gdb/configure.nat b/gdb/configure.nat
index b32c9aa849..b1dda30852 100644
--- a/gdb/configure.nat
+++ b/gdb/configure.nat
@@ -338,8 +338,8 @@  case ${gdb_host} in
 	case ${gdb_host_cpu} in
 	    i386)
 		# Host: NetBSD/amd64
-		NATDEPFILES="${NATDEPFILES} nbsd-nat.o amd64-nat.o \
-		x86-bsd-nat.o amd64-bsd-nat.o amd64-nbsd-nat.o"
+		NATDEPFILES="${NATDEPFILES} nbsd-nat.o amd64-nat.o x86-nat.o \
+		x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-nbsd-nat.o"
 		;;
 	    sparc)
 		# Host: NetBSD/sparc64
@@ -358,8 +358,8 @@  case ${gdb_host} in
 		;;
 	    i386)
 		# Host: NetBSD/i386 ELF
-		NATDEPFILES="${NATDEPFILES} nbsd-nat.o x86-bsd-nat.o \
-		i386-bsd-nat.o i386-nbsd-nat.o bsd-kvm.o"
+		NATDEPFILES="${NATDEPFILES} nbsd-nat.o x86-nat.o x86-dregs.o \
+		x86-bsd-nat.o i386-bsd-nat.o i386-nbsd-nat.o bsd-kvm.o"
 		LOADLIBES='-lkvm'
 		;;
 	    m68k)
diff --git a/gdb/x86-bsd-nat.c b/gdb/x86-bsd-nat.c
index 2ff661c179..1d37b2f05d 100644
--- a/gdb/x86-bsd-nat.c
+++ b/gdb/x86-bsd-nat.c
@@ -51,11 +51,16 @@  x86bsd_mourn_inferior (struct target_ops *ops)
   super_mourn_inferior (ops);
 }
 
-/* Not all versions of FreeBSD/i386 that support the debug registers
-   have this macro.  */
+/* Helper macro to access debug register X.  FreeBSD/amd64 and modern
+   versions of FreeBSD/i386 provide this macro in system headers.  Define
+   a local version for systems that do not provide it.  */
 #ifndef DBREG_DRX
+#ifdef __NetBSD__
+#define DBREG_DRX(d, x) ((d)->dr[x])
+#else
 #define DBREG_DRX(d, x) ((&d->dr0)[x])
 #endif
+#endif
 
 static unsigned long
 x86bsd_dr_get (ptid_t ptid, int regnum)