]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2005-02-22 Ulrich Drepper <drepper@redhat.com>
authorRoland McGrath <roland@gnu.org>
Sat, 26 Feb 2005 01:09:44 +0000 (01:09 +0000)
committerRoland McGrath <roland@gnu.org>
Sat, 26 Feb 2005 01:09:44 +0000 (01:09 +0000)
[BZ #719]
* sysdeps/generic/libc-tls.c (static_dtv): Size the same as the
slotinfo array.
(__libc_setup_tls): Initialize length of DTV based on array length.
* elf/dl-load.c: Revert last change.
* sysdeps/generic/dl-tls.c: Revert last change.

sysdeps/generic/libc-tls.c

index b5ecc3643682ad0bc6a826bca0032cb48cfec146..29d9d1e7ea12244b37d286332df8448cb91b303b 100644 (file)
@@ -34,8 +34,7 @@ extern ElfW(Phdr) *_dl_phdr;
 extern size_t _dl_phnum;
 
 
-/* DTV with just one element plus overhead.  */
-static dtv_t static_dtv[3];
+static dtv_t static_dtv[2 + TLS_SLOTINFO_SURPLUS];
 
 
 static struct
@@ -173,7 +172,7 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
                       & ~(max_align - 1));
 
   /* Initialize the dtv.  [0] is the length, [1] the generation counter.  */
-  static_dtv[0].counter = 1;
+  static_dtv[0].counter = (sizeof (static_dtv) / sizeof (static_dtv[0])) - 2;
   // static_dtv[1].counter = 0;                would be needed if not already done
 
   /* Initialize the TLS block.  */