Fission loc.dwo and DWARFv5 loclists support

David Blaikie <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAENS6EuVRYpTrik_7oFHo2pepWpHwOLpMGA5LTqtRmfPv_tpnA@mail.gmail.com>
Hi there,

I have been experimenting with using
DW_LLE_GNU_base_address_selection_entry + DW_LLE_GNU_offset_pair (this
would allow the base_address to reuse an existing address (like the start
of the section/function) in the address pool - reducing the size of object
files (especially in optimized binaries that contain potentially many loc
lists with many entries) - but it turns out GDB doesn't support the
offset_pair, though it does appear to support the base address selection in
debug_loc.dwo (yet what's that support for? The other forms don't use base
addresses - so without offset_pair, base_address isn't used/useful?)

Conversely, it looks like the DWARFv5 finalized support in loclists /only/
supports base_address+offset_pair, not any other form (start_end,
start_length, default_location, plus the address pool referencing forms).

And it looks like this mutual exclusion (DWARFv5 /only/ using base address
relative, pre-standand Fission never using them) is built a bit further
into the implementation (
https://github.com/bminor/binutils-gdb/blob/master/gdb/dwarf2loc.c#L332 ).

Wondering if this is on anyone's radar/interest in fixing? It could be a
substantial savings in .o file size to use the relative forms.

(also, I'm curious - are the LLE_.*x (the DWARFv5 standard forms that
reference the address pool) forms already or going to be supported? The
code looks like it doesn't have any *x forms, but perhaps they're
normalized elsewhere?)

Thanks,
- Dave
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.