This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

debug/8188: DW_AT_containing_type incorrectly emitted


>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;
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]