[V3 10/36] [SFrame-V3] include: libsframe: bfd: gas: testsuite: support for signed 64-bit offset in SFrame FDE
Jan Beulich
jbeulich@suse.com
Fri Jan 16 09:16:37 GMT 2026
On 16.01.2026 09:46, Indu Bhagat wrote:
> On 1/15/26 11:52 PM, Jan Beulich wrote:
>> On 13.01.2026 12:12, Indu Bhagat via Binutils wrote:
>>> --- a/include/sframe.h
>>> +++ b/include/sframe.h
>>> @@ -247,9 +247,9 @@ typedef struct sframe_func_desc_entry_v2
>>> typedef struct sframe_func_desc_entry_v3
>>> {
>>> - /* Function start address. Encoded as a signed offset, relative to the
>>> - beginning of the current FDE. */
>>> - int32_t sfde_func_start_address;
>>> + /* Offset to the function start address. Encoded as a signed offset,
>>> + relative to the beginning of the current FDE. */
>>> + int64_t sfde_func_start_offset;
>>> /* Size of the function in bytes. */
>>> uint32_t sfde_func_size;
>>
>> I realize I'm late now with comments, seeing that the whole series was
>> committed, but still: While the v2 cover letter mentions mitigations
>> towards the size increase, using 64 bits uniformly still feels odd to
>> me. Those other size reductions are beneficial indepenently, and for
>> not overly large binaries it would imo be beneficial if they could get
>> away with just 32 bits of storage per function start offset. (Likely
>> this was discussed before,
>>
>
> Allowing 32bits per function start offset was given a thought. (In fact initially I had implemented the 64-bit func start offset usage enabled only via an explicit --gsframe64)
>
> I think the main concern was support for static links. ld will not be able to mix input objects where some have 32-bit func start offset and others have 64-bit func start offset. Linker would need to "upgrade" 32-bit relocations to 64-bit if needed in that case, something that we thought wouldnt be easy/possible/recommended to do.
Why would that be? Can't each struct instance flag what width it uses?
Jan
More information about the Binutils
mailing list