[PATCH 4/4] Define a DBREG_DRX macro on NetBSD.

John Baldwin jhb@FreeBSD.org
Sat Jul 15 17:30:00 GMT 2017


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.

gdb/ChangeLog:

	* x86-bsd-nat.c [!DBREG_DRX && __NetBSD__]: Define DBREG_DRX.
---
 gdb/ChangeLog     | 4 ++++
 gdb/x86-bsd-nat.c | 9 +++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b6a1960d43..44129d9e05 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
 2017-07-15  John Baldwin  <jhb@FreeBSD.org>
 
+	* x86-bsd-nat.c [!DBREG_DRX && __NetBSD__]: Define DBREG_DRX.
+
+2017-07-15  John Baldwin  <jhb@FreeBSD.org>
+
 	* configure.nat: Add "bsd-kvm.o" and "-lkvm" for NetBSD/amd64.
 
 2017-07-15  John Baldwin  <jhb@FreeBSD.org>
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)
-- 
2.11.0



More information about the Gdb-patches mailing list