echo 'class C { protected: typedef int t; t v; } c;' | g++ -Wall -c -g -x c++ -

 <2><33>: Abbrev Number: 3 (DW_TAG_typedef)
    <34>   DW_AT_name        : t        
    <38>   DW_AT_type        : <0x4a>   
 <2><3c>: Abbrev Number: 4 (DW_TAG_member)
    <3d>   DW_AT_name        : v        
    <41>   DW_AT_type        : <0x33>   
    <45>   DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst:
0)
    <48>   DW_AT_accessibility: 2       (protected)

DIE <0x33> should have DW_AT_accessibility.

FAIL g++ (GCC) 4.6.0 20100625 (experimental)
FAIL g++ (GCC) 4.5.1 20100625 (prerelease)
SKIP g++ (GCC) 4.4.5 20100625 (prerelease) - C::t is missing there.
FAIL gcc-c++-4.4.4-8.fc14.x86_64

G++ properly respects the access control:
.C:3: error: ‘typedef int C::t’ is protected
.C:11: error: within this context

But GDB cannot display the access control during `ptype C'.
GDB does not and probably should not respect the access control, though.


-- 
           Summary: class->DW_TAG_typedef is missing DW_AT_accessibility
           Product: gcc
           Version: 4.5.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jan dot kratochvil at redhat dot com
GCC target triplet: x86_64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44668

Reply via email to