DWARF Standard


090321.1 Jan Kratochvil DW_AT_declaration inheritance by DW_AT_specification Ambiguity Accepted with modifications John Bishop

Currently both GCC and GDB do not generate/assume inheritance of
DW_AT_declaration through DW_AT_specification.  It was discussed at:

And it is implemented in GDB by die_is_declaration():

But the DWARF spec says:
  Debugging information entries with a DW_AT_specification
  attribute do not need to duplicate information provided by the
  debugging information entry referenced by that specification

Therefore the DIE completing former non-defining DIE should override 
its DW_AT_declaration by explicit DW_AT_declaration=0 to have its meaning
currently read by GDB.

Current DIEs:
 <3><247>: Abbrev Number: 18 (DW_TAG_variable)
    <248>   DW_AT_name        : cX
    <24b>   DW_AT_decl_file   : 1
    <24c>   DW_AT_decl_line   : 109
    <24d>   DW_AT_type        : <0xca>
    <251>   DW_AT_declaration : 1

 <1><5c5>: Abbrev Number: 37 (DW_TAG_variable)
    <5c6>   DW_AT_specification: <0x247>
    <5ca>   DW_AT_const_value : 6

IMO according to the current DWARF spec there is missing:
    <5cb>   DW_AT_declaration : 0

That DW_AT_declaration is not being inherited through DW_AT_specification
may be implied by the DWARF specification but it is not clear enough to me.

Please update the DWARF standard to say it explicitely:
  DW_AT_declaration and DW_AT_sibling attributes are not being
  inherited from the debugging information entry referenced by
  the specification attribute.


Accepted with modifications. 

Add following text 2.13.2:
    It is not the case that all the attributes of the debugging information entry
    referenced by a DW_AT_specification attribute apply to the referring debugging
    information entry.

All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest © 2007-2017 by DWARF Standards Committee.