[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