about summary refs log tree commit diff
path: root/elf/rtld.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-08-15 13:04:07 +0000
committerUlrich Drepper <drepper@redhat.com>2002-08-15 13:04:07 +0000
commit2a76f7ef1477c3e33dce2d9d7c3005c660de18a0 (patch)
treed5388da94a821752ba13aa93e34914f3f803932c /elf/rtld.c
parentfaa5b9b31c356df69d9cc6b37be71255bcb0e307 (diff)
downloadglibc-2a76f7ef1477c3e33dce2d9d7c3005c660de18a0.tar.gz
glibc-2a76f7ef1477c3e33dce2d9d7c3005c660de18a0.tar.xz
glibc-2a76f7ef1477c3e33dce2d9d7c3005c660de18a0.zip
Update.
2002-08-15  Ulrich Drepper  <drepper@redhat.com>

	* 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.
Diffstat (limited to 'elf/rtld.c')
-rw-r--r--elf/rtld.c11
1 files changed, 9 insertions, 2 deletions
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