On Sun, 10 Jan 2010 00:31:56 +0100, Nenad Vukicevic wrote: ... > <1><54>: Abbrev Number: 4 (DW_TAG_variable) > <55> DW_AT_name : (indirect string, offset: 0x38): xxxxx > <59> DW_AT_decl_file : 1 > <5a> DW_AT_decl_line : 1 > <5b> DW_AT_type : <0x4d> > <5f> DW_AT_external : 1 > <60> DW_AT_declaration : 1 > <1><61>: Abbrev Number: 5 (DW_TAG_variable) > <62> DW_AT_name : (indirect string, offset: 0x38): xxxxx > <66> DW_AT_decl_file : 1 > <67> DW_AT_decl_line : 1 > <68> DW_AT_type : <0x4d> > <6c> DW_AT_external : 1 > <6d> DW_AT_location : 9 byte block: 3 0 0 0 0 0 0 0 0 (DW_OP_addr: 0) > > in 4.4.1 and 4.5 releases. > > Any idea if this is a correct dwarf? Or must be treated as a > duplicate somehow?
It does not hurt much GDB - if the debugger ignores the second definition it looks as a declaration of external symbol and it gets correctly looked up through the ELF (not DWARF) .symtab symbol without using DW_AT_location. PR 39524 mentions a special scope case which gets broken by it but in common cases it works fine. Regards, Jan