[Dwarf-Discuss] Segment selectors for the range list table.
Michael Eager
eager@eagercon.com
Thu Jul 16 20:07:14 GMT 2020
> Perhaps it's more like Paul was postulating - that the spec assumes code
> is in a code segment/doesn't need to be clarified. (but that gets a bit
> confused in debug_aranges - if it only is meant to contain code (not
> data), why does it need a segment selector - and also in the DIEs - if
> code is always in a known/assumable segment then why can you vary
> segment for low_pc/high_pc/ranges?)
No, the spec says what it says. There are no restriction on where code
or data are located.
> AFAIK, all addresses can be segmented addresses, except in the line
> table where it isn't needed.
>
> Perhaps we should have (long ago) required flat/linear addresses for
> x86
> instead of segmented addresses.
>
>
> What's the line table's?segment_selector_size (in the DWARFv5 header)
> for? (this sort of agrees and disagrees with you - it's there, but it's
> not used in any part of the debug_line format that I can see)
It may be there for consistency across all headers.
> debug_addr supports segment selectors - in the debug_addr header it has
> a field for "segment selector size" and the entries in the address list
> are "segment/address pairs.".
>
> So now there's two ways a segment selector for an address could be
> specified - if you had a DW_TAG_subprogram with a DW_AT_low_pc using
> addrx into a debug_addr with a non-zero segment selector and the
> subprogram also had a DW_AT_segment, wonder which one's meant to win.
Again, FORM_addrx doesn't mean the same as DW_AT_segment.
They are orthogonal concepts. Compression techniques, like FORM_addrx,
should not be used to describe architectural features.
--
Michael Eager
More information about the Dwarf-discuss
mailing list