Issue 210310.1: Clarify DW_AT_rnglists_base and DW_FORM_rnglistx in Split DWARF

Author: David Blaikie
Champion: Jonas Devlieghere
Date submitted: 2021-03-10
Date revised:
Date closed: 2022-03-21
Type: Ambiguity
Status: Accepted
DWARF Version: 6
Section 3.1.3, pg 68
The statement that DW_AT_rnglists_base is inherited by the split full unit from 
skeleton unit creates some confusion about whether a DW_FORM_rnglistx in the split 
full unit can refer to ranges in .debug_rnglists (non-dwo) via DW_AT_rnglists_base 
on the skeleton CU.

The consensus seems to be that the only ranges that can be referenced from inside
a .dwo are in the rnglists.dwo and the only ones that can be referenced from the
skeleton unit are in .debug_rnglists (non-.dwo).

Specific changes to the DWARF spec:

3.1.3, page 68:

"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."

Should be modified to remove the mention of DW_AT_rnglists_base, instead reading:

  "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, and DW_AT_addr_base."

Table F.1, page 395

  Modify the DW_AT_rnglists_base row to include a checkmark in the "Skeleton" column.

(DW_AT_rnglists_base is already correctly listed under DW_TAG_skeleton_unit in 
Appendix A, attributes by tag)

Figure B.2, page 278-279

  Include a block for .debug_rnglists, with an edge to it from ".debug_info 
  (Skeleton CU)"

  this edge should have a description the same as the matching edge in Figure B.1:
    " .debug_info to .debug_rnglists 
      An attribute value of class rnglist (specifically form DW_FORM_rnglistx or
  DW_FORM_sec_offset) is an index or offset within the .debug_rnglists section of 
  a range list."



-- 
2022-03-21:  Accepted.