[PATCH v2 4/4] x86: Use typeof_member style in RSEQ area access expressions
Florian Weimer
fweimer@redhat.com
Tue Sep 30 12:16:03 GMT 2025
* Uros Bizjak:
> Update RSEQ access macros to use `((struct rseq_area *)0)->member`
> in _Static_assert and __typeof expressions, instead of
> RSEQ_SELF()->member. This adopts the typeof_member style, avoiding
> reliance on RSEQ_SELF for compile-time expressions.
>
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> ---
> sysdeps/i386/nptl/rseq-access.h | 20 ++++++++++----------
> sysdeps/x86_64/64/nptl/rseq-access.h | 24 ++++++++++++------------
> sysdeps/x86_64/x32/nptl/rseq-access.h | 12 ++++++------
> 3 files changed, 28 insertions(+), 28 deletions(-)
>
> diff --git a/sysdeps/i386/nptl/rseq-access.h b/sysdeps/i386/nptl/rseq-access.h
> index 753152cb58..0dd0cbb180 100644
> --- a/sysdeps/i386/nptl/rseq-access.h
> +++ b/sysdeps/i386/nptl/rseq-access.h
> @@ -19,9 +19,9 @@
> /* Read member of the RSEQ area directly. */
> #define RSEQ_GETMEM(member) \
> ({ \
> - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
> - || sizeof (RSEQ_SELF()->member) == 4 \
> - || sizeof (RSEQ_SELF()->member) == 8, \
> + _Static_assert (sizeof (((struct rseq_area *)0)->member) == 1 \
> + || sizeof (((struct rseq_area *)0)->member) == 4 \
> + || sizeof (((struct rseq_area *)0)->member) == 8, \
> "size of rseq data"); \
> ((struct rseq_area __seg_gs *)__rseq_offset)->member; \
> })
I think we use (struct rseq_area) {}.member in other contexts. It
avoids the compile-time null pointer dereference.
Thanks,
Florian
More information about the Libc-alpha
mailing list