[PATCH] x86-64: Move nptl/rseq-access.h to nptl/64 [BZ #32543]
Sam James
sam@gentoo.org
Sun Jan 12 01:45:02 GMT 2025
Mathieu Desnoyers <mathieu.desnoyers@efficios.com> writes:
> On 11-Jan-2025 07:04:32 AM, Sam James wrote:
>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>>
>> > commit 494d65129ed5ae1154b75cc189bbdde5e9ecf1df
>> > Author: Michael Jeanson <mjeanson@efficios.com>
>> > Date: Thu Aug 1 10:35:34 2024 -0400
>> >
>> > nptl: Introduce <rseq-access.h> for RSEQ_* accessors
>> >
>> > added things like
>> >
>> > asm volatile ("movl %%fs:%P1(%q2),%0" \
>> > : "=r" (__value) \
>> > : "i" (offsetof (struct rseq_area, member)), \
>> > "r" (__rseq_offset));
>> >
>> > But this doesn't work for x32 when __rseq_offset is negative since the
>> > address is computed as
>> >
>> > FS + 32-bit to 64-bit zero extension of __rseq_offset
>> > + offsetof (struct rseq_area, member)
>> >
>> > Move x86_64/nptl/rseq-access.h to x86_64/nptl/64/rseq-access.h so that
>> > sysdeps/nptl/rseq-access.h is used for x32. This fixes BZ #32543.
>> >
>> > Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
>> > ---
>> > sysdeps/x86_64/nptl/{ => 64}/rseq-access.h | 0
>> > 1 file changed, 0 insertions(+), 0 deletions(-)
>> > rename sysdeps/x86_64/nptl/{ => 64}/rseq-access.h (100%)
>> >
>> > diff --git a/sysdeps/x86_64/nptl/rseq-access.h b/sysdeps/x86_64/nptl/64/rseq-access.h
>> > similarity index 100%
>> > rename from sysdeps/x86_64/nptl/rseq-access.h
>> > rename to sysdeps/x86_64/nptl/64/rseq-access.h
>>
>> OK, thanks.
>>
>> Michael et. al may have followup comments if they want to provide a
>> specialised impl for x32 of course.
>
> The approach proposed by Florian is my favorite (explicitly cast the
> input operand to long long int). The same code will then work for both
> x86-64 and x32.
WFM, thanks!
>
> Thanks,
>
> Mathieu
More information about the Libc-alpha
mailing list