about summary refs log tree commit diff
path: root/sysdeps/generic/libc-tls.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-05 06:38:00 +0000
committerRoland McGrath <roland@gnu.org>2002-08-05 06:38:00 +0000
commita162642d80973c1ca52bf58e0d776060d9746d75 (patch)
tree896f7a166c18e6beb1d9780adbc86727e586a907 /sysdeps/generic/libc-tls.c
parent2a185b31a8e3a50fc5fccadfe3c1f7110686baca (diff)
downloadglibc-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.c10
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;
 	  }
     }