From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6206 invoked by alias); 18 Aug 2013 19:08:13 -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 6197 invoked by uid 89); 18 Aug 2013 19:08:13 -0000 X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Sun, 18 Aug 2013 19:08:13 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r7IJ8BBO028006 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 18 Aug 2013 15:08:11 -0400 Received: from host2.jankratochvil.net (ovpn-116-37.ams2.redhat.com [10.36.116.37]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r7IJ85uv010125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 18 Aug 2013 15:08:08 -0400 Date: Sun, 18 Aug 2013 19:08:00 -0000 From: Jan Kratochvil To: Markus Metzger Cc: gdb-patches@sourceware.org Subject: Re: [patch v4 15/24] record-btrace: add to_wait and to_resume target methods. Message-ID: <20130818190804.GL24153@host2.jankratochvil.net> References: <1372842874-28951-1-git-send-email-markus.t.metzger@intel.com> <1372842874-28951-16-git-send-email-markus.t.metzger@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1372842874-28951-16-git-send-email-markus.t.metzger@intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes X-SW-Source: 2013-08/txt/msg00468.txt.bz2 On Wed, 03 Jul 2013 11:14:25 +0200, Markus Metzger wrote: > Add simple to_wait and to_resume target methods that prevent stepping when the > current replay position is not at the end of the execution log. > > 2013-07-03 Markus Metzger > > * record-btrace.c (record_btrace_resume): New. > (record_btrace_wait): New. > (init_record_btrace_ops): Initialize to_wait and to_resume. > > > --- > gdb/record-btrace.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 41 insertions(+), 0 deletions(-) > > diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c > index 831a367..430296a 100644 > --- a/gdb/record-btrace.c > +++ b/gdb/record-btrace.c > @@ -966,6 +966,45 @@ static const struct frame_unwind record_btrace_frame_unwind = > NULL, > record_btrace_frame_sniffer > }; > + > +/* The to_resume method of target record-btrace. */ > + > +static void > +record_btrace_resume (struct target_ops *ops, ptid_t ptid, int step, > + enum gdb_signal signal) > +{ > + /* As long as we're not replaying, just forward the request. */ > + if (!record_btrace_is_replaying ()) > + { > + for (ops = ops->beneath; ops != NULL; ops = ops->beneath) > + if (ops->to_resume != NULL) > + return ops->to_resume (ops, ptid, step, signal); > + > + error (_("Cannot find target for stepping.")); > + } > + > + error (_("You can't do this from here. Do 'record goto end', first.")); > +} > + > +/* The to_wait method of target record-btrace. */ > + > +static ptid_t > +record_btrace_wait (struct target_ops *ops, ptid_t ptid, > + struct target_waitstatus *status, int options) > +{ > + /* As long as we're not replaying, just forward the request. */ > + if (!record_btrace_is_replaying ()) > + { > + for (ops = ops->beneath; ops != NULL; ops = ops->beneath) > + if (ops->to_wait != NULL) > + return ops->to_wait (ops, ptid, status, options); > + > + error (_("Cannot find target for stepping.")); "for waiting". target_wait (and target_resume) call just noprocess () in such case although I understand this is a different case as btrace target should always have some live target underneath. Just a statement, not a request for change. > + } > + > + error (_("You can't do this from here. Do 'record goto end', first.")); > +} > + > /* Initialize the record-btrace target ops. */ > > static void > @@ -998,6 +1037,8 @@ init_record_btrace_ops (void) > ops->to_store_registers = record_btrace_store_registers; > ops->to_prepare_to_store = record_btrace_prepare_to_store; > ops->to_get_unwinder = &record_btrace_frame_unwind; > + ops->to_resume = record_btrace_resume; > + ops->to_wait = record_btrace_wait; > ops->to_stratum = record_stratum; > ops->to_magic = OPS_MAGIC; > } > -- > 1.7.1