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 >
-- Dwarf-discuss mailing list Dwarf-discuss@lists.dwarfstd.org https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss