[09/13] nptl: Move pthread_cond_destroy implementation into libc

Message ID 58f1edaca84f6edb00c723f04df44ff198649288.1581418947.git.fweimer@redhat.com
State New
Headers show
Series
  • nptl: Move more functions from libpthread to libc
Related show

Commit Message

Florian Weimer Feb. 11, 2020, 11:06 a.m.
It is necessary to export __pthread_cond_destroy from libc because
the C11 condition variable needs it and is still left in libpthread.

This is part of the libpthread removal project:

  <https://sourceware.org/ml/libc-alpha/2019-10/msg00080.html>
---
 nptl/Makefile                                          |  6 ++++--
 nptl/Versions                                          |  6 ++++--
 nptl/forward.c                                         | 10 ----------
 nptl/nptl-init.c                                       |  2 --
 nptl/old_pthread_cond_destroy.c                        |  4 ++--
 nptl/pthreadP.h                                        |  1 +
 nptl/pthread_cond_destroy.c                            |  3 ++-
 sysdeps/nptl/pthread-functions.h                       |  2 --
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist       |  2 --
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/csky/libpthread.abilist        |  1 -
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist        |  2 --
 sysdeps/unix/sysv/linux/i386/libpthread.abilist        |  2 --
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist        |  2 --
 .../unix/sysv/linux/m68k/coldfire/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist |  2 --
 .../unix/sysv/linux/microblaze/be/libpthread.abilist   |  1 -
 .../unix/sysv/linux/microblaze/le/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist       |  1 -
 .../sysv/linux/powerpc/powerpc32/libpthread.abilist    |  2 --
 .../sysv/linux/powerpc/powerpc64/be/libpthread.abilist |  2 --
 .../sysv/linux/powerpc/powerpc64/le/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libpthread.abilist    |  2 --
 .../unix/sysv/linux/s390/s390-64/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist       |  2 --
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist       |  2 --
 .../unix/sysv/linux/sparc/sparc32/libpthread.abilist   |  2 --
 .../unix/sysv/linux/sparc/sparc64/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist  |  1 -
 35 files changed, 13 insertions(+), 64 deletions(-)

-- 
2.24.1

Comments

Adhemerval Zanella Feb. 19, 2020, 5:48 p.m. | #1
On 11/02/2020 08:06, Florian Weimer wrote:
> It is necessary to export __pthread_cond_destroy from libc because

> the C11 condition variable needs it and is still left in libpthread.


I think moving C11 threads to libc.so should be as simple as this patchset
as well.

> 

> This is part of the libpthread removal project:

> 

>   <https://sourceware.org/ml/libc-alpha/2019-10/msg00080.html>


LGTM, thanks.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>


> ---

>  nptl/Makefile                                          |  6 ++++--

>  nptl/Versions                                          |  6 ++++--

>  nptl/forward.c                                         | 10 ----------

>  nptl/nptl-init.c                                       |  2 --

>  nptl/old_pthread_cond_destroy.c                        |  4 ++--

>  nptl/pthreadP.h                                        |  1 +

>  nptl/pthread_cond_destroy.c                            |  3 ++-

>  sysdeps/nptl/pthread-functions.h                       |  2 --

>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist     |  1 -

>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist       |  2 --

>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist      |  1 -

>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist      |  1 -

>  sysdeps/unix/sysv/linux/csky/libpthread.abilist        |  1 -

>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist        |  2 --

>  sysdeps/unix/sysv/linux/i386/libpthread.abilist        |  2 --

>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist        |  2 --

>  .../unix/sysv/linux/m68k/coldfire/libpthread.abilist   |  1 -

>  sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist |  2 --

>  .../unix/sysv/linux/microblaze/be/libpthread.abilist   |  1 -

>  .../unix/sysv/linux/microblaze/le/libpthread.abilist   |  1 -

>  sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist |  2 --

>  sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist |  2 --

>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist       |  1 -

>  .../sysv/linux/powerpc/powerpc32/libpthread.abilist    |  2 --

>  .../sysv/linux/powerpc/powerpc64/be/libpthread.abilist |  2 --

>  .../sysv/linux/powerpc/powerpc64/le/libpthread.abilist |  1 -

>  sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist  |  1 -

>  .../unix/sysv/linux/s390/s390-32/libpthread.abilist    |  2 --

>  .../unix/sysv/linux/s390/s390-64/libpthread.abilist    |  2 --

>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist       |  2 --

>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist       |  2 --

>  .../unix/sysv/linux/sparc/sparc32/libpthread.abilist   |  2 --

>  .../unix/sysv/linux/sparc/sparc64/libpthread.abilist   |  2 --

>  sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist   |  2 --

>  sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist  |  1 -

>  35 files changed, 13 insertions(+), 64 deletions(-)

> 

> diff --git a/nptl/Makefile b/nptl/Makefile

> index b14a64e693..19f11a5c9a 100644

> --- a/nptl/Makefile

> +++ b/nptl/Makefile

> @@ -36,6 +36,7 @@ routines = \

>    libc-lowlevellock \

>    libc_multiple_threads \

>    libc_pthread_init \

> +  old_pthread_cond_destroy \

>    pthread_atfork \

>    pthread_attr_destroy \

>    pthread_attr_getdetachstate \

> @@ -49,6 +50,7 @@ routines = \

>    pthread_attr_setschedparam \

>    pthread_attr_setschedpolicy \

>    pthread_attr_setscope \

> +  pthread_cond_destroy \

>    pthread_condattr_destroy \

>    pthread_condattr_init \

>    pthread_equal \


Ok.

> @@ -102,10 +104,10 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \

>  		      pthread_rwlockattr_setpshared \

>  		      pthread_rwlockattr_getkind_np \

>  		      pthread_rwlockattr_setkind_np \

> -		      pthread_cond_init pthread_cond_destroy \

> +		      pthread_cond_init \

>  		      pthread_cond_wait \

>  		      pthread_cond_signal pthread_cond_broadcast \

> -		      old_pthread_cond_init old_pthread_cond_destroy \

> +		      old_pthread_cond_init \

>  		      old_pthread_cond_wait old_pthread_cond_timedwait \

>  		      old_pthread_cond_signal old_pthread_cond_broadcast \

>  		      pthread_condattr_getpshared pthread_condattr_setpshared \


Ok.

> diff --git a/nptl/Versions b/nptl/Versions

> index bc1bad0562..4dbe68d76c 100644

> --- a/nptl/Versions

> +++ b/nptl/Versions

> @@ -39,6 +39,8 @@ libc {

>      __libc_pthread_init;

>      __libc_current_sigrtmin_private; __libc_current_sigrtmax_private;

>      __libc_allocate_rtsig_private;

> +    # Used by the C11 threads implementation.

> +    __pthread_cond_destroy;

>    }

>  }

>  


Ok.

> @@ -54,7 +56,7 @@ libpthread {

>  

>      pthread_mutexattr_init; pthread_mutexattr_destroy;

>  

> -    pthread_cond_init; pthread_cond_destroy;

> +    pthread_cond_init;

>      pthread_cond_wait; pthread_cond_timedwait;

>      pthread_cond_signal; pthread_cond_broadcast;

>  


Ok.

> @@ -193,7 +195,7 @@ libpthread {

>  

>    GLIBC_2.3.2 {

>      # Changed pthread_cond_t.

> -    pthread_cond_init; pthread_cond_destroy;

> +    pthread_cond_init;

>      pthread_cond_wait; pthread_cond_timedwait;

>      pthread_cond_signal; pthread_cond_broadcast;

>    }


Ok.

> diff --git a/nptl/forward.c b/nptl/forward.c

> index 9383ada753..3e1734854e 100644

> --- a/nptl/forward.c

> +++ b/nptl/forward.c

> @@ -66,16 +66,6 @@ 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)

> -FORWARD2 (__pthread_cond_destroy_2_0, int attribute_compat_text_section,

> -	  (pthread_cond_2_0_t *cond), (cond), return 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);

> -

>  #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)

>  FORWARD2 (__pthread_cond_init_2_0, int attribute_compat_text_section,

>  	  (pthread_cond_2_0_t *cond, const pthread_condattr_t *cond_attr),


Ok.

> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c

> index 563ab7b1e8..9e17a2be6d 100644

> --- a/nptl/nptl-init.c

> +++ b/nptl/nptl-init.c

> @@ -73,14 +73,12 @@ void __nptl_set_robust (struct pthread *);

>  static const struct pthread_functions pthread_functions =

>    {

>      .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_timedwait = __pthread_cond_timedwait,

>  # 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,


Ok.

> diff --git a/nptl/old_pthread_cond_destroy.c b/nptl/old_pthread_cond_destroy.c

> index 46dad05d49..4996deceb8 100644

> --- a/nptl/old_pthread_cond_destroy.c

> +++ b/nptl/old_pthread_cond_destroy.c

> @@ -21,7 +21,7 @@

>  #include <shlib-compat.h>

>  

>  

> -#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)

> +#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)

>  int

>  __pthread_cond_destroy_2_0 (pthread_cond_2_0_t *cond)

>  {

> @@ -30,6 +30,6 @@ __pthread_cond_destroy_2_0 (pthread_cond_2_0_t *cond)

>  

>    return 0;

>  }

> -compat_symbol (libpthread, __pthread_cond_destroy_2_0, pthread_cond_destroy,

> +compat_symbol (libc, __pthread_cond_destroy_2_0, pthread_cond_destroy,

>  	       GLIBC_2_0);

>  #endif


Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h

> index 7e0ab8ef42..f348c75d90 100644

> --- a/nptl/pthreadP.h

> +++ b/nptl/pthreadP.h

> @@ -442,6 +442,7 @@ extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);

>  extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);

>  extern int __pthread_cond_broadcast (pthread_cond_t *cond);

>  extern int __pthread_cond_destroy (pthread_cond_t *cond);

> +libc_hidden_proto (__pthread_cond_destroy)

>  extern int __pthread_cond_init (pthread_cond_t *cond,

>  				const pthread_condattr_t *cond_attr);

>  extern int __pthread_cond_signal (pthread_cond_t *cond);


Ok.

> diff --git a/nptl/pthread_cond_destroy.c b/nptl/pthread_cond_destroy.c

> index 168546574b..31034905d1 100644

> --- a/nptl/pthread_cond_destroy.c

> +++ b/nptl/pthread_cond_destroy.c

> @@ -58,5 +58,6 @@ __pthread_cond_destroy (pthread_cond_t *cond)

>    /* The memory the condvar occupies can now be reused.  */

>    return 0;

>  }

> -versioned_symbol (libpthread, __pthread_cond_destroy,

> +libc_hidden_def (__pthread_cond_destroy)

> +versioned_symbol (libc, __pthread_cond_destroy,

>  		  pthread_cond_destroy, GLIBC_2_3_2);


Ok.

> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h

> index 25c05bf4d8..ceb1cc631d 100644

> --- a/sysdeps/nptl/pthread-functions.h

> +++ b/sysdeps/nptl/pthread-functions.h

> @@ -31,7 +31,6 @@ struct xid_command;

>  struct pthread_functions

>  {

>    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 *);

> @@ -39,7 +38,6 @@ struct pthread_functions

>    int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,

>  				       const struct timespec *);

>    int (*ptr___pthread_cond_broadcast_2_0) (pthread_cond_2_0_t *);

> -  int (*ptr___pthread_cond_destroy_2_0) (pthread_cond_2_0_t *);

>    int (*ptr___pthread_cond_init_2_0) (pthread_cond_2_0_t *,

>  				      const pthread_condattr_t *);

>    int (*ptr___pthread_cond_signal_2_0) (pthread_cond_2_0_t *);


Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist

> index d5b247d1bd..6237b22222 100644

> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.17 pthread_barrierattr_init F

>  GLIBC_2.17 pthread_barrierattr_setpshared F

>  GLIBC_2.17 pthread_cancel F

>  GLIBC_2.17 pthread_cond_broadcast F

> -GLIBC_2.17 pthread_cond_destroy F

>  GLIBC_2.17 pthread_cond_init F

>  GLIBC_2.17 pthread_cond_signal F

>  GLIBC_2.17 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist

> index 391be30e38..be6e5dcd3d 100644

> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -206,7 +205,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist

> index 862b5d30be..3016511f3e 100644

> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist

> @@ -121,7 +121,6 @@ GLIBC_2.4 pthread_barrierattr_init F

>  GLIBC_2.4 pthread_barrierattr_setpshared F

>  GLIBC_2.4 pthread_cancel F

>  GLIBC_2.4 pthread_cond_broadcast F

> -GLIBC_2.4 pthread_cond_destroy F

>  GLIBC_2.4 pthread_cond_init F

>  GLIBC_2.4 pthread_cond_signal F

>  GLIBC_2.4 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist

> index 862b5d30be..3016511f3e 100644

> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist

> @@ -121,7 +121,6 @@ GLIBC_2.4 pthread_barrierattr_init F

>  GLIBC_2.4 pthread_barrierattr_setpshared F

>  GLIBC_2.4 pthread_cancel F

>  GLIBC_2.4 pthread_cond_broadcast F

> -GLIBC_2.4 pthread_cond_destroy F

>  GLIBC_2.4 pthread_cond_init F

>  GLIBC_2.4 pthread_cond_signal F

>  GLIBC_2.4 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist

> index 04559140c9..e33492d3d2 100644

> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist

> @@ -94,7 +94,6 @@ GLIBC_2.29 pthread_barrierattr_init F

>  GLIBC_2.29 pthread_barrierattr_setpshared F

>  GLIBC_2.29 pthread_cancel F

>  GLIBC_2.29 pthread_cond_broadcast F

> -GLIBC_2.29 pthread_cond_destroy F

>  GLIBC_2.29 pthread_cond_init F

>  GLIBC_2.29 pthread_cond_signal F

>  GLIBC_2.29 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist

> index aa0c6d1da0..1ac88709aa 100644

> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist

> index b815b155b5..d9e2a3bf91 100644

> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -206,7 +205,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist

> index 283e0e6f9d..a2be53b8c5 100644

> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist

> index 862b5d30be..3016511f3e 100644

> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist

> @@ -121,7 +121,6 @@ GLIBC_2.4 pthread_barrierattr_init F

>  GLIBC_2.4 pthread_barrierattr_setpshared F

>  GLIBC_2.4 pthread_cancel F

>  GLIBC_2.4 pthread_cond_broadcast F

> -GLIBC_2.4 pthread_cond_destroy F

>  GLIBC_2.4 pthread_cond_init F

>  GLIBC_2.4 pthread_cond_signal F

>  GLIBC_2.4 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist

> index b815b155b5..d9e2a3bf91 100644

> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -206,7 +205,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist

> index e1ffc40cd9..30fd457419 100644

> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.18 pthread_barrierattr_init F

>  GLIBC_2.18 pthread_barrierattr_setpshared F

>  GLIBC_2.18 pthread_cancel F

>  GLIBC_2.18 pthread_cond_broadcast F

> -GLIBC_2.18 pthread_cond_destroy F

>  GLIBC_2.18 pthread_cond_init F

>  GLIBC_2.18 pthread_cond_signal F

>  GLIBC_2.18 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist

> index e1ffc40cd9..30fd457419 100644

> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.18 pthread_barrierattr_init F

>  GLIBC_2.18 pthread_barrierattr_setpshared F

>  GLIBC_2.18 pthread_cancel F

>  GLIBC_2.18 pthread_cond_broadcast F

> -GLIBC_2.18 pthread_cond_destroy F

>  GLIBC_2.18 pthread_cond_init F

>  GLIBC_2.18 pthread_cond_signal F

>  GLIBC_2.18 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist

> index 70169b45b4..2d5730fc8f 100644

> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -205,7 +204,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist

> index 70169b45b4..2d5730fc8f 100644

> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -205,7 +204,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist

> index 6baae4309c..94f6396182 100644

> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.21 pthread_barrierattr_init F

>  GLIBC_2.21 pthread_barrierattr_setpshared F

>  GLIBC_2.21 pthread_cancel F

>  GLIBC_2.21 pthread_cond_broadcast F

> -GLIBC_2.21 pthread_cond_destroy F

>  GLIBC_2.21 pthread_cond_init F

>  GLIBC_2.21 pthread_cond_signal F

>  GLIBC_2.21 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist

> index 0dd3739a03..62e8dba625 100644

> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -206,7 +205,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist

> index 8d4fa60131..ada466504c 100644

> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist

> @@ -106,7 +106,6 @@ GLIBC_2.3 pthread_barrierattr_init F

>  GLIBC_2.3 pthread_barrierattr_setpshared F

>  GLIBC_2.3 pthread_cancel F

>  GLIBC_2.3 pthread_cond_broadcast F

> -GLIBC_2.3 pthread_cond_destroy F

>  GLIBC_2.3 pthread_cond_init F

>  GLIBC_2.3 pthread_cond_signal F

>  GLIBC_2.3 pthread_cond_timedwait F

> @@ -196,7 +195,6 @@ GLIBC_2.3 system F

>  GLIBC_2.3 tcdrain F

>  GLIBC_2.3 write F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist

> index d5b247d1bd..6237b22222 100644

> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.17 pthread_barrierattr_init F

>  GLIBC_2.17 pthread_barrierattr_setpshared F

>  GLIBC_2.17 pthread_cancel F

>  GLIBC_2.17 pthread_cond_broadcast F

> -GLIBC_2.17 pthread_cond_destroy F

>  GLIBC_2.17 pthread_cond_init F

>  GLIBC_2.17 pthread_cond_signal F

>  GLIBC_2.17 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist

> index e3391617d6..30a1e15e90 100644

> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist

> @@ -83,7 +83,6 @@ GLIBC_2.27 pthread_barrierattr_init F

>  GLIBC_2.27 pthread_barrierattr_setpshared F

>  GLIBC_2.27 pthread_cancel F

>  GLIBC_2.27 pthread_cond_broadcast F

> -GLIBC_2.27 pthread_cond_destroy F

>  GLIBC_2.27 pthread_cond_init F

>  GLIBC_2.27 pthread_cond_signal F

>  GLIBC_2.27 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist

> index ff80259a92..a9a8c7630e 100644

> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -208,7 +207,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist

> index 02d7c0409a..7052913b40 100644

> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist

> @@ -88,7 +88,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -200,7 +199,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist

> index aa0c6d1da0..1ac88709aa 100644

> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist

> index aa0c6d1da0..1ac88709aa 100644

> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist

> index 391be30e38..be6e5dcd3d 100644

> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist

> @@ -46,7 +46,6 @@ GLIBC_2.0 pause F

>  GLIBC_2.0 pthread_atfork F

>  GLIBC_2.0 pthread_cancel F

>  GLIBC_2.0 pthread_cond_broadcast F

> -GLIBC_2.0 pthread_cond_destroy F

>  GLIBC_2.0 pthread_cond_init F

>  GLIBC_2.0 pthread_cond_signal F

>  GLIBC_2.0 pthread_cond_timedwait F

> @@ -206,7 +205,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist

> index 283e0e6f9d..a2be53b8c5 100644

> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2 pthread_barrierattr_init F

>  GLIBC_2.2 pthread_barrierattr_setpshared F

>  GLIBC_2.2 pthread_cancel F

>  GLIBC_2.2 pthread_cond_broadcast F

> -GLIBC_2.2 pthread_cond_destroy F

>  GLIBC_2.2 pthread_cond_init F

>  GLIBC_2.2 pthread_cond_signal F

>  GLIBC_2.2 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist

> index 35835c89d9..90780c92d4 100644

> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.2.5 pthread_barrierattr_init F

>  GLIBC_2.2.5 pthread_barrierattr_setpshared F

>  GLIBC_2.2.5 pthread_cancel F

>  GLIBC_2.2.5 pthread_cond_broadcast F

> -GLIBC_2.2.5 pthread_cond_destroy F

>  GLIBC_2.2.5 pthread_cond_init F

>  GLIBC_2.2.5 pthread_cond_signal F

>  GLIBC_2.2.5 pthread_cond_timedwait F

> @@ -198,7 +197,6 @@ GLIBC_2.28 tss_delete F

>  GLIBC_2.28 tss_get F

>  GLIBC_2.28 tss_set F

>  GLIBC_2.3.2 pthread_cond_broadcast F

> -GLIBC_2.3.2 pthread_cond_destroy F

>  GLIBC_2.3.2 pthread_cond_init F

>  GLIBC_2.3.2 pthread_cond_signal F

>  GLIBC_2.3.2 pthread_cond_timedwait F

> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist

> index 4b27550ad0..b24b7b637e 100644

> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist

> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist

> @@ -86,7 +86,6 @@ GLIBC_2.16 pthread_barrierattr_init F

>  GLIBC_2.16 pthread_barrierattr_setpshared F

>  GLIBC_2.16 pthread_cancel F

>  GLIBC_2.16 pthread_cond_broadcast F

> -GLIBC_2.16 pthread_cond_destroy F

>  GLIBC_2.16 pthread_cond_init F

>  GLIBC_2.16 pthread_cond_signal F

>  GLIBC_2.16 pthread_cond_timedwait F

> 


Ok.

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index b14a64e693..19f11a5c9a 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -36,6 +36,7 @@  routines = \
   libc-lowlevellock \
   libc_multiple_threads \
   libc_pthread_init \
+  old_pthread_cond_destroy \
   pthread_atfork \
   pthread_attr_destroy \
   pthread_attr_getdetachstate \
@@ -49,6 +50,7 @@  routines = \
   pthread_attr_setschedparam \
   pthread_attr_setschedpolicy \
   pthread_attr_setscope \
+  pthread_cond_destroy \
   pthread_condattr_destroy \
   pthread_condattr_init \
   pthread_equal \
@@ -102,10 +104,10 @@  libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
 		      pthread_rwlockattr_setpshared \
 		      pthread_rwlockattr_getkind_np \
 		      pthread_rwlockattr_setkind_np \
-		      pthread_cond_init pthread_cond_destroy \
+		      pthread_cond_init \
 		      pthread_cond_wait \
 		      pthread_cond_signal pthread_cond_broadcast \
-		      old_pthread_cond_init old_pthread_cond_destroy \
+		      old_pthread_cond_init \
 		      old_pthread_cond_wait old_pthread_cond_timedwait \
 		      old_pthread_cond_signal old_pthread_cond_broadcast \
 		      pthread_condattr_getpshared pthread_condattr_setpshared \
diff --git a/nptl/Versions b/nptl/Versions
index bc1bad0562..4dbe68d76c 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -39,6 +39,8 @@  libc {
     __libc_pthread_init;
     __libc_current_sigrtmin_private; __libc_current_sigrtmax_private;
     __libc_allocate_rtsig_private;
+    # Used by the C11 threads implementation.
+    __pthread_cond_destroy;
   }
 }
 
@@ -54,7 +56,7 @@  libpthread {
 
     pthread_mutexattr_init; pthread_mutexattr_destroy;
 
-    pthread_cond_init; pthread_cond_destroy;
+    pthread_cond_init;
     pthread_cond_wait; pthread_cond_timedwait;
     pthread_cond_signal; pthread_cond_broadcast;
 
@@ -193,7 +195,7 @@  libpthread {
 
   GLIBC_2.3.2 {
     # Changed pthread_cond_t.
-    pthread_cond_init; pthread_cond_destroy;
+    pthread_cond_init;
     pthread_cond_wait; pthread_cond_timedwait;
     pthread_cond_signal; pthread_cond_broadcast;
   }
diff --git a/nptl/forward.c b/nptl/forward.c
index 9383ada753..3e1734854e 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -66,16 +66,6 @@  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)
-FORWARD2 (__pthread_cond_destroy_2_0, int attribute_compat_text_section,
-	  (pthread_cond_2_0_t *cond), (cond), return 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);
-
 #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
 FORWARD2 (__pthread_cond_init_2_0, int attribute_compat_text_section,
 	  (pthread_cond_2_0_t *cond, const pthread_condattr_t *cond_attr),
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 563ab7b1e8..9e17a2be6d 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -73,14 +73,12 @@  void __nptl_set_robust (struct pthread *);
 static const struct pthread_functions pthread_functions =
   {
     .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_timedwait = __pthread_cond_timedwait,
 # 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,
diff --git a/nptl/old_pthread_cond_destroy.c b/nptl/old_pthread_cond_destroy.c
index 46dad05d49..4996deceb8 100644
--- a/nptl/old_pthread_cond_destroy.c
+++ b/nptl/old_pthread_cond_destroy.c
@@ -21,7 +21,7 @@ 
 #include <shlib-compat.h>
 
 
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_3_2)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
 int
 __pthread_cond_destroy_2_0 (pthread_cond_2_0_t *cond)
 {
@@ -30,6 +30,6 @@  __pthread_cond_destroy_2_0 (pthread_cond_2_0_t *cond)
 
   return 0;
 }
-compat_symbol (libpthread, __pthread_cond_destroy_2_0, pthread_cond_destroy,
+compat_symbol (libc, __pthread_cond_destroy_2_0, pthread_cond_destroy,
 	       GLIBC_2_0);
 #endif
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 7e0ab8ef42..f348c75d90 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -442,6 +442,7 @@  extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_cond_broadcast (pthread_cond_t *cond);
 extern int __pthread_cond_destroy (pthread_cond_t *cond);
+libc_hidden_proto (__pthread_cond_destroy)
 extern int __pthread_cond_init (pthread_cond_t *cond,
 				const pthread_condattr_t *cond_attr);
 extern int __pthread_cond_signal (pthread_cond_t *cond);
diff --git a/nptl/pthread_cond_destroy.c b/nptl/pthread_cond_destroy.c
index 168546574b..31034905d1 100644
--- a/nptl/pthread_cond_destroy.c
+++ b/nptl/pthread_cond_destroy.c
@@ -58,5 +58,6 @@  __pthread_cond_destroy (pthread_cond_t *cond)
   /* The memory the condvar occupies can now be reused.  */
   return 0;
 }
-versioned_symbol (libpthread, __pthread_cond_destroy,
+libc_hidden_def (__pthread_cond_destroy)
+versioned_symbol (libc, __pthread_cond_destroy,
 		  pthread_cond_destroy, GLIBC_2_3_2);
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 25c05bf4d8..ceb1cc631d 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -31,7 +31,6 @@  struct xid_command;
 struct pthread_functions
 {
   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 *);
@@ -39,7 +38,6 @@  struct pthread_functions
   int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
 				       const struct timespec *);
   int (*ptr___pthread_cond_broadcast_2_0) (pthread_cond_2_0_t *);
-  int (*ptr___pthread_cond_destroy_2_0) (pthread_cond_2_0_t *);
   int (*ptr___pthread_cond_init_2_0) (pthread_cond_2_0_t *,
 				      const pthread_condattr_t *);
   int (*ptr___pthread_cond_signal_2_0) (pthread_cond_2_0_t *);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index d5b247d1bd..6237b22222 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.17 pthread_barrierattr_init F
 GLIBC_2.17 pthread_barrierattr_setpshared F
 GLIBC_2.17 pthread_cancel F
 GLIBC_2.17 pthread_cond_broadcast F
-GLIBC_2.17 pthread_cond_destroy F
 GLIBC_2.17 pthread_cond_init F
 GLIBC_2.17 pthread_cond_signal F
 GLIBC_2.17 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 391be30e38..be6e5dcd3d 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -206,7 +205,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 862b5d30be..3016511f3e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -121,7 +121,6 @@  GLIBC_2.4 pthread_barrierattr_init F
 GLIBC_2.4 pthread_barrierattr_setpshared F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_cond_broadcast F
-GLIBC_2.4 pthread_cond_destroy F
 GLIBC_2.4 pthread_cond_init F
 GLIBC_2.4 pthread_cond_signal F
 GLIBC_2.4 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 862b5d30be..3016511f3e 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -121,7 +121,6 @@  GLIBC_2.4 pthread_barrierattr_init F
 GLIBC_2.4 pthread_barrierattr_setpshared F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_cond_broadcast F
-GLIBC_2.4 pthread_cond_destroy F
 GLIBC_2.4 pthread_cond_init F
 GLIBC_2.4 pthread_cond_signal F
 GLIBC_2.4 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 04559140c9..e33492d3d2 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -94,7 +94,6 @@  GLIBC_2.29 pthread_barrierattr_init F
 GLIBC_2.29 pthread_barrierattr_setpshared F
 GLIBC_2.29 pthread_cancel F
 GLIBC_2.29 pthread_cond_broadcast F
-GLIBC_2.29 pthread_cond_destroy F
 GLIBC_2.29 pthread_cond_init F
 GLIBC_2.29 pthread_cond_signal F
 GLIBC_2.29 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index aa0c6d1da0..1ac88709aa 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index b815b155b5..d9e2a3bf91 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -206,7 +205,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 283e0e6f9d..a2be53b8c5 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 862b5d30be..3016511f3e 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -121,7 +121,6 @@  GLIBC_2.4 pthread_barrierattr_init F
 GLIBC_2.4 pthread_barrierattr_setpshared F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_cond_broadcast F
-GLIBC_2.4 pthread_cond_destroy F
 GLIBC_2.4 pthread_cond_init F
 GLIBC_2.4 pthread_cond_signal F
 GLIBC_2.4 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index b815b155b5..d9e2a3bf91 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -206,7 +205,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index e1ffc40cd9..30fd457419 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.18 pthread_barrierattr_init F
 GLIBC_2.18 pthread_barrierattr_setpshared F
 GLIBC_2.18 pthread_cancel F
 GLIBC_2.18 pthread_cond_broadcast F
-GLIBC_2.18 pthread_cond_destroy F
 GLIBC_2.18 pthread_cond_init F
 GLIBC_2.18 pthread_cond_signal F
 GLIBC_2.18 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index e1ffc40cd9..30fd457419 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.18 pthread_barrierattr_init F
 GLIBC_2.18 pthread_barrierattr_setpshared F
 GLIBC_2.18 pthread_cancel F
 GLIBC_2.18 pthread_cond_broadcast F
-GLIBC_2.18 pthread_cond_destroy F
 GLIBC_2.18 pthread_cond_init F
 GLIBC_2.18 pthread_cond_signal F
 GLIBC_2.18 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 70169b45b4..2d5730fc8f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -205,7 +204,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 70169b45b4..2d5730fc8f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -205,7 +204,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 6baae4309c..94f6396182 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.21 pthread_barrierattr_init F
 GLIBC_2.21 pthread_barrierattr_setpshared F
 GLIBC_2.21 pthread_cancel F
 GLIBC_2.21 pthread_cond_broadcast F
-GLIBC_2.21 pthread_cond_destroy F
 GLIBC_2.21 pthread_cond_init F
 GLIBC_2.21 pthread_cond_signal F
 GLIBC_2.21 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 0dd3739a03..62e8dba625 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -206,7 +205,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 8d4fa60131..ada466504c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -106,7 +106,6 @@  GLIBC_2.3 pthread_barrierattr_init F
 GLIBC_2.3 pthread_barrierattr_setpshared F
 GLIBC_2.3 pthread_cancel F
 GLIBC_2.3 pthread_cond_broadcast F
-GLIBC_2.3 pthread_cond_destroy F
 GLIBC_2.3 pthread_cond_init F
 GLIBC_2.3 pthread_cond_signal F
 GLIBC_2.3 pthread_cond_timedwait F
@@ -196,7 +195,6 @@  GLIBC_2.3 system F
 GLIBC_2.3 tcdrain F
 GLIBC_2.3 write F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index d5b247d1bd..6237b22222 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.17 pthread_barrierattr_init F
 GLIBC_2.17 pthread_barrierattr_setpshared F
 GLIBC_2.17 pthread_cancel F
 GLIBC_2.17 pthread_cond_broadcast F
-GLIBC_2.17 pthread_cond_destroy F
 GLIBC_2.17 pthread_cond_init F
 GLIBC_2.17 pthread_cond_signal F
 GLIBC_2.17 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index e3391617d6..30a1e15e90 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -83,7 +83,6 @@  GLIBC_2.27 pthread_barrierattr_init F
 GLIBC_2.27 pthread_barrierattr_setpshared F
 GLIBC_2.27 pthread_cancel F
 GLIBC_2.27 pthread_cond_broadcast F
-GLIBC_2.27 pthread_cond_destroy F
 GLIBC_2.27 pthread_cond_init F
 GLIBC_2.27 pthread_cond_signal F
 GLIBC_2.27 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index ff80259a92..a9a8c7630e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -208,7 +207,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 02d7c0409a..7052913b40 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -88,7 +88,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -200,7 +199,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index aa0c6d1da0..1ac88709aa 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index aa0c6d1da0..1ac88709aa 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 391be30e38..be6e5dcd3d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -46,7 +46,6 @@  GLIBC_2.0 pause F
 GLIBC_2.0 pthread_atfork F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_cond_broadcast F
-GLIBC_2.0 pthread_cond_destroy F
 GLIBC_2.0 pthread_cond_init F
 GLIBC_2.0 pthread_cond_signal F
 GLIBC_2.0 pthread_cond_timedwait F
@@ -206,7 +205,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 283e0e6f9d..a2be53b8c5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_cond_broadcast F
-GLIBC_2.2 pthread_cond_destroy F
 GLIBC_2.2 pthread_cond_init F
 GLIBC_2.2 pthread_cond_signal F
 GLIBC_2.2 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 35835c89d9..90780c92d4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.2.5 pthread_barrierattr_init F
 GLIBC_2.2.5 pthread_barrierattr_setpshared F
 GLIBC_2.2.5 pthread_cancel F
 GLIBC_2.2.5 pthread_cond_broadcast F
-GLIBC_2.2.5 pthread_cond_destroy F
 GLIBC_2.2.5 pthread_cond_init F
 GLIBC_2.2.5 pthread_cond_signal F
 GLIBC_2.2.5 pthread_cond_timedwait F
@@ -198,7 +197,6 @@  GLIBC_2.28 tss_delete F
 GLIBC_2.28 tss_get F
 GLIBC_2.28 tss_set F
 GLIBC_2.3.2 pthread_cond_broadcast F
-GLIBC_2.3.2 pthread_cond_destroy F
 GLIBC_2.3.2 pthread_cond_init F
 GLIBC_2.3.2 pthread_cond_signal F
 GLIBC_2.3.2 pthread_cond_timedwait F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 4b27550ad0..b24b7b637e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -86,7 +86,6 @@  GLIBC_2.16 pthread_barrierattr_init F
 GLIBC_2.16 pthread_barrierattr_setpshared F
 GLIBC_2.16 pthread_cancel F
 GLIBC_2.16 pthread_cond_broadcast F
-GLIBC_2.16 pthread_cond_destroy F
 GLIBC_2.16 pthread_cond_init F
 GLIBC_2.16 pthread_cond_signal F
 GLIBC_2.16 pthread_cond_timedwait F