about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-07-31 07:42:20 +0000
committerUlrich Drepper <drepper@redhat.com>2003-07-31 07:42:20 +0000
commitadc12574e555ec7d6ba3969eed4f829705c235ab (patch)
treecaff1741b560ff8258ace64120781354e62b56c2 /sysdeps
parent9722e6f3e26822835542c1c49048d855a5881510 (diff)
downloadglibc-adc12574e555ec7d6ba3969eed4f829705c235ab.tar.gz
glibc-adc12574e555ec7d6ba3969eed4f829705c235ab.tar.xz
glibc-adc12574e555ec7d6ba3969eed4f829705c235ab.zip
Update.
2003-07-30  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value,
	call dl_signal_error directly.  If already relocated, call
	GL(dl_init_static_tls) directly, otherwise queue it for later.
	(CHECK_STATIC_TLS): Undo 2003-07-24 change.
	* elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls).
	* elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls
	for all static TLS initializations delayed in _dl_allocate_static_tls.
	* elf/dl-support.c (_dl_init_static_tls): New variable.
	* include/link.h (struct link_map): Add l_need_tls_init.
	* sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls.
	(_dl_nothread_init_static_tls): New prototype.
	(_dl_allocate_static_tls): Adjust prototype.

	* elf/tls-macros.h (VAR_INT_DEF): Add alignment directive.

	elf_machine_rela_relative): Adjust.
	(CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/ldsodefs.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 565edb3fd8..b647ea45e7 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -390,6 +390,8 @@ struct rtld_global
   EXTERN void *_dl_initial_dtv;
   /* Generation counter for the dtv.  */
   EXTERN size_t _dl_tls_generation;
+
+  EXTERN void (*_dl_init_static_tls) (struct link_map *);
 #endif
 
 #ifdef NEED_DL_SYSINFO
@@ -797,7 +799,7 @@ rtld_hidden_proto (_dl_allocate_tls)
 extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp)
      internal_function;
 
-extern int _dl_allocate_static_tls (struct link_map *map)
+extern void _dl_allocate_static_tls (struct link_map *map)
      internal_function attribute_hidden;
 
 /* These are internal entry points to the two halves of _dl_allocate_tls,
@@ -816,6 +818,10 @@ rtld_hidden_proto (_dl_deallocate_tls)
 extern void *_dl_tls_symaddr (struct link_map *map, const ElfW(Sym) *ref)
      internal_function;
 
+#if defined USE_TLS
+extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
+#endif
+
 __END_DECLS
 
 #endif /* ldsodefs.h */