On 8/31/20 8:39 PM, David Blaikie wrote:
On Mon, Aug 31, 2020 at 8:22 PM David Anderson <dave...@linuxmail.org
<mailto:dave...@linuxmail.org>> wrote:

    On 8/31/20 1:03 PM, David Blaikie wrote:
    > I'd rather go with LLVM's existing interpretation - that strx
    > encodings used in .dwo do not attempt to use str_offsets in the
    skeleton.
    > But I wouldn't mind adding a str_offsets_base to the split full unit
    > to make it clear - this would be consistent with rnglists, I
    think? (I
    > think, in theory a rnglistx in a .dwo with a split full unit
    without a
    > rnglists_base would use the rnglists_base (and .debug_rnglists
    > non-dwo) in the executable, but if the split full unit has a
    > rnglists_base, then the rnglistx in the split full unit use that
    base
    > to find rnglists in debug_rnglists.dwo - arguably I'd say we
    might as
    > well say the same thing about loclists, too, for consistency,
    though I
    > don't have any use for skeleton location lists right now)

    It seems to me that rnglists base and loclists_base in Split Full
    always
    reference the data in .debug_rnglists/.debug_loclists

    3.1.3  Split Full Compilation Unit Entries
    The following attributes are not part of a split full compilation unit
    entry but instead are
    inherited (if present) from the corresponding skeleton compilation
    unit:
    DW_AT_low_pc,
    DW_AT_high_pc, DW_AT_ranges, DW_AT_stmt_list, DW_AT_comp_dir,
    DW_AT_str_offsets_base, DW_AT_addr_base and DW_AT_rnglists_base.


Hmm... yeah. I guess LLVM implements rnglistx /rnglist_base the same
as strx/str_offsets_base. Where it assumes that any *x encoding refers
to entities in the .dwo, even in the absence of a
rnglists_base/str_offsets_base in the split full unit. I had thought
we'd implemented it to emit a rnglists_base in the split full unit,
which would've been in contrast to the str_offsets_base - so my
mistake/apologies for the previous description.
Still confused.

Lets say skeleton A is in object file OB.
And OB.dwp contains the split-full CU DIE.
Lets say non-empty  .debug_rnglists and .debug_rnglists.dwo  exist.

The compiler could create the rnglists for A in *either* OB or OB.dwp.
And could pick and choose, for each split-able Compilation Unit,
which place to put rnglists
independently of all other CUs.

Meaning both OB and OB.dwp could have rnglists, but only
one of them has the rnglists entry for any given CU.

How do we know  which .debug_rnglists section  to look at
given Skeleton A and split-full A?
Which does the DW_AT_rnglists_base apply to?

If one violated the standard and put DW_AT_rnglists_base
into the CU die that has the rnglists (skeleton or split-full) it would then
be known where to read the rnglists.

Confused, still.
DavidA



--
Despite all appearances, your boss is a thinking, feeling, human being.

_______________________________________________
Dwarf-Discuss mailing list
Dwarf-Discuss@lists.dwarfstd.org
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to