This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]