From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16654 invoked by alias); 20 Dec 2011 15:03:30 -0000 Received: (qmail 16646 invoked by uid 22791); 20 Dec 2011 15:03:29 -0000 X-SWARE-Spam-Status: No, hits=-3.3 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,TW_CN X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO glazunov.sibelius.xs4all.nl) (83.163.83.176) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 20 Dec 2011 15:03:15 +0000 Received: from glazunov.sibelius.xs4all.nl (kettenis@localhost [127.0.0.1]) by glazunov.sibelius.xs4all.nl (8.14.5/8.14.3) with ESMTP id pBKF3AdE002686; Tue, 20 Dec 2011 16:03:10 +0100 (CET) Received: (from kettenis@localhost) by glazunov.sibelius.xs4all.nl (8.14.5/8.14.3/Submit) id pBKF390e027750; Tue, 20 Dec 2011 16:03:09 +0100 (CET) Date: Tue, 20 Dec 2011 15:04:00 -0000 Message-Id: <201112201503.pBKF390e027750@glazunov.sibelius.xs4all.nl> From: Mark Kettenis To: valery.khromov@gmail.com CC: gdb-patches@sourceware.org, valery.khromov@gmail.com In-reply-to: <1323132864-14029-1-git-send-email-valery.khromov@gmail.com> (message from Valery Khromov on Tue, 6 Dec 2011 04:54:24 +0400) Subject: Re: [PATCH] Fix PR gdb/12953: No hardware watchpoints on FreeBSD amd64 References: <1323132864-14029-1-git-send-email-valery.khromov@gmail.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-12/txt/msg00666.txt.bz2 > From: Valery Khromov > 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 > > 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.