From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31737 invoked by alias); 10 Oct 2002 17:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 31672 invoked by uid 71); 10 Oct 2002 17:56:01 -0000 Resent-Date: 10 Oct 2002 17:56:01 -0000 Resent-Message-ID: <20021010175601.31670.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, miwako.tokugawa@intel.com Received: (qmail 25041 invoked by uid 61); 10 Oct 2002 17:51:04 -0000 Message-Id: <20021010175104.25040.qmail@sources.redhat.com> Date: Thu, 10 Oct 2002 10:56:00 -0000 From: miwako.tokugawa@intel.com Reply-To: miwako.tokugawa@intel.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: debug/8188: DW_AT_containing_type incorrectly emitted X-SW-Source: 2002-10/txt/msg00388.txt.bz2 List-Id: >Number: 8188 >Category: debug >Synopsis: DW_AT_containing_type incorrectly emitted >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Oct 10 10:56:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: miwako.tokugawa@intel.com >Release: unknown-1.0 >Organization: >Environment: >Description: It seems that g++ misuses DW_AT_containing_type. If you compile test.cpp (attached), we see this. <1>: Abbrev Number: 15 (DW_TAG_structure_type) DW_AT_sibling : DW_AT_name : B DW_AT_byte_size : 12 DW_AT_decl_file : 1 DW_AT_decl_line : 12 DW_AT_containing_type: Dwarf3 draft (draft7) section 5.12 describes this attribute as being attached DW_TAG_ptr_to_member_type, and it does not describe its use with a structure DIE. Furthermore, gdb seems to make use of this emission and this is not correct. >How-To-Repeat: g++ -gdwarf-2 test.cpp >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="test.cpp" Content-Disposition: inline; filename="test.cpp" class A { public: int a1; }; class c { public: int c1; }; class B : virtual public A { public: int b2; }; int main() { B pf; }