diff --git a/porting/liteos_m/kernel/BUILD.gn b/porting/liteos_m/kernel/BUILD.gn index 664f9493766dfd946f73d9e9d96bb8b1890e23b0..cbb1dc28716714b423af7c9b56a592fe905878e6 100644 --- a/porting/liteos_m/kernel/BUILD.gn +++ b/porting/liteos_m/kernel/BUILD.gn @@ -47,6 +47,7 @@ static_library(libc) { "src/ctype/isxdigit.c", "src/ctype/tolower.c", "src/ctype/toupper.c", + "src/env/__stack_chk_fail.c", "src/errno/strerror.c", "src/exit/abort.c", "src/exit/assert.c", diff --git a/porting/liteos_m/kernel/src/env/__stack_chk_fail.c b/porting/liteos_m/kernel/src/env/__stack_chk_fail.c new file mode 100755 index 0000000000000000000000000000000000000000..ebd79ce8d14bafee93a68b09e45de216b1f0565f --- /dev/null +++ b/porting/liteos_m/kernel/src/env/__stack_chk_fail.c @@ -0,0 +1,20 @@ +#include +#include +#include "pthread_impl.h" + +uintptr_t __stack_chk_guard; + +void __init_ssp(void *entropy) +{ + if (entropy) memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t)); + else __stack_chk_guard = (uintptr_t)&__stack_chk_guard * 1103515245; +} + +void __stack_chk_fail(void) +{ + *(volatile char *)0=0; +} + +hidden void __stack_chk_fail_local(void); + +weak_alias(__stack_chk_fail, __stack_chk_fail_local);