diff options
Diffstat (limited to 'ldso')
-rw-r--r-- | ldso/ldso/dl-tls.c | 5 | ||||
-rw-r--r-- | ldso/ldso/ldso.c | 26 |
2 files changed, 17 insertions, 14 deletions
diff --git a/ldso/ldso/dl-tls.c b/ldso/ldso/dl-tls.c index 52b7aa534..d2808f968 100644 --- a/ldso/ldso/dl-tls.c +++ b/ldso/ldso/dl-tls.c @@ -842,7 +842,10 @@ __tls_get_addr (GET_ADDR_ARGS) void *p; if (__builtin_expect (dtv[0].counter != _dl_tls_generation, 0)) - the_map = _dl_update_slotinfo (GET_ADDR_MODULE); + { + the_map = _dl_update_slotinfo (GET_ADDR_MODULE); + dtv = THREAD_DTV (); + } p = dtv[GET_ADDR_MODULE].pointer.val; diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index 1f5c87a0d..9903b1ceb 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -376,19 +376,6 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, _dl_init_static_tls = &_dl_nothread_init_static_tls; #endif -#ifdef __UCLIBC_HAS_SSP__ - /* Set up the stack checker's canary. */ - stack_chk_guard = _dl_setup_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 - /* At this point we are now free to examine the user application, * and figure out which libraries are supposed to be called. Until * we have this list, we will not be completely ready for dynamic @@ -945,6 +932,19 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, tcbp = init_tls (); } #endif +#ifdef __UCLIBC_HAS_SSP__ + /* Set up the stack checker's canary. */ + stack_chk_guard = _dl_setup_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 + _dl_debug_early("Beginning relocation fixups\n"); |