From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25644 invoked by alias); 13 Dec 2013 19:45:04 -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 25626 invoked by uid 89); 13 Dec 2013 19:45:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 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; Fri, 13 Dec 2013 19:45:03 +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 rBDJj05O019220 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 13 Dec 2013 14:45:01 -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 rBDJixcG013283; Fri, 13 Dec 2013 14:44:59 -0500 Message-ID: <52AB63BB.30206@redhat.com> Date: Fri, 13 Dec 2013 19:45: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 v8 21/24] record-btrace: extend unwinder References: <1386839747-8860-1-git-send-email-markus.t.metzger@intel.com> <1386839747-8860-22-git-send-email-markus.t.metzger@intel.com> In-Reply-To: <1386839747-8860-22-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/msg00544.txt.bz2 On 12/12/2013 09:15 AM, Markus Metzger wrote: > diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c > index 4efa7d8..9617c12 100644 > --- a/gdb/dwarf2-frame.c > +++ b/gdb/dwarf2-frame.c > @@ -31,6 +31,7 @@ > #include "objfiles.h" > #include "regcache.h" > #include "value.h" > +#include "record.h" > > #include "gdb_assert.h" > #include > @@ -1511,6 +1512,11 @@ dwarf2_frame_base_sniffer (struct frame_info *this_frame) > CORE_ADDR > dwarf2_frame_cfa (struct frame_info *this_frame) > { > + if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind) > + || frame_unwinder_is (this_frame, &record_btrace_frame_unwind)) > + throw_error (NOT_AVAILABLE_ERROR, > + _("cfa not available for record btrace target")); Kind of odd abstraction boundaries broken here. On the one hand, we go through the target for the unwind sniffing, but OTOH, here we refer to the unwinders directly. Hmm. Ah, I don't think it really matters -- if you convert to the frame_info.stack_status == FID_STACK_UNAVAILABLE mechanism, then this can check for that instead, and the get_frame_unwind_stop_reason check can even be eliminated. Perhaps it should be even get_frame_base the one that throws. > /* Level of the selected frame: 0 for innermost, 1 for its caller, ... > diff --git a/gdb/frame.h b/gdb/frame.h > index 71f07dd..b20b69f 100644 > --- a/gdb/frame.h > +++ b/gdb/frame.h > @@ -222,7 +222,11 @@ enum frame_type > ARCH_FRAME, > /* Sentinel or registers frame. This frame obtains register values > direct from the inferior's registers. */ > - SENTINEL_FRAME > + SENTINEL_FRAME, > + /* A branch tracing frame. */ > + BTRACE_FRAME, > + /* A branch tracing tail call frame. */ > + BTRACE_TAILCALL_FRAME > }; Hmm? Why were these needed? Missing patch rationale... And missing comments, I suppose. -- Pedro Alves