|
DWARF Standard
|
200716.1 |
David Blaikie |
debug_macro header is missing a length prefix |
Enhancement |
Open |
David Blaikie |
Section 6.3.1, pg 166
Most DWARF section contributions now start with a length (with the usual
DWARF32/DWARF64 encoding dance) followed by a version.
This feature makes it easy for consumers to skip over portions of the DWARF
they do not understand - as long as the length can be read, even if the
version is unknown (too new, for instance) the length can be used to skip
over the contents.
debug_macro starts with a version instead of a length, which makes this
technique not possible.
To change the format would require changing the section name (since there
would be no way to know that a length must be read first, instead of a
version). If it's not worth changing the section name again - perhaps in
the next version of DWARF it could say "version then length" and we
promise to never change that - then a consumer can check the version is
>= 6, and then read the length unconditionally (even if it's a version it
doesn't otherwise recognize) and skip the contents. Not perfect, but might
be worth doing if/when the version is reving anyway.
Proposal
=======
I don't think it's worth adding the length field to the .debug_macro
section if that's the only reason we would need to bump the
.debug_macro version number up to 6.
I'd like to set this issue aside until closer to the end of the
DWARFv6 lifecycle and only adopt it if there's been some other reason
that's motivated a version bump in the .debug_macro section.
But I'm open to other opinions... (email discussion would be great to
get some of this flushed out before an in-person meeting to speed
things along)
--
2021-07-09: Revised: Add Proposal