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
On Tuesday 20 December 2011 15:03:09, Mark Kettenis wrote:
> > 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?
Yeah, sorry about that. I was actually planning on taking the
hit myself and updating Valery's patch. Let me know if you'd
like me to do it.
>
> 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.
>
--
Pedro Alves