diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-12-20 08:49:27 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-12-20 08:49:27 +0000 |
commit | 676fde70c8940888bed31881ec9d0fd5c34f9dc0 (patch) | |
tree | bd680e1d2a7b269e51f1ffca66922ff4f2935bb4 /sysdeps | |
parent | 057c823fbef95bf0ddb2a33c109b82488390ecec (diff) | |
download | glibc-676fde70c8940888bed31881ec9d0fd5c34f9dc0.tar glibc-676fde70c8940888bed31881ec9d0fd5c34f9dc0.tar.gz glibc-676fde70c8940888bed31881ec9d0fd5c34f9dc0.tar.bz2 glibc-676fde70c8940888bed31881ec9d0fd5c34f9dc0.zip |
Update.
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.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/dl-sysdep.c | 23 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/system.c | 2 |
2 files changed, 18 insertions, 7 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index fbe5ad49e7..2a47a320da 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -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) { diff --git a/sysdeps/unix/sysv/linux/i386/system.c b/sysdeps/unix/sysv/linux/i386/system.c index aa33471fa4..c7287e473e 100644 --- a/sysdeps/unix/sysv/linux/i386/system.c +++ b/sysdeps/unix/sysv/linux/i386/system.c @@ -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 (); |