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