From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25602 invoked by alias); 14 Apr 2004 17:24:34 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 25593 invoked from network); 14 Apr 2004 17:24:33 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 14 Apr 2004 17:24:33 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i3EHOWu6014206 for ; Wed, 14 Apr 2004 13:24:32 -0400 Received: from zenia.home.redhat.com (porkchop.devel.redhat.com [172.16.58.2]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i3EHOVj19072; Wed, 14 Apr 2004 13:24:31 -0400 To: Joel Brobecker Cc: Elena Zannoni , gdb-patches@sources.redhat.com Subject: Re: [RFA/dwarf-2] Fix for the null record problem References: <20040219140145.GB804@gnat.com> <16437.11835.435941.553479@localhost.redhat.com> <20040401011813.GE888@gnat.com> <20040413052655.GB1173@gnat.com> From: Jim Blandy Date: Wed, 14 Apr 2004 17:24:00 -0000 In-Reply-To: <20040413052655.GB1173@gnat.com> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-04/txt/msg00286.txt.bz2 Joel Brobecker writes: > The patch is quite tiny, seems almost obvious, and Elena seemed happy > with it. But it didn't get in because she asked that a testcase be added > first (on Feb 19): > << > the patch looks sensible, but I would like to see the testcase go in > at the same time, or we'll forget. > >> > > The new testcase has been checked in now, so I was wondering if somebody > had a moment to have a look at it, and confirm Elena's first review? I think it looks fine; I've just one question before you commit. As it stands, the code sets TYPE_FLAG_STUB if the type die has no children, or if die_is_declaration (die, cu) is true. Your patch correctly ditches the first criterion; no problems there. But it also modifies the second criterion as well, without comment. In particular, die_is_declaration checks for both DW_AT_declaration and DW_AT_specification, but your patch only tests for DW_AT_declaration. I think this is correct: in section 5.6.1, the Dwarf 2 spec says that the definition of the type has a DW_AT_specification attribute pointing to the declaration. Since it's the definition of the type that actually lists the fields, DW_AT_specification should not cause GDB to mark the type as a stub. Just the opposite: the referent of that attribute is the stub. The following C++ code produces Dwarf 2 info where the definition of struct s::t has a DW_AT_specification attribute, but GDB doesn't skip it, and I don't really understand why: struct s { struct t; struct t *p; }; struct s::t { int i; }; Have you followed all this through already? What's going on here?