On Mon, Apr 28, 2025 at 04:21:14PM +0100, Alan Maguire wrote: > In the bad case, the bpf_prog active member: > <2><3d594>: Abbrev Number: 4 (DW_TAG_member) > <3d595> DW_AT_name : (indirect string, offset: 0x3b976): active > <3d599> DW_AT_decl_file : 125 > <3d59a> DW_AT_decl_line : 1654 > <3d59c> DW_AT_decl_column : 17 > <3d59d> DW_AT_type : <0x4bd05> > ...is a pointer: > > <1><4bd05>: Abbrev Number: 58 (DW_TAG_pointer_type) > <4bd06> DW_AT_byte_size : 8 > <4bd07> DW_AT_address_class: 2 > <4bd08> DW_AT_type : <0x301cd> > ...which points at an int > <1><301cd>: Abbrev Number: 214 (DW_TAG_base_type) > <301cf> DW_AT_byte_size : 4 > <301d0> DW_AT_encoding : 5 (signed) > <301d1> DW_AT_name : int > <301d5> DW_AT_name : int > ...but note the the DW_AT_address_class attribute in the latter case and > the two DW_AT_name values. We don't use that address attribute in pahole > as far as I can see, but it might be enough to cause problems. Looks like broken DWARF, there should be just one DW_AT_name per DW_TAG_base_type, what is the language for the CU where the bad cases appear? Is some sort of LTO being used? - Arnaldo