[llvm-dev] Collecting address ranges in DWARFUnit::collectAddressRanges.

David Blaikie via llvm-dev
2017-11-16T20:20:08Z

On Thu, Nov 16, 2017 at 11:44 AM Robinson, Paul <paul.robinson at
sony.com>
wrote:

> There's no requirement that DW_AT_ranges (or high/low_pc) appear on the
> skeleton CU rather than the DWO CU. So it's quite possible that to get
the
> address ranges covered by the CU one would need to look in the DWO, I
think?
>
> Is that not correct/have I misunderstood something there?
>
> The DWO isn't supposed to contain addresses (because it isn't
supposed to
> contain relocations).  In DWARF 5 the DWO can have FORM_addrx references to
> the .debug_addr section in the main .o file, which allows the DWO to
> contain DIEs/attributes that should have address values, because the actual
> address values are still in the .o file; but before that anything
that's an
> address really can't go into the DWO.
>

DWOs didn't exist (in a standard form) before DWARF 5, right? Insofar as
they did exist (in a non-standard form) they have always supported
FORM_addr_index to reference addresses in .debug_addr in the main .o.

But the low_pc/high_pc/ranges attributes would appear in the .dwo, using a
FORM_addr_index/FORM_addrx - so if you want to collect the address range of
a CU you might need to load the .dwo to do so. That's the crux of what I
was getting at: To get the address range a CU covers, you may need to read
the .dwo.


>
>
> Unless I am also misunderstanding something…
>
> --paulr
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171116/60a4a68d/attachment.html>