[Dwarf-discuss] Proposal: Add Local and Indirect Strings to Name Index

Fāng-ruì Sòng maskray@google.com
Fri Mar 22 04:53:29 GMT 2024


On 2024-03-20, Cary Coutant wrote:
>>
>> Over on the generic-abi mailing list, Fang-Rui Song recently proposed a
>> new compressed relocation format for ELF, motivated in part by the number
>> of relocations for string in the .debug_names tables.

Yes, .debug_names relocations are part of the motivations.

>> Regardless of the
>> resolution of that proposal, some simple changes to the DWARF spec could
>> help eliminate a substantial number of those relocations. In fact, parts of
>> the split DWARF series of proposals in DWARF 5 were all about minimizing
>> the quantity of relocations (e.g., DW_FORM_addrx and DW_FORM_strx).
>>
>> This proposal adds an indirect string form to the name table (for use when
>> a non-split DWARF compilation is already using .debug_str_offsets), and a
>> local string pool in the name table (for use in a split-DWARF compilation).
>>
>
>This is proposal 240320.1 <https://dwarfstd.org/issues/240320.1.html>.
>
>-cary

Thanks for the proposal! The proposed changes look good to me.

* str_format==DW_FORM_strp
   + local_str_pool_size==0: index into `.debug_str` (current LLVM implementation): needs relocations, suitable for non-split DWARF
   + local_str_pool_size!=0: index into the local string pool, suitable for split DWARF
* str_format==DW_FORM_strx4: index into the CU's contribution (header `str_offsets`) to `.debug_str_offsets`, alternative for non-split DWARF

DW_FORM_strp8, 64-bit string section in DWARF32, is for theoretical possibility I guess.

There is a ld.lld --debug-names proposal to merge per-CU .debug_names sections like --gdb-index.
The string offset relocations lead to some complexity and slight efficiency issues.
A local string pool will simplify that.

The downside of a local string pool inside the .debug_names section is that linkers' SHF_MERGE|SHF_STRINGS deduplication is lost (primarily for non-inlined inline functions).


More information about the Dwarf-discuss mailing list