[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