Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 20 Dec 2002 08:49:27 +0000 (08:49 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 20 Dec 2002 08:49:27 +0000 (08:49 +0000)
2002-12-20  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): For TLS
builds add "tls" in the search path.
* elf/ldconfig.c (is_hwcap_platform): Also recognize "tls".
(path_hwcap): Recognize "tls".

* sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Use
__waitpid instead of waitpid.

ChangeLog
elf/ldconfig.c
sysdeps/generic/dl-sysdep.c
sysdeps/unix/sysv/linux/i386/system.c

index 526a4fc..6cbb349 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
+2002-12-20  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): For TLS
+       builds add "tls" in the search path.
+       * elf/ldconfig.c (is_hwcap_platform): Also recognize "tls".
+       (path_hwcap): Recognize "tls".
+
 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Use
+       __waitpid instead of waitpid.
+
        * sysdeps/unix/sysv/linux/i386/_exit.S: Use ENTER_KERNEL instead of
        int $0x80.
        * sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
index 7e813d4..1b501e6 100644 (file)
@@ -158,6 +158,11 @@ is_hwcap_platform (const char *name)
   if (hwcap_idx != -1)
     return 1;
 
+#ifdef USE_TLS
+  if (strcmp (name, "tls") == 0)
+    return 1;
+#endif
+
   return 0;
 }
 
@@ -190,7 +195,14 @@ path_hwcap (const char *path)
        {
          h = _dl_string_platform (ptr + 1);
          if (h == (uint64_t) -1)
-           break;
+           {
+#ifdef USE_TLS
+             if (strcmp (ptr + 1, "tls") == 0)
+               h = 63;
+             else
+#endif
+               break;
+           }
        }
       hwcap += 1ULL << h;
 
index fbe5ad4..2a47a32 100644 (file)
@@ -37,6 +37,7 @@
 #include <dl-procinfo.h>
 #include <dl-osinfo.h>
 #include <hp-timing.h>
+#include <tls.h>
 
 extern char **_environ attribute_hidden;
 extern void _end attribute_hidden;
@@ -291,17 +292,17 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
     if ((masked & (1UL << n)) != 0)
       ++cnt;
 
+#ifdef USE_TLS
+  /* For TLS enabled builds always add 'tls'.  */
+  ++cnt;
+#else
   if (cnt == 0)
     {
       /* If we have platform name and no important capability we only have
         the base directory to search.  */
       result = (struct r_strlenpair *) malloc (sizeof (*result));
       if (result == NULL)
-       {
-       no_memory:
-         INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL,
-                                   N_("cannot create capability list"));
-       }
+       goto no_memory;
 
       result[0].str = (char *) result; /* Does not really matter.  */
       result[0].len = 0;
@@ -309,6 +310,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
       *sz = 1;
       return result;
     }
+#endif
 
   /* Create temporary data structure to generate result table.  */
   temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
@@ -327,6 +329,11 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
       temp[m].len = platform_len;
       ++m;
     }
+#ifdef USE_TLS
+  temp[m].str = "tls";
+  temp[m].len = 3;
+  ++m;
+#endif
   assert (m == cnt);
 
   /* Determine the total size of all strings together.  */
@@ -344,7 +351,11 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
   *sz = 1 << cnt;
   result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total);
   if (result == NULL)
-    goto no_memory;
+    {
+    no_memory:
+      INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL,
+                               N_("cannot create capability list"));
+    }
 
   if (cnt == 1)
     {
index aa33471..c7287e4 100644 (file)
@@ -56,7 +56,7 @@ cancel_handler (void *arg)
 {
   __kill (SIGKILL, *(pid_t *) arg);
 
-  TEMP_FAILURE_RETRY (waitpid (*(pid_t *) arg, NULL, 0));
+  TEMP_FAILURE_RETRY (__waitpid (*(pid_t *) arg, NULL, 0));
 
   DO_LOCK ();