diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index 125cf96..bb47952 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -101,10 +101,10 @@ extern void _start(void); #ifdef __UCLIBC_HAS_SSP__ # include uintptr_t stack_chk_guard; +uintptr_t __stack_chk_guard attribute_relro; # ifndef THREAD_SET_STACK_GUARD /* Only exported for architectures that don't store the stack guard canary * in local thread area. */ -uintptr_t __stack_chk_guard attribute_relro; # ifdef __UCLIBC_HAS_SSP_COMPAT__ strong_alias(__stack_chk_guard,__guard) # endif @@ -935,13 +935,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, #ifdef __UCLIBC_HAS_SSP__ /* Set up the stack checker's canary. */ stack_chk_guard = _dl_setup_stack_chk_guard (); + __stack_chk_guard = stack_chk_guard; # ifdef THREAD_SET_STACK_GUARD THREAD_SET_STACK_GUARD (stack_chk_guard); # ifdef __UCLIBC_HAS_SSP_COMPAT__ __guard = stack_chk_guard; # endif -# else - __stack_chk_guard = stack_chk_guard; # endif #endif diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c index f7e45c6..b527068 100644 --- a/libc/misc/internals/__uClibc_main.c +++ b/libc/misc/internals/__uClibc_main.c @@ -43,13 +43,13 @@ void *__libc_stack_end = NULL; # ifdef __UCLIBC_HAS_SSP__ # include +/* for gcc-4.1 non-TLS */ +uintptr_t __stack_chk_guard attribute_relro; # ifndef THREAD_SET_STACK_GUARD /* Only exported for architectures that don't store the stack guard canary * in thread local area. */ # include uintptr_t stack_chk_guard; -/* for gcc-4.1 non-TLS */ -uintptr_t __stack_chk_guard attribute_relro; /* for gcc-3.x + Etoh ssp */ # ifdef __UCLIBC_HAS_SSP_COMPAT__ # ifdef __HAVE_SHARED__