Re: Aligning tcmalloc with glibc 2.35 rseq ABI

From: Carlos O'Donell
Date: Wed Feb 02 2022 - 17:30:21 EST


On 2/2/22 12:31, Carlos O'Donell wrote:
> On 2/2/22 10:01, Florian Weimer via Libc-alpha wrote:
>> * Mathieu Desnoyers:
>>
>>> More to the point: is ptrdiff_t the correct type here ? I think so.
>>> Do we want to revert the ABI and wait another 6 months before we
>>> bring back rseq into glibc just for this ? I'm not sure this limitation
>>> justifies it.
>>>
>>> So if there is a quick way to fix that before the official 2.35 release,
>>> I'm all for it, otherwise I cannot say that __rseq_offset being an "int"
>>> rather than a "ptrdiff_t" will make much real-life difference (unless
>>> I'm proven wrong). But we will be stuck with this quirk forever.
>>
>> I'm going to post a patch. It's fairly small.
>
> I'll review this as glibc release manager for glibc 2.35.
>
> We'll get this right before I cut the release.

I've reviewed the static linker relocation designs, and aside from the odd-duck
for ia64, we've used ptrdiff_t sized relocations, nominally 64-bits for the
64-bit targets (though on AArch64 -mtls-size admits at most 48-bits).

The ptrdiff_t change will be a part of the glibc 2.35 release:

commit 6c33b018438ee799c29486f21d43d8100bdbd597
Author: Florian Weimer <fweimer@xxxxxxxxxx>
Date: Wed Feb 2 22:37:20 2022 +0100

Linux: Use ptrdiff_t for __rseq_offset

This matches the data size initial-exec relocations use on most
targets.

Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
Reviewed-by: Carlos O'Donell <carlos@xxxxxxxxxx>

--
Cheers,
Carlos.