From 2a76f7ef1477c3e33dce2d9d7c3005c660de18a0 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 15 Aug 2002 13:04:07 +0000 Subject: Update. 2002-08-15 Ulrich Drepper * csu/Makefile: Define elide-routines.os not static-only-routines. * include/sched.h (__clone): Add varargs at the end. * elf/rtld.c (_dl_start): All TLS_INIT_TP to fail and stop in that case. (TLS_INIT_HELPER): If defined use it. * sysdeps/generic/libc-tls.c (TLS_INIT_HELPER): Likewise. * locale/loadarchive.c (archfname): Add missing slash. * sysdeps/generic/strtold.c (__strtold_internal): Add libc_hidden_def. * wcsmbs/wcstold.c (__wcstold_internal): Add libc_hidden_def. --- elf/rtld.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'elf/rtld.c') diff --git a/elf/rtld.c b/elf/rtld.c index 8a144730ca..5c426000ad 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -117,6 +117,11 @@ static hp_timing_t relocate_time; static hp_timing_t load_time; #endif +/* Additional definitions needed by TLS initialization. */ +#ifdef TLS_INIT_HELPER +TLS_INIT_HELPER +#endif + static ElfW(Addr) _dl_start_final (void *arg, struct link_map *bootstrap_map_p, hp_timing_t start_time); @@ -257,10 +262,12 @@ _dl_start (void *arg) INSTALL_DTV ((char *) tlsblock + bootstrap_map.l_tls_offset, initdtv); - TLS_INIT_TP ((char *) tlsblock + bootstrap_map.l_tls_offset); + if (TLS_INIT_TP ((char *) tlsblock + bootstrap_map.l_tls_offset) != 0) + _dl_fatal_printf ("cannot setup thread-local storage\n"); # elif TLS_DTV_AT_TP INSTALL_DTV (tlsblock, initdtv); - TLS_INIT_TP (tlsblock); + if (TLS_INIT_TP (tlsblock) != 0) + _dl_fatal_printf ("cannot setup thread-local storage\n"); # else # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" # endif -- cgit v1.2.3