Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 3 Aug 2002 03:53:28 +0000 (03:53 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 3 Aug 2002 03:53:28 +0000 (03:53 +0000)
2002-08-02  Ulrich Drepper  <drepper@redhat.com>

* cancel.c (__pthread_perform_cleanup) [USE_TLS && HAVE___THREAD]:
Don't use p_libc_specific element in thread descriptor.

include/rpc/rpc.h
linuxthreads/ChangeLog
linuxthreads/cancel.c
resolv/nss_dns/dns-host.c
sunrpc/Versions
sunrpc/rpc_thread.c

index 9f90ae1..ea57791 100644 (file)
@@ -1,5 +1,6 @@
 #ifndef _RPC_RPC_H
 #include <sunrpc/rpc/rpc.h>
+#include <bits/libc-tsd.h>
 
 /* Now define the internal interfaces.  */
 extern unsigned long _create_xid (void);
@@ -43,9 +44,15 @@ extern void __rpc_thread_clnt_cleanup (void);
 extern void __rpc_thread_key_cleanup (void);
 
 extern void __rpc_thread_destroy (void);
+#if USE_TLS && HAVE___THREAD
+__libc_tsd_define (extern, RPC_VARS)
+#endif
 
 #define RPC_THREAD_VARIABLE(x) (__rpc_thread_variables()->x)
 
+libc_hidden_proto (__rpc_thread_svc_fdset)
+libc_hidden_proto (__rpc_thread_createerr)
+
 #endif /* _RPC_THREAD_SAFE_ */
 
 #endif
index 4b86627..b904593 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-02  Ulrich Drepper  <drepper@redhat.com>
+
+       * cancel.c (__pthread_perform_cleanup) [USE_TLS && HAVE___THREAD]:
+       Don't use p_libc_specific element in thread descriptor.
+
 2002-07-30  Roland McGrath  <roland@redhat.com>
 
        * sysdeps/pthread/bits/libc-tsd.h: Include <tls.h>.
index 5649bc4..47c0bfe 100644 (file)
@@ -202,8 +202,13 @@ void __pthread_perform_cleanup(char *currentframe)
     }
 
   /* And the TSD which needs special help.  */
+#if !(USE_TLS && HAVE___THREAD)
   if (THREAD_GETMEM(self, p_libc_specific[_LIBC_TSD_KEY_RPC_VARS]) != NULL)
     __rpc_thread_destroy ();
+#else
+  if (__libc_tsd_get (RPC_VARS) != NULL)
+    __rpc_thread_destroy ();
+#endif
 }
 
 #ifndef SHARED
index f5e3058..77441f7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Extended from original form by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -233,7 +233,7 @@ _nss_dns_gethostbyaddr_r (const void *addr, socklen_t len, int af,
     char linebuffer[0];
   } *host_data = (struct host_data *) buffer;
   querybuf host_buffer;
-  char qbuf[MAXDNAME+1], *qp;
+  char qbuf[MAXDNAME+1], *qp = NULL;
   size_t size;
   int n, status;
 
index 4e40927..d86d40a 100644 (file)
@@ -115,6 +115,6 @@ libc {
   }
   GLIBC_PRIVATE {
     # needed by libpthread.
-    __rpc_thread_destroy;
+    __rpc_thread_destroy; __libc_tsd_RPC_VARS;
   }
 }
index 5c25963..b9f4f58 100644 (file)
 
 /* Variable used in non-threaded applications or for the first thread.  */
 static struct rpc_thread_variables __libc_tsd_RPC_VARS_mem;
+#if USE_TLS && HAVE___THREAD
+__libc_tsd_define (, RPC_VARS)
+#else
 __libc_tsd_define (static, RPC_VARS)
+#endif
 
 /*
  * Task-variable destructor
@@ -85,6 +89,7 @@ __rpc_thread_svc_fdset (void)
                return &svc_fdset;
        return &tvp->svc_fdset_s;
 }
+libc_hidden_def (__rpc_thread_svc_fdset)
 
 struct rpc_createerr *
 __rpc_thread_createerr (void)
@@ -96,6 +101,7 @@ __rpc_thread_createerr (void)
                return &rpc_createerr;
        return &tvp->rpc_createerr_s;
 }
+libc_hidden_def (__rpc_thread_createerr)
 
 struct pollfd **
 __rpc_thread_svc_pollfd (void)