kernel: Unified type of stack protection canary __stack_chk_guard. Extern declaration of __stack_chk_guard added volatile to the type while the declaration was non-volatile. This cause type check errors with compilers that declares the __stack_chk_guard variable in an internal pre-include header file (IAR). While I think the volatile keyword is unnecessary, I decided on keep it and add it to the declaration in kernel/compiler_stack_protect.c Tested with IAR ICCARM and the Zephyr SDK GCC. Signed-off-by: Lars-Ove Karlsson <lars-ove.karlsson@iar.com>
diff --git a/kernel/compiler_stack_protect.c b/kernel/compiler_stack_protect.c index 2ee2d81..928fdc6 100644 --- a/kernel/compiler_stack_protect.c +++ b/kernel/compiler_stack_protect.c
@@ -47,11 +47,11 @@ * The canary value gets initialized in z_cstart(). */ #ifdef CONFIG_STACK_CANARIES_TLS -__thread uintptr_t __stack_chk_guard; +__thread volatile uintptr_t __stack_chk_guard; #elif CONFIG_USERSPACE -K_APP_DMEM(z_libc_partition) uintptr_t __stack_chk_guard; +K_APP_DMEM(z_libc_partition) volatile uintptr_t __stack_chk_guard; #else -__noinit uintptr_t __stack_chk_guard; +__noinit volatile uintptr_t __stack_chk_guard; #endif /**