From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29515 invoked by alias); 19 Dec 2013 19:32:46 -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 29503 invoked by uid 89); 19 Dec 2013 19:32:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 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 ESMTP; Thu, 19 Dec 2013 19:32:45 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rBJJWgJH018448 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 19 Dec 2013 14:32:42 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id rBJJWeQR025224; Thu, 19 Dec 2013 14:32:41 -0500 Message-ID: <52B349D7.8050907@redhat.com> Date: Thu, 19 Dec 2013 19:32:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Markus Metzger CC: jan.kratochvil@redhat.com, gdb-patches@sourceware.org Subject: Re: [PATCH v9 23/29] record-btrace: provide target_find_new_threads method References: <1387471499-29444-1-git-send-email-markus.t.metzger@intel.com> <1387471499-29444-24-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1387471499-29444-24-git-send-email-markus.t.metzger@intel.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-12/txt/msg00801.txt.bz2 On 12/19/2013 04:44 PM, Markus Metzger wrote: > The "info threads" command tries to read memory, which is not possible during > replay. This results in an error message and aborts the command without showing > the existing threads. > > Provide a to_find_new_threads target method to skip the search while replaying. I think for completeness you should also provide a to_thread_alive method. These two go hand in hand. > > 2013-12-19 Markus Metzger > > * record-btrace.c (record_btrace_find_new_threads): New. > (init_record_btrace_ops): Initialize to_find_new_threads. > > > --- > gdb/record-btrace.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c > index bb140ce..f6272b4 100644 > --- a/gdb/record-btrace.c > +++ b/gdb/record-btrace.c > @@ -1055,6 +1055,24 @@ record_btrace_wait (struct target_ops *ops, ptid_t ptid, > error (_("You can't do this from here. Do 'record goto end', first.")); > } > > +/* The to_find_new_threads method of target record-btrace. */ > + > +static void > +record_btrace_find_new_threads (struct target_ops *ops) > +{ > + /* Don't expect new threads if we're replaying. */ > + if (record_btrace_is_replaying ()) > + return; > + > + /* Forward the request. */ > + for (ops = ops->beneath; ops != NULL; ops = ops->beneath) > + if (ops->to_find_new_threads != NULL) > + { > + ops->to_find_new_threads (ops); > + break; > + } > +} > + > /* Initialize the record-btrace target ops. */ > > static void > @@ -1091,6 +1109,7 @@ init_record_btrace_ops (void) > ops->to_get_unwinder = &record_btrace_frame_unwind; > ops->to_resume = record_btrace_resume; > ops->to_wait = record_btrace_wait; > + ops->to_find_new_threads = record_btrace_find_new_threads; > ops->to_stratum = record_stratum; > ops->to_magic = OPS_MAGIC; > } > -- Pedro Alves