Alexandre Julliard : loader: Start phasing out the LinuxThreads support.
Alexandre Julliard
julliard at winehq.org
Thu Feb 12 11:14:40 CST 2009
Module: wine
Branch: master
Commit: 4ccf78fbcd6df296365a22a41855c9287360596b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ccf78fbcd6df296365a22a41855c9287360596b
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Feb 12 11:42:06 2009 +0100
loader: Start phasing out the LinuxThreads support.
---
loader/glibc.c | 14 +++++++++++++-
loader/kthread.c | 8 --------
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/loader/glibc.c b/loader/glibc.c
index 28a8d19..e312cf3 100644
--- a/loader/glibc.c
+++ b/loader/glibc.c
@@ -56,11 +56,23 @@ static void *xmalloc( size_t size )
/* separate thread to check for NPTL and TLS features */
static void *needs_pthread( void *arg )
{
+ const char *loader;
pid_t tid = gettid();
/* check for NPTL */
if (tid != -1 && tid != getpid()) return (void *)1;
/* 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 */
diff --git a/loader/kthread.c b/loader/kthread.c
index c791ef6..fcdd34d 100644
--- a/loader/kthread.c
+++ b/loader/kthread.c
@@ -907,14 +907,6 @@ void __pthread_initialize(void)
if (!done)
{
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_sigaction = wine_dlsym( RTLD_NEXT, "sigaction", NULL, 0 );
libc_uselocale = wine_dlsym( RTLD_DEFAULT, "uselocale", NULL, 0 );
More information about the wine-cvs
mailing list