about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-11 01:30:15 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-11 01:30:15 +0000
commitf1cc669a8c8d1845e9fc350e52687f79ba6bd552 (patch)
tree7bcc0e1f9272f1e2ff85a53fad8e6e0f187f1e46
parenta330abe2cd2b8cf8dd78ba82dadeab725b41adae (diff)
downloadglibc-f1cc669a8c8d1845e9fc350e52687f79ba6bd552.tar.gz
glibc-f1cc669a8c8d1845e9fc350e52687f79ba6bd552.tar.xz
glibc-f1cc669a8c8d1845e9fc350e52687f79ba6bd552.zip
Update.
	* elf/dl-lookup.c: Include <tls.h>.
	* elf/do-lookup.h (FCT): Don't discard STT_TLS symbols.
-rw-r--r--ChangeLog3
-rw-r--r--elf/dl-lookup.c1
-rw-r--r--elf/do-lookup.h11
3 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 695a525be6..9187c28ef8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2002-02-10  Ulrich Drepper  <drepper@redhat.com>
 
+	* elf/dl-lookup.c: Include <tls.h>.
+	* elf/do-lookup.h (FCT): Don't discard STT_TLS symbols.
+
 	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): More changes
 	required by passing pointer to last element of the list.
 
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 8de301eaa8..521f032b2b 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -26,6 +26,7 @@
 #include "dl-hash.h"
 #include <dl-machine.h>
 #include <bits/libc-lock.h>
+#include <tls.h>
 
 #include <assert.h>
 
diff --git a/elf/do-lookup.h b/elf/do-lookup.h
index c316159fe1..cebc2ce300 100644
--- a/elf/do-lookup.h
+++ b/elf/do-lookup.h
@@ -83,9 +83,14 @@ FCT (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref,
 	      (type_class & (sym->st_shndx == SHN_UNDEF)))
 	    continue;
 
-	  if (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC)
-	    /* Ignore all but STT_NOTYPE, STT_OBJECT and STT_FUNC entries
-	       since these are no code/data definitions.  */
+	  if (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC
+#ifdef USE_TLS
+	      && ELFW(ST_TYPE) (sym->st_info) != STT_TLS
+#endif
+	      )
+	    /* Ignore all but STT_NOTYPE, STT_OBJECT and STT_FUNC
+	       entries (and STT_TLS if TLS is supported) since these
+	       are no code/data definitions.  */
 	    continue;
 
 	  if (sym != ref && strcmp (strtab + sym->st_name, undef_name))