From patchwork Wed Jul 9 10:37:34 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Benson X-Patchwork-Id: 1979 Received: (qmail 13089 invoked by alias); 9 Jul 2014 11:25:57 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 12947 invoked by uid 89); 9 Jul 2014 11:25:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS 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; Wed, 09 Jul 2014 11:25:52 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s69AcEm8009418 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 9 Jul 2014 06:38:14 -0400 Received: from blade.nx (ovpn-116-101.ams2.redhat.com [10.36.116.101]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s69AcCKW020856 for ; Wed, 9 Jul 2014 06:38:13 -0400 Received: from blade.nx (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id 81A972640D3 for ; Wed, 9 Jul 2014 11:38:11 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Subject: [PATCH 14/15] Introduce common_get_thread_regcache Date: Wed, 9 Jul 2014 11:37:34 +0100 Message-Id: <1404902255-11101-15-git-send-email-gbenson@redhat.com> In-Reply-To: <1404902255-11101-1-git-send-email-gbenson@redhat.com> References: <1404902255-11101-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes This introduces common_get_thread_regcache so that we can simplify nat/linux-btrace.c. A better long term solution would be unify the regcache code, but this is sufficient for now. gdb/ 2014-07-09 Tom Tromey Gary Benson * regcache.h (common_get_thread_regcache): Declare. * regcache.c (common_get_thread_regcache): New function. * nat/linux-btrace.h (common_get_thread_regcache): Declare. * nat/linux-btrace.c (perf_event_read_bts): Use common_get_thread_regcache. gdb/gdbserver/ 2014-07-09 Tom Tromey * regcache.c (common_get_thread_regcache): New function. --- gdb/ChangeLog | 9 +++++++++ gdb/gdbserver/ChangeLog | 4 ++++ gdb/gdbserver/regcache.c | 8 ++++++++ gdb/nat/linux-btrace.c | 6 +----- gdb/nat/linux-btrace.h | 5 +++++ gdb/regcache.c | 7 +++++++ gdb/regcache.h | 1 + 7 files changed, 35 insertions(+), 5 deletions(-) diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c index bed10b4..6f1cb39 100644 --- a/gdb/gdbserver/regcache.c +++ b/gdb/gdbserver/regcache.c @@ -65,6 +65,14 @@ get_thread_regcache (struct thread_info *thread, int fetch) return regcache; } +/* See common/linux-btrace.h. */ + +struct regcache * +common_get_thread_regcache (ptid_t ptid) +{ + return get_thread_regcache (find_thread_ptid (ptid), 1); +} + void regcache_invalidate_thread (struct thread_info *thread) { diff --git a/gdb/nat/linux-btrace.c b/gdb/nat/linux-btrace.c index 188220b..dd7744b 100644 --- a/gdb/nat/linux-btrace.c +++ b/gdb/nat/linux-btrace.c @@ -184,11 +184,7 @@ perf_event_read_bts (struct btrace_target_info* tinfo, const uint8_t *begin, gdb_assert (start <= end); /* The first block ends at the current pc. */ -#ifdef GDBSERVER - regcache = get_thread_regcache (find_thread_ptid (tinfo->ptid), 1); -#else - regcache = get_thread_regcache (tinfo->ptid); -#endif + regcache = common_get_thread_regcache (tinfo->ptid); block.end = regcache_read_pc (regcache); /* The buffer may contain a partial record as its last entry (i.e. when the diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h index 12e9b60..85cd88b 100644 --- a/gdb/nat/linux-btrace.h +++ b/gdb/nat/linux-btrace.h @@ -33,6 +33,11 @@ # include #endif +/* A hack until we have an independent regcache. This must be + provided by the user. */ + +extern struct regcache *common_get_thread_regcache (ptid_t ptid); + /* Branch trace target information per thread. */ struct btrace_target_info { diff --git a/gdb/regcache.c b/gdb/regcache.c index 5ee90b0..047f8f4 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -537,6 +537,13 @@ get_current_regcache (void) return get_thread_regcache (inferior_ptid); } +/* See common/linux-btrace.h. */ + +struct regcache * +common_get_thread_regcache (ptid_t ptid) +{ + return get_thread_regcache (ptid); +} /* Observer for the target_changed event. */ diff --git a/gdb/regcache.h b/gdb/regcache.h index 8423f57..9679691 100644 --- a/gdb/regcache.h +++ b/gdb/regcache.h @@ -25,6 +25,7 @@ struct gdbarch; struct address_space; extern struct regcache *get_current_regcache (void); +extern struct regcache *common_get_thread_regcache (ptid_t ptid); extern struct regcache *get_thread_regcache (ptid_t ptid); extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *); extern struct regcache *get_thread_arch_aspace_regcache (ptid_t,