From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17031 invoked by alias); 6 Jan 2004 15:02:20 -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 16956 invoked from network); 6 Jan 2004 15:02:19 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 6 Jan 2004 15:02:19 -0000 Received: from drow by nevyn.them.org with local (Exim 4.30 #1 (Debian)) id 1AdsiZ-0005c5-W3; Tue, 06 Jan 2004 10:02:03 -0500 Date: Tue, 06 Jan 2004 15:02:00 -0000 From: Daniel Jacobowitz To: Josef Zlomek Cc: gcc@gcc.gnu.org, gdb@sources.redhat.com Subject: Re: GDB does not show variables in inlined function Message-ID: <20040106150203.GA21353@nevyn.them.org> Mail-Followup-To: Josef Zlomek , gcc@gcc.gnu.org, gdb@sources.redhat.com References: <20040106144950.GA18492@artax.karlin.mff.cuni.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040106144950.GA18492@artax.karlin.mff.cuni.cz> User-Agent: Mutt/1.5.1i X-SW-Source: 2004-01/txt/msg00051.txt.bz2 On Tue, Jan 06, 2004 at 03:49:50PM +0100, Josef Zlomek wrote: > 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. 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: -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer