This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Fix PR gdb/12953: No hardware watchpoints on FreeBSD amd64
- From: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- To: valery dot khromov at gmail dot com
- Cc: gdb-patches at sourceware dot org, valery dot khromov at gmail dot com
- Date: Tue, 20 Dec 2011 16:03:09 +0100 (CET)
- Subject: Re: [PATCH] Fix PR gdb/12953: No hardware watchpoints on FreeBSD amd64
- References: <1323132864-14029-1-git-send-email-valery.khromov@gmail.com>
> From: Valery Khromov <valery.khromov@gmail.com>
> Date: Tue, 6 Dec 2011 04:54:24 +0400
>
> This patch provides hardware breakpoint/watchpoint support for
> FreeBSD/AMD64. Most of the code is borrowed from the i386 implementation.
I fear that since the recent changes that Pedro made, the code needs
to be resycnhed with the i386 version :(. Can you do that?
While you're at it, here are a few comments.
> gdb/ChangeLog:
> 2011-12-05 Valery Khromov <valery.khromov@gmail.com>
>
> PR gdb/12953
> * Makefile.in (HFILES_NO_SRCDIR): Add amd64bsd-nat.h.
> * amd64bsd-nat.c: Add support for debug registers (adapted from
> i386bsd-nat.c).
> [HAVE_PT_GETDBREGS] (DBREG_DRX): Define if not already defined.
> [HAVE_PT_GETDBREGS] (amd64bsd_dr_set, amd64bsd_dr_set_control,
> amd64bsd_dr_set_addr, amd64bsd_dr_reset_addr, amd64bsd_dr_get_status):
> New functions.
> * amd64bsd-nat.h: New file (adapted from i386bsd-nat.h).
> * amd64fbsd-nat.c: Include "amd64bsd-nat.h", "i386-nat.h".
> [HAVE_PT_GETDBREGS] (_initialize_amd64fbsd_nat): Add hardware
> watchpoints initialization.
> * config/i386/fbsd64.mh (NATDEPFILES): Add i386-nat.o.
>
> --- a/gdb/amd64bsd-nat.c
> +++ b/gdb/amd64bsd-nat.c
> @@ -126,3 +126,80 @@ amd64bsd_target (void)
> t->to_store_registers = amd64bsd_store_inferior_registers;
> return t;
> }
> +
> +
> +/* Support for debug registers. */
> +
> +#ifdef HAVE_PT_GETDBREGS
> +
> +/* Not all versions of FreeBSD/amd64 that support the debug registers
> + have this macro. */
> +#ifndef DBREG_DRX
> +#define DBREG_DRX(d, x) ((&d->dr0)[x])
> +#endif
That bit can go. FreeBSD/amd64 has always had the DBREG_DRX macro, at
least ever since support for debug registers was added.