Enable support for x86 debug registers on NetBSD.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 5 Sep 2017 02:34:48 +0000 (19:34 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 5 Sep 2017 02:34:48 +0000 (19:34 -0700)
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
gdb/configure.nat
gdb/x86-bsd-nat.c

index ed89fbc..de1945a 100644 (file)
@@ -1,5 +1,11 @@
 2017-09-04  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-09-04  John Baldwin  <jhb@FreeBSD.org>
+
        * bsd-kvm.o: Make <sys/user.h> conditional on HAVE_SYS_USER_H.
 
 2017-09-04  John Baldwin  <jhb@FreeBSD.org>
index b32c9aa..b1dda30 100644 (file)
@@ -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)
index 2ff661c..1d37b2f 100644 (file)
@@ -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)