From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7692 invoked by alias); 20 Dec 2011 17:52:26 -0000 Received: (qmail 7669 invoked by uid 22791); 20 Dec 2011 17:52:24 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM X-Spam-Check-By: sourceware.org Received: from mail-wi0-f169.google.com (HELO mail-wi0-f169.google.com) (209.85.212.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 20 Dec 2011 17:52:10 +0000 Received: by wibhq12 with SMTP id hq12so1990982wib.0 for ; Tue, 20 Dec 2011 09:52:09 -0800 (PST) Received: by 10.180.83.69 with SMTP id o5mr6937554wiy.1.1324403529229; Tue, 20 Dec 2011 09:52:09 -0800 (PST) Received: from localhost.localdomain (plane06.yandex.ru. [178.154.200.208]) by mx.google.com with ESMTPS id dd4sm6482894wib.1.2011.12.20.09.52.07 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 20 Dec 2011 09:52:08 -0800 (PST) From: Valery Khromov To: gdb-patches@sourceware.org Cc: Pedro Alves , Mark Kettenis , Valery Khromov Subject: [PATCH 1/2] FreeBSD/amd64: Updates for the recent changes that Pedro Alves made. Date: Tue, 20 Dec 2011 17:53:00 -0000 Message-Id: <1324403515-11898-1-git-send-email-valery.khromov@gmail.com> In-Reply-To: References: 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/msg00688.txt.bz2 2011-12-20 Valery Khromov * amd64bsd-nat.c (amd64bsd_dr_get): New. (amd64bsd_dr_reset_addr): Delete. (amd64bsd_dr_get_addr): New. (amd64bsd_dr_get_status): Use amd64bsd_dr_get. (amd64bsd_dr_get_control): New. * amd64bsd-nat.h (amd64bsd_dr_reset_addr): Delete. (amd64bsd_dr_get_addr): New. (amd64bsd_dr_get_control): New. * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install amd64bsd_dr_get_control as i386_dr_low.get_control. Install amd64bsd_dr_get_addr as i386_dr_low.get_addr. --- gdb/amd64bsd-nat.c | 41 +++++++++++++++++++++-------------------- gdb/amd64bsd-nat.h | 4 +++- gdb/amd64fbsd-nat.c | 3 ++- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/gdb/amd64bsd-nat.c b/gdb/amd64bsd-nat.c index 8b2f678..b31002f 100644 --- a/gdb/amd64bsd-nat.c +++ b/gdb/amd64bsd-nat.c @@ -138,6 +138,18 @@ amd64bsd_target (void) #define DBREG_DRX(d, x) ((&d->dr0)[x]) #endif +static unsigned long +amd64bsd_dr_get (ptid_t ptid, int regnum) +{ + struct dbreg dbregs; + + if (ptrace (PT_GETDBREGS, PIDGET (inferior_ptid), + (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) + perror_with_name (_("Couldn't read debug registers")); + + return DBREG_DRX ((&dbregs), regnum); +} + static void amd64bsd_dr_set (int regnum, unsigned long value) { @@ -173,33 +185,22 @@ amd64bsd_dr_set_addr (int regnum, CORE_ADDR addr) amd64bsd_dr_set (regnum, addr); } -void -amd64bsd_dr_reset_addr (int regnum) +CORE_ADDR +amd64bsd_dr_get_addr (int regnum) { - gdb_assert (regnum >= 0 && regnum <= 4); - - amd64bsd_dr_set (regnum, 0); + return amd64bsd_dr_get (inferior_ptid, regnum); } unsigned long amd64bsd_dr_get_status (void) { - struct dbreg dbregs; - - /* FIXME: kettenis/2001-03-31: Calling perror_with_name if the - ptrace call fails breaks debugging remote targets. The correct - way to fix this is to add the hardware breakpoint and watchpoint - stuff to the target vector. For now, just return zero if the - ptrace call fails. */ - if (ptrace (PT_GETDBREGS, PIDGET (inferior_ptid), - (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) -#if 0 - perror_with_name (_("Couldn't read debug registers")); -#else - return 0; -#endif + return amd64bsd_dr_get (inferior_ptid, 6); +} - return DBREG_DRX ((&dbregs), 6); +unsigned long +amd64bsd_dr_get_control (void) +{ + return amd64bsd_dr_get (inferior_ptid, 7); } #endif /* PT_GETDBREGS */ diff --git a/gdb/amd64bsd-nat.h b/gdb/amd64bsd-nat.h index 0048f54..25eb8d4 100644 --- a/gdb/amd64bsd-nat.h +++ b/gdb/amd64bsd-nat.h @@ -28,8 +28,10 @@ extern void amd64bsd_dr_set_control (unsigned long control); extern void amd64bsd_dr_set_addr (int regnum, CORE_ADDR addr); -extern void amd64bsd_dr_reset_addr (int regnum); +extern CORE_ADDR amd64bsd_dr_get_addr (int regnum); extern unsigned long amd64bsd_dr_get_status (void); +extern unsigned long amd64bsd_dr_get_control (void); + #endif /* amd64bsd-nat.h */ diff --git a/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c index 8ffd42b..a0ff739 100644 --- a/gdb/amd64fbsd-nat.c +++ b/gdb/amd64fbsd-nat.c @@ -206,8 +206,9 @@ _initialize_amd64fbsd_nat (void) i386_dr_low.set_control = amd64bsd_dr_set_control; i386_dr_low.set_addr = amd64bsd_dr_set_addr; - i386_dr_low.reset_addr = amd64bsd_dr_reset_addr; + i386_dr_low.get_addr = amd64bsd_dr_get_addr; i386_dr_low.get_status = amd64bsd_dr_get_status; + i386_dr_low.get_control = amd64bsd_dr_get_control; i386_set_debug_register_length (8); #endif /* HAVE_PT_GETDBREGS */ -- WBR, Valery Khromov