This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
debug/8188: DW_AT_containing_type incorrectly emitted
- From: miwako dot tokugawa at intel dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: 10 Oct 2002 17:51:04 -0000
- Subject: debug/8188: DW_AT_containing_type incorrectly emitted
- Reply-to: miwako dot tokugawa at intel dot com
>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.
>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;
}