[PATCH 2/2] i386: Use __seg_gs qualifiers in {STACK, POINTER}_CHK_GUARD macros
H.J. Lu
hjl.tools@gmail.com
Wed Sep 10 12:29:01 GMT 2025
On Tue, Sep 9, 2025 at 9:43 AM Uros Bizjak <ubizjak@gmail.com> wrote:
>
> Use the __seg_gs named address space qualifiers to cast reads of
> the guard values in the TCB as %gs: prefixed addresses.
>
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> Cc: H.J.Lu <hjl.tools@gmail.com>
> Cc: Florian Weimer <fweimer@redhat.com>
> Cc: Carlos O'Donell <carlos@redhat.com>
> ---
> sysdeps/i386/stackguard-macros.h | 9 ++-------
> 1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/sysdeps/i386/stackguard-macros.h b/sysdeps/i386/stackguard-macros.h
> index 039762927c..574a409584 100644
> --- a/sysdeps/i386/stackguard-macros.h
> +++ b/sysdeps/i386/stackguard-macros.h
> @@ -1,12 +1,7 @@
> #include <stdint.h>
>
> #define STACK_CHK_GUARD \
> - ({ uintptr_t x; asm ("movl %%gs:0x14, %0" : "=r" (x)); x; })
> + (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, stack_guard))
>
> #define POINTER_CHK_GUARD \
> - ({ \
> - uintptr_t x; \
> - asm ("movl %%gs:%c1, %0" : "=r" (x) \
> - : "i" (offsetof (tcbhead_t, pointer_guard))); \
> - x; \
> - })
> + (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, pointer_guard))
> --
> 2.51.0
>
LGTM.
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Thanks.
--
H.J.
More information about the Libc-alpha
mailing list