This example came from the gdb list: #include "stdio.h" class Blah { public: Blah(): mFlag(0) {} void setFlag( int value ) { mFlag = value; } void printFlag() { printf( "Flag value is %d\n", mFlag ); } private: int mHugeArray[0x08000001]; int mFlag; };
int main( int argc, char* argv[] ) { Blah* foo = new Blah(); foo->setFlag(1); foo->printFlag(); return 0; } I compiled this using today's svn trunk g++. Then readelf shows: <2><8e>: Abbrev Number: 7 (DW_TAG_member) <8f> DW_AT_name : (indirect string, offset: 0x9f): mHugeArray <93> DW_AT_decl_file : 1 <94> DW_AT_decl_line : 13 <95> DW_AT_type : <0xf2> <99> DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst: 0) <9c> DW_AT_accessibility: 3 (private) <2><9d>: Abbrev Number: 7 (DW_TAG_member) <9e> DW_AT_name : (indirect string, offset: 0x0): mFlag <a2> DW_AT_decl_file : 1 <a3> DW_AT_decl_line : 14 <a4> DW_AT_type : <0x53> <a8> DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst: 0) <ab> DW_AT_accessibility: 3 (private) Both fields the same DW_AT_data_member_location. -- Summary: bad DW_AT_data_member_location from g++ Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tromey at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41048