diff mbox series

[10/19] nptl: Move mtx_init into libc

Message ID 0a1c87b8506e1570db7cbe505e12700600bd0dcd.1619456219.git.fweimer@redhat.com
State New
Headers show
Series nptl: Move most C11 symbols into libc | expand

Commit Message

Florian Weimer April 26, 2021, 5:02 p.m. UTC
The symbol was moved using scripts/move-symbol-to-libc.py.

The calls to __pthread_mutex_init, __pthread_mutexattr_init,
__pthread_mutexattr_settype are now private and no longer need
to be exported.  This allows the removal of the newly added
GLIBC_2.34 symbol versions for those functions.

Also clean up some weak declarations in <libc-lockP.h> for
these functions.  They are not needed and potentially incorrect
for static linking of mtx_init.
---
 nptl/Versions                                         |  6 ++----
 nptl/pthreadP.h                                       |  2 ++
 nptl/pthread_mutex_init.c                             |  8 +++++---
 nptl/pthread_mutexattr_init.c                         |  6 ++++--
 nptl/pthread_mutexattr_settype.c                      |  6 ++++--
 sysdeps/nptl/libc-lockP.h                             |  8 --------
 sysdeps/pthread/Makefile                              |  3 ++-
 sysdeps/pthread/mtx_init.c                            | 11 ++++++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  5 ++---
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist            |  5 ++---
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist              |  5 ++---
 sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  5 ++---
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  5 ++---
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist             |  5 ++---
 sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist             |  5 ++---
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist             |  5 ++---
 sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist             |  5 ++---
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  5 ++---
 .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  5 ++---
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  5 ++---
 .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  5 ++---
 .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  5 ++---
 .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  5 ++---
 .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  5 ++---
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  5 ++---
 sysdeps/unix/sysv/linux/nios2/libc.abilist            |  5 ++---
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  5 ++---
 .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
 .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  5 ++---
 .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  5 ++---
 .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
 .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  5 ++---
 .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  5 ++---
 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  5 ++---
 sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  5 ++---
 .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  5 ++---
 .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  5 ++---
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  5 ++---
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  5 ++---
 .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  5 ++---
 .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  5 ++---
 sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  5 ++---
 sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
 69 files changed, 93 insertions(+), 146 deletions(-)

Comments

Carlos O'Donell May 2, 2021, 8:47 p.m. UTC | #1
On 4/26/21 1:02 PM, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

Tested and reviewed on x86_64 and i686.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
 
> The calls to __pthread_mutex_init, __pthread_mutexattr_init,
> __pthread_mutexattr_settype are now private and no longer need
> to be exported.  This allows the removal of the newly added
> GLIBC_2.34 symbol versions for those functions.

OK.
 
> Also clean up some weak declarations in <libc-lockP.h> for
> these functions.  They are not needed and potentially incorrect
> for static linking of mtx_init.

Agreed.

> ---
>  nptl/Versions                                         |  6 ++----
>  nptl/pthreadP.h                                       |  2 ++
>  nptl/pthread_mutex_init.c                             |  8 +++++---
>  nptl/pthread_mutexattr_init.c                         |  6 ++++--
>  nptl/pthread_mutexattr_settype.c                      |  6 ++++--
>  sysdeps/nptl/libc-lockP.h                             |  8 --------
>  sysdeps/pthread/Makefile                              |  3 ++-
>  sysdeps/pthread/mtx_init.c                            | 11 ++++++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  5 ++---
>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist            |  5 ++---
>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist              |  5 ++---
>  sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  5 ++---
>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  5 ++---
>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist             |  5 ++---
>  sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist             |  5 ++---
>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist             |  5 ++---
>  sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist             |  5 ++---
>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  5 ++---
>  .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  5 ++---
>  .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  5 ++---
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  5 ++---
>  sysdeps/unix/sysv/linux/nios2/libc.abilist            |  5 ++---
>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  5 ++---
>  .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
>  .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  5 ++---
>  .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  5 ++---
>  .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
>  .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  5 ++---
>  .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  5 ++---
>  sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  5 ++---
>  sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  5 ++---
>  .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  5 ++---
>  .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  5 ++---
>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  5 ++---
>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  5 ++---
>  .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  5 ++---
>  sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  5 ++---
>  sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
>  69 files changed, 93 insertions(+), 146 deletions(-)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index 939bed94e9..ccba2ba980 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -134,6 +134,7 @@ libc {
>      cnd_timedwait;
>      cnd_wait;
>      mtx_destroy;
> +    mtx_init;
>      thrd_current;
>      thrd_equal;
>      thrd_sleep;
> @@ -155,11 +156,8 @@ libc {
>      __pthread_cleanup_routine;
>      __pthread_getspecific;
>      __pthread_key_create;
> -    __pthread_mutex_init;
>      __pthread_mutex_lock;
>      __pthread_mutex_unlock;
> -    __pthread_mutexattr_init;
> -    __pthread_mutexattr_settype;
>      __pthread_setspecific;
>      call_once;
>      cnd_broadcast;
> @@ -169,6 +167,7 @@ libc {
>      cnd_timedwait;
>      cnd_wait;
>      mtx_destroy;
> +    mtx_init;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -381,7 +380,6 @@ libpthread {
>  
>    # C11 thread symbols.
>    GLIBC_2.28 {
> -    mtx_init;
>      mtx_lock;
>      mtx_timedlock;
>      mtx_trylock;
> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index db8983c711..3b070ee10d 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -411,8 +411,10 @@ extern int __pthread_mutex_unlock_usercnt (pthread_mutex_t *__mutex,
>  					   int __decr);
>  libc_hidden_proto (__pthread_mutex_unlock_usercnt)
>  extern int __pthread_mutexattr_init (pthread_mutexattr_t *attr);
> +libc_hidden_proto (__pthread_mutexattr_init)
>  extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *attr);
>  extern int __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind);
> +libc_hidden_proto (__pthread_mutexattr_settype)
>  extern int __pthread_attr_destroy (pthread_attr_t *attr);
>  libc_hidden_proto (__pthread_attr_destroy)
>  extern int __pthread_attr_getdetachstate (const pthread_attr_t *attr,
> diff --git a/nptl/pthread_mutex_init.c b/nptl/pthread_mutex_init.c
> index 328f7b08a7..d9d7523ea4 100644
> --- a/nptl/pthread_mutex_init.c
> +++ b/nptl/pthread_mutex_init.c
> @@ -151,11 +151,13 @@ ___pthread_mutex_init (pthread_mutex_t *mutex,
>  
>    return 0;
>  }
> -versioned_symbol (libpthread, ___pthread_mutex_init, __pthread_mutex_init,
> -		  GLIBC_2_34);
> -libc_hidden_ver (___pthread_mutex_init, __pthread_mutex_init)
>  versioned_symbol (libpthread, ___pthread_mutex_init, pthread_mutex_init,
>  		  GLIBC_2_0);
> +libc_hidden_ver (___pthread_mutex_init, __pthread_mutex_init)
> +#ifndef SHARED
> +strong_alias (___pthread_mutex_init, __pthread_mutex_init)
> +#endif
> +
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
>  compat_symbol (libpthread, ___pthread_mutex_init, __pthread_mutex_init,
>  	       GLIBC_2_0);
> diff --git a/nptl/pthread_mutexattr_init.c b/nptl/pthread_mutexattr_init.c
> index ca0c5e94dd..bb41fa169c 100644
> --- a/nptl/pthread_mutexattr_init.c
> +++ b/nptl/pthread_mutexattr_init.c
> @@ -39,8 +39,10 @@ ___pthread_mutexattr_init (pthread_mutexattr_t *attr)
>  }
>  versioned_symbol (libc, ___pthread_mutexattr_init,
>  		  pthread_mutexattr_init, GLIBC_2_34);
> -versioned_symbol (libc, ___pthread_mutexattr_init,
> -		  __pthread_mutexattr_init, GLIBC_2_34);
> +libc_hidden_ver (___pthread_mutexattr_init, __pthread_mutexattr_init)
> +#ifndef SHARED
> +strong_alias (___pthread_mutexattr_init, __pthread_mutexattr_init)
> +#endif
>  
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
>  compat_symbol (libpthread, ___pthread_mutexattr_init,
> diff --git a/nptl/pthread_mutexattr_settype.c b/nptl/pthread_mutexattr_settype.c
> index df03def8bd..fb8d66c5ea 100644
> --- a/nptl/pthread_mutexattr_settype.c
> +++ b/nptl/pthread_mutexattr_settype.c
> @@ -41,8 +41,10 @@ ___pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind)
>  }
>  versioned_symbol (libc, ___pthread_mutexattr_settype,
>                    pthread_mutexattr_settype, GLIBC_2_34);
> -versioned_symbol (libc, ___pthread_mutexattr_settype,
> -                  __pthread_mutexattr_settype, GLIBC_2_34);
> +libc_hidden_ver (___pthread_mutexattr_settype, __pthread_mutexattr_settype)
> +#ifndef SHARED
> +strong_alias (___pthread_mutexattr_settype, __pthread_mutexattr_settype)
> +#endif
>  
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
>  compat_symbol (libpthread, ___pthread_mutexattr_settype,
> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index aad9c9778c..239bd5ed86 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -269,13 +269,9 @@ 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);
>  
> -extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr,
> -					int __kind);
> -
>  extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
>  				  const pthread_rwlockattr_t *__attr);
>  
> @@ -307,9 +303,7 @@ libc_hidden_proto (__pthread_setcancelstate)
>  #ifndef __NO_WEAK_PTHREAD_ALIASES
>  # ifdef weak_extern
>  weak_extern (__pthread_mutex_trylock)
> -weak_extern (__pthread_mutexattr_init)
>  weak_extern (__pthread_mutexattr_destroy)
> -weak_extern (__pthread_mutexattr_settype)
>  weak_extern (__pthread_rwlock_init)
>  weak_extern (__pthread_rwlock_destroy)
>  weak_extern (__pthread_rwlock_tryrdlock)
> @@ -318,9 +312,7 @@ weak_extern (__pthread_initialize)
>  weak_extern (__pthread_atfork)
>  # else
>  #  pragma weak __pthread_mutex_trylock
> -#  pragma weak __pthread_mutexattr_init
>  #  pragma weak __pthread_mutexattr_destroy
> -#  pragma weak __pthread_mutexattr_settype
>  #  pragma weak __pthread_rwlock_destroy
>  #  pragma weak __pthread_rwlock_tryrdlock
>  #  pragma weak __pthread_rwlock_trywrlock
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 591722460a..bf42b6aa71 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -32,7 +32,7 @@ headers += threads.h
>  routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  
>  libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
> -		       mtx_init mtx_lock mtx_timedlock \
> +		       mtx_lock mtx_timedlock \
>  		       mtx_trylock mtx_unlock \
>  		       tss_create tss_delete tss_get tss_set
>  
> @@ -45,6 +45,7 @@ $(libpthread-routines-var) += \
>    cnd_timedwait \
>    cnd_wait \
>    mtx_destroy \
> +  mtx_init \
>  
>  tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
>  	 tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \
> diff --git a/sysdeps/pthread/mtx_init.c b/sysdeps/pthread/mtx_init.c
> index 8d5f194e99..e99258bd4d 100644
> --- a/sysdeps/pthread/mtx_init.c
> +++ b/sysdeps/pthread/mtx_init.c
> @@ -17,11 +17,12 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <stdalign.h>
> +#include <shlib-compat.h>
>  
>  #include "thrd_priv.h"
>  
>  int
> -mtx_init (mtx_t *mutex, int type)
> +__mtx_init (mtx_t *mutex, int type)
>  {
>    _Static_assert (sizeof (mtx_t) == sizeof (pthread_mutex_t),
>  		  "sizeof (mtx_t) != sizeof (pthread_mutex_t)");
> @@ -51,3 +52,11 @@ mtx_init (mtx_t *mutex, int type)
>    /* pthread_mutexattr_destroy implementation is a noop.  */
>    return thrd_err_map (err_code);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __mtx_init, mtx_init, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libpthread, __mtx_init, mtx_init, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__mtx_init, mtx_init)
> +#endif
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 0342b37e0b..b586a95b8b 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2207,6 +2207,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2248,12 +2249,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2264,6 +2262,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 040566dd8d..d70d7eff42 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.17 sem_unlink F
>  GLIBC_2.17 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index ef9839121c..e91bd03efd 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2100,6 +2100,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2329,12 +2330,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2345,6 +2343,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index a559c85f49..421e6820f1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index f27db10a34..cd2aa56a6a 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1264,6 +1264,7 @@ GLIBC_2.32 msgsnd F
>  GLIBC_2.32 msync F
>  GLIBC_2.32 mtrace F
>  GLIBC_2.32 mtx_destroy F
> +GLIBC_2.32 mtx_init F
>  GLIBC_2.32 munlock F
>  GLIBC_2.32 munlockall F
>  GLIBC_2.32 munmap F
> @@ -2007,12 +2008,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2023,6 +2021,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 10529e4718..e7acbb17a4 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.32 __pthread_unregister_cancel_restore F
>  GLIBC_2.32 flockfile F
>  GLIBC_2.32 ftrylockfile F
>  GLIBC_2.32 funlockfile F
> -GLIBC_2.32 mtx_init F
>  GLIBC_2.32 mtx_lock F
>  GLIBC_2.32 mtx_timedlock F
>  GLIBC_2.32 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 4e9841bdcb..0f55a8191a 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -128,6 +128,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -172,12 +173,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -188,6 +186,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index ce54e903a4..4fc51e55c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index eb566e2cc9..750ab71348 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -128,6 +128,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -169,12 +170,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -185,6 +183,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index ce54e903a4..4fc51e55c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 6c47ea41f8..bf5bdb2649 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1319,6 +1319,7 @@ GLIBC_2.29 msgsnd F
>  GLIBC_2.29 msync F
>  GLIBC_2.29 mtrace F
>  GLIBC_2.29 mtx_destroy F
> +GLIBC_2.29 mtx_init F
>  GLIBC_2.29 munlock F
>  GLIBC_2.29 munlockall F
>  GLIBC_2.29 munmap F
> @@ -2191,12 +2192,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2207,6 +2205,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 4e57ff71c3..7cd0a9c455 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.29 __pthread_unregister_cancel_restore F
>  GLIBC_2.29 flockfile F
>  GLIBC_2.29 ftrylockfile F
>  GLIBC_2.29 funlockfile F
> -GLIBC_2.29 mtx_init F
>  GLIBC_2.29 mtx_lock F
>  GLIBC_2.29 mtx_timedlock F
>  GLIBC_2.29 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index c36fdc53af..e962e5e076 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1939,6 +1939,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2142,12 +2143,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2158,6 +2156,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index f0950eec65..4914741631 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 94a86ebc85..831c5cbe3d 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2113,6 +2113,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2319,12 +2320,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2335,6 +2333,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 54e0db13d2..2861f052b0 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 6fda5d312c..c27cc55934 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1974,6 +1974,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2176,12 +2177,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2192,6 +2190,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 850b74f26a..66c8d26ca9 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 00f92af83c..80ab210444 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -129,6 +129,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -173,12 +174,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -189,6 +187,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index ce54e903a4..4fc51e55c5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 6c0537be6e..80eacfcd27 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2056,6 +2056,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2262,12 +2263,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2278,6 +2276,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 54e0db13d2..2861f052b0 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 53130e8b64..176324a57f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2198,6 +2198,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2242,12 +2243,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2258,6 +2256,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index bf2b06603d..aef0f9ec38 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.18 sem_timedwait F
>  GLIBC_2.18 sem_trywait F
>  GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index cbb3c523b8..1d33c78491 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2198,6 +2198,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2239,12 +2240,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2255,6 +2253,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index bf2b06603d..aef0f9ec38 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.18 sem_timedwait F
>  GLIBC_2.18 sem_trywait F
>  GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 93b13a4032..9fb953d54a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2026,6 +2026,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2225,12 +2226,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2241,6 +2239,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index e159d47826..bd6af822ef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -68,7 +68,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index e923ba0743..12fc2cc399 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2024,6 +2024,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2223,12 +2224,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2239,6 +2237,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index e159d47826..bd6af822ef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -68,7 +68,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 331772354f..b98bfd1579 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2032,6 +2032,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2231,12 +2232,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2247,6 +2245,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 813a3e7347..a2d4ba5302 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2027,6 +2027,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2225,12 +2226,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2241,6 +2239,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 2dad49c10c..a51b84aabd 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2240,6 +2240,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2281,12 +2282,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2297,6 +2295,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 747161ee6b..6be2396f36 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.21 sem_timedwait F
>  GLIBC_2.21 sem_trywait F
>  GLIBC_2.21 sem_unlink F
>  GLIBC_2.21 sem_wait F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 4081092566..d43d935915 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2060,6 +2060,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2289,12 +2290,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2305,6 +2303,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 864364b0bb..becc6afeca 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 72aa073e62..e530238266 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2064,6 +2064,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2322,12 +2323,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2338,6 +2336,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 2faa943f05..d943ad39a7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -128,6 +128,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2143,12 +2144,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2159,6 +2157,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 6691151b2e..2dd6e41ab2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 7d2d64b9b7..345ceae778 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2297,6 +2297,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2444,12 +2445,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2460,6 +2458,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 040566dd8d..d70d7eff42 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.17 sem_unlink F
>  GLIBC_2.17 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 0bcd294c6d..b5b6bea53b 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1266,6 +1266,7 @@ GLIBC_2.33 msgsnd F
>  GLIBC_2.33 msync F
>  GLIBC_2.33 mtrace F
>  GLIBC_2.33 mtx_destroy F
> +GLIBC_2.33 mtx_init F
>  GLIBC_2.33 munlock F
>  GLIBC_2.33 munlockall F
>  GLIBC_2.33 munmap F
> @@ -2009,12 +2010,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2025,6 +2023,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 899cdd8dac..e8fbf99ba0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.33 __pthread_unregister_cancel_restore F
>  GLIBC_2.33 flockfile F
>  GLIBC_2.33 ftrylockfile F
>  GLIBC_2.33 funlockfile F
> -GLIBC_2.33 mtx_init F
>  GLIBC_2.33 mtx_lock F
>  GLIBC_2.33 mtx_timedlock F
>  GLIBC_2.33 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index c03a324ab9..da0a49ebb8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2168,6 +2168,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2209,12 +2210,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2225,6 +2223,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 0f611f2217..880a5ca8a6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.27 sem_timedwait F
>  GLIBC_2.27 sem_trywait F
>  GLIBC_2.27 sem_unlink F
>  GLIBC_2.27 sem_wait F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index ec70b32df0..e913f0c616 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2069,6 +2069,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2287,12 +2288,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2303,6 +2301,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 06bc637dc4..c62aa60dae 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -70,7 +70,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index aa1b2b3fab..ee4ac1a8db 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1966,6 +1966,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2180,12 +2181,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2196,6 +2194,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 2a776f1a4f..3e5b1677d1 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -62,7 +62,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 7ee127eee5..9827e4dcc7 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1943,6 +1943,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2149,12 +2150,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2165,6 +2163,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index f0950eec65..4914741631 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index bf24941a78..20941d1325 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1943,6 +1943,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2146,12 +2147,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2162,6 +2160,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index f0950eec65..4914741631 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 77e3b83ffb..b9be2c2c6d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2063,6 +2063,7 @@ GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2278,12 +2279,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2294,6 +2292,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index a559c85f49..421e6820f1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index bc5217167f..09035cac1b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1996,6 +1996,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2197,12 +2198,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2213,6 +2211,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 850b74f26a..66c8d26ca9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 1c3ac87113..c8b0e2cced 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1955,6 +1955,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2158,12 +2159,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2174,6 +2172,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 92ca4a4d3f..c4a641ddc0 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -60,7 +60,6 @@ GLIBC_2.2.5 sem_trywait F
>  GLIBC_2.2.5 sem_unlink F
>  GLIBC_2.2.5 sem_wait F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 210cd24093..7303bebc08 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2220,6 +2220,7 @@ GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
> +GLIBC_2.28 mtx_init F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2263,12 +2264,9 @@ 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_init F
>  GLIBC_2.34 __pthread_mutex_lock F
>  GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
> -GLIBC_2.34 __pthread_mutexattr_init F
> -GLIBC_2.34 __pthread_mutexattr_settype F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 call_once F
> @@ -2279,6 +2277,7 @@ GLIBC_2.34 cnd_signal F
>  GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
> +GLIBC_2.34 mtx_init F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 5e221da268..7a75151bc3 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.16 sem_unlink F
>  GLIBC_2.16 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
>  GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 mtx_trylock F
>
diff mbox series

Patch

diff --git a/nptl/Versions b/nptl/Versions
index 939bed94e9..ccba2ba980 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -134,6 +134,7 @@  libc {
     cnd_timedwait;
     cnd_wait;
     mtx_destroy;
+    mtx_init;
     thrd_current;
     thrd_equal;
     thrd_sleep;
@@ -155,11 +156,8 @@  libc {
     __pthread_cleanup_routine;
     __pthread_getspecific;
     __pthread_key_create;
-    __pthread_mutex_init;
     __pthread_mutex_lock;
     __pthread_mutex_unlock;
-    __pthread_mutexattr_init;
-    __pthread_mutexattr_settype;
     __pthread_setspecific;
     call_once;
     cnd_broadcast;
@@ -169,6 +167,7 @@  libc {
     cnd_timedwait;
     cnd_wait;
     mtx_destroy;
+    mtx_init;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -381,7 +380,6 @@  libpthread {
 
   # C11 thread symbols.
   GLIBC_2.28 {
-    mtx_init;
     mtx_lock;
     mtx_timedlock;
     mtx_trylock;
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index db8983c711..3b070ee10d 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -411,8 +411,10 @@  extern int __pthread_mutex_unlock_usercnt (pthread_mutex_t *__mutex,
 					   int __decr);
 libc_hidden_proto (__pthread_mutex_unlock_usercnt)
 extern int __pthread_mutexattr_init (pthread_mutexattr_t *attr);
+libc_hidden_proto (__pthread_mutexattr_init)
 extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *attr);
 extern int __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind);
+libc_hidden_proto (__pthread_mutexattr_settype)
 extern int __pthread_attr_destroy (pthread_attr_t *attr);
 libc_hidden_proto (__pthread_attr_destroy)
 extern int __pthread_attr_getdetachstate (const pthread_attr_t *attr,
diff --git a/nptl/pthread_mutex_init.c b/nptl/pthread_mutex_init.c
index 328f7b08a7..d9d7523ea4 100644
--- a/nptl/pthread_mutex_init.c
+++ b/nptl/pthread_mutex_init.c
@@ -151,11 +151,13 @@  ___pthread_mutex_init (pthread_mutex_t *mutex,
 
   return 0;
 }
-versioned_symbol (libpthread, ___pthread_mutex_init, __pthread_mutex_init,
-		  GLIBC_2_34);
-libc_hidden_ver (___pthread_mutex_init, __pthread_mutex_init)
 versioned_symbol (libpthread, ___pthread_mutex_init, pthread_mutex_init,
 		  GLIBC_2_0);
+libc_hidden_ver (___pthread_mutex_init, __pthread_mutex_init)
+#ifndef SHARED
+strong_alias (___pthread_mutex_init, __pthread_mutex_init)
+#endif
+
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
 compat_symbol (libpthread, ___pthread_mutex_init, __pthread_mutex_init,
 	       GLIBC_2_0);
diff --git a/nptl/pthread_mutexattr_init.c b/nptl/pthread_mutexattr_init.c
index ca0c5e94dd..bb41fa169c 100644
--- a/nptl/pthread_mutexattr_init.c
+++ b/nptl/pthread_mutexattr_init.c
@@ -39,8 +39,10 @@  ___pthread_mutexattr_init (pthread_mutexattr_t *attr)
 }
 versioned_symbol (libc, ___pthread_mutexattr_init,
 		  pthread_mutexattr_init, GLIBC_2_34);
-versioned_symbol (libc, ___pthread_mutexattr_init,
-		  __pthread_mutexattr_init, GLIBC_2_34);
+libc_hidden_ver (___pthread_mutexattr_init, __pthread_mutexattr_init)
+#ifndef SHARED
+strong_alias (___pthread_mutexattr_init, __pthread_mutexattr_init)
+#endif
 
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
 compat_symbol (libpthread, ___pthread_mutexattr_init,
diff --git a/nptl/pthread_mutexattr_settype.c b/nptl/pthread_mutexattr_settype.c
index df03def8bd..fb8d66c5ea 100644
--- a/nptl/pthread_mutexattr_settype.c
+++ b/nptl/pthread_mutexattr_settype.c
@@ -41,8 +41,10 @@  ___pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind)
 }
 versioned_symbol (libc, ___pthread_mutexattr_settype,
                   pthread_mutexattr_settype, GLIBC_2_34);
-versioned_symbol (libc, ___pthread_mutexattr_settype,
-                  __pthread_mutexattr_settype, GLIBC_2_34);
+libc_hidden_ver (___pthread_mutexattr_settype, __pthread_mutexattr_settype)
+#ifndef SHARED
+strong_alias (___pthread_mutexattr_settype, __pthread_mutexattr_settype)
+#endif
 
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
 compat_symbol (libpthread, ___pthread_mutexattr_settype,
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index aad9c9778c..239bd5ed86 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -269,13 +269,9 @@  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);
 
-extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr,
-					int __kind);
-
 extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
 				  const pthread_rwlockattr_t *__attr);
 
@@ -307,9 +303,7 @@  libc_hidden_proto (__pthread_setcancelstate)
 #ifndef __NO_WEAK_PTHREAD_ALIASES
 # ifdef weak_extern
 weak_extern (__pthread_mutex_trylock)
-weak_extern (__pthread_mutexattr_init)
 weak_extern (__pthread_mutexattr_destroy)
-weak_extern (__pthread_mutexattr_settype)
 weak_extern (__pthread_rwlock_init)
 weak_extern (__pthread_rwlock_destroy)
 weak_extern (__pthread_rwlock_tryrdlock)
@@ -318,9 +312,7 @@  weak_extern (__pthread_initialize)
 weak_extern (__pthread_atfork)
 # else
 #  pragma weak __pthread_mutex_trylock
-#  pragma weak __pthread_mutexattr_init
 #  pragma weak __pthread_mutexattr_destroy
-#  pragma weak __pthread_mutexattr_settype
 #  pragma weak __pthread_rwlock_destroy
 #  pragma weak __pthread_rwlock_tryrdlock
 #  pragma weak __pthread_rwlock_trywrlock
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 591722460a..bf42b6aa71 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -32,7 +32,7 @@  headers += threads.h
 routines += thrd_current thrd_equal thrd_sleep thrd_yield
 
 libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
-		       mtx_init mtx_lock mtx_timedlock \
+		       mtx_lock mtx_timedlock \
 		       mtx_trylock mtx_unlock \
 		       tss_create tss_delete tss_get tss_set
 
@@ -45,6 +45,7 @@  $(libpthread-routines-var) += \
   cnd_timedwait \
   cnd_wait \
   mtx_destroy \
+  mtx_init \
 
 tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
 	 tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \
diff --git a/sysdeps/pthread/mtx_init.c b/sysdeps/pthread/mtx_init.c
index 8d5f194e99..e99258bd4d 100644
--- a/sysdeps/pthread/mtx_init.c
+++ b/sysdeps/pthread/mtx_init.c
@@ -17,11 +17,12 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <stdalign.h>
+#include <shlib-compat.h>
 
 #include "thrd_priv.h"
 
 int
-mtx_init (mtx_t *mutex, int type)
+__mtx_init (mtx_t *mutex, int type)
 {
   _Static_assert (sizeof (mtx_t) == sizeof (pthread_mutex_t),
 		  "sizeof (mtx_t) != sizeof (pthread_mutex_t)");
@@ -51,3 +52,11 @@  mtx_init (mtx_t *mutex, int type)
   /* pthread_mutexattr_destroy implementation is a noop.  */
   return thrd_err_map (err_code);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __mtx_init, mtx_init, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libpthread, __mtx_init, mtx_init, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__mtx_init, mtx_init)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 0342b37e0b..b586a95b8b 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2207,6 +2207,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2248,12 +2249,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2264,6 +2262,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 040566dd8d..d70d7eff42 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index ef9839121c..e91bd03efd 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2100,6 +2100,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2329,12 +2330,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2345,6 +2343,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index a559c85f49..421e6820f1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index f27db10a34..cd2aa56a6a 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1264,6 +1264,7 @@  GLIBC_2.32 msgsnd F
 GLIBC_2.32 msync F
 GLIBC_2.32 mtrace F
 GLIBC_2.32 mtx_destroy F
+GLIBC_2.32 mtx_init F
 GLIBC_2.32 munlock F
 GLIBC_2.32 munlockall F
 GLIBC_2.32 munmap F
@@ -2007,12 +2008,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2023,6 +2021,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 10529e4718..e7acbb17a4 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.32 __pthread_unregister_cancel_restore F
 GLIBC_2.32 flockfile F
 GLIBC_2.32 ftrylockfile F
 GLIBC_2.32 funlockfile F
-GLIBC_2.32 mtx_init F
 GLIBC_2.32 mtx_lock F
 GLIBC_2.32 mtx_timedlock F
 GLIBC_2.32 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 4e9841bdcb..0f55a8191a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -128,6 +128,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -172,12 +173,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -188,6 +186,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index ce54e903a4..4fc51e55c5 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index eb566e2cc9..750ab71348 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -128,6 +128,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -169,12 +170,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -185,6 +183,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index ce54e903a4..4fc51e55c5 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 6c47ea41f8..bf5bdb2649 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1319,6 +1319,7 @@  GLIBC_2.29 msgsnd F
 GLIBC_2.29 msync F
 GLIBC_2.29 mtrace F
 GLIBC_2.29 mtx_destroy F
+GLIBC_2.29 mtx_init F
 GLIBC_2.29 munlock F
 GLIBC_2.29 munlockall F
 GLIBC_2.29 munmap F
@@ -2191,12 +2192,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2207,6 +2205,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 4e57ff71c3..7cd0a9c455 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.29 __pthread_unregister_cancel_restore F
 GLIBC_2.29 flockfile F
 GLIBC_2.29 ftrylockfile F
 GLIBC_2.29 funlockfile F
-GLIBC_2.29 mtx_init F
 GLIBC_2.29 mtx_lock F
 GLIBC_2.29 mtx_timedlock F
 GLIBC_2.29 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index c36fdc53af..e962e5e076 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1939,6 +1939,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2142,12 +2143,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2158,6 +2156,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index f0950eec65..4914741631 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 94a86ebc85..831c5cbe3d 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2113,6 +2113,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2319,12 +2320,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2335,6 +2333,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 54e0db13d2..2861f052b0 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 6fda5d312c..c27cc55934 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1974,6 +1974,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2176,12 +2177,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2192,6 +2190,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 850b74f26a..66c8d26ca9 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 00f92af83c..80ab210444 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -129,6 +129,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -173,12 +174,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -189,6 +187,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index ce54e903a4..4fc51e55c5 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 6c0537be6e..80eacfcd27 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2056,6 +2056,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2262,12 +2263,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2278,6 +2276,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 54e0db13d2..2861f052b0 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 53130e8b64..176324a57f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2198,6 +2198,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2242,12 +2243,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2258,6 +2256,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index bf2b06603d..aef0f9ec38 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index cbb3c523b8..1d33c78491 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2198,6 +2198,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2239,12 +2240,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2255,6 +2253,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index bf2b06603d..aef0f9ec38 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 93b13a4032..9fb953d54a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2026,6 +2026,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2225,12 +2226,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2241,6 +2239,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index e159d47826..bd6af822ef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -68,7 +68,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e923ba0743..12fc2cc399 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2024,6 +2024,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2223,12 +2224,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2239,6 +2237,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index e159d47826..bd6af822ef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -68,7 +68,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 331772354f..b98bfd1579 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2032,6 +2032,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2231,12 +2232,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2247,6 +2245,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 813a3e7347..a2d4ba5302 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2027,6 +2027,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2225,12 +2226,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2241,6 +2239,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 2dad49c10c..a51b84aabd 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2240,6 +2240,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2281,12 +2282,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2297,6 +2295,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 747161ee6b..6be2396f36 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.21 sem_timedwait F
 GLIBC_2.21 sem_trywait F
 GLIBC_2.21 sem_unlink F
 GLIBC_2.21 sem_wait F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4081092566..d43d935915 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2060,6 +2060,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2289,12 +2290,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2305,6 +2303,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 864364b0bb..becc6afeca 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 72aa073e62..e530238266 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2064,6 +2064,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2322,12 +2323,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2338,6 +2336,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 2faa943f05..d943ad39a7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -128,6 +128,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2143,12 +2144,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2159,6 +2157,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 6691151b2e..2dd6e41ab2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 7d2d64b9b7..345ceae778 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2297,6 +2297,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2444,12 +2445,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2460,6 +2458,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 040566dd8d..d70d7eff42 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 0bcd294c6d..b5b6bea53b 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1266,6 +1266,7 @@  GLIBC_2.33 msgsnd F
 GLIBC_2.33 msync F
 GLIBC_2.33 mtrace F
 GLIBC_2.33 mtx_destroy F
+GLIBC_2.33 mtx_init F
 GLIBC_2.33 munlock F
 GLIBC_2.33 munlockall F
 GLIBC_2.33 munmap F
@@ -2009,12 +2010,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2025,6 +2023,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 899cdd8dac..e8fbf99ba0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.33 __pthread_unregister_cancel_restore F
 GLIBC_2.33 flockfile F
 GLIBC_2.33 ftrylockfile F
 GLIBC_2.33 funlockfile F
-GLIBC_2.33 mtx_init F
 GLIBC_2.33 mtx_lock F
 GLIBC_2.33 mtx_timedlock F
 GLIBC_2.33 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index c03a324ab9..da0a49ebb8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2168,6 +2168,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2209,12 +2210,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2225,6 +2223,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 0f611f2217..880a5ca8a6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.27 sem_timedwait F
 GLIBC_2.27 sem_trywait F
 GLIBC_2.27 sem_unlink F
 GLIBC_2.27 sem_wait F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index ec70b32df0..e913f0c616 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2069,6 +2069,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2287,12 +2288,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2303,6 +2301,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 06bc637dc4..c62aa60dae 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -70,7 +70,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index aa1b2b3fab..ee4ac1a8db 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1966,6 +1966,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2180,12 +2181,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2196,6 +2194,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 2a776f1a4f..3e5b1677d1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -62,7 +62,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 7ee127eee5..9827e4dcc7 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1943,6 +1943,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2149,12 +2150,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2165,6 +2163,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index f0950eec65..4914741631 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index bf24941a78..20941d1325 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1943,6 +1943,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2146,12 +2147,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2162,6 +2160,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index f0950eec65..4914741631 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 77e3b83ffb..b9be2c2c6d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2063,6 +2063,7 @@  GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2278,12 +2279,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2294,6 +2292,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index a559c85f49..421e6820f1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index bc5217167f..09035cac1b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1996,6 +1996,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2197,12 +2198,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2213,6 +2211,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 850b74f26a..66c8d26ca9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 1c3ac87113..c8b0e2cced 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1955,6 +1955,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2158,12 +2159,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2174,6 +2172,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 92ca4a4d3f..c4a641ddc0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -60,7 +60,6 @@  GLIBC_2.2.5 sem_trywait F
 GLIBC_2.2.5 sem_unlink F
 GLIBC_2.2.5 sem_wait F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 210cd24093..7303bebc08 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2220,6 +2220,7 @@  GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2263,12 +2264,9 @@  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_init F
 GLIBC_2.34 __pthread_mutex_lock F
 GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
-GLIBC_2.34 __pthread_mutexattr_init F
-GLIBC_2.34 __pthread_mutexattr_settype F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 call_once F
@@ -2279,6 +2277,7 @@  GLIBC_2.34 cnd_signal F
 GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
+GLIBC_2.34 mtx_init F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 5e221da268..7a75151bc3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.16 sem_unlink F
 GLIBC_2.16 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
 GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 mtx_trylock F