Issue 211022.1: Empty range list entry

Author: David Anderson
Champion: David Anderson
Date submitted: 2021-10-22
Date revised: 2021-10-22
Date closed: 2022-08-08
Type: Clarification
Status: Accepted with modifications
DWARF Version: 6
Section 2.17.3, pg 53
DWARF5 Section 2.17.3 Non-Continguous Address Ranges
.debug_rnglists
Page 53 line 17.

"A bounded range entry whose beginning and ending address
offsets are equal (including zero) indicates an empty
range and may be ignored."

Only DW_RLE_offset_pair has such things as 'address offsets' defined.

On the other hand, DW_RLE_start_end, DW_RLE_startx_length,
and other DW_RLE range entries never mention address offsets.

This seems to require that the quoted sentence be changed to be 
something more meaningful.

Since it's not very useful to create extra data the address table
etc to allow the various forms to work it may be that the text should be

"A bounded range entry whose beginning and ending values (in a start,
end pair in any form) or whose length is zero (in a start,length 
pair in any form) indicates an empty range and may be ignored."

In other words just testing the value directly recorded (without further 
evaluating it) suffices to know the range is empty.


BACKGROUND

DWARF 4 page 39, non-normative

"A range list entry (but not a base address selection or end of list 
entry) whose beginning and ending addresses are equal has no effect 
because the size of the range covered by such an entry is zero."

DWARF3 is essentially identical (Page 33)

GNU LD, for DWARF4 and earlier uses 1,1 for an empty range in cases
where ld has eliminated the code a range applied to.
See https://reviews.llvm.org/D31464

My thanks to the folks at hpe.com that notified me
that this empty-range concept is in use.

The suggested replacement text

"A bounded range entry whose beginning and ending values (in a start,
end pair in any form) or whose length is zero (in a start,length pair in
any form) indicates an empty range and may be ignored." Is missing a
crucial word.

Insert the word 'match' as follows.
...whose beginning and ending values match (in a start,

--
2021-10-22: Updated replacement text
2022-08-08: Accepted with modifications:
            Remove "entry" and "offset".
            Make text non-normative.