On 8/31/20 8:39 PM, David Blaikie wrote:
On Mon, Aug 31, 2020 at 8:22 PM David Anderson <[email protected] <mailto:[email protected]>> 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 [email protected] http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org
