[PATCH v3 34/37] nptl: Move core mutex functions into libc

Adhemerval Zanella adhemerval.zanella@linaro.org
Thu Mar 25 20:46:31 GMT 2021



On 16/03/2021 14:31, Florian Weimer via Libc-alpha wrote:
> This is complicated because of a second compilation of
> nptl/pthread_mutex_lock.c via nptl/pthread_mutex_cond_lock.c.
> PTHREAD_MUTEX_VERSIONS is introduced to suppress symbol versions
> in that case.

I am wondering if it would worth a refactor to make the cond wait
code to just enable/disable lock elision and call the default 
symbol instead of providing an specific implementation.

> 
> The symbols __pthread_mutex_lock, __pthread_mutex_unlock,
> __pthread_mutex_init, __pthread_mutex_destroy, pthread_mutex_lock,
> pthread_mutex_unlock, pthread_mutex_init, pthread_mutex_destroy
> have beeb moved using scripts/move-symbol-to-libc.py.

s/beeb/been.

LGTM, thanks.

(Same comment regarding compat_symbol with multiple references 
as before).

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

> ---
>  nptl/Makefile                                 |  8 ++---
>  nptl/Versions                                 | 17 +++++-----
>  nptl/forward.c                                | 11 -------
>  nptl/nptl-init.c                              |  4 ---
>  nptl/pthreadP.h                               | 11 ++++---
>  nptl/pthread_mutex_cond_lock.c                |  3 +-
>  nptl/pthread_mutex_destroy.c                  | 18 ++++++++---
>  nptl/pthread_mutex_init.c                     | 16 ++++++++--
>  nptl/pthread_mutex_lock.c                     | 22 ++++++++++---
>  nptl/pthread_mutex_unlock.c                   | 19 ++++++++---
>  sysdeps/nptl/libc-lockP.h                     | 32 ++++++-------------
>  sysdeps/nptl/pthread-functions.h              |  5 ---
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  8 +++++
>  .../sysv/linux/aarch64/libpthread.abilist     |  8 -----
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  8 +++++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  8 -----
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  8 +++++
>  .../unix/sysv/linux/arc/libpthread.abilist    |  8 -----
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  8 +++++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  8 -----
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  8 +++++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  8 -----
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  8 +++++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  8 -----
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  8 +++++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  8 -----
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  8 +++++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  8 -----
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  8 +++++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  8 -----
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  8 +++++
>  .../linux/m68k/coldfire/libpthread.abilist    |  8 -----
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  8 +++++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  8 -----
>  .../sysv/linux/microblaze/be/libc.abilist     |  8 +++++
>  .../linux/microblaze/be/libpthread.abilist    |  8 -----
>  .../sysv/linux/microblaze/le/libc.abilist     |  8 +++++
>  .../linux/microblaze/le/libpthread.abilist    |  8 -----
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  8 +++++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  8 -----
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  8 +++++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  8 -----
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  8 +++++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  8 +++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  8 +++++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  8 -----
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  8 +++++
>  .../powerpc/powerpc32/libpthread.abilist      |  8 -----
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  8 +++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  8 +++++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  8 -----
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  8 +++++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  8 -----
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  8 +++++
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  8 -----
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  8 +++++
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  8 -----
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  8 +++++
>  .../linux/s390/s390-32/libpthread.abilist     |  8 -----
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  8 +++++
>  .../linux/s390/s390-64/libpthread.abilist     |  8 -----
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  8 +++++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  8 -----
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  8 +++++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  8 -----
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  8 +++++
>  .../linux/sparc/sparc32/libpthread.abilist    |  8 -----
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  8 +++++
>  .../linux/sparc/sparc64/libpthread.abilist    |  8 -----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  8 +++++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  8 -----
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  8 +++++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  8 -----
>  73 files changed, 346 insertions(+), 308 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 3ae0e1e8c8..e0ba8bea13 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -84,6 +84,10 @@ routines = \
>    pthread_keys \
>    pthread_mutex_conf \
>    pthread_mutex_consistent \
> +  pthread_mutex_destroy \
> +  pthread_mutex_init \
> +  pthread_mutex_lock \
> +  pthread_mutex_unlock \
>    pthread_once \
>    pthread_rwlock_rdlock \
>    pthread_rwlock_unlock \
> @@ -171,14 +175,10 @@ libpthread-routines = \
>    pthread_kill \
>    pthread_kill_other_threads \
>    pthread_mutex_cond_lock \
> -  pthread_mutex_destroy \
>    pthread_mutex_getprioceiling \
> -  pthread_mutex_init \
> -  pthread_mutex_lock \
>    pthread_mutex_setprioceiling \
>    pthread_mutex_timedlock \
>    pthread_mutex_trylock \
> -  pthread_mutex_unlock \
>    pthread_mutexattr_destroy \
>    pthread_mutexattr_getprioceiling \
>    pthread_mutexattr_getprotocol \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 2b9508bd6f..2352b74c7e 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -2,6 +2,10 @@ libc {
>    GLIBC_2.0 {
>      __pthread_getspecific;
>      __pthread_key_create;
> +    __pthread_mutex_destroy;
> +    __pthread_mutex_init;
> +    __pthread_mutex_lock;
> +    __pthread_mutex_unlock;
>      __pthread_once;
>      __pthread_setspecific;
>      _pthread_cleanup_pop;
> @@ -103,6 +107,10 @@ libc {
>      __pthread_cleanup_routine;
>      __pthread_getspecific;
>      __pthread_key_create;
> +    __pthread_mutex_destroy;
> +    __pthread_mutex_init;
> +    __pthread_mutex_lock;
> +    __pthread_mutex_unlock;
>      __pthread_once;
>      __pthread_rwlock_rdlock;
>      __pthread_rwlock_unlock;
> @@ -155,6 +163,7 @@ libc {
>      __pthread_getattr_default_np;
>      __pthread_key_delete;
>      __pthread_keys;
> +    __pthread_mutex_unlock_usercnt;
>      __pthread_setcancelstate;
>      __pthread_tpp_change_priority;
>      __pthread_unwind;
> @@ -177,11 +186,7 @@ libpthread {
>      __lseek;
>      __open;
>      __pthread_atfork;
> -    __pthread_mutex_destroy;
> -    __pthread_mutex_init;
> -    __pthread_mutex_lock;
>      __pthread_mutex_trylock;
> -    __pthread_mutex_unlock;
>      __pthread_mutexattr_destroy;
>      __pthread_mutexattr_init;
>      __pthread_mutexattr_settype;
> @@ -213,11 +218,7 @@ libpthread {
>      pthread_join;
>      pthread_kill;
>      pthread_kill_other_threads_np;
> -    pthread_mutex_destroy;
> -    pthread_mutex_init;
> -    pthread_mutex_lock;
>      pthread_mutex_trylock;
> -    pthread_mutex_unlock;
>      pthread_mutexattr_destroy;
>      pthread_mutexattr_getkind_np;
>      pthread_mutexattr_init;

Ok.

> diff --git a/nptl/forward.c b/nptl/forward.c
> index de4e9cd6ab..c914baec4f 100644
> --- a/nptl/forward.c
> +++ b/nptl/forward.c
> @@ -90,14 +90,3 @@ FORWARD (__pthread_cond_timedwait,
>  	  const struct timespec *abstime), (cond, mutex, abstime), 0)
>  versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait,
>  		  GLIBC_2_3_2);
> -
> -
> -FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
> -
> -FORWARD (pthread_mutex_init,
> -	 (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr),
> -	 (mutex, mutexattr), 0)
> -
> -FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
> -
> -FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)

Ok.

> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index 5c85f75cc1..cbc9430ecb 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -63,10 +63,6 @@ static const struct pthread_functions pthread_functions =
>      .ptr___pthread_cond_wait_2_0 = __pthread_cond_wait_2_0,
>      .ptr___pthread_cond_timedwait_2_0 = __pthread_cond_timedwait_2_0,
>  # endif
> -    .ptr_pthread_mutex_destroy = __pthread_mutex_destroy,
> -    .ptr_pthread_mutex_init = __pthread_mutex_init,
> -    .ptr_pthread_mutex_lock = __pthread_mutex_lock,
> -    .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
>      .ptr__nptl_setxid = __nptl_setxid,
>    };
>  # define ptr_pthread_functions &pthread_functions

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 7fd290e004..4feebdf09e 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -389,9 +389,12 @@ extern int __pthread_setschedparam (pthread_t thread_id, int policy,
>  				    const struct sched_param *param);
>  extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
>  				 const pthread_mutexattr_t *__mutexattr);
> +libc_hidden_proto (__pthread_mutex_init)
>  extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
> +libc_hidden_proto (__pthread_mutex_destroy)
>  extern int __pthread_mutex_trylock (pthread_mutex_t *_mutex);
>  extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
> +libc_hidden_proto (__pthread_mutex_lock)
>  extern int __pthread_mutex_timedlock (pthread_mutex_t *__mutex,
>       const struct timespec *__abstime);
>  extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex)
> @@ -399,8 +402,10 @@ extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex)
>  extern void __pthread_mutex_cond_lock_adjust (pthread_mutex_t *__mutex)
>       attribute_hidden;
>  extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
> +libc_hidden_proto (__pthread_mutex_unlock)
>  extern int __pthread_mutex_unlock_usercnt (pthread_mutex_t *__mutex,
> -					   int __decr) attribute_hidden;
> +					   int __decr);
> +libc_hidden_proto (__pthread_mutex_unlock_usercnt)
>  extern int __pthread_mutexattr_init (pthread_mutexattr_t *attr);
>  extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *attr);
>  extern int __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind);
> @@ -554,11 +559,7 @@ libc_hidden_proto (__pthread_sigmask);
>  
>  
>  #if IS_IN (libpthread)
> -hidden_proto (__pthread_mutex_init)
> -hidden_proto (__pthread_mutex_destroy)
> -hidden_proto (__pthread_mutex_lock)
>  hidden_proto (__pthread_mutex_trylock)
> -hidden_proto (__pthread_mutex_unlock)
>  hidden_proto (__pthread_rwlock_unlock)
>  hidden_proto (__pthread_testcancel)
>  hidden_proto (__pthread_mutexattr_init)

Ok.

> diff --git a/nptl/pthread_mutex_cond_lock.c b/nptl/pthread_mutex_cond_lock.c
> index 3386bd689b..f3af514305 100644
> --- a/nptl/pthread_mutex_cond_lock.c
> +++ b/nptl/pthread_mutex_cond_lock.c
> @@ -15,8 +15,9 @@
>  /* We need to assume that there are other threads blocked on the futex.
>     See __pthread_mutex_lock_full for further details.  */
>  #define LLL_ROBUST_MUTEX_LOCK_MODIFIER FUTEX_WAITERS
> -#define __pthread_mutex_lock  __pthread_mutex_cond_lock
> +#define PTHREAD_MUTEX_LOCK  __pthread_mutex_cond_lock
>  #define __pthread_mutex_lock_full __pthread_mutex_cond_lock_full
>  #define NO_INCR
> +#define PTHREAD_MUTEX_VERSIONS 0
>  
>  #include <nptl/pthread_mutex_lock.c>

Ok.

> diff --git a/nptl/pthread_mutex_destroy.c b/nptl/pthread_mutex_destroy.c
> index d2fb816e11..98da991a9d 100644
> --- a/nptl/pthread_mutex_destroy.c
> +++ b/nptl/pthread_mutex_destroy.c
> @@ -18,12 +18,12 @@
>  
>  #include <errno.h>
>  #include "pthreadP.h"
> -
> +#include <shlib-compat.h>
>  #include <stap-probe.h>
>  
>  
>  int
> -__pthread_mutex_destroy (pthread_mutex_t *mutex)
> +__pthread_mutex_destroy_1 (pthread_mutex_t *mutex)
>  {
>    LIBC_PROBE (mutex_destroy, 1, mutex);
>  
> @@ -41,5 +41,15 @@ __pthread_mutex_destroy (pthread_mutex_t *mutex)
>  
>    return 0;
>  }
> -weak_alias (__pthread_mutex_destroy, pthread_mutex_destroy)
> -hidden_def (__pthread_mutex_destroy)
> +versioned_symbol (libc, __pthread_mutex_destroy_1, __pthread_mutex_destroy,
> +                  GLIBC_2_34);
> +libc_hidden_ver (__pthread_mutex_destroy_1, __pthread_mutex_destroy)
> +strong_alias (__pthread_mutex_destroy_1, __pthread_mutex_destroy_2)
> +versioned_symbol (libc, __pthread_mutex_destroy_2, pthread_mutex_destroy,
> +                  GLIBC_2_0);
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +strong_alias (__pthread_mutex_destroy_1, __pthread_mutex_destroy_3)
> +compat_symbol (libc, __pthread_mutex_destroy_3, __pthread_mutex_destroy,
> +               GLIBC_2_0);
> +#endif

Ok.

> diff --git a/nptl/pthread_mutex_init.c b/nptl/pthread_mutex_init.c
> index f5c3a4b464..b3af7fcd48 100644
> --- a/nptl/pthread_mutex_init.c
> +++ b/nptl/pthread_mutex_init.c
> @@ -25,6 +25,7 @@
>  #include <atomic.h>
>  #include <pthread-offsets.h>
>  #include <futex-internal.h>
> +#include <shlib-compat.h>
>  
>  #include <stap-probe.h>
>  
> @@ -48,7 +49,7 @@ prio_inherit_missing (void)
>  }
>  
>  int
> -__pthread_mutex_init (pthread_mutex_t *mutex,
> +__pthread_mutex_init_1 (pthread_mutex_t *mutex,
>  		      const pthread_mutexattr_t *mutexattr)
>  {
>    const struct pthread_mutexattr *imutexattr;
> @@ -150,5 +151,14 @@ __pthread_mutex_init (pthread_mutex_t *mutex,
>  
>    return 0;
>  }
> -weak_alias (__pthread_mutex_init, pthread_mutex_init)
> -hidden_def (__pthread_mutex_init)
> +versioned_symbol (libc, __pthread_mutex_init_1, __pthread_mutex_init,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_mutex_init_1, __pthread_mutex_init)
> +strong_alias (__pthread_mutex_init_1, __pthread_mutex_init_2)
> +versioned_symbol (libc, __pthread_mutex_init_2, pthread_mutex_init,
> +		  GLIBC_2_0);
> +# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +strong_alias (__pthread_mutex_init_1, __pthread_mutex_init_3)
> +compat_symbol (libc, __pthread_mutex_init_3, __pthread_mutex_init,
> +	       GLIBC_2_0);
> +#endif

Ok.

> diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
> index 8649a92ffb..261cd5a72d 100644
> --- a/nptl/pthread_mutex_lock.c
> +++ b/nptl/pthread_mutex_lock.c
> @@ -26,6 +26,7 @@
>  #include <atomic.h>
>  #include <futex-internal.h>
>  #include <stap-probe.h>
> +#include <shlib-compat.h>
>  
>  /* Some of the following definitions differ when pthread_mutex_cond_lock.c
>     includes this file.  */
> @@ -60,13 +61,15 @@ lll_mutex_lock_optimized (pthread_mutex_t *mutex)
>  # define LLL_MUTEX_TRYLOCK_ELISION(mutex) \
>    lll_trylock_elision((mutex)->__data.__lock, (mutex)->__data.__elision, \
>  		   PTHREAD_MUTEX_PSHARED (mutex))
> +# define PTHREAD_MUTEX_LOCK __pthread_mutex_lock_1
> +# define PTHREAD_MUTEX_VERSIONS 1
>  #endif
>  
>  static int __pthread_mutex_lock_full (pthread_mutex_t *mutex)
>       __attribute_noinline__;
>  
>  int
> -__pthread_mutex_lock (pthread_mutex_t *mutex)
> +PTHREAD_MUTEX_LOCK (pthread_mutex_t *mutex)
>  {
>    /* See concurrency notes regarding mutex type which is loaded from __kind
>       in struct __pthread_mutex_s in sysdeps/nptl/bits/thread-shared-types.h.  */
> @@ -604,10 +607,19 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
>  
>    return 0;
>  }
> -#ifndef __pthread_mutex_lock
> -weak_alias (__pthread_mutex_lock, pthread_mutex_lock)
> -hidden_def (__pthread_mutex_lock)
> -#endif
> +
> +#if PTHREAD_MUTEX_VERSIONS
> +versioned_symbol (libc, __pthread_mutex_lock_1, __pthread_mutex_lock,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_mutex_lock_1, __pthread_mutex_lock)
> +strong_alias (__pthread_mutex_lock_1, __pthread_mutex_lock_2)
> +versioned_symbol (libc, __pthread_mutex_lock_2, pthread_mutex_lock, GLIBC_2_0);
> +
> +# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +strong_alias (__pthread_mutex_lock_1, __pthread_mutex_lock_3)
> +compat_symbol (libc, __pthread_mutex_lock_3, __pthread_mutex_lock, GLIBC_2_0);
> +# endif
> +#endif /* PTHREAD_MUTEX_VERSIONS */
>  
>  
>  #ifdef NO_INCR

Ok.

> diff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c
> index 655093ee9a..159720198c 100644
> --- a/nptl/pthread_mutex_unlock.c
> +++ b/nptl/pthread_mutex_unlock.c
> @@ -23,6 +23,7 @@
>  #include <lowlevellock.h>
>  #include <stap-probe.h>
>  #include <futex-internal.h>
> +#include <shlib-compat.h>
>  
>  static int
>  __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
> @@ -44,7 +45,6 @@ lll_mutex_unlock_optimized (pthread_mutex_t *mutex)
>  }
>  
>  int
> -attribute_hidden
>  __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr)
>  {
>    /* See concurrency notes regarding mutex type which is loaded from __kind
> @@ -103,6 +103,7 @@ __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr)
>        goto normal;
>      }
>  }
> +libc_hidden_def (__pthread_mutex_unlock_usercnt)
>  
>  
>  static int
> @@ -363,9 +364,19 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
>  
>  
>  int
> -__pthread_mutex_unlock (pthread_mutex_t *mutex)
> +__pthread_mutex_unlock_1 (pthread_mutex_t *mutex)
>  {
>    return __pthread_mutex_unlock_usercnt (mutex, 1);
>  }
> -weak_alias (__pthread_mutex_unlock, pthread_mutex_unlock)
> -hidden_def (__pthread_mutex_unlock)
> +versioned_symbol (libc, __pthread_mutex_unlock_1, __pthread_mutex_unlock,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_mutex_unlock_1, __pthread_mutex_unlock)
> +strong_alias (__pthread_mutex_unlock_1, __pthread_mutex_unlock_2)
> +versioned_symbol (libc, __pthread_mutex_unlock_2, pthread_mutex_unlock,
> +		  GLIBC_2_0);
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +strong_alias (__pthread_mutex_unlock_1, __pthread_mutex_unlock_3)
> +compat_symbol (libc, __pthread_mutex_unlock_3, __pthread_mutex_unlock,
> +	       GLIBC_2_0);
> +#endif

Ok.

> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index 89910560fa..0dd2ea1147 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -128,8 +128,7 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  # define __libc_lock_init(NAME) \
>    ((void) ((NAME) = LLL_LOCK_INITIALIZER))
>  #else
> -# define __libc_lock_init(NAME) \
> -  __libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
> +# define __libc_lock_init(NAME) __pthread_mutex_init (&(NAME))
>  #endif
>  #if defined SHARED && IS_IN (libc)
>  /* ((NAME) = (__libc_rwlock_t) PTHREAD_RWLOCK_INITIALIZER) is inefficient.  */

Ok.

> @@ -146,8 +145,7 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  #if IS_IN (libc) || IS_IN (libpthread)
>  # define __libc_lock_fini(NAME) ((void) 0)
>  #else
> -# define __libc_lock_fini(NAME) \
> -  __libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
> +# define __libc_lock_fini(NAME) __pthread_mutex_destroy (&(NAME))
>  #endif
>  #if defined SHARED && IS_IN (libc)
>  # define __libc_rwlock_fini(NAME) ((void) 0)

Ok.

> @@ -164,8 +162,7 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  # endif
>  #else
>  # undef __libc_lock_lock
> -# define __libc_lock_lock(NAME) \
> -  __libc_maybe_call (__pthread_mutex_lock, (&(NAME)), 0)
> +# define __libc_lock_lock(NAME) __pthread_mutex_lock (&(NAME))
>  #endif
>  #define __libc_rwlock_rdlock(NAME) __pthread_rwlock_rdlock (&(NAME))
>  #define __libc_rwlock_wrlock(NAME) __pthread_rwlock_wrlock (&(NAME))

Ok.

> @@ -194,8 +191,7 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  # define __libc_lock_unlock(NAME) \
>    lll_unlock (NAME, LLL_PRIVATE)
>  #else
> -# define __libc_lock_unlock(NAME) \
> -  __libc_maybe_call (__pthread_mutex_unlock, (&(NAME)), 0)
> +# define __libc_lock_unlock(NAME) __pthread_mutex_unlock (&(NAME))
>  #endif
>  #define __libc_rwlock_unlock(NAME) __pthread_rwlock_unlock (&(NAME))
>  

Ok.

> @@ -213,10 +209,10 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>    GL(dl_rtld_unlock_recursive) (&(NAME).mutex)
>  #else
>  # define __rtld_lock_lock_recursive(NAME) \
> -  __libc_maybe_call (__pthread_mutex_lock, (&(NAME).mutex), 0)
> +  __pthread_mutex_lock (&(NAME).mutex)
>  
>  # define __rtld_lock_unlock_recursive(NAME) \
> -  __libc_maybe_call (__pthread_mutex_unlock, (&(NAME).mutex), 0)
> +  __pthread_mutex_unlock (&(NAME).mutex)
>  #endif
>  
>  /* Define once control variable.  */

Ok.

> @@ -274,15 +270,15 @@ extern int __register_atfork (void (*__prepare) (void),
>  
>  extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
>  				 const pthread_mutexattr_t *__mutex_attr);
> -
> +libc_hidden_proto (__pthread_mutex_init)
>  extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
> -
> +libc_hidden_proto (__pthread_mutex_destroy)
>  extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
>  
>  extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
> -
> +libc_hidden_proto (__pthread_mutex_lock)
>  extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
> -
> +libc_hidden_proto (__pthread_mutex_unlock)
>  extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr);
>  
>  extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr);

Ok.

> @@ -320,11 +316,7 @@ libc_hidden_proto (__pthread_setcancelstate)
>     single-threaded processes.  */
>  #ifndef __NO_WEAK_PTHREAD_ALIASES
>  # ifdef weak_extern
> -weak_extern (__pthread_mutex_init)
> -weak_extern (__pthread_mutex_destroy)
> -weak_extern (__pthread_mutex_lock)
>  weak_extern (__pthread_mutex_trylock)
> -weak_extern (__pthread_mutex_unlock)
>  weak_extern (__pthread_mutexattr_init)
>  weak_extern (__pthread_mutexattr_destroy)
>  weak_extern (__pthread_mutexattr_settype)

Ok.

> @@ -335,11 +327,7 @@ weak_extern (__pthread_rwlock_trywrlock)
>  weak_extern (__pthread_initialize)
>  weak_extern (__pthread_atfork)
>  # else
> -#  pragma weak __pthread_mutex_init
> -#  pragma weak __pthread_mutex_destroy
> -#  pragma weak __pthread_mutex_lock
>  #  pragma weak __pthread_mutex_trylock
> -#  pragma weak __pthread_mutex_unlock
>  #  pragma weak __pthread_mutexattr_init
>  #  pragma weak __pthread_mutexattr_destroy
>  #  pragma weak __pthread_mutexattr_settype

Ok.

> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 8535e142d5..dab5a2831e 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -41,11 +41,6 @@ struct pthread_functions
>    int (*ptr___pthread_cond_timedwait_2_0) (pthread_cond_2_0_t *,
>  					   pthread_mutex_t *,
>  					   const struct timespec *);
> -  int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
> -  int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
> -				 const pthread_mutexattr_t *);
> -  int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
> -  int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
>    int (*ptr__nptl_setxid) (struct xid_command *);
>  };
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 9191b2e760..381947232e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -341,6 +341,10 @@ GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_getspecific F
>  GLIBC_2.17 __pthread_key_create F
> +GLIBC_2.17 __pthread_mutex_destroy F
> +GLIBC_2.17 __pthread_mutex_init F
> +GLIBC_2.17 __pthread_mutex_lock F
> +GLIBC_2.17 __pthread_mutex_unlock F
>  GLIBC_2.17 __pthread_once F
>  GLIBC_2.17 __pthread_rwlock_rdlock F
>  GLIBC_2.17 __pthread_rwlock_unlock F
> @@ -2198,6 +2202,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 9a24f796de..29a98fc2f4 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.17 __lseek F
>  GLIBC_2.17 __open F
>  GLIBC_2.17 __open64 F
>  GLIBC_2.17 __pread64 F
> -GLIBC_2.17 __pthread_mutex_destroy F
> -GLIBC_2.17 __pthread_mutex_init F
> -GLIBC_2.17 __pthread_mutex_lock F
>  GLIBC_2.17 __pthread_mutex_trylock F
> -GLIBC_2.17 __pthread_mutex_unlock F
>  GLIBC_2.17 __pthread_mutexattr_destroy F
>  GLIBC_2.17 __pthread_mutexattr_init F
>  GLIBC_2.17 __pthread_mutexattr_settype F
> @@ -84,14 +80,10 @@ GLIBC_2.17 pthread_getname_np F
>  GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_kill F
>  GLIBC_2.17 pthread_kill_other_threads_np F
> -GLIBC_2.17 pthread_mutex_destroy F
>  GLIBC_2.17 pthread_mutex_getprioceiling F
> -GLIBC_2.17 pthread_mutex_init F
> -GLIBC_2.17 pthread_mutex_lock F
>  GLIBC_2.17 pthread_mutex_setprioceiling F
>  GLIBC_2.17 pthread_mutex_timedlock F
>  GLIBC_2.17 pthread_mutex_trylock F
> -GLIBC_2.17 pthread_mutex_unlock F
>  GLIBC_2.17 pthread_mutexattr_destroy F
>  GLIBC_2.17 pthread_mutexattr_getkind_np F
>  GLIBC_2.17 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 71dd49d25c..7e314dd68b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -190,6 +190,10 @@ GLIBC_2.0 __progname D 0x8
>  GLIBC_2.0 __progname_full D 0x8
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x8
> @@ -2279,6 +2283,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index a7b3fd73ab..29cb6259a5 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 38764a6746..014b30c7bd 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -330,6 +330,10 @@ GLIBC_2.32 __progname_full D 0x4
>  GLIBC_2.32 __pthread_cleanup_routine F
>  GLIBC_2.32 __pthread_getspecific F
>  GLIBC_2.32 __pthread_key_create F
> +GLIBC_2.32 __pthread_mutex_destroy F
> +GLIBC_2.32 __pthread_mutex_init F
> +GLIBC_2.32 __pthread_mutex_lock F
> +GLIBC_2.32 __pthread_mutex_unlock F
>  GLIBC_2.32 __pthread_once F
>  GLIBC_2.32 __pthread_rwlock_rdlock F
>  GLIBC_2.32 __pthread_rwlock_unlock F
> @@ -1958,6 +1962,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 0d8b928e6d..b926ef9dba 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -12,11 +12,7 @@ GLIBC_2.32 __lseek F
>  GLIBC_2.32 __open F
>  GLIBC_2.32 __open64 F
>  GLIBC_2.32 __pread64 F
> -GLIBC_2.32 __pthread_mutex_destroy F
> -GLIBC_2.32 __pthread_mutex_init F
> -GLIBC_2.32 __pthread_mutex_lock F
>  GLIBC_2.32 __pthread_mutex_trylock F
> -GLIBC_2.32 __pthread_mutex_unlock F
>  GLIBC_2.32 __pthread_mutexattr_destroy F
>  GLIBC_2.32 __pthread_mutexattr_init F
>  GLIBC_2.32 __pthread_mutexattr_settype F
> @@ -99,14 +95,10 @@ GLIBC_2.32 pthread_join F
>  GLIBC_2.32 pthread_kill F
>  GLIBC_2.32 pthread_kill_other_threads_np F
>  GLIBC_2.32 pthread_mutex_clocklock F
> -GLIBC_2.32 pthread_mutex_destroy F
>  GLIBC_2.32 pthread_mutex_getprioceiling F
> -GLIBC_2.32 pthread_mutex_init F
> -GLIBC_2.32 pthread_mutex_lock F
>  GLIBC_2.32 pthread_mutex_setprioceiling F
>  GLIBC_2.32 pthread_mutex_timedlock F
>  GLIBC_2.32 pthread_mutex_trylock F
> -GLIBC_2.32 pthread_mutex_unlock F
>  GLIBC_2.32 pthread_mutexattr_destroy F
>  GLIBC_2.32 pthread_mutexattr_getkind_np F
>  GLIBC_2.32 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 86d971e7d2..412eb541fc 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -160,6 +160,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> @@ -505,6 +509,10 @@ GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
> +GLIBC_2.4 __pthread_mutex_destroy F
> +GLIBC_2.4 __pthread_mutex_init F
> +GLIBC_2.4 __pthread_mutex_lock F
> +GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 833b53362d..8dd2c3f7a6 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -47,11 +47,7 @@ GLIBC_2.4 __lseek F
>  GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_mutex_destroy F
> -GLIBC_2.4 __pthread_mutex_init F
> -GLIBC_2.4 __pthread_mutex_lock F
>  GLIBC_2.4 __pthread_mutex_trylock F
> -GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_mutexattr_destroy F
>  GLIBC_2.4 __pthread_mutexattr_init F
>  GLIBC_2.4 __pthread_mutexattr_settype F
> @@ -117,14 +113,10 @@ GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
> -GLIBC_2.4 pthread_mutex_init F
> -GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_setprioceiling F
>  GLIBC_2.4 pthread_mutex_timedlock F
>  GLIBC_2.4 pthread_mutex_trylock F
> -GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_mutexattr_destroy F
>  GLIBC_2.4 pthread_mutexattr_getkind_np F
>  GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index caf3f6a141..588f1d6b42 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -157,6 +157,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> @@ -502,6 +506,10 @@ GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
> +GLIBC_2.4 __pthread_mutex_destroy F
> +GLIBC_2.4 __pthread_mutex_init F
> +GLIBC_2.4 __pthread_mutex_lock F
> +GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 833b53362d..8dd2c3f7a6 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -47,11 +47,7 @@ GLIBC_2.4 __lseek F
>  GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_mutex_destroy F
> -GLIBC_2.4 __pthread_mutex_init F
> -GLIBC_2.4 __pthread_mutex_lock F
>  GLIBC_2.4 __pthread_mutex_trylock F
> -GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_mutexattr_destroy F
>  GLIBC_2.4 __pthread_mutexattr_init F
>  GLIBC_2.4 __pthread_mutexattr_settype F
> @@ -117,14 +113,10 @@ GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
> -GLIBC_2.4 pthread_mutex_init F
> -GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_setprioceiling F
>  GLIBC_2.4 pthread_mutex_timedlock F
>  GLIBC_2.4 pthread_mutex_trylock F
> -GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_mutexattr_destroy F
>  GLIBC_2.4 pthread_mutexattr_getkind_np F
>  GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index aeb6424389..76fb31f895 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -334,6 +334,10 @@ GLIBC_2.29 __progname_full D 0x4
>  GLIBC_2.29 __pthread_cleanup_routine F
>  GLIBC_2.29 __pthread_getspecific F
>  GLIBC_2.29 __pthread_key_create F
> +GLIBC_2.29 __pthread_mutex_destroy F
> +GLIBC_2.29 __pthread_mutex_init F
> +GLIBC_2.29 __pthread_mutex_lock F
> +GLIBC_2.29 __pthread_mutex_unlock F
>  GLIBC_2.29 __pthread_once F
>  GLIBC_2.29 __pthread_rwlock_rdlock F
>  GLIBC_2.29 __pthread_rwlock_unlock F
> @@ -2142,6 +2146,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 440c0507d1..2c4d219569 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -12,11 +12,7 @@ GLIBC_2.29 __lseek F
>  GLIBC_2.29 __open F
>  GLIBC_2.29 __open64 F
>  GLIBC_2.29 __pread64 F
> -GLIBC_2.29 __pthread_mutex_destroy F
> -GLIBC_2.29 __pthread_mutex_init F
> -GLIBC_2.29 __pthread_mutex_lock F
>  GLIBC_2.29 __pthread_mutex_trylock F
> -GLIBC_2.29 __pthread_mutex_unlock F
>  GLIBC_2.29 __pthread_mutexattr_destroy F
>  GLIBC_2.29 __pthread_mutexattr_init F
>  GLIBC_2.29 __pthread_mutexattr_settype F
> @@ -96,14 +92,10 @@ GLIBC_2.29 pthread_getname_np F
>  GLIBC_2.29 pthread_join F
>  GLIBC_2.29 pthread_kill F
>  GLIBC_2.29 pthread_kill_other_threads_np F
> -GLIBC_2.29 pthread_mutex_destroy F
>  GLIBC_2.29 pthread_mutex_getprioceiling F
> -GLIBC_2.29 pthread_mutex_init F
> -GLIBC_2.29 pthread_mutex_lock F
>  GLIBC_2.29 pthread_mutex_setprioceiling F
>  GLIBC_2.29 pthread_mutex_timedlock F
>  GLIBC_2.29 pthread_mutex_trylock F
> -GLIBC_2.29 pthread_mutex_unlock F
>  GLIBC_2.29 pthread_mutexattr_destroy F
>  GLIBC_2.29 pthread_mutexattr_getkind_np F
>  GLIBC_2.29 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index e1d02058c9..e99899dee5 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -358,6 +358,10 @@ GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2100,6 +2104,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 70af59d791..9e15deaad8 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 717344a690..29b8e0c1eb 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -187,6 +187,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2267,6 +2271,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 35cc2f61c5..4065a88a3b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 284b7072a3..fb8a36ce20 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -362,6 +362,10 @@ GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2132,6 +2136,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 2e69109cdc..684bf559e5 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 404d16b92a..03e80e6a12 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -161,6 +161,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> @@ -491,6 +495,10 @@ GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
> +GLIBC_2.4 __pthread_mutex_destroy F
> +GLIBC_2.4 __pthread_mutex_init F
> +GLIBC_2.4 __pthread_mutex_lock F
> +GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 833b53362d..8dd2c3f7a6 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -47,11 +47,7 @@ GLIBC_2.4 __lseek F
>  GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_mutex_destroy F
> -GLIBC_2.4 __pthread_mutex_init F
> -GLIBC_2.4 __pthread_mutex_lock F
>  GLIBC_2.4 __pthread_mutex_trylock F
> -GLIBC_2.4 __pthread_mutex_unlock F
>  GLIBC_2.4 __pthread_mutexattr_destroy F
>  GLIBC_2.4 __pthread_mutexattr_init F
>  GLIBC_2.4 __pthread_mutexattr_settype F
> @@ -117,14 +113,10 @@ GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
> -GLIBC_2.4 pthread_mutex_init F
> -GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_setprioceiling F
>  GLIBC_2.4 pthread_mutex_timedlock F
>  GLIBC_2.4 pthread_mutex_trylock F
> -GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_mutexattr_destroy F
>  GLIBC_2.4 pthread_mutexattr_getkind_np F
>  GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index b1ad96e072..2a5bee30d1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -187,6 +187,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2212,6 +2216,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 35cc2f61c5..4065a88a3b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 3e0cceae93..b46567880e 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -342,6 +342,10 @@ GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_getspecific F
>  GLIBC_2.18 __pthread_key_create F
> +GLIBC_2.18 __pthread_mutex_destroy F
> +GLIBC_2.18 __pthread_mutex_init F
> +GLIBC_2.18 __pthread_mutex_lock F
> +GLIBC_2.18 __pthread_mutex_unlock F
>  GLIBC_2.18 __pthread_once F
>  GLIBC_2.18 __pthread_rwlock_rdlock F
>  GLIBC_2.18 __pthread_rwlock_unlock F
> @@ -2193,6 +2197,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 0db83c2f88..d8a9642f66 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.18 __lseek F
>  GLIBC_2.18 __open F
>  GLIBC_2.18 __open64 F
>  GLIBC_2.18 __pread64 F
> -GLIBC_2.18 __pthread_mutex_destroy F
> -GLIBC_2.18 __pthread_mutex_init F
> -GLIBC_2.18 __pthread_mutex_lock F
>  GLIBC_2.18 __pthread_mutex_trylock F
> -GLIBC_2.18 __pthread_mutex_unlock F
>  GLIBC_2.18 __pthread_mutexattr_destroy F
>  GLIBC_2.18 __pthread_mutexattr_init F
>  GLIBC_2.18 __pthread_mutexattr_settype F
> @@ -85,14 +81,10 @@ GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_kill F
>  GLIBC_2.18 pthread_kill_other_threads_np F
> -GLIBC_2.18 pthread_mutex_destroy F
>  GLIBC_2.18 pthread_mutex_getprioceiling F
> -GLIBC_2.18 pthread_mutex_init F
> -GLIBC_2.18 pthread_mutex_lock F
>  GLIBC_2.18 pthread_mutex_setprioceiling F
>  GLIBC_2.18 pthread_mutex_timedlock F
>  GLIBC_2.18 pthread_mutex_trylock F
> -GLIBC_2.18 pthread_mutex_unlock F
>  GLIBC_2.18 pthread_mutexattr_destroy F
>  GLIBC_2.18 pthread_mutexattr_getkind_np F
>  GLIBC_2.18 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 4ee88a1d01..7796c5313a 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -342,6 +342,10 @@ GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_getspecific F
>  GLIBC_2.18 __pthread_key_create F
> +GLIBC_2.18 __pthread_mutex_destroy F
> +GLIBC_2.18 __pthread_mutex_init F
> +GLIBC_2.18 __pthread_mutex_lock F
> +GLIBC_2.18 __pthread_mutex_unlock F
>  GLIBC_2.18 __pthread_once F
>  GLIBC_2.18 __pthread_rwlock_rdlock F
>  GLIBC_2.18 __pthread_rwlock_unlock F
> @@ -2190,6 +2194,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 0db83c2f88..d8a9642f66 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.18 __lseek F
>  GLIBC_2.18 __open F
>  GLIBC_2.18 __open64 F
>  GLIBC_2.18 __pread64 F
> -GLIBC_2.18 __pthread_mutex_destroy F
> -GLIBC_2.18 __pthread_mutex_init F
> -GLIBC_2.18 __pthread_mutex_lock F
>  GLIBC_2.18 __pthread_mutex_trylock F
> -GLIBC_2.18 __pthread_mutex_unlock F
>  GLIBC_2.18 __pthread_mutexattr_destroy F
>  GLIBC_2.18 __pthread_mutexattr_init F
>  GLIBC_2.18 __pthread_mutexattr_settype F
> @@ -85,14 +81,10 @@ GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_kill F
>  GLIBC_2.18 pthread_kill_other_threads_np F
> -GLIBC_2.18 pthread_mutex_destroy F
>  GLIBC_2.18 pthread_mutex_getprioceiling F
> -GLIBC_2.18 pthread_mutex_init F
> -GLIBC_2.18 pthread_mutex_lock F
>  GLIBC_2.18 pthread_mutex_setprioceiling F
>  GLIBC_2.18 pthread_mutex_timedlock F
>  GLIBC_2.18 pthread_mutex_trylock F
> -GLIBC_2.18 pthread_mutex_unlock F
>  GLIBC_2.18 pthread_mutexattr_destroy F
>  GLIBC_2.18 pthread_mutexattr_getkind_np F
>  GLIBC_2.18 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index e67af35000..c3e658dbc1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -185,6 +185,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2183,6 +2187,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index a1a66138d4..4bd5de2dd7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 1ce0179391..bae73ebb39 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -185,6 +185,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2181,6 +2185,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index a1a66138d4..4bd5de2dd7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 54c2300420..74fb3b997e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -185,6 +185,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2189,6 +2193,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 90bbb7f253..3083e3d821 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -185,6 +185,10 @@ GLIBC_2.0 __progname D 0x8
>  GLIBC_2.0 __progname_full D 0x8
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x8
> @@ -2183,6 +2187,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 1f68c2a3fb..f79ca91eb7 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -379,6 +379,10 @@ GLIBC_2.21 __progname_full D 0x4
>  GLIBC_2.21 __pthread_cleanup_routine F
>  GLIBC_2.21 __pthread_getspecific F
>  GLIBC_2.21 __pthread_key_create F
> +GLIBC_2.21 __pthread_mutex_destroy F
> +GLIBC_2.21 __pthread_mutex_init F
> +GLIBC_2.21 __pthread_mutex_lock F
> +GLIBC_2.21 __pthread_mutex_unlock F
>  GLIBC_2.21 __pthread_once F
>  GLIBC_2.21 __pthread_rwlock_rdlock F
>  GLIBC_2.21 __pthread_rwlock_unlock F
> @@ -2231,6 +2235,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 806432b7b4..c469853b65 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.21 __lseek F
>  GLIBC_2.21 __open F
>  GLIBC_2.21 __open64 F
>  GLIBC_2.21 __pread64 F
> -GLIBC_2.21 __pthread_mutex_destroy F
> -GLIBC_2.21 __pthread_mutex_init F
> -GLIBC_2.21 __pthread_mutex_lock F
>  GLIBC_2.21 __pthread_mutex_trylock F
> -GLIBC_2.21 __pthread_mutex_unlock F
>  GLIBC_2.21 __pthread_mutexattr_destroy F
>  GLIBC_2.21 __pthread_mutexattr_init F
>  GLIBC_2.21 __pthread_mutexattr_settype F
> @@ -85,14 +81,10 @@ GLIBC_2.21 pthread_getname_np F
>  GLIBC_2.21 pthread_join F
>  GLIBC_2.21 pthread_kill F
>  GLIBC_2.21 pthread_kill_other_threads_np F
> -GLIBC_2.21 pthread_mutex_destroy F
>  GLIBC_2.21 pthread_mutex_getprioceiling F
> -GLIBC_2.21 pthread_mutex_init F
> -GLIBC_2.21 pthread_mutex_lock F
>  GLIBC_2.21 pthread_mutex_setprioceiling F
>  GLIBC_2.21 pthread_mutex_timedlock F
>  GLIBC_2.21 pthread_mutex_trylock F
> -GLIBC_2.21 pthread_mutex_unlock F
>  GLIBC_2.21 pthread_mutexattr_destroy F
>  GLIBC_2.21 pthread_mutexattr_getkind_np F
>  GLIBC_2.21 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index a41536e4cd..f5408e6078 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -196,6 +196,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2239,6 +2243,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index d0646d0eaf..44fb3a6743 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index cdd6e98496..a7587dcc45 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -196,6 +196,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2272,6 +2276,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 63a7449937..7ea6dc6574 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -411,6 +411,10 @@ GLIBC_2.3 __progname D 0x8
>  GLIBC_2.3 __progname_full D 0x8
>  GLIBC_2.3 __pthread_getspecific F
>  GLIBC_2.3 __pthread_key_create F
> +GLIBC_2.3 __pthread_mutex_destroy F
> +GLIBC_2.3 __pthread_mutex_init F
> +GLIBC_2.3 __pthread_mutex_lock F
> +GLIBC_2.3 __pthread_mutex_unlock F
>  GLIBC_2.3 __pthread_once F
>  GLIBC_2.3 __pthread_rwlock_rdlock F
>  GLIBC_2.3 __pthread_rwlock_unlock F
> @@ -2102,6 +2106,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 72d49ce4f3..2e77dc2fb3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -41,11 +41,7 @@ GLIBC_2.3 __lseek F
>  GLIBC_2.3 __open F
>  GLIBC_2.3 __open64 F
>  GLIBC_2.3 __pread64 F
> -GLIBC_2.3 __pthread_mutex_destroy F
> -GLIBC_2.3 __pthread_mutex_init F
> -GLIBC_2.3 __pthread_mutex_lock F
>  GLIBC_2.3 __pthread_mutex_trylock F
> -GLIBC_2.3 __pthread_mutex_unlock F
>  GLIBC_2.3 __pthread_mutexattr_destroy F
>  GLIBC_2.3 __pthread_mutexattr_init F
>  GLIBC_2.3 __pthread_mutexattr_settype F
> @@ -103,12 +99,8 @@ GLIBC_2.3 pthread_getcpuclockid F
>  GLIBC_2.3 pthread_join F
>  GLIBC_2.3 pthread_kill F
>  GLIBC_2.3 pthread_kill_other_threads_np F
> -GLIBC_2.3 pthread_mutex_destroy F
> -GLIBC_2.3 pthread_mutex_init F
> -GLIBC_2.3 pthread_mutex_lock F
>  GLIBC_2.3 pthread_mutex_timedlock F
>  GLIBC_2.3 pthread_mutex_trylock F
> -GLIBC_2.3 pthread_mutex_unlock F
>  GLIBC_2.3 pthread_mutexattr_destroy F
>  GLIBC_2.3 pthread_mutexattr_getkind_np F
>  GLIBC_2.3 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index b6de88ea41..f994892fd9 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -427,6 +427,10 @@ GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_getspecific F
>  GLIBC_2.17 __pthread_key_create F
> +GLIBC_2.17 __pthread_mutex_destroy F
> +GLIBC_2.17 __pthread_mutex_init F
> +GLIBC_2.17 __pthread_mutex_lock F
> +GLIBC_2.17 __pthread_mutex_unlock F
>  GLIBC_2.17 __pthread_once F
>  GLIBC_2.17 __pthread_rwlock_rdlock F
>  GLIBC_2.17 __pthread_rwlock_unlock F
> @@ -2393,6 +2397,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 9a24f796de..29a98fc2f4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.17 __lseek F
>  GLIBC_2.17 __open F
>  GLIBC_2.17 __open64 F
>  GLIBC_2.17 __pread64 F
> -GLIBC_2.17 __pthread_mutex_destroy F
> -GLIBC_2.17 __pthread_mutex_init F
> -GLIBC_2.17 __pthread_mutex_lock F
>  GLIBC_2.17 __pthread_mutex_trylock F
> -GLIBC_2.17 __pthread_mutex_unlock F
>  GLIBC_2.17 __pthread_mutexattr_destroy F
>  GLIBC_2.17 __pthread_mutexattr_init F
>  GLIBC_2.17 __pthread_mutexattr_settype F
> @@ -84,14 +80,10 @@ GLIBC_2.17 pthread_getname_np F
>  GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_kill F
>  GLIBC_2.17 pthread_kill_other_threads_np F
> -GLIBC_2.17 pthread_mutex_destroy F
>  GLIBC_2.17 pthread_mutex_getprioceiling F
> -GLIBC_2.17 pthread_mutex_init F
> -GLIBC_2.17 pthread_mutex_lock F
>  GLIBC_2.17 pthread_mutex_setprioceiling F
>  GLIBC_2.17 pthread_mutex_timedlock F
>  GLIBC_2.17 pthread_mutex_trylock F
> -GLIBC_2.17 pthread_mutex_unlock F
>  GLIBC_2.17 pthread_mutexattr_destroy F
>  GLIBC_2.17 pthread_mutexattr_getkind_np F
>  GLIBC_2.17 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index d81b46d597..70b873f9fb 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -327,6 +327,10 @@ GLIBC_2.33 __progname_full D 0x4
>  GLIBC_2.33 __pthread_cleanup_routine F
>  GLIBC_2.33 __pthread_getspecific F
>  GLIBC_2.33 __pthread_key_create F
> +GLIBC_2.33 __pthread_mutex_destroy F
> +GLIBC_2.33 __pthread_mutex_init F
> +GLIBC_2.33 __pthread_mutex_lock F
> +GLIBC_2.33 __pthread_mutex_unlock F
>  GLIBC_2.33 __pthread_once F
>  GLIBC_2.33 __pthread_rwlock_rdlock F
>  GLIBC_2.33 __pthread_rwlock_unlock F
> @@ -1960,6 +1964,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 10e50b67c0..911969f7eb 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -12,11 +12,7 @@ GLIBC_2.33 __lseek F
>  GLIBC_2.33 __open F
>  GLIBC_2.33 __open64 F
>  GLIBC_2.33 __pread64 F
> -GLIBC_2.33 __pthread_mutex_destroy F
> -GLIBC_2.33 __pthread_mutex_init F
> -GLIBC_2.33 __pthread_mutex_lock F
>  GLIBC_2.33 __pthread_mutex_trylock F
> -GLIBC_2.33 __pthread_mutex_unlock F
>  GLIBC_2.33 __pthread_mutexattr_destroy F
>  GLIBC_2.33 __pthread_mutexattr_init F
>  GLIBC_2.33 __pthread_mutexattr_settype F
> @@ -99,14 +95,10 @@ GLIBC_2.33 pthread_join F
>  GLIBC_2.33 pthread_kill F
>  GLIBC_2.33 pthread_kill_other_threads_np F
>  GLIBC_2.33 pthread_mutex_clocklock F
> -GLIBC_2.33 pthread_mutex_destroy F
>  GLIBC_2.33 pthread_mutex_getprioceiling F
> -GLIBC_2.33 pthread_mutex_init F
> -GLIBC_2.33 pthread_mutex_lock F
>  GLIBC_2.33 pthread_mutex_setprioceiling F
>  GLIBC_2.33 pthread_mutex_timedlock F
>  GLIBC_2.33 pthread_mutex_trylock F
> -GLIBC_2.33 pthread_mutex_unlock F
>  GLIBC_2.33 pthread_mutexattr_destroy F
>  GLIBC_2.33 pthread_mutexattr_getkind_np F
>  GLIBC_2.33 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index fbd1c5e5cf..ddfac62fd0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -338,6 +338,10 @@ GLIBC_2.27 __progname_full D 0x8
>  GLIBC_2.27 __pthread_cleanup_routine F
>  GLIBC_2.27 __pthread_getspecific F
>  GLIBC_2.27 __pthread_key_create F
> +GLIBC_2.27 __pthread_mutex_destroy F
> +GLIBC_2.27 __pthread_mutex_init F
> +GLIBC_2.27 __pthread_mutex_lock F
> +GLIBC_2.27 __pthread_mutex_unlock F
>  GLIBC_2.27 __pthread_once F
>  GLIBC_2.27 __pthread_rwlock_rdlock F
>  GLIBC_2.27 __pthread_rwlock_unlock F
> @@ -2160,6 +2164,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index ed24898e0d..21f462137a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.27 __lseek F
>  GLIBC_2.27 __open F
>  GLIBC_2.27 __open64 F
>  GLIBC_2.27 __pread64 F
> -GLIBC_2.27 __pthread_mutex_destroy F
> -GLIBC_2.27 __pthread_mutex_init F
> -GLIBC_2.27 __pthread_mutex_lock F
>  GLIBC_2.27 __pthread_mutex_trylock F
> -GLIBC_2.27 __pthread_mutex_unlock F
>  GLIBC_2.27 __pthread_mutexattr_destroy F
>  GLIBC_2.27 __pthread_mutexattr_init F
>  GLIBC_2.27 __pthread_mutexattr_settype F
> @@ -85,14 +81,10 @@ GLIBC_2.27 pthread_getname_np F
>  GLIBC_2.27 pthread_join F
>  GLIBC_2.27 pthread_kill F
>  GLIBC_2.27 pthread_kill_other_threads_np F
> -GLIBC_2.27 pthread_mutex_destroy F
>  GLIBC_2.27 pthread_mutex_getprioceiling F
> -GLIBC_2.27 pthread_mutex_init F
> -GLIBC_2.27 pthread_mutex_lock F
>  GLIBC_2.27 pthread_mutex_setprioceiling F
>  GLIBC_2.27 pthread_mutex_timedlock F
>  GLIBC_2.27 pthread_mutex_trylock F
> -GLIBC_2.27 pthread_mutex_unlock F
>  GLIBC_2.27 pthread_mutexattr_destroy F
>  GLIBC_2.27 pthread_mutexattr_getkind_np F
>  GLIBC_2.27 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 27a9b011a8..078237adb2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -187,6 +187,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2237,6 +2241,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index d6e91c977a..7b2edb7f57 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 9e79331100..a2700aba32 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -372,6 +372,10 @@ GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2138,6 +2142,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 14489b39d0..8b4729fb7a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -21,11 +21,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -84,12 +80,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index b7dd795864..4fce4b408e 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -361,6 +361,10 @@ GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2107,6 +2111,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 70af59d791..9e15deaad8 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index eea30cd098..5dba0f5d0c 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -361,6 +361,10 @@ GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2104,6 +2108,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 70af59d791..9e15deaad8 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 4944c4159b..e064e5a4dc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -191,6 +191,10 @@ GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
>  GLIBC_2.0 __pthread_getspecific F
>  GLIBC_2.0 __pthread_key_create F
> +GLIBC_2.0 __pthread_mutex_destroy F
> +GLIBC_2.0 __pthread_mutex_init F
> +GLIBC_2.0 __pthread_mutex_lock F
> +GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __pthread_setspecific F
>  GLIBC_2.0 __rcmd_errstr D 0x4
> @@ -2228,6 +2232,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index a7b3fd73ab..29cb6259a5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -8,11 +8,7 @@ GLIBC_2.0 __fcntl F
>  GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
> -GLIBC_2.0 __pthread_mutex_destroy F
> -GLIBC_2.0 __pthread_mutex_init F
> -GLIBC_2.0 __pthread_mutex_lock F
>  GLIBC_2.0 __pthread_mutex_trylock F
> -GLIBC_2.0 __pthread_mutex_unlock F
>  GLIBC_2.0 __pthread_mutexattr_destroy F
>  GLIBC_2.0 __pthread_mutexattr_init F
>  GLIBC_2.0 __pthread_mutexattr_settype F
> @@ -43,11 +39,7 @@ GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> -GLIBC_2.0 pthread_mutex_destroy F
> -GLIBC_2.0 pthread_mutex_init F
> -GLIBC_2.0 pthread_mutex_lock F
>  GLIBC_2.0 pthread_mutex_trylock F
> -GLIBC_2.0 pthread_mutex_unlock F
>  GLIBC_2.0 pthread_mutexattr_destroy F
>  GLIBC_2.0 pthread_mutexattr_getkind_np F
>  GLIBC_2.0 pthread_mutexattr_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index e69420994f..36fed3cf99 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -399,6 +399,10 @@ GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
> +GLIBC_2.2 __pthread_mutex_destroy F
> +GLIBC_2.2 __pthread_mutex_init F
> +GLIBC_2.2 __pthread_mutex_lock F
> +GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_unlock F
> @@ -2155,6 +2159,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 2e69109cdc..684bf559e5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2 __lseek F
>  GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
> -GLIBC_2.2 __pthread_mutex_destroy F
> -GLIBC_2.2 __pthread_mutex_init F
> -GLIBC_2.2 __pthread_mutex_lock F
>  GLIBC_2.2 __pthread_mutex_trylock F
> -GLIBC_2.2 __pthread_mutex_unlock F
>  GLIBC_2.2 __pthread_mutexattr_destroy F
>  GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> -GLIBC_2.2 pthread_mutex_destroy F
> -GLIBC_2.2 pthread_mutex_init F
> -GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_timedlock F
>  GLIBC_2.2 pthread_mutex_trylock F
> -GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_mutexattr_destroy F
>  GLIBC_2.2 pthread_mutexattr_getkind_np F
>  GLIBC_2.2 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index dfe78d93cb..6858c1328f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -360,6 +360,10 @@ GLIBC_2.2.5 __progname D 0x8
>  GLIBC_2.2.5 __progname_full D 0x8
>  GLIBC_2.2.5 __pthread_getspecific F
>  GLIBC_2.2.5 __pthread_key_create F
> +GLIBC_2.2.5 __pthread_mutex_destroy F
> +GLIBC_2.2.5 __pthread_mutex_init F
> +GLIBC_2.2.5 __pthread_mutex_lock F
> +GLIBC_2.2.5 __pthread_mutex_unlock F
>  GLIBC_2.2.5 __pthread_once F
>  GLIBC_2.2.5 __pthread_rwlock_rdlock F
>  GLIBC_2.2.5 __pthread_rwlock_unlock F
> @@ -2114,6 +2118,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 4f8dfa000a..54ad81fdd6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -20,11 +20,7 @@ GLIBC_2.2.5 __lseek F
>  GLIBC_2.2.5 __open F
>  GLIBC_2.2.5 __open64 F
>  GLIBC_2.2.5 __pread64 F
> -GLIBC_2.2.5 __pthread_mutex_destroy F
> -GLIBC_2.2.5 __pthread_mutex_init F
> -GLIBC_2.2.5 __pthread_mutex_lock F
>  GLIBC_2.2.5 __pthread_mutex_trylock F
> -GLIBC_2.2.5 __pthread_mutex_unlock F
>  GLIBC_2.2.5 __pthread_mutexattr_destroy F
>  GLIBC_2.2.5 __pthread_mutexattr_init F
>  GLIBC_2.2.5 __pthread_mutexattr_settype F
> @@ -83,12 +79,8 @@ GLIBC_2.2.5 pthread_getcpuclockid F
>  GLIBC_2.2.5 pthread_join F
>  GLIBC_2.2.5 pthread_kill F
>  GLIBC_2.2.5 pthread_kill_other_threads_np F
> -GLIBC_2.2.5 pthread_mutex_destroy F
> -GLIBC_2.2.5 pthread_mutex_init F
> -GLIBC_2.2.5 pthread_mutex_lock F
>  GLIBC_2.2.5 pthread_mutex_timedlock F
>  GLIBC_2.2.5 pthread_mutex_trylock F
> -GLIBC_2.2.5 pthread_mutex_unlock F
>  GLIBC_2.2.5 pthread_mutexattr_destroy F
>  GLIBC_2.2.5 pthread_mutexattr_getkind_np F
>  GLIBC_2.2.5 pthread_mutexattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 3accd92583..72da8cceaa 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -342,6 +342,10 @@ GLIBC_2.16 __progname_full D 0x4
>  GLIBC_2.16 __pthread_cleanup_routine F
>  GLIBC_2.16 __pthread_getspecific F
>  GLIBC_2.16 __pthread_key_create F
> +GLIBC_2.16 __pthread_mutex_destroy F
> +GLIBC_2.16 __pthread_mutex_init F
> +GLIBC_2.16 __pthread_mutex_lock F
> +GLIBC_2.16 __pthread_mutex_unlock F
>  GLIBC_2.16 __pthread_once F
>  GLIBC_2.16 __pthread_rwlock_rdlock F
>  GLIBC_2.16 __pthread_rwlock_unlock F
> @@ -2212,6 +2216,10 @@ GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
> +GLIBC_2.34 __pthread_mutex_destroy F
> +GLIBC_2.34 __pthread_mutex_init F
> +GLIBC_2.34 __pthread_mutex_lock F
> +GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_rwlock_rdlock F
>  GLIBC_2.34 __pthread_rwlock_unlock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 0b017c0218..6b095bf36a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -13,11 +13,7 @@ GLIBC_2.16 __lseek F
>  GLIBC_2.16 __open F
>  GLIBC_2.16 __open64 F
>  GLIBC_2.16 __pread64 F
> -GLIBC_2.16 __pthread_mutex_destroy F
> -GLIBC_2.16 __pthread_mutex_init F
> -GLIBC_2.16 __pthread_mutex_lock F
>  GLIBC_2.16 __pthread_mutex_trylock F
> -GLIBC_2.16 __pthread_mutex_unlock F
>  GLIBC_2.16 __pthread_mutexattr_destroy F
>  GLIBC_2.16 __pthread_mutexattr_init F
>  GLIBC_2.16 __pthread_mutexattr_settype F
> @@ -84,14 +80,10 @@ GLIBC_2.16 pthread_getname_np F
>  GLIBC_2.16 pthread_join F
>  GLIBC_2.16 pthread_kill F
>  GLIBC_2.16 pthread_kill_other_threads_np F
> -GLIBC_2.16 pthread_mutex_destroy F
>  GLIBC_2.16 pthread_mutex_getprioceiling F
> -GLIBC_2.16 pthread_mutex_init F
> -GLIBC_2.16 pthread_mutex_lock F
>  GLIBC_2.16 pthread_mutex_setprioceiling F
>  GLIBC_2.16 pthread_mutex_timedlock F
>  GLIBC_2.16 pthread_mutex_trylock F
> -GLIBC_2.16 pthread_mutex_unlock F
>  GLIBC_2.16 pthread_mutexattr_destroy F
>  GLIBC_2.16 pthread_mutexattr_getkind_np F
>  GLIBC_2.16 pthread_mutexattr_getprioceiling F
> 

Ok.


More information about the Libc-alpha mailing list