From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 66857 invoked by alias); 17 Sep 2015 14:10:01 -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 66776 invoked by uid 89); 17 Sep 2015 14:10:01 -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,KAM_LAZY_DOMAIN_SECURITY,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mga03.intel.com Received: from mga03.intel.com (HELO mga03.intel.com) (134.134.136.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Sep 2015 14:09:58 +0000 Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP; 17 Sep 2015 07:09:57 -0700 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by FMSMGA003.fm.intel.com with ESMTP; 17 Sep 2015 07:09:56 -0700 Received: from ulvlx001.iul.intel.com (ulvlx001.iul.intel.com [172.28.207.17]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t8HE9tQM001548; Thu, 17 Sep 2015 15:09:56 +0100 Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id t8HE9txL001604; Thu, 17 Sep 2015 16:09:55 +0200 Received: (from mmetzger@localhost) by ulvlx001.iul.intel.com with œ id t8HE9tlI001600; Thu, 17 Sep 2015 16:09:55 +0200 From: Markus Metzger To: palves@redhat.com Cc: gdb-patches@sourceware.org Subject: [PATCH v3 15/19] btrace: allow full memory and register access for non-replaying threads Date: Thu, 17 Sep 2015 14:10:00 -0000 Message-Id: <1442498990-1222-16-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1442498990-1222-1-git-send-email-markus.t.metzger@intel.com> References: <1442498990-1222-1-git-send-email-markus.t.metzger@intel.com> X-IsSubscribed: yes X-SW-Source: 2015-09/txt/msg00409.txt.bz2 The record btrace target does not allow accessing memory and storing registers while replaying. For multi-threaded applications, this prevents those accesses also for threads that are at the end of their execution history as long as at least one thread is replaying. Change this to only check if the selected thread is replaying. This allows threads that are at the end of their execution history to read and write memory and to store registers. Also change the error message to reflect this change. 2015-09-17 Markus Metzger gdb/ * record-btrace.c (record_btrace_xfer_partial) (record_btrace_store_registers, record_btrace_prepare_to_store): Call record_btrace_is_replaying with inferior_ptid instead of minus_one_ptid. (record_btrace_store_registers): Change error message. --- gdb/record-btrace.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c index 481d22d..b4e4560 100644 --- a/gdb/record-btrace.c +++ b/gdb/record-btrace.c @@ -1160,7 +1160,7 @@ record_btrace_xfer_partial (struct target_ops *ops, enum target_object object, /* Filter out requests that don't make sense during replay. */ if (replay_memory_access == replay_memory_access_read_only && !record_btrace_generating_corefile - && record_btrace_is_replaying (ops, minus_one_ptid)) + && record_btrace_is_replaying (ops, inferior_ptid)) { switch (object) { @@ -1314,8 +1314,8 @@ record_btrace_store_registers (struct target_ops *ops, struct target_ops *t; if (!record_btrace_generating_corefile - && record_btrace_is_replaying (ops, minus_one_ptid)) - error (_("This record target does not allow writing registers.")); + && record_btrace_is_replaying (ops, inferior_ptid)) + error (_("Cannot write registers while replaying.")); gdb_assert (may_write_registers != 0); @@ -1332,7 +1332,7 @@ record_btrace_prepare_to_store (struct target_ops *ops, struct target_ops *t; if (!record_btrace_generating_corefile - && record_btrace_is_replaying (ops, minus_one_ptid)) + && record_btrace_is_replaying (ops, inferior_ptid)) return; t = ops->beneath; -- 1.8.3.1