This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Some new condvar fixes


Hi!

I still get failures in tst-aio{,2,3,64} in NPTL
build, but the other problems seem to be gone.
Tested in NPTL and linuxthreads build.

2003-01-02  Jakub Jelinek  <jakub@redhat.com>

linuxthreads/
	* internals.h (struct pthread_functions): Rename
	ptr_pthread_cond_* fields to ptr___pthread_cond_*.
	* pthread.c (pthread_functions): Adjust.
	* forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
	pthread_cond_*@GLIBC_2.0 compatibility symbols.
	* Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
	pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
	and pthread_cond_wait.
nptl/
	* Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
	pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
	and pthread_cond_wait.
	* old_pthread_cond_broadcast.c (__old_pthread_cond_broadcast):
	Renamed to...
	(__pthread_cond_broadcast_2_0): ... this.
	* old_pthread_cond_destroy.c (__old_pthread_cond_destroy):
	Renamed to...
	(__pthread_cond_destroy_2_0): ... this.
	* old_pthread_cond_init.c (__old_pthread_cond_init):
	Renamed to...
	(__pthread_cond_init_2_0): ... this.
	* old_pthread_cond_signal.c (__old_pthread_cond_signal):
	Renamed to...
	(__pthread_cond_signal_2_0): ... this.
	* old_pthread_cond_wait.c (__old_pthread_cond_wait):
	Renamed to...
	(__pthread_cond_wait_2_0): ... this.
	* pthread_cond_destroy.c: Include shlib-compat.h.
	(pthread_cond_destroy): Change strong_alias into versioned_symbol.
	* pthread_cond_init.c: Include shlib-compat.h.
	(pthread_cond_init): Change strong_alias into versioned_symbol.
	* pthreadP.h (struct pthread_functions): Rename ptr_pthread_cond_*
	fields to ptr___pthread_cond_* and add ptr___pthread_cond_*_2_0
	fields.
	(__pthread_cond_broadcast_2_0, __pthread_cond_destroy_2_0,
	__pthread_cond_init_2_0, __pthread_cond_signal_2_0,
	__pthread_cond_wait_2_0): New prototypes.
	(__old_pthread_cond_broadcast, __old_pthread_cond_destroy,
	__old_pthread_cond_init, __old_pthread_cond_signal,
	__old_pthread_cond_wait): Removed.
	* init.c: Include shlib-compat.h.
	(pthread_functions): Guard ptr___pthread_attr_init_2_0
	initialization with SHLIB_COMPAT (GLIBC_2_0, GLIBC_2_1).
	Rename ptr_pthread_cond_* to ptr___pthread_cond_*, initialize
	ptr___pthread_cond_*_2_0 fields.
	* forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
	pthread_cond_*@GLIBC_2.0 compatibility symbols.

--- libc/linuxthreads/internals.h.jj	2002-12-31 11:46:37.000000000 +0100
+++ libc/linuxthreads/internals.h	2003-01-02 23:20:40.000000000 +0100
@@ -505,11 +505,12 @@ struct pthread_functions
   int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
   int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
   int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-  int (*ptr_pthread_cond_broadcast) (pthread_cond_t *);
-  int (*ptr_pthread_cond_destroy) (pthread_cond_t *);
-  int (*ptr_pthread_cond_init) (pthread_cond_t *, const pthread_condattr_t *);
-  int (*ptr_pthread_cond_signal) (pthread_cond_t *);
-  int (*ptr_pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
+  int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
+  int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
+  int (*ptr___pthread_cond_init) (pthread_cond_t *,
+				  const pthread_condattr_t *);
+  int (*ptr___pthread_cond_signal) (pthread_cond_t *);
+  int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
   int (*ptr_pthread_equal) (pthread_t, pthread_t);
   void (*ptr___pthread_exit) (void *);
   int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
--- libc/linuxthreads/forward.c.jj	2002-12-31 11:46:37.000000000 +0100
+++ libc/linuxthreads/forward.c	2003-01-02 23:24:28.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -84,18 +84,49 @@ FORWARD (pthread_condattr_destroy, (pthr
 FORWARD (pthread_condattr_init, (pthread_condattr_t *attr), (attr), 0)
 
 
-FORWARD (pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
+FORWARD (__pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_broadcast, __pthread_cond_broadcast_2_0)
+compat_symbol (libc, __pthread_cond_broadcast_2_0, pthread_cond_broadcast,
+	       GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_broadcast, pthread_cond_broadcast,
+		  GLIBC_2_3_2);
 
-FORWARD (pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
+FORWARD (__pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_destroy, __pthread_cond_destroy_2_0)
+compat_symbol (libc, __pthread_cond_destroy_2_0, pthread_cond_destroy,
+	       GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_destroy, pthread_cond_destroy,
+		  GLIBC_2_3_2);
 
-FORWARD (pthread_cond_init,
+FORWARD (__pthread_cond_init,
 	 (pthread_cond_t *cond, const pthread_condattr_t *cond_attr),
 	 (cond, cond_attr), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_init, __pthread_cond_init_2_0)
+compat_symbol (libc, __pthread_cond_init_2_0, pthread_cond_init, GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_init, pthread_cond_init, GLIBC_2_3_2);
 
-FORWARD (pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
+FORWARD (__pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_signal, __pthread_cond_signal_2_0)
+compat_symbol (libc, __pthread_cond_signal_2_0, pthread_cond_signal,
+	       GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_signal, pthread_cond_signal,
+		  GLIBC_2_3_2);
 
-FORWARD (pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
+FORWARD (__pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
 	 (cond, mutex), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_wait, __pthread_cond_wait_2_0)
+compat_symbol (libc, __pthread_cond_wait_2_0, pthread_cond_wait, GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2);
 
 
 FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
--- libc/linuxthreads/Versions.jj	2003-01-02 14:49:53.000000000 +0100
+++ libc/linuxthreads/Versions	2003-01-02 23:59:24.000000000 +0100
@@ -16,6 +16,12 @@ libc {
   GLIBC_2.1 {
     pthread_attr_init;
   }
+  GLIBC_2.3.2 {
+    # Changed pthread_cond_t.
+    pthread_cond_init; pthread_cond_destroy;
+    pthread_cond_wait; pthread_cond_signal;
+    pthread_cond_broadcast;
+  }
   GLIBC_PRIVATE {
     # Internal libc interface to libpthread
     __libc_dl_error_tsd;
--- libc/linuxthreads/pthread.c.jj	2002-12-31 11:46:38.000000000 +0100
+++ libc/linuxthreads/pthread.c	2003-01-03 00:18:38.000000000 +0100
@@ -256,11 +256,11 @@ static struct pthread_functions pthread_
     .ptr_pthread_attr_setscope = __pthread_attr_setscope,
     .ptr_pthread_condattr_destroy = __pthread_condattr_destroy,
     .ptr_pthread_condattr_init = __pthread_condattr_init,
-    .ptr_pthread_cond_broadcast = __pthread_cond_broadcast,
-    .ptr_pthread_cond_destroy = __pthread_cond_destroy,
-    .ptr_pthread_cond_init = __pthread_cond_init,
-    .ptr_pthread_cond_signal = __pthread_cond_signal,
-    .ptr_pthread_cond_wait = __pthread_cond_wait,
+    .ptr___pthread_cond_broadcast = __pthread_cond_broadcast,
+    .ptr___pthread_cond_destroy = __pthread_cond_destroy,
+    .ptr___pthread_cond_init = __pthread_cond_init,
+    .ptr___pthread_cond_signal = __pthread_cond_signal,
+    .ptr___pthread_cond_wait = __pthread_cond_wait,
     .ptr_pthread_equal = __pthread_equal,
     .ptr___pthread_exit = __pthread_exit,
     .ptr_pthread_getschedparam = __pthread_getschedparam,
--- libc/nptl/Versions.jj	2003-01-02 11:30:43.000000000 +0100
+++ libc/nptl/Versions	2003-01-03 00:17:58.000000000 +0100
@@ -19,6 +19,12 @@ libc {
   GLIBC_2.1 {
     pthread_attr_init;
   }
+  GLIBC_2.3.2 {
+    # Changed pthread_cond_t.
+    pthread_cond_init; pthread_cond_destroy;
+    pthread_cond_wait; pthread_cond_signal;
+    pthread_cond_broadcast;
+  }
 }
 
 libpthread {
--- libc/nptl/old_pthread_cond_broadcast.c.jj	2003-01-02 11:17:43.000000000 +0100
+++ libc/nptl/old_pthread_cond_broadcast.c	2003-01-02 22:55:30.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -25,7 +25,7 @@
 
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
 int
-__old_pthread_cond_broadcast (cond)
+__pthread_cond_broadcast_2_0 (cond)
      pthread_cond_t *cond;
 {
   pthread_cond_t **realp = (pthread_cond_t **) cond;
@@ -41,6 +41,6 @@ __old_pthread_cond_broadcast (cond)
 
   return __pthread_cond_broadcast (*realp);
 }
-compat_symbol (libpthread, __old_pthread_cond_broadcast,
+compat_symbol (libpthread, __pthread_cond_broadcast_2_0,
 	       pthread_cond_broadcast, GLIBC_2_0);
 #endif
--- libc/nptl/old_pthread_cond_destroy.c.jj	2003-01-02 11:17:54.000000000 +0100
+++ libc/nptl/old_pthread_cond_destroy.c	2003-01-02 22:56:11.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -24,7 +24,7 @@
 
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
 int
-__old_pthread_cond_destroy (cond)
+__pthread_cond_destroy_2_0 (cond)
      pthread_cond_t *cond;
 {
   /* Free the memory which was eventually allocated.  */
@@ -32,6 +32,6 @@ __old_pthread_cond_destroy (cond)
 
   return 0;
 }
-compat_symbol (libpthread, __old_pthread_cond_destroy, pthread_cond_destroy,
+compat_symbol (libpthread, __pthread_cond_destroy_2_0, pthread_cond_destroy,
 	       GLIBC_2_0);
 #endif
--- libc/nptl/old_pthread_cond_init.c.jj	2003-01-02 11:18:01.000000000 +0100
+++ libc/nptl/old_pthread_cond_init.c	2003-01-02 22:56:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -23,7 +23,7 @@
 
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
 int
-__old_pthread_cond_init (cond, cond_attr)
+__pthread_cond_init_2_0 (cond, cond_attr)
      pthread_cond_t *cond;
      const pthread_condattr_t *cond_attr;
 {
@@ -38,6 +38,6 @@ __old_pthread_cond_init (cond, cond_attr
 
   return 0;
 }
-compat_symbol (libpthread, __old_pthread_cond_init, pthread_cond_init,
+compat_symbol (libpthread, __pthread_cond_init_2_0, pthread_cond_init,
 	       GLIBC_2_0);
 #endif
--- libc/nptl/old_pthread_cond_signal.c.jj	2003-01-02 11:18:09.000000000 +0100
+++ libc/nptl/old_pthread_cond_signal.c	2003-01-02 22:57:11.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -25,7 +25,7 @@
 
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
 int
-__old_pthread_cond_signal (cond)
+__pthread_cond_signal_2_0 (cond)
      pthread_cond_t *cond;
 {
   pthread_cond_t **realp = (pthread_cond_t **) cond;
@@ -41,6 +41,6 @@ __old_pthread_cond_signal (cond)
 
   return __pthread_cond_signal (*realp);
 }
-compat_symbol (libpthread, __old_pthread_cond_signal, pthread_cond_signal,
+compat_symbol (libpthread, __pthread_cond_signal_2_0, pthread_cond_signal,
 	       GLIBC_2_0);
 #endif
--- libc/nptl/old_pthread_cond_wait.c.jj	2003-01-02 11:18:26.000000000 +0100
+++ libc/nptl/old_pthread_cond_wait.c	2003-01-02 22:58:50.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -25,7 +25,7 @@
 
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
 int
-__old_pthread_cond_wait (cond, mutex)
+__pthread_cond_wait_2_0 (cond, mutex)
      pthread_cond_t *cond;
      pthread_mutex_t *mutex;
 {
@@ -42,6 +42,6 @@ __old_pthread_cond_wait (cond, mutex)
 
   return __pthread_cond_wait (*realp, mutex);
 }
-compat_symbol (libpthread, __old_pthread_cond_wait, pthread_cond_wait,
+compat_symbol (libpthread, __pthread_cond_wait_2_0, pthread_cond_wait,
 	       GLIBC_2_0);
 #endif
--- libc/nptl/pthread_cond_destroy.c.jj	2003-01-02 11:30:43.000000000 +0100
+++ libc/nptl/pthread_cond_destroy.c	2003-01-02 23:00:26.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <shlib-compat.h>
 #include "pthreadP.h"
 
 
@@ -26,4 +27,5 @@ __pthread_cond_destroy (cond)
 {
   return 0;
 }
-strong_alias (__pthread_cond_destroy, pthread_cond_destroy)
+versioned_symbol (libpthread, __pthread_cond_destroy,
+		  pthread_cond_destroy, GLIBC_2_3_2);
--- libc/nptl/pthread_cond_init.c.jj	2003-01-02 11:30:43.000000000 +0100
+++ libc/nptl/pthread_cond_init.c	2003-01-02 23:01:11.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <shlib-compat.h>                  
 #include "pthreadP.h"
 
 
@@ -36,4 +37,5 @@ __pthread_cond_init (cond, cond_attr)
 
   return 0;
 }
-strong_alias (__pthread_cond_init, pthread_cond_init)
+versioned_symbol (libpthread, __pthread_cond_init,
+		  pthread_cond_init, GLIBC_2_3_2);
--- libc/nptl/pthreadP.h.jj	2003-01-02 11:30:43.000000000 +0100
+++ libc/nptl/pthreadP.h	2003-01-02 23:04:31.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -88,11 +88,18 @@ struct pthread_functions
   int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
   int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
   int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-  int (*ptr_pthread_cond_broadcast) (pthread_cond_t *);
-  int (*ptr_pthread_cond_destroy) (pthread_cond_t *);
-  int (*ptr_pthread_cond_init) (pthread_cond_t *, const pthread_condattr_t *);
-  int (*ptr_pthread_cond_signal) (pthread_cond_t *);
-  int (*ptr_pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
+  int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
+  int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
+  int (*ptr___pthread_cond_init) (pthread_cond_t *,
+				  const pthread_condattr_t *);
+  int (*ptr___pthread_cond_signal) (pthread_cond_t *);
+  int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
+  int (*ptr___pthread_cond_broadcast_2_0) (pthread_cond_t *);
+  int (*ptr___pthread_cond_destroy_2_0) (pthread_cond_t *);
+  int (*ptr___pthread_cond_init_2_0) (pthread_cond_t *,
+				      const pthread_condattr_t *);
+  int (*ptr___pthread_cond_signal_2_0) (pthread_cond_t *);
+  int (*ptr___pthread_cond_wait_2_0) (pthread_cond_t *, pthread_mutex_t *);
   int (*ptr_pthread_equal) (pthread_t, pthread_t);
   void (*ptr___pthread_exit) (void *);
   int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
@@ -315,15 +322,15 @@ extern int __pthread_enable_asynccancel 
 extern void __pthread_disable_asynccancel (int oldtype)
      internal_function attribute_hidden;
 
-extern int __old_pthread_cond_broadcast (pthread_cond_t *cond);
-extern int __old_pthread_cond_destroy (pthread_cond_t *cond);
-extern int __old_pthread_cond_init (pthread_cond_t *cond,
+extern int __pthread_cond_broadcast_2_0 (pthread_cond_t *cond);
+extern int __pthread_cond_destroy_2_0 (pthread_cond_t *cond);
+extern int __pthread_cond_init_2_0 (pthread_cond_t *cond,
 				    const pthread_condattr_t *cond_attr);
-extern int __old_pthread_cond_signal (pthread_cond_t *cond);
+extern int __pthread_cond_signal_2_0 (pthread_cond_t *cond);
 extern int __old_pthread_cond_timedwait (pthread_cond_t *cond,
 					 pthread_mutex_t *mutex,
 					 const struct timespec *abstime);
-extern int __old_pthread_cond_wait (pthread_cond_t *cond,
+extern int __pthread_cond_wait_2_0 (pthread_cond_t *cond,
 				    pthread_mutex_t *mutex);
 
 /* The two functions are in libc.so and not exported.  */
--- libc/nptl/init.c.jj	2002-12-31 09:53:36.000000000 +0100
+++ libc/nptl/init.c	2003-01-03 00:18:51.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -30,6 +30,7 @@
 #include <tls.h>
 #include <fork.h>
 #include <version.h>
+#include <shlib-compat.h>
 
 
 /* XXX For the time being...  */
@@ -56,7 +57,9 @@ extern void __libc_setup_tls (size_t tcb
 static struct pthread_functions pthread_functions =
   {
     .ptr_pthread_attr_destroy = __pthread_attr_destroy,
+#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
     .ptr___pthread_attr_init_2_0 = __pthread_attr_init_2_0,
+#endif
     .ptr___pthread_attr_init_2_1 = __pthread_attr_init_2_1,
     .ptr_pthread_attr_getdetachstate = __pthread_attr_getdetachstate,
     .ptr_pthread_attr_setdetachstate = __pthread_attr_setdetachstate,
@@ -70,11 +73,18 @@ static struct pthread_functions pthread_
     .ptr_pthread_attr_setscope = __pthread_attr_setscope,
     .ptr_pthread_condattr_destroy = __pthread_condattr_destroy,
     .ptr_pthread_condattr_init = __pthread_condattr_init,
-    .ptr_pthread_cond_broadcast = __pthread_cond_broadcast,
-    .ptr_pthread_cond_destroy = __pthread_cond_destroy,
-    .ptr_pthread_cond_init = __pthread_cond_init,
-    .ptr_pthread_cond_signal = __pthread_cond_signal,
-    .ptr_pthread_cond_wait = __pthread_cond_wait,
+    .ptr___pthread_cond_broadcast = __pthread_cond_broadcast,
+    .ptr___pthread_cond_destroy = __pthread_cond_destroy,
+    .ptr___pthread_cond_init = __pthread_cond_init,
+    .ptr___pthread_cond_signal = __pthread_cond_signal,
+    .ptr___pthread_cond_wait = __pthread_cond_wait,
+#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
+    .ptr___pthread_cond_broadcast_2_0 = __pthread_cond_broadcast_2_0,
+    .ptr___pthread_cond_destroy_2_0 = __pthread_cond_destroy_2_0,
+    .ptr___pthread_cond_init_2_0 = __pthread_cond_init_2_0,
+    .ptr___pthread_cond_signal_2_0 = __pthread_cond_signal_2_0,
+    .ptr___pthread_cond_wait_2_0 = __pthread_cond_wait_2_0,
+#endif
     .ptr_pthread_equal = __pthread_equal,
     .ptr___pthread_exit = __pthread_exit,
     .ptr_pthread_getschedparam = __pthread_getschedparam,
--- libc/nptl/forward.c.jj	2002-12-31 09:53:36.000000000 +0100
+++ libc/nptl/forward.c	2003-01-02 23:17:58.000000000 +0100
@@ -85,19 +85,54 @@ FORWARD (pthread_attr_setscope, (pthread
 FORWARD (pthread_condattr_destroy, (pthread_condattr_t *attr), (attr), 0)
 FORWARD (pthread_condattr_init, (pthread_condattr_t *attr), (attr), 0)
 
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+FORWARD (__pthread_cond_broadcast_2_0, (pthread_cond_t *cond), (cond), 0)
+compat_symbol (libc, __pthread_cond_broadcast_2_0, pthread_cond_broadcast,
+	       GLIBC_2_0);
+#endif
+FORWARD (__pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
+versioned_symbol (libc, __pthread_cond_broadcast, pthread_cond_broadcast,
+		  GLIBC_2_3_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+FORWARD (__pthread_cond_destroy_2_0, (pthread_cond_t *cond), (cond), 0)
+compat_symbol (libc, __pthread_cond_destroy_2_0, pthread_cond_destroy,
+	       GLIBC_2_0);
+#endif
+FORWARD (__pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
+versioned_symbol (libc, __pthread_cond_destroy, pthread_cond_destroy,
+		  GLIBC_2_3_2);
 
-FORWARD (pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_init,
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+FORWARD (__pthread_cond_init_2_0,
 	 (pthread_cond_t *cond, const pthread_condattr_t *cond_attr),
 	 (cond, cond_attr), 0)
+compat_symbol (libc, __pthread_cond_init_2_0, pthread_cond_init, GLIBC_2_0);
+#endif
+FORWARD (__pthread_cond_init,
+	 (pthread_cond_t *cond, const pthread_condattr_t *cond_attr),
+	 (cond, cond_attr), 0)
+versioned_symbol (libc, __pthread_cond_init, pthread_cond_init, GLIBC_2_3_2);
 
-FORWARD (pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+FORWARD (__pthread_cond_signal_2_0, (pthread_cond_t *cond), (cond), 0)
+compat_symbol (libc, __pthread_cond_signal_2_0, pthread_cond_signal,
+	       GLIBC_2_0);
+#endif
+FORWARD (__pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
+versioned_symbol (libc, __pthread_cond_signal, pthread_cond_signal,
+		  GLIBC_2_3_2);
+
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+FORWARD (__pthread_cond_wait_2_0,
+	 (pthread_cond_t *cond, pthread_mutex_t *mutex), (cond, mutex), 0)
+compat_symbol (libc, __pthread_cond_wait_2_0, pthread_cond_wait,
+	       GLIBC_2_0);
+#endif
+FORWARD (__pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
 	 (cond, mutex), 0)
+versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait,
+		  GLIBC_2_3_2);
 
 
 FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]