diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-05 06:38:00 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-05 06:38:00 +0000 |
commit | a162642d80973c1ca52bf58e0d776060d9746d75 (patch) | |
tree | 896f7a166c18e6beb1d9780adbc86727e586a907 /sysdeps/generic/libc-tls.c | |
parent | 2a185b31a8e3a50fc5fccadfe3c1f7110686baca (diff) | |
download | glibc-a162642d80973c1ca52bf58e0d776060d9746d75.tar.gz glibc-a162642d80973c1ca52bf58e0d776060d9746d75.tar.xz glibc-a162642d80973c1ca52bf58e0d776060d9746d75.zip |
* sysdeps/generic/libc-tls.c (__libc_setup_tls): Make the phdr loop
actually iterate over the elements. Fix typo p_type -> p_vaddr. * include/pthread.h: Don't declare __pthread_initialize_minimal as weak here; we declare it weak or strong in the one place we use it. * sysdeps/generic/libc-start.c: ... which is here. Don't make the decl weak if [USE_TLS], since static programs need TLS setup even when single-threaded.
Diffstat (limited to 'sysdeps/generic/libc-tls.c')
-rw-r--r-- | sysdeps/generic/libc-tls.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sysdeps/generic/libc-tls.c b/sysdeps/generic/libc-tls.c index 6b9a746dd8..6c01f417c5 100644 --- a/sysdeps/generic/libc-tls.c +++ b/sysdeps/generic/libc-tls.c @@ -57,14 +57,12 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign) size_t max_align = tcbalign; size_t loadaddr = ~0ul; size_t tcb_offset; + ElfW(Phdr) *phdr; /* Look through the TLS segment if there is any. */ if (_dl_phdr != NULL) - { - ElfW(Phdr) *phdr = _dl_phdr; - size_t phnum = _dl_phnum; - - while (phnum-- > 0) + for (phdr = _dl_phdr; phdr < &_dl_phdr[_dl_phnum]; ++phdr) + { if (phdr->p_type == PT_TLS) { /* Remember the values we need. */ @@ -80,7 +78,7 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign) /* We have to find the load address which is not easy. Look for the load segment with the lowest address. */ if (phdr->p_vaddr < loadaddr) - loadaddr = phdr->p_type; + loadaddr = phdr->p_vaddr; } } |