From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26752 invoked by alias); 24 Jul 2015 10:38:37 -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 26742 invoked by uid 89); 24 Jul 2015 10:38:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: smtp.eu.adacore.com Received: from mel.act-europe.fr (HELO smtp.eu.adacore.com) (194.98.77.210) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 24 Jul 2015 10:38:35 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 4965F28B388C; Fri, 24 Jul 2015 12:38:33 +0200 (CEST) Received: from smtp.eu.adacore.com ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wMPzHOq0cxwz; Fri, 24 Jul 2015 12:38:33 +0200 (CEST) Received: from [10.10.1.112] (cacatoes.act-europe.fr [10.10.1.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.eu.adacore.com (Postfix) with ESMTPSA id DECC828B388B; Fri, 24 Jul 2015 12:38:32 +0200 (CEST) Subject: Re: [PATCH] Add proper handling for non-local references in nested functions To: Kevin Buettner , gdb-patches@sourceware.org References: <54F47563.4050103@adacore.com> <54FF0D05.70907@redhat.com> <550C1170.9070208@adacore.com> <55685B60.3000004@redhat.com> <55775EB0.4080701@adacore.com> <55AF5F7E.5000600@adacore.com> <20150722173957.7ed51f18@pinnacle.lan> <55B0C583.6050601@adacore.com> <20150723064408.4dd8a9b2@pinnacle.lan> <55B112D4.5010304@adacore.com> <20150723110653.3f4e2f11@pinnacle.lan> <20150723112255.1b14a40a@pinnacle.lan> From: Pierre-Marie de Rodat Message-ID: <55B215A8.1000609@adacore.com> Date: Fri, 24 Jul 2015 10:38:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 MIME-Version: 1.0 In-Reply-To: <20150723112255.1b14a40a@pinnacle.lan> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg00687.txt.bz2 On 07/23/2015 08:22 PM, Kevin Buettner wrote: > I came across something else (for someone) to ponder while playing with > the above code. I don't necessarily expect your current patch to handle > this case, but since you've been looking at nested subprograms, you may > have some insight into what's happening. > > The situation is that I want to place a breakpoint on the function p(). > How do I do this? > 1) Placing a breakpoint on p without qualification does not work: > > (gdb) b p > Function "p" not defined. > Make breakpoint pending on future shared library load? (y or [n]) n For the record, this works in Ada: -- foo.adb procedure Foo is procedure Nested is begin null; end Nested; begin Nested; end Foo; # Program isn't even started. (gdb) b nested Breakpoint 1 at 0x401cca: file foo.adb, line 4. Bottom line is: the difference between the C and the Ada examples resides in the partial symbols lookup: in the C example, only the outer function has a partial symbol while in the Ada example, Nested has one too. Why? Well, in dwarf2read.c:add_partial_subprogram there's a special case for Ada that recurses over the child DIE. Stopping investigation here. ;-) > 4) Perhaps p will be visible if we run to a breakpoint in main? (Nope.) > > (gdb) b main > Breakpoint 1 at 0x400525: file nested.c, line 5. > (gdb) run > Starting program: /mesquite2/.ironwood2/1158876/nested I had a quick look at how breakpoints resolution works: it sems that lookups don't take into account the block corresponding to the selected frame. So trying to put the breakpoint during execution looks pointless. > I want to be perfectly clear that I do NOT want this issue to hold up > your patch. I'm just throwing it out there in case you want to look > at it. Sure. It was interesting to look at this, anyway. -- Pierre-Marie de Rodat