From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30096 invoked by alias); 29 Nov 2013 14:39:14 -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 30073 invoked by uid 89); 29 Nov 2013 14:39:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mga02.intel.com Received: from Unknown (HELO mga02.intel.com) (134.134.136.20) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 29 Nov 2013 14:39:13 +0000 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP; 29 Nov 2013 06:38:24 -0800 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga001.fm.intel.com with ESMTP; 29 Nov 2013 06:38:22 -0800 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 rATEcMBQ012380; Fri, 29 Nov 2013 14:38:22 GMT Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id rATEcLAk012870; Fri, 29 Nov 2013 15:38:21 +0100 Received: (from mmetzger@localhost) by ulvlx001.iul.intel.com with œ id rATEcLWC012866; Fri, 29 Nov 2013 15:38:21 +0100 From: Markus Metzger To: jan.kratochvil@redhat.com Cc: gdb-patches@sourceware.org Subject: [patch v7 19/24] record-btrace: provide target_find_new_threads method Date: Fri, 29 Nov 2013 14:39:00 -0000 Message-Id: <1385735899-12481-20-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1385735899-12481-1-git-send-email-markus.t.metzger@intel.com> References: <1385735899-12481-1-git-send-email-markus.t.metzger@intel.com> X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00920.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-11-29 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 f2aa4fa..e8cd33a 100644 --- a/gdb/record-btrace.c +++ b/gdb/record-btrace.c @@ -992,6 +992,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 @@ -1026,6 +1044,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.8.3.1