From 676fde70c8940888bed31881ec9d0fd5c34f9dc0 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 20 Dec 2002 08:49:27 +0000 Subject: Update. 2002-12-20 Ulrich Drepper * 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. --- sysdeps/generic/dl-sysdep.c | 23 +++++++++++++++++------ sysdeps/unix/sysv/linux/i386/system.c | 2 +- 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'sysdeps') 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 #include #include +#include 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 (); -- cgit 1.4.1