mirror of git://sourceware.org/git/glibc.git
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>
|
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
|
* sysdeps/unix/sysv/linux/i386/_exit.S: Use ENTER_KERNEL instead of
|
||||||
int $0x80.
|
int $0x80.
|
||||||
* sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
|
* sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
|
||||||
|
|
|
||||||
|
|
@ -158,6 +158,11 @@ is_hwcap_platform (const char *name)
|
||||||
if (hwcap_idx != -1)
|
if (hwcap_idx != -1)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
#ifdef USE_TLS
|
||||||
|
if (strcmp (name, "tls") == 0)
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -190,7 +195,14 @@ path_hwcap (const char *path)
|
||||||
{
|
{
|
||||||
h = _dl_string_platform (ptr + 1);
|
h = _dl_string_platform (ptr + 1);
|
||||||
if (h == (uint64_t) -1)
|
if (h == (uint64_t) -1)
|
||||||
break;
|
{
|
||||||
|
#ifdef USE_TLS
|
||||||
|
if (strcmp (ptr + 1, "tls") == 0)
|
||||||
|
h = 63;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
hwcap += 1ULL << h;
|
hwcap += 1ULL << h;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
#include <dl-procinfo.h>
|
#include <dl-procinfo.h>
|
||||||
#include <dl-osinfo.h>
|
#include <dl-osinfo.h>
|
||||||
#include <hp-timing.h>
|
#include <hp-timing.h>
|
||||||
|
#include <tls.h>
|
||||||
|
|
||||||
extern char **_environ attribute_hidden;
|
extern char **_environ attribute_hidden;
|
||||||
extern void _end 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)
|
if ((masked & (1UL << n)) != 0)
|
||||||
++cnt;
|
++cnt;
|
||||||
|
|
||||||
|
#ifdef USE_TLS
|
||||||
|
/* For TLS enabled builds always add 'tls'. */
|
||||||
|
++cnt;
|
||||||
|
#else
|
||||||
if (cnt == 0)
|
if (cnt == 0)
|
||||||
{
|
{
|
||||||
/* If we have platform name and no important capability we only have
|
/* If we have platform name and no important capability we only have
|
||||||
the base directory to search. */
|
the base directory to search. */
|
||||||
result = (struct r_strlenpair *) malloc (sizeof (*result));
|
result = (struct r_strlenpair *) malloc (sizeof (*result));
|
||||||
if (result == NULL)
|
if (result == NULL)
|
||||||
{
|
goto no_memory;
|
||||||
no_memory:
|
|
||||||
INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL,
|
|
||||||
N_("cannot create capability list"));
|
|
||||||
}
|
|
||||||
|
|
||||||
result[0].str = (char *) result; /* Does not really matter. */
|
result[0].str = (char *) result; /* Does not really matter. */
|
||||||
result[0].len = 0;
|
result[0].len = 0;
|
||||||
|
|
@ -309,6 +310,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
|
||||||
*sz = 1;
|
*sz = 1;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Create temporary data structure to generate result table. */
|
/* Create temporary data structure to generate result table. */
|
||||||
temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
|
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;
|
temp[m].len = platform_len;
|
||||||
++m;
|
++m;
|
||||||
}
|
}
|
||||||
|
#ifdef USE_TLS
|
||||||
|
temp[m].str = "tls";
|
||||||
|
temp[m].len = 3;
|
||||||
|
++m;
|
||||||
|
#endif
|
||||||
assert (m == cnt);
|
assert (m == cnt);
|
||||||
|
|
||||||
/* Determine the total size of all strings together. */
|
/* 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;
|
*sz = 1 << cnt;
|
||||||
result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total);
|
result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total);
|
||||||
if (result == NULL)
|
if (result == NULL)
|
||||||
goto no_memory;
|
{
|
||||||
|
no_memory:
|
||||||
|
INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL,
|
||||||
|
N_("cannot create capability list"));
|
||||||
|
}
|
||||||
|
|
||||||
if (cnt == 1)
|
if (cnt == 1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ cancel_handler (void *arg)
|
||||||
{
|
{
|
||||||
__kill (SIGKILL, *(pid_t *) 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 ();
|
DO_LOCK ();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue