From patchwork Wed Jul 16 14:17:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Benson X-Patchwork-Id: 2081 Received: (qmail 10529 invoked by alias); 16 Jul 2014 16:33:43 -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 10517 invoked by uid 89); 16 Jul 2014 16:33:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 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, 16 Jul 2014 16:33:41 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6GGJa0r027801 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 16 Jul 2014 12:19:36 -0400 Received: from blade.nx (ovpn-116-36.ams2.redhat.com [10.36.116.36]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6GGJZPR003256; Wed, 16 Jul 2014 12:19:36 -0400 Received: from blade.nx (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id C9BB62640D4; Wed, 16 Jul 2014 15:17:31 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Cc: Tom Tromey , Doug Evans Subject: [PATCH 14/15 v2] Introduce get_thread_regcache_for_ptid Date: Wed, 16 Jul 2014 15:17:22 +0100 Message-Id: <1405520243-17282-15-git-send-email-gbenson@redhat.com> In-Reply-To: <1405520243-17282-1-git-send-email-gbenson@redhat.com> References: <1405520243-17282-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes This introduces get_thread_regcache_for_ptid 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-16 Tom Tromey Gary Benson * common/common-regcache.h: New file. * regcache.c: Include the above. (get_thread_regcache_for_ptid): New function. * nat/linux-btrace.c: Include common-regcache.h. (perf_event_read_bts): Use get_thread_regcache_for_ptid. gdb/gdbserver/ 2014-07-16 Tom Tromey Gary Benson * regcache.c: Include common-regcache.h. (get_thread_regcache_for_ptid): New function. --- gdb/ChangeLog | 9 +++++++++ gdb/common/common-regcache.h | 28 ++++++++++++++++++++++++++++ gdb/gdbserver/ChangeLog | 6 ++++++ gdb/gdbserver/regcache.c | 9 +++++++++ gdb/nat/linux-btrace.c | 7 ++----- gdb/regcache.c | 8 ++++++++ 6 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 gdb/common/common-regcache.h diff --git a/gdb/common/common-regcache.h b/gdb/common/common-regcache.h new file mode 100644 index 0000000..2ef7cb1 --- /dev/null +++ b/gdb/common/common-regcache.h @@ -0,0 +1,28 @@ +/* Cache and manage the values of registers + + Copyright (C) 1986-2014 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef COMMON_REGCACHE_H +#define COMMON_REGCACHE_H + +/* A hack until we have an independent regcache. This must be + provided by the user. */ + +extern struct regcache *get_thread_regcache_for_ptid (ptid_t ptid); + +#endif /* COMMON_REGCACHE_H */ diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c index bed10b4..eb72322 100644 --- a/gdb/gdbserver/regcache.c +++ b/gdb/gdbserver/regcache.c @@ -21,6 +21,7 @@ #include "gdbthread.h" #include "tdesc.h" #include "rsp-low.h" +#include "common-regcache.h" #include #include @@ -65,6 +66,14 @@ get_thread_regcache (struct thread_info *thread, int fetch) return regcache; } +/* See common/linux-btrace.h. */ + +struct regcache * +get_thread_regcache_for_ptid (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..3b4180f 100644 --- a/gdb/nat/linux-btrace.c +++ b/gdb/nat/linux-btrace.c @@ -32,6 +32,7 @@ #include "gdbthread.h" #include "gdb_wait.h" #include "i386-cpuid.h" +#include "common-regcache.h" #ifdef HAVE_SYS_SYSCALL_H #include @@ -184,11 +185,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 = get_thread_regcache_for_ptid (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/regcache.c b/gdb/regcache.c index 5ee90b0..e66a40e 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -30,6 +30,7 @@ #include "exceptions.h" #include "remote.h" #include "valprint.h" +#include "common-regcache.h" /* * DATA STRUCTURE @@ -537,6 +538,13 @@ get_current_regcache (void) return get_thread_regcache (inferior_ptid); } +/* See common/linux-btrace.h. */ + +struct regcache * +get_thread_regcache_for_ptid (ptid_t ptid) +{ + return get_thread_regcache (ptid); +} /* Observer for the target_changed event. */