[Dwarf-discuss] [UPDATE] 240618.2 rnglists_base missing
David Blaikie
dblaikie@gmail.com
Mon Jan 13 19:31:54 GMT 2025
I still think the commentary on the indexes isn't quite right. They're
separate from this issue - you'd still need the rnglists base, or have to
assume that it's sizeof(header), to go that far into the region described
by the index.
The index essentially makes a DWP look like a bunch of separate DWO files -
so the rules that apply to the DWO file apply equally to the DWP file.
On Sat, Jan 11, 2025 at 4:04 PM David Anderson via Dwarf-discuss <
dwarf-discuss@lists.dwarfstd.org> wrote:
> # `DW_AT_rnglists_base` missing
>
> ## BACKGROUND
>
> If a split-full CU uses `DW_FORM_rnglistx`,
> is a `DW_AT_rnglists_base` required?
>
It's also specified in figure F.1, page 395 of DWARFv5 that loclists_base
and rnglists_base only appear on the full & partial units.
Though I'd argue it'd be fine for rnglists_base to appear on a skeleton
unit - clang does this (DW_AT_rnglists_base on the skeleton unit, and
DW_AT_ranges using DW_FORM_rnglistx) - and it seems harmless enough, though
it would be more compact to skip rnglists_base and hawe DW_AT_ranges use
DW_FORM_sec_offset
I'd guess that's where we got the impression that *list_base attributes
weren't to be used & reached the conclusion you mention below, that they
have an implicit value of sizeof(loclists/rnglists header)
>
> Apparently not, since in cases I have seen in object files
> with a single rnglist in `.debug_rnglists.dwo`
> there is no `DW_AT_rnglists_base`.
>
> The operative assumption seems to be that consumers will simply
> assume size-of-rnglists-header
> of the initial `.debug_rnglists.dwo` contribution
> as the (missing) `DW_AT_rnglists_base`.
>
> Similarly for .debug_loclists[.dwo] and DW_AT_loclists_base
>
> The intent of this proposal is to allow this common
> practice as correct dwarf.
>
> ## PROPOSAL
>
> Section 7.28 Range List Table Following the last paragraph
> before Section 7.9:
>
> > If a Split Full Compilation Unit
> > refers to `.debug_rnglists.dwo`
> > with `DW_FORM_rnglistx`
> > and the correct `DW_AT_rnglists_base`
> > would be size-of-rnglists-header
> > of the initial contribution to
> > `.debug_rnglists.dwo`,
> > the `DW_AT_rnglists_base`
> > may be omitted.
> > In a dwp package file (See F.3 Package File Example)
> > a `.debug_cu_index` or `.debug_tu_index`
> > entry `DW_SECT_RNGLISTS` makes rnglists base unnecessary
> > by providing the offset of the contribution to
> >`.debug_rnglists.dwo`.
>
>
> Section 7.29 Location List Table Following the last paragraph
> before Section 7.30:
> > If a Split Full Compilation Unit
> > refers to `.debug_loclists.dwo`
> > with `DW_FORM_loclistx`
> > and the correct `DW_AT_loclists_base`
> > would be size-of-loclists-header
> > of the initial contribution to
> > `.debug_loclists.dwo`,
> > the `DW_AT_loclists_base`
> > may be omitted.
> > In a dwp package file (See F.3 Package File Example)
> > a `.debug_cu_index` or `.debug_tu_index`
> > entry `DW_SECT_LOCLISTS` makes loclists base unnecessary
> > by providing the offset of the contribution to
> >`.debug_loclists.dwo`.
>
>
> This is a major revision of the previous text.
>
> David Anderson
>
> --
> Dwarf-discuss mailing list
> Dwarf-discuss@lists.dwarfstd.org
> https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dwarfstd.org/pipermail/dwarf-discuss/attachments/20250113/19cf8076/attachment.htm>
More information about the Dwarf-discuss
mailing list