From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108529 invoked by alias); 17 Mar 2015 08:57:41 -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 108511 invoked by uid 89); 17 Mar 2015 08:57:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_NEUTRAL autolearn=ham version=3.3.2 X-HELO: sasl.smtp.pobox.com Received: from pb-sasl1.int.icgroup.com (HELO sasl.smtp.pobox.com) (208.72.237.25) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 17 Mar 2015 08:57:39 +0000 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id 3F1193DE5A; Tue, 17 Mar 2015 04:57:37 -0400 (EDT) Received: from pb-sasl1.int.icgroup.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id 376333DE59; Tue, 17 Mar 2015 04:57:37 -0400 (EDT) Received: from rusty (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl1.pobox.com (Postfix) with ESMTPSA id 5E85D3DE58; Tue, 17 Mar 2015 04:57:34 -0400 (EDT) From: Andy Wingo To: Alexander Smundak Cc: Doug Evans , gdb-patches Subject: Re: [RFC] [PATCH] Provide the ability to write the frame unwinder in Python References: <21714.40641.510825.30998@ruffy2.mtv.corp.google.com> <54E71694.1080304@redhat.com> <87ioei31uj.fsf@igalia.com> <87d24p19tt.fsf@igalia.com> <54FD7DAA.7010603@redhat.com> <87twxrncld.fsf@igalia.com> <87ioe1dvu2.fsf@igalia.com> Date: Tue, 17 Mar 2015 08:57:00 -0000 In-Reply-To: (Alexander Smundak's message of "Mon, 16 Mar 2015 10:25:13 -0700") Message-ID: <87sid4atms.fsf@igalia.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: A8606F06-CC83-11E4-BA55-96E29252DF99-02397024!pb-sasl1.pobox.com X-IsSubscribed: yes X-SW-Source: 2015-03/txt/msg00476.txt.bz2 On Mon 16 Mar 2015 18:25, Alexander Smundak writes: > I'd like to propose one improvement on the Python side: UnwinderInfo > is constructed by a frame method instead of an implicit constructor. > I.e., frame.create_frame_with_id(sp, pc) returns UnwindInfo instance > whose ID is the result of calling GDB's frame_id_build(sp, pc), > frame.create_frame_with_id_wild(sp) returns UnwindInfo instance > whose ID is the results of calling frame_id_build_wild(sp), etc. > > The example above would then look as follows: > def unwind(frame): > if we_can_handle(frame): > unwind_info = frame.create_frame_with_id(sp, pc) > unwind_info.set_previous_frame_register("r0", r0) > unwind_info.set_previous_frame_register(...) > return unwind_info > else > return None Looks great to me :) Thank you for the consideration! I might consider naming "set_previous_frame_register" as "add_saved_register", in anticipation of a possible add_unavailable_register(), add_unmodified_register(), etc, but that is just a minor nit. > As to the class of an object passed to a sniffer, how about calling it > FrameData? Note that it's not very important from the user's point of > view as sniffer code does not ever reference it by name. It's true that from user code it barely matters to Python, but Scheme's monomorphic flavor makes these things more apparent: (frame-data-read-register frame "r0") This doesn't read so well to me -- is it "read-register" on a "frame-data", or is it "data-read-register" on a "frame" ? A weak point but "ephemeral-frame-read-register" avoids the question. I also think that "ephemeral frame" is easier to document as a concept than the more generic "frame data", and corresponds better to what is happening in GDB. YMMV, though. As an aside, it seems to me that if we can avoid it, the word "sniffer" should not enter the documentation or the API. The Python and Guile APIs don't just sniff, they do the whole of the unwinding operation, so it's more clear to call them "unwinders". Andy