From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27696 invoked by alias); 20 Sep 2013 11:30:54 -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 27237 invoked by uid 89); 20 Sep 2013 11:30:50 -0000 Received: from mga02.intel.com (HELO mga02.intel.com) (134.134.136.20) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 20 Sep 2013 11:30:50 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RDNS_NONE,TO_NO_BRKTS_NORDNS autolearn=no version=3.3.2 X-HELO: mga02.intel.com Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 20 Sep 2013 04:30:45 -0700 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 20 Sep 2013 04:30:44 -0700 Received: from ulslx001.iul.intel.com (ulslx001.iul.intel.com [172.28.207.63]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id r8KBUhdS019086; Fri, 20 Sep 2013 12:30:43 +0100 Received: from ulslx001.iul.intel.com (localhost [127.0.0.1]) by ulslx001.iul.intel.com with ESMTP id r8KBUhu0032185; Fri, 20 Sep 2013 13:30:43 +0200 Received: (from mmetzger@localhost) by ulslx001.iul.intel.com with id r8KBUh9O032181; Fri, 20 Sep 2013 13:30:43 +0200 From: Markus Metzger To: jan.kratochvil@redhat.com Cc: gdb-patches@sourceware.org Subject: [patch v6 16/21] record-btrace: provide target_find_new_threads method Date: Fri, 20 Sep 2013 11:30:00 -0000 Message-Id: <1379676639-31802-17-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1379676639-31802-1-git-send-email-markus.t.metzger@intel.com> References: <1379676639-31802-1-git-send-email-markus.t.metzger@intel.com> X-IsSubscribed: yes X-SW-Source: 2013-09/txt/msg00743.txt.bz2 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. Approved-by: Jan Kratochvil 2013-09-20 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 files changed, 19 insertions(+), 0 deletions(-) diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c index faf4e32..1a753cc 100644 --- a/gdb/record-btrace.c +++ b/gdb/record-btrace.c @@ -993,6 +993,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 @@ -1027,6 +1045,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; } -- 1.7.1