From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6357 invoked by alias); 9 Oct 2014 10:35:06 -0000 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 Received: (qmail 6337 invoked by uid 89); 9 Oct 2014 10:35:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 09 Oct 2014 10:35:05 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s999qsAQ012802 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Thu, 9 Oct 2014 05:52:54 -0400 Received: from blade.nx (ovpn-116-100.ams2.redhat.com [10.36.116.100]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s999qrjj023463 for ; Thu, 9 Oct 2014 05:52:54 -0400 Received: from blade.nx (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id 13ADE2626CD for ; Thu, 9 Oct 2014 10:52:49 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Subject: [PATCH 11/13 v2] Introduce x86_linux_update_debug_registers Date: Thu, 09 Oct 2014 10:35:00 -0000 Message-Id: <1412848358-9958-12-git-send-email-gbenson@redhat.com> In-Reply-To: <1412848358-9958-1-git-send-email-gbenson@redhat.com> References: <1412848358-9958-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg00194.txt.bz2 This commit moves the entire body of both GDB's and gdbserver's x86_linux_prepare_to_resume functions into new functions, x86_linux_update_debug_registers. This reorganisation allows all Linux x86 low-level debug register code to be placed in one shared file, separate from general Linux x86 shared code. gdb/ChangeLog: * x86-linux-nat.c (x86_linux_update_debug_registers): New function. (x86_linux_prepare_to_resume): Call the above. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_update_debug_registers): New function. (x86_linux_prepare_to_resume): Call the above. --- gdb/ChangeLog | 6 ++++++ gdb/gdbserver/ChangeLog | 6 ++++++ gdb/gdbserver/linux-x86-low.c | 16 +++++++++++++--- gdb/x86-linux-nat.c | 16 +++++++++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index f4d6437..bb8e1a7 100644 --- a/gdb/gdbserver/linux-x86-low.c +++ b/gdb/gdbserver/linux-x86-low.c @@ -763,15 +763,17 @@ x86_debug_reg_state (pid_t pid) return &proc->private->arch_private->debug_reg_state; } -/* Called prior to resuming a thread. Updates the thread's debug - registers if the values in our local mirror have been changed. */ +/* Update the thread's debug registers if the values in our local + mirror have been changed. */ static void -x86_linux_prepare_to_resume (struct lwp_info *lwp) +x86_linux_update_debug_registers (struct lwp_info *lwp) { ptid_t ptid = ptid_of_lwp (lwp); int clear_status = 0; + gdb_assert (lwp_is_stopped (lwp)); + if (lwp_debug_registers_changed (lwp)) { struct x86_debug_reg_state *state @@ -807,6 +809,14 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp) if (clear_status || lwp_is_stopped_by_watchpoint (lwp)) x86_linux_dr_set (ptid, DR_STATUS, 0); } + +/* Called prior to resuming a thread. */ + +static void +x86_linux_prepare_to_resume (struct lwp_info *lwp) +{ + x86_linux_update_debug_registers (lwp); +} /* When GDBSERVER is built as a 64-bit application on linux, the PTRACE_GETSIGINFO data is always presented in 64-bit layout. Since diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c index d806474..55c3bd3 100644 --- a/gdb/x86-linux-nat.c +++ b/gdb/x86-linux-nat.c @@ -162,15 +162,17 @@ x86_linux_dr_set_addr (int regnum, CORE_ADDR addr) iterate_over_lwps (pid_ptid, update_debug_registers_callback, NULL); } -/* Called prior to resuming a thread. Updates the thread's debug - registers if the values in our local mirror have been changed. */ +/* Update the thread's debug registers if the values in our local + mirror have been changed. */ static void -x86_linux_prepare_to_resume (struct lwp_info *lwp) +x86_linux_update_debug_registers (struct lwp_info *lwp) { ptid_t ptid = ptid_of_lwp (lwp); int clear_status = 0; + gdb_assert (lwp_is_stopped (lwp)); + if (lwp_debug_registers_changed (lwp)) { struct x86_debug_reg_state *state @@ -207,6 +209,14 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp) x86_linux_dr_set (ptid, DR_STATUS, 0); } +/* Called prior to resuming a thread. */ + +static void +x86_linux_prepare_to_resume (struct lwp_info *lwp) +{ + x86_linux_update_debug_registers (lwp); +} + /* Called when a new thread is detected. */ static void -- 1.7.1