[PATCH] x86-64: Move nptl/rseq-access.h to nptl/64 [BZ #32543]
Mathieu Desnoyers
mathieu.desnoyers@efficios.com
Sat Jan 11 15:23:44 GMT 2025
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.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the Libc-alpha
mailing list