From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25878 invoked by alias); 6 Jan 2004 15:27:21 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 25844 invoked from network); 6 Jan 2004 15:27:20 -0000 Received: from unknown (HELO artax.karlin.mff.cuni.cz) (195.113.31.137) by sources.redhat.com with SMTP; 6 Jan 2004 15:27:20 -0000 Received: by artax.karlin.mff.cuni.cz (Postfix, from userid 29129) id BC8013F3A; Tue, 6 Jan 2004 16:27:19 +0100 (CET) Date: Tue, 06 Jan 2004 15:27:00 -0000 From: Josef Zlomek To: gcc@gcc.gnu.org, gdb@sources.redhat.com Subject: Re: GDB does not show variables in inlined function Message-ID: <20040106152719.GA21416@artax.karlin.mff.cuni.cz> References: <20040106144950.GA18492@artax.karlin.mff.cuni.cz> <20040106150203.GA21353@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040106150203.GA21353@nevyn.them.org> User-Agent: Mutt/1.5.4i X-SW-Source: 2004-01/txt/msg00052.txt.bz2 > > with inlining: > > > > .uleb128 0x2c # (DIE (0x2a5a) DW_TAG_variable) > > .long 0x2af2 # DW_AT_abstract_origin > > ^^^^^^ > > .byte 0x1 # DW_AT_location > > .byte 0x56 # DW_OP_reg6 > > ... > > .long 0x2d # DW_AT_type > > .uleb128 0x24 # (DIE (0x2af2) DW_TAG_variable) > > ^^^^^^ > > .long .LASF850 # DW_AT_name: "incoming" > > .byte 0x1 # DW_AT_decl_file > > .value 0x3f32 # DW_AT_decl_line > > .long 0x2d # DW_AT_type > > > > The location seems not to be generated for the real variable record > > (2nd part after ...) with inlining. > > > > Should GCC generate the location for the second part (after ...) too, > > should GDB be able to link the descriptions through the marked number > > or something else? > > It's the former DIE (0x2a5a) which is in scope. It has the name > "incoming" through the abstract origin chain. So this is probably a > GDB issue. > > Up until recently that DW_AT_location in the concrete DIE was missing, > I believe. You might want to try this (incredibly lame, untested) GDB > patch. Let me know if it does something useful. Wow, that was fast! Yes, it works with your patch :-) Josef > Index: dwarf2read.c > =================================================================== > RCS file: /cvs/src/src/gdb/dwarf2read.c,v > retrieving revision 1.117 > diff -u -p -r1.117 dwarf2read.c > --- dwarf2read.c 13 Dec 2003 22:29:06 -0000 1.117 > +++ dwarf2read.c 6 Jan 2004 15:01:13 -0000 > @@ -1813,7 +1813,6 @@ process_die (struct die_info *die, struc > /* FIXME: These are ignored for now. > They could be used to set breakpoints on all inlined instances > of a function and make GDB `next' properly over inlined functions. */ > - break; > case DW_TAG_lexical_block: > case DW_TAG_try_block: > case DW_TAG_catch_block: