This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Fission loc.dwo and DWARFv5 loclists support
- From: David Blaikie <dblaikie at gmail dot com>
- To: "gdb at sourceware dot org" <gdb at sourceware dot org>
- Cc: Jan Kratochvil <jan dot kratochvil at redhat dot com>, dje <dje at google dot com>
- Date: Thu, 25 Oct 2018 15:04:44 -0700
- Subject: Fission loc.dwo and DWARFv5 loclists support
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