Since the only test of __stack_chk_guard in GCC is declared as an integer:
#ifdef __LP64__
const unsigned long int __stack_chk_guard = 0x2d853605a4d9a09cUL;
#else
const unsigned long int __stack_chk_guard = 0xdd2cc927UL;
#endif
and it is natural to assign an integer to __stack_chk_guard,
commit
c05b5e5d8cb660ed43159d66fd669c20746d6bea
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Sep 12 18:52:39 2025 -0700
c/c++: Declare stack protection guard as a global symbol
declared __stack_chk_guard as uintptr_t if it is an internal global
symbol. Change __stack_chk_guard in libssp to match the internal
symbol type.
PR c/121911
* ssp.c: Include <stdint.h>. Change __stack_chk_guard to
uintptr_t.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
#ifdef HAVE_SYSLOG_H
# include <syslog.h>
#endif
+#include <stdint.h>
-void *__stack_chk_guard = 0;
+uintptr_t __stack_chk_guard = 0;
static void __attribute__ ((constructor))
__guard_setup (void)