[PATCH] Fix PR gdb/12953: No hardware watchpoints on FreeBSD amd64

Mark Kettenis mark.kettenis@xs4all.nl
Tue Dec 20 15:04:00 GMT 2011


> 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.



More information about the Gdb-patches mailing list