dwarf2 - multiple DW_TAG_variable for global variable
Jan Kratochvil
jan.kratochvil@redhat.com
Sun Jan 10 08:43:00 GMT 2010
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
More information about the Gcc
mailing list