On 2023-08-03 22:47:01+0800, Zhangjin Wu wrote: > This allows to generate smaller text/data/dec size. > > As the _start_c() function added by crt.h, __stack_chk_init() is called > from _start_c() instead of the assembly _start. So, it is able to mark > it with static now. > > Signed-off-by: Zhangjin Wu <falcon@xxxxxxxxxxx> Reviewed-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx> > --- > tools/include/nolibc/crt.h | 2 +- > tools/include/nolibc/stackprotector.h | 5 ++--- > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/tools/include/nolibc/crt.h b/tools/include/nolibc/crt.h > index 32e128b0fb62..a5f33fef1672 100644 > --- a/tools/include/nolibc/crt.h > +++ b/tools/include/nolibc/crt.h > @@ -10,7 +10,7 @@ > char **environ __attribute__((weak)); > const unsigned long *_auxv __attribute__((weak)); > > -void __stack_chk_init(void); > +static void __stack_chk_init(void); > static void exit(int); > > void _start_c(long *sp) > diff --git a/tools/include/nolibc/stackprotector.h b/tools/include/nolibc/stackprotector.h > index b620f2b9578d..13f1d0e60387 100644 > --- a/tools/include/nolibc/stackprotector.h > +++ b/tools/include/nolibc/stackprotector.h > @@ -37,8 +37,7 @@ void __stack_chk_fail_local(void) > __attribute__((weak,section(".data.nolibc_stack_chk"))) > uintptr_t __stack_chk_guard; > > -__attribute__((weak,section(".text.nolibc_stack_chk"))) __no_stack_protector > -void __stack_chk_init(void) > +static __no_stack_protector void __stack_chk_init(void) > { > my_syscall3(__NR_getrandom, &__stack_chk_guard, sizeof(__stack_chk_guard), 0); > /* a bit more randomness in case getrandom() fails, ensure the guard is never 0 */ > @@ -46,7 +45,7 @@ void __stack_chk_init(void) > __stack_chk_guard ^= (uintptr_t) &__stack_chk_guard; > } > #else /* !defined(_NOLIBC_STACKPROTECTOR) */ > -__inline__ void __stack_chk_init(void) {} > +static void __stack_chk_init(void) {} > #endif /* defined(_NOLIBC_STACKPROTECTOR) */ > > #endif /* _NOLIBC_STACKPROTECTOR_H */ > -- > 2.25.1 >