1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00
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.
This commit is contained in:
Ulrich Drepper
2003-07-31 07:42:20 +00:00
parent 9722e6f3e2
commit adc12574e5
17 changed files with 472 additions and 6 deletions

View File

@ -303,6 +303,16 @@ dl_open_worker (void *a)
}
#ifdef USE_TLS
/* Do static TLS initialization now if it has been delayed because
the TLS template might not be fully relocated at _dl_allocate_static_tls
time. */
for (l = new; l; l = l->l_next)
if (l->l_need_tls_init)
{
l->l_need_tls_init = 0;
GL(dl_init_static_tls) (l);
}
/* We normally don't bump the TLS generation counter. There must be
actually a need to do this. */
any_tls = false;