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.
This commit is contained in:
parent
057c823fbe
commit
676fde70c8
10
ChangeLog
10
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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 ();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user