debug/8188: DW_AT_containing_type incorrectly emitted
Daniel Jacobowitz
drow@mvista.com
Thu Oct 10 11:06:00 GMT 2002
The following reply was made to PR debug/8188; it has been noted by GNATS.
From: Daniel Jacobowitz <drow@mvista.com>
To: miwako.tokugawa@intel.com
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: debug/8188: DW_AT_containing_type incorrectly emitted
Date: Thu, 10 Oct 2002 14:02:51 -0400
On Thu, Oct 10, 2002 at 05:51:04PM -0000, miwako.tokugawa@intel.com wrote:
>
> >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><d5e>: Abbrev Number: 15 (DW_TAG_structure_type)
> DW_AT_sibling : <df0>
> DW_AT_name : B
> DW_AT_byte_size : 12
> DW_AT_decl_file : 1
> DW_AT_decl_line : 12
> DW_AT_containing_type: <cc4>
> 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.
GDB uses it to find the virtual table associated with the current type.
It's used in two "custom" ways by GCC and GDB:
/* GNU extension: Record what type this method came from originally. */
/* GNU extension: Record what type our vtable lives in. */
Non-GDB readers will presumably ignore this information. Why do you
consider this a bug?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gcc-prs
mailing list