Fission loc.dwo and DWARFv5 loclists support

David Blaikie dblaikie@gmail.com
Thu Oct 25 22:05:00 GMT 2018


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



More information about the Gdb mailing list