Describing typographical errors or ambiguities in the DWARF5 Standard (released in 2017). ISSUE refers to the numbered ISSUES page on dwarfstd.org
Hopefully complete, but corrections and addtions are always possible.
See also DWARF5 Clarifications.
Section 1, Page 1
Delete the accidental word unittype.
Section 22.214.171.124 DW_OP_piece clarification pg 42
Add the following normative text to 126.96.36.199:
A composition operation that follows an empty location description indicates that the piece is undefined, for example because it has been optimized away.
Section 3.2.5 DW_AT_import description Page 74 line 21
a reference to the normal or partial compilation unit whose declarations logically belong at the place of the imported unit entry.
Replace normal or partial compilation unit with normal or partial compilation unit entry.
Section 3.9 Declarations with Reduced Scope Page 94 line 26.
b) If the address range of the containing scope is non-contiguous (see 2.17.3 on page 52) the value of this attribute is the offset in bytes of the beginning of the address range for the scope of the entity from the beginning of the first range list entry for the containing scope that is not a base address entry, a default location entry or an end-of-list entry.
The phrase , a default location entry should be removed, it does not apply here.
Section 6.1.1 Lookup By Name. Page 136. Line 34 (last line of the page).
index that covers the entire load module.
Replace 'load module' by 'module'.
Comment: Load module is a term that is no longer in common use.
Section 188.8.131.52.1 Section Header (.debug_names) page 144 lines 5-10
A vendor-specific augmentation string, which provides additional information about the contents of this index. ... The string is padded with null characters to a multiple of four bytes in length.
The field is best thought of as a sequence of bytes with the length given in the augmentation_string_size field.
The four character vendor ID is best though of as a four byte vendor ID, there was no intent to allow multi-byte characters as the vendor ID.
Section 184.108.40.206.5 text error Page 145 line 16
Following name, as it appears in the source code, should be stored in the name table one sees: name table.name index!case folding
which is a result of a mistyped document indexing command.
Section 6.2.2 State Machine Registers Page 152
Register Name: discriminator:
Where only one block exists for a given source position, the discriminator value is be zero.
Replace is be with 'is'.
Section 6.2.4 Line Number Program Header page 156 line 27
15. directories_count (ULEB128) A count of the number of entries that occur in the following directories field,
A note that this is new in DWARF5 was accidentally omitted. Such note will not appear in DWARF6, such notes are only for the first time an item appears.
Section 7.4 .debug_rnglists,.debug_loclists Page 198 line 11
offsets the follow the header
offsets that follow the header
Section 7.4 section headers 32/64bit Page 198 line 14,15
"The 32-bit and 64-bit DWARF format conventions must not be intermixed within a single compilation unit."
This belongs belongs on page 196 as it's a requirement for all headers within a single compilation unit.
Section 7.5.3, Table 7.3 0xffff rendered in tables Page 206
"DW_TAG_hi_user 0x f f f f"
The value is meant to be 0xffff
And similar for Table 7.5
"DW_AT_hi_user 0x3 f f f"
The value is meant to be 0x3fff
Section 7.5 DW_AT_call_origin class page 211
Table 7.5: Attribute encodings ISSUE 171103.1
"DW_AT_call_origin 0x7f class exprloc"
is incorrect. It should be
"DW_AT_call_origin 0x7f class reference"
Section E.3.2 file-designator description Page 388 lines 22-24
"References to other .debug_info sections follow the approach suggested above, but the naming rule is slightly different in that the <file-designator> should be interpreted as a <file-designator>."
The final hyphenated word "<file-designator>" should be "<function-designator>".