https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102195
Bug ID: 102195 Summary: Missing DW_TAG_typedef when using qualified variable of typedef'd array Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: ibhagatgnu at gmail dot com Target Milestone: --- $ cat typedef1.c typedef int A[2][3]; const A a = {{4, 5, 6}, {7, 8, 9}}; $ gcc -g -c typedef1.c $ objdump --dwarf=info typedef1.o <1><1e>: Abbrev Number: 3 (DW_TAG_array_type) <1f> DW_AT_type : <0x40> <23> DW_AT_sibling : <0x34> <2><27>: Abbrev Number: 1 (DW_TAG_subrange_type) <28> DW_AT_type : <0x39> <2c> DW_AT_upper_bound : 1 <2><2d>: Abbrev Number: 1 (DW_TAG_subrange_type) <2e> DW_AT_type : <0x39> <32> DW_AT_upper_bound : 2 <2><33>: Abbrev Number: 0 <1><34>: Abbrev Number: 4 (DW_TAG_const_type) <35> DW_AT_type : <0x1e> <1><39>: Abbrev Number: 5 (DW_TAG_base_type) <3a> DW_AT_byte_size : 8 <3b> DW_AT_encoding : 7 (unsigned) <3c> DW_AT_name : (indirect string, offset: 0x52): long unsigned int <1><40>: Abbrev Number: 6 (DW_TAG_base_type) <41> DW_AT_byte_size : 4 <42> DW_AT_encoding : 5 (signed) <43> DW_AT_name : int <1><47>: Abbrev Number: 7 (DW_TAG_variable) <48> DW_AT_name : a <4a> DW_AT_decl_file : 1 <4b> DW_AT_decl_line : 2 <4c> DW_AT_decl_column : 9 <4d> DW_AT_type : <0x34> <51> DW_AT_external : 1 <51> DW_AT_location : 9 byte block: 3 0 0 0 0 0 0 0 0 (DW_OP_addr: 0) <1><5b>: Abbrev Number: 0 If typedef'd type is a base type / struct, DW_TAG_typedef shows up. $ cat typedef3.c typedef struct foo { int a; int b; } bar; const bar ba; $ objdump --dwarf=info typedef3.o <1><1e>: Abbrev Number: 3 (DW_TAG_structure_type) <1f> DW_AT_name : foo <23> DW_AT_byte_size : 8 <24> DW_AT_decl_file : 1 <25> DW_AT_decl_line : 1 <26> DW_AT_decl_column : 16 <27> DW_AT_sibling : <0x3e> <2><2b>: Abbrev Number: 1 (DW_TAG_member) <2c> DW_AT_name : a <2e> DW_AT_decl_file : 1 <2e> DW_AT_decl_line : 3 <2f> DW_AT_decl_column : 7 <2f> DW_AT_type : <0x3e> <33> DW_AT_data_member_location: 0 <2><34>: Abbrev Number: 1 (DW_TAG_member) <35> DW_AT_name : b <37> DW_AT_decl_file : 1 <37> DW_AT_decl_line : 4 <38> DW_AT_decl_column : 7 <38> DW_AT_type : <0x3e> <3c> DW_AT_data_member_location: 4 <2><3d>: Abbrev Number: 0 <1><3e>: Abbrev Number: 4 (DW_TAG_base_type) <3f> DW_AT_byte_size : 4 <40> DW_AT_encoding : 5 (signed) <41> DW_AT_name : int <1><45>: Abbrev Number: 5 (DW_TAG_typedef) <46> DW_AT_name : bar <4a> DW_AT_decl_file : 1 <4b> DW_AT_decl_line : 5 <4c> DW_AT_decl_column : 3 <4d> DW_AT_type : <0x1e> <1><51>: Abbrev Number: 6 (DW_TAG_const_type) <52> DW_AT_type : <0x45> <1><56>: Abbrev Number: 7 (DW_TAG_variable) <57> DW_AT_name : ba <5a> DW_AT_decl_file : 1 <5b> DW_AT_decl_line : 6 <5c> DW_AT_decl_column : 11 <5d> DW_AT_type : <0x51> <61> DW_AT_external : 1 <61> DW_AT_location : 9 byte block: 3 0 0 0 0 0 0 0 0 (DW_OP_addr: 0) <1><6b>: Abbrev Number: 0