diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-07-31 07:42:20 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-07-31 07:42:20 +0000 |
commit | adc12574e555ec7d6ba3969eed4f829705c235ab (patch) | |
tree | caff1741b560ff8258ace64120781354e62b56c2 /elf/dl-open.c | |
parent | 9722e6f3e26822835542c1c49048d855a5881510 (diff) | |
download | glibc-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 'elf/dl-open.c')
-rw-r--r-- | elf/dl-open.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/elf/dl-open.c b/elf/dl-open.c index aadd8f55f6..fcda37676d 100644 --- a/elf/dl-open.c +++ b/elf/dl-open.c @@ -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; |