[PATCH v3 2/4] x86: Simplify stack and pointer guard macros

H.J. Lu hjl.tools@gmail.com
Wed Oct 8 02:59:48 GMT 2025


On Wed, Oct 1, 2025 at 8:31 PM Uros Bizjak <ubizjak@gmail.com> wrote:
>
> Replace manual casts with a direct `(__tcbhead_t __seg_gs *)0`
> dereferences for `stack_guard` and `pointer_guard`.  This makes
> the macros more straightforward and removes the dependency on
> <stdint.h>.
>
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> ---
>  sysdeps/i386/stackguard-macros.h   | 8 ++------
>  sysdeps/x86_64/stackguard-macros.h | 8 ++------
>  2 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/sysdeps/i386/stackguard-macros.h b/sysdeps/i386/stackguard-macros.h
> index 574a409584..2939934ef1 100644
> --- a/sysdeps/i386/stackguard-macros.h
> +++ b/sysdeps/i386/stackguard-macros.h
> @@ -1,7 +1,3 @@
> -#include <stdint.h>
> +#define STACK_CHK_GUARD (((tcbhead_t __seg_gs *)0)->stack_guard)
>
> -#define STACK_CHK_GUARD \
> -  (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, stack_guard))
> -
> -#define POINTER_CHK_GUARD \
> -  (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, pointer_guard))
> +#define POINTER_CHK_GUARD (((tcbhead_t __seg_gs *)0)->pointer_guard)
> diff --git a/sysdeps/x86_64/stackguard-macros.h b/sysdeps/x86_64/stackguard-macros.h
> index 1d4c620ff1..77f13c986d 100644
> --- a/sysdeps/x86_64/stackguard-macros.h
> +++ b/sysdeps/x86_64/stackguard-macros.h
> @@ -1,7 +1,3 @@
> -#include <stdint.h>
> +#define STACK_CHK_GUARD (((tcbhead_t __seg_fs *)0)->stack_guard)
>
> -#define STACK_CHK_GUARD \
> -  (*(uintptr_t __seg_fs *) offsetof (tcbhead_t, stack_guard))
> -
> -#define POINTER_CHK_GUARD \
> -  (*(uintptr_t __seg_fs *) offsetof (tcbhead_t, pointer_guard))
> +#define POINTER_CHK_GUARD (((tcbhead_t __seg_fs *)0)->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