loader: Start phasing out the LinuxThreads support.

This commit is contained in:
Alexandre Julliard 2009-02-12 11:42:06 +01:00
parent b58ef6bff6
commit 4ccf78fbcd
2 changed files with 13 additions and 9 deletions

View File

@ -56,11 +56,23 @@ static void *xmalloc( size_t size )
/* separate thread to check for NPTL and TLS features */ /* separate thread to check for NPTL and TLS features */
static void *needs_pthread( void *arg ) static void *needs_pthread( void *arg )
{ {
const char *loader;
pid_t tid = gettid(); pid_t tid = gettid();
/* check for NPTL */ /* check for NPTL */
if (tid != -1 && tid != getpid()) return (void *)1; if (tid != -1 && tid != getpid()) return (void *)1;
/* check for TLS glibc */ /* check for TLS glibc */
return (void *)(wine_get_gs() != 0); if (wine_get_gs() != 0) return (void *)1;
/* check for exported epoll_create to detect new glibc versions without TLS */
if (wine_dlsym( RTLD_DEFAULT, "epoll_create", NULL, 0 ))
fprintf( stderr,
"wine: glibc >= 2.3 without NPTL or TLS is not a supported combination.\n"
" Please upgrade to a glibc with NPTL support.\n" );
else
fprintf( stderr,
"wine: Your C library is too old. You need at least glibc 2.3 with NPTL support.\n" );
if (!(loader = getenv( "WINELOADER" )) || !strstr( loader, "wine-kthread" ))
exit(1);
return 0;
} }
/* return the name of the Wine threading variant to use */ /* return the name of the Wine threading variant to use */

View File

@ -907,14 +907,6 @@ void __pthread_initialize(void)
if (!done) if (!done)
{ {
done = 1; done = 1;
/* check for exported epoll_create to detect glibc versions that we cannot support */
if (wine_dlsym( RTLD_DEFAULT, "epoll_create", NULL, 0 ))
{
static const char warning[] =
"wine: glibc >= 2.3 without NPTL or TLS is not a supported combination.\n"
" It will most likely crash. Please upgrade to a glibc with NPTL support.\n";
write( 2, warning, sizeof(warning)-1 );
}
libc_fork = wine_dlsym( RTLD_NEXT, "fork", NULL, 0 ); libc_fork = wine_dlsym( RTLD_NEXT, "fork", NULL, 0 );
libc_sigaction = wine_dlsym( RTLD_NEXT, "sigaction", NULL, 0 ); libc_sigaction = wine_dlsym( RTLD_NEXT, "sigaction", NULL, 0 );
libc_uselocale = wine_dlsym( RTLD_DEFAULT, "uselocale", NULL, 0 ); libc_uselocale = wine_dlsym( RTLD_DEFAULT, "uselocale", NULL, 0 );