diff mbox series

[12/19] nptl: Move mtx_timedlock into libc

Message ID 3d9c36ba8df1ca1eb97f9b09009679c20b407d82.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 __pthread_mutex_timedlock@@GLIBC_PRIVATE export is no longer
needed, so it is removed with this commit.
---
 nptl/Versions                                 |  4 ++--
 nptl/pthread_mutex_timedlock.c                |  8 ++++---
 sysdeps/pthread/Makefile                      |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 ++
 .../sysv/linux/aarch64/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 ++
 .../unix/sysv/linux/alpha/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 ++
 .../unix/sysv/linux/arc/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 ++
 .../unix/sysv/linux/arm/be/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 ++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 ++
 .../unix/sysv/linux/csky/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 ++
 .../unix/sysv/linux/hppa/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
 .../unix/sysv/linux/i386/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
 .../unix/sysv/linux/ia64/libpthread.abilist   |  1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 ++
 .../linux/m68k/coldfire/libpthread.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 ++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  1 -
 .../sysv/linux/microblaze/be/libc.abilist     |  2 ++
 .../linux/microblaze/be/libpthread.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 ++
 .../linux/microblaze/le/libpthread.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips32/libpthread.abilist |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
 .../sysv/linux/mips/mips64/libpthread.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/mtx_timedlock.c       | 21 ++++++++++++-------
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 ++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 ++
 .../powerpc/powerpc32/libpthread.abilist      |  1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 ++
 .../powerpc/powerpc64/be/libpthread.abilist   |  1 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
 .../powerpc/powerpc64/le/libpthread.abilist   |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 ++
 .../sysv/linux/riscv/rv32/libpthread.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 ++
 .../sysv/linux/riscv/rv64/libpthread.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 ++
 .../linux/s390/s390-32/libpthread.abilist     |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 ++
 .../linux/s390/s390-64/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 ++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 ++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 ++
 .../linux/sparc/sparc32/libpthread.abilist    |  1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 ++
 .../linux/sparc/sparc64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/thrd_priv.h           |  2 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
 .../sysv/linux/x86_64/64/libpthread.abilist   |  1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  1 -
 66 files changed, 87 insertions(+), 43 deletions(-)

Comments

Carlos O'Donell May 2, 2021, 8:46 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 __pthread_mutex_timedlock@@GLIBC_PRIVATE export is no longer
> needed, so it is removed with this commit.

OK.

> ---
>  nptl/Versions                                 |  4 ++--
>  nptl/pthread_mutex_timedlock.c                |  8 ++++---
>  sysdeps/pthread/Makefile                      |  2 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 ++
>  .../sysv/linux/aarch64/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 ++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 ++
>  .../unix/sysv/linux/arc/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 ++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 ++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 ++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 ++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 ++
>  .../linux/m68k/coldfire/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 ++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 ++
>  .../linux/microblaze/be/libpthread.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 ++
>  .../linux/microblaze/le/libpthread.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 ++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  1 -
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
>  sysdeps/unix/sysv/linux/mtx_timedlock.c       | 21 ++++++++++++-------
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 ++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 ++
>  .../powerpc/powerpc32/libpthread.abilist      |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 ++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 ++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  1 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 ++
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 ++
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 ++
>  .../linux/s390/s390-32/libpthread.abilist     |  1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 ++
>  .../linux/s390/s390-64/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 ++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 ++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 ++
>  .../linux/sparc/sparc32/libpthread.abilist    |  1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 ++
>  .../linux/sparc/sparc64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/thrd_priv.h           |  2 +-
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  1 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  1 -
>  66 files changed, 87 insertions(+), 43 deletions(-)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index 43e56068f5..2c729fc605 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -136,6 +136,7 @@ libc {
>      mtx_destroy;
>      mtx_init;
>      mtx_lock;
> +    mtx_timedlock;
>      thrd_current;
>      thrd_equal;
>      thrd_sleep;
> @@ -170,6 +171,7 @@ libc {
>      mtx_destroy;
>      mtx_init;
>      mtx_lock;
> +    mtx_timedlock;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -238,7 +240,6 @@ libc {
>      __pthread_getattr_default_np;
>      __pthread_key_delete;
>      __pthread_keys;
> -    __pthread_mutex_timedlock;
>      __pthread_mutex_unlock_usercnt;
>      __pthread_setcancelstate;
>      __pthread_tpp_change_priority;
> @@ -382,7 +383,6 @@ libpthread {
>  
>    # C11 thread symbols.
>    GLIBC_2.28 {
> -    mtx_timedlock;
>      mtx_trylock;
>      mtx_unlock;
>      thrd_create;
> diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
> index b9cc0a24a1..acd78131b2 100644
> --- a/nptl/pthread_mutex_timedlock.c
> +++ b/nptl/pthread_mutex_timedlock.c
> @@ -631,11 +631,13 @@ ___pthread_mutex_timedlock (pthread_mutex_t *mutex,
>    return __pthread_mutex_timedlock64 (mutex, &ts64);
>  }
>  #endif /* __TIMESPEC64 != 64 */
> -versioned_symbol (libc, ___pthread_mutex_timedlock,
> -		  __pthread_mutex_timedlock, GLIBC_PRIVATE);
> -libc_hidden_ver (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
>  versioned_symbol (libc, ___pthread_mutex_timedlock,
>  		  pthread_mutex_timedlock, GLIBC_2_34);
> +libc_hidden_ver (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
> +#ifndef SHARED
> +strong_alias (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
> +#endif
> +
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_34)
>  compat_symbol (libpthread, ___pthread_mutex_timedlock,
>  	       pthread_mutex_timedlock, GLIBC_2_2);
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 10ce314076..73ee8abdca 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -32,7 +32,6 @@ headers += threads.h
>  routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  
>  libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
> -		       mtx_timedlock \
>  		       mtx_trylock mtx_unlock \
>  		       tss_create tss_delete tss_get tss_set
>  
> @@ -47,6 +46,7 @@ $(libpthread-routines-var) += \
>    mtx_destroy \
>    mtx_init \
>    mtx_lock \
> +  mtx_timedlock \
>  
>  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/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 0c290c1991..a603aef54a 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2209,6 +2209,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2265,6 +2266,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 37fc95b6ad..384647abf4 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index c940a7a88b..b1ae38e09e 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2102,6 +2102,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2346,6 +2347,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 97c50454fe..03148f24c6 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 16e915f68d..797a78d97d 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1266,6 +1266,7 @@ GLIBC_2.32 mtrace F
>  GLIBC_2.32 mtx_destroy F
>  GLIBC_2.32 mtx_init F
>  GLIBC_2.32 mtx_lock F
> +GLIBC_2.32 mtx_timedlock F
>  GLIBC_2.32 munlock F
>  GLIBC_2.32 munlockall F
>  GLIBC_2.32 munmap F
> @@ -2024,6 +2025,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 623dd3dc21..089af5a029 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_timedlock F
>  GLIBC_2.32 mtx_trylock F
>  GLIBC_2.32 mtx_unlock F
>  GLIBC_2.32 pthread_attr_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index d3f7b086c5..ce4d6de39c 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -130,6 +130,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -189,6 +190,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index f2f2b4e5ee..1fdb22108d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -130,6 +130,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -186,6 +187,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 01afad5ec0..bc2f526474 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1321,6 +1321,7 @@ GLIBC_2.29 mtrace F
>  GLIBC_2.29 mtx_destroy F
>  GLIBC_2.29 mtx_init F
>  GLIBC_2.29 mtx_lock F
> +GLIBC_2.29 mtx_timedlock F
>  GLIBC_2.29 munlock F
>  GLIBC_2.29 munlockall F
>  GLIBC_2.29 munmap F
> @@ -2208,6 +2209,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 90ffccd26a..832e5dbab9 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_timedlock F
>  GLIBC_2.29 mtx_trylock F
>  GLIBC_2.29 mtx_unlock F
>  GLIBC_2.29 pthread_attr_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 7e2f59f7db..eb7edb7e37 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1941,6 +1941,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2159,6 +2160,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index d8d7f8d16a..60d9756495 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2115,6 +2115,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 5938138bc0..75ea03ac21 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 5584b1a64b..87826dfa6c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1976,6 +1976,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2193,6 +2194,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 33bd97a499..b6630b5e7b 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index a4281dc2df..1643eb6333 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -131,6 +131,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -190,6 +191,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 8cfb177030..36ab55be13 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2058,6 +2058,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2279,6 +2280,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 5938138bc0..75ea03ac21 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 425e0d990f..f0cad86fce 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2200,6 +2200,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2259,6 +2260,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 4cffd69461..ed0d1e9544 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index a4bcd1a3a1..00e36ad852 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2200,6 +2200,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2256,6 +2257,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 4cffd69461..ed0d1e9544 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index f133e33451..8adb7b4525 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2028,6 +2028,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2242,6 +2243,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 7302e6da9b..bfd0f94d24 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index b447672e99..bb8df361d3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2026,6 +2026,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2240,6 +2241,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 7302e6da9b..bfd0f94d24 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 2ce58b7eeb..69e9c442cc 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2034,6 +2034,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2248,6 +2249,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 938f213777..a15f1f2d41 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2029,6 +2029,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2242,6 +2243,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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/mtx_timedlock.c b/sysdeps/unix/sysv/linux/mtx_timedlock.c
> index e39735691f..7715ebb315 100644
> --- a/sysdeps/unix/sysv/linux/mtx_timedlock.c
> +++ b/sysdeps/unix/sysv/linux/mtx_timedlock.c
> @@ -17,27 +17,34 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <time.h>
> +#include <shlib-compat.h>
>  #include "thrd_priv.h"
>  
>  int
> -__mtx_timedlock64 (mtx_t *restrict mutex,
> -                   const struct __timespec64 *restrict time_point)
> +___mtx_timedlock64 (mtx_t *restrict mutex,
> +                    const struct __timespec64 *restrict time_point)
>  {
>    int err_code = __pthread_mutex_timedlock64 ((pthread_mutex_t *)mutex,
>                                                time_point);
>    return thrd_err_map (err_code);
>  }
>  
> -#if __TIMESIZE != 64
> -libpthread_hidden_def (__mtx_timedlock64)
> +#if __TIMESIZE == 64
> +strong_alias (___mtx_timedlock64, ___mtx_timedlock)
> +#else
> +libc_hidden_ver (___mtx_timedlock64, __mtx_timedlock64)
>  
>  int
> -__mtx_timedlock (mtx_t *restrict mutex,
> -                 const struct timespec *restrict time_point)
> +___mtx_timedlock (mtx_t *restrict mutex,
> +                  const struct timespec *restrict time_point)
>  {
>    struct __timespec64 ts64 = valid_timespec_to_timespec64 (*time_point);
>  
>    return __mtx_timedlock64 (mutex, &ts64);
>  }
> +#endif /* __TIMESIZE == 64 */
> +versioned_symbol (libc, ___mtx_timedlock, mtx_timedlock, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libpthread, ___mtx_timedlock, mtx_timedlock, GLIBC_2_28);
>  #endif
> -weak_alias (__mtx_timedlock, mtx_timedlock)
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 6b681b153a..48ecc4660d 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2242,6 +2242,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2298,6 +2299,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 a3dabc6f7e..510b01ee59 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 6ea57ea5bd..6cdb97772f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2062,6 +2062,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2306,6 +2307,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 f2da256ab7..a3b6705014 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 1f11006c06..22b9434fa8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2066,6 +2066,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2339,6 +2340,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 c3759018e7..a04c5d68af 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -130,6 +130,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2160,6 +2161,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 92bfaa5cc3..14c965f483 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index e6d06cda29..65df332c12 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2461,6 +2462,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 37fc95b6ad..384647abf4 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index dbbaeb78af..ff4b837049 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1268,6 +1268,7 @@ GLIBC_2.33 mtrace F
>  GLIBC_2.33 mtx_destroy F
>  GLIBC_2.33 mtx_init F
>  GLIBC_2.33 mtx_lock F
> +GLIBC_2.33 mtx_timedlock F
>  GLIBC_2.33 munlock F
>  GLIBC_2.33 munlockall F
>  GLIBC_2.33 munmap F
> @@ -2026,6 +2027,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 948d829b70..457807ca74 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_timedlock F
>  GLIBC_2.33 mtx_trylock F
>  GLIBC_2.33 mtx_unlock F
>  GLIBC_2.33 pthread_attr_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 6e41d4de6b..0600635ee4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2170,6 +2170,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2226,6 +2227,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 b74bc965f6..3071f817cd 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index c6f5a2ea73..95448b3461 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2071,6 +2071,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2304,6 +2305,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 4fc99bac9a..ebe96305f7 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index c38f44f2a8..6da442b4c6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1968,6 +1968,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2197,6 +2198,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 45cdd07296..3825650334 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 55c198f738..b446e56e92 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1945,6 +1945,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2166,6 +2167,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index b71bc1135e..1cfdb2f2d3 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1945,6 +1945,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2163,6 +2164,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index d8b0a9be83..592aeb1fb1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2065,6 +2065,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2295,6 +2296,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 97c50454fe..03148f24c6 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 2667408f2a..b49e975295 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1998,6 +1998,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2214,6 +2215,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 33bd97a499..b6630b5e7b 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/thrd_priv.h b/sysdeps/unix/sysv/linux/thrd_priv.h
> index 81dacdc3ea..181a628a8c 100644
> --- a/sysdeps/unix/sysv/linux/thrd_priv.h
> +++ b/sysdeps/unix/sysv/linux/thrd_priv.h
> @@ -28,7 +28,7 @@ extern int __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
>  libc_hidden_proto (__cnd_timedwait64)
>  extern int __mtx_timedlock64 (mtx_t *restrict mutex,
>                                const struct __timespec64 *restrict time_point);
> -libpthread_hidden_proto (__mtx_timedlock64)
> +libc_hidden_proto (__mtx_timedlock64)
>  extern int __thrd_sleep64 (const struct __timespec64 *time_point,
>                             struct __timespec64 *remaining);
>  libc_hidden_proto (__thrd_sleep64)
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index a59a3b1c9a..6b05f0cf23 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1957,6 +1957,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2175,6 +2176,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 9174074f26..991e108444 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index c1e33cb829..843fd504e4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2222,6 +2222,7 @@ GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>  GLIBC_2.28 mtx_lock F
> +GLIBC_2.28 mtx_timedlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> @@ -2280,6 +2281,7 @@ GLIBC_2.34 cnd_wait F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> +GLIBC_2.34 mtx_timedlock 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 337c23fbf2..d3e0486a35 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_timedlock F
>  GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 thrd_create F
>
diff mbox series

Patch

diff --git a/nptl/Versions b/nptl/Versions
index 43e56068f5..2c729fc605 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -136,6 +136,7 @@  libc {
     mtx_destroy;
     mtx_init;
     mtx_lock;
+    mtx_timedlock;
     thrd_current;
     thrd_equal;
     thrd_sleep;
@@ -170,6 +171,7 @@  libc {
     mtx_destroy;
     mtx_init;
     mtx_lock;
+    mtx_timedlock;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -238,7 +240,6 @@  libc {
     __pthread_getattr_default_np;
     __pthread_key_delete;
     __pthread_keys;
-    __pthread_mutex_timedlock;
     __pthread_mutex_unlock_usercnt;
     __pthread_setcancelstate;
     __pthread_tpp_change_priority;
@@ -382,7 +383,6 @@  libpthread {
 
   # C11 thread symbols.
   GLIBC_2.28 {
-    mtx_timedlock;
     mtx_trylock;
     mtx_unlock;
     thrd_create;
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index b9cc0a24a1..acd78131b2 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -631,11 +631,13 @@  ___pthread_mutex_timedlock (pthread_mutex_t *mutex,
   return __pthread_mutex_timedlock64 (mutex, &ts64);
 }
 #endif /* __TIMESPEC64 != 64 */
-versioned_symbol (libc, ___pthread_mutex_timedlock,
-		  __pthread_mutex_timedlock, GLIBC_PRIVATE);
-libc_hidden_ver (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
 versioned_symbol (libc, ___pthread_mutex_timedlock,
 		  pthread_mutex_timedlock, GLIBC_2_34);
+libc_hidden_ver (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
+#ifndef SHARED
+strong_alias (___pthread_mutex_timedlock, __pthread_mutex_timedlock)
+#endif
+
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_34)
 compat_symbol (libpthread, ___pthread_mutex_timedlock,
 	       pthread_mutex_timedlock, GLIBC_2_2);
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 10ce314076..73ee8abdca 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -32,7 +32,6 @@  headers += threads.h
 routines += thrd_current thrd_equal thrd_sleep thrd_yield
 
 libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
-		       mtx_timedlock \
 		       mtx_trylock mtx_unlock \
 		       tss_create tss_delete tss_get tss_set
 
@@ -47,6 +46,7 @@  $(libpthread-routines-var) += \
   mtx_destroy \
   mtx_init \
   mtx_lock \
+  mtx_timedlock \
 
 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/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 0c290c1991..a603aef54a 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2209,6 +2209,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2265,6 +2266,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 37fc95b6ad..384647abf4 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c940a7a88b..b1ae38e09e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2102,6 +2102,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2346,6 +2347,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 97c50454fe..03148f24c6 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 16e915f68d..797a78d97d 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1266,6 +1266,7 @@  GLIBC_2.32 mtrace F
 GLIBC_2.32 mtx_destroy F
 GLIBC_2.32 mtx_init F
 GLIBC_2.32 mtx_lock F
+GLIBC_2.32 mtx_timedlock F
 GLIBC_2.32 munlock F
 GLIBC_2.32 munlockall F
 GLIBC_2.32 munmap F
@@ -2024,6 +2025,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 623dd3dc21..089af5a029 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_timedlock F
 GLIBC_2.32 mtx_trylock F
 GLIBC_2.32 mtx_unlock F
 GLIBC_2.32 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index d3f7b086c5..ce4d6de39c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -130,6 +130,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -189,6 +190,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index f2f2b4e5ee..1fdb22108d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -130,6 +130,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -186,6 +187,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 01afad5ec0..bc2f526474 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1321,6 +1321,7 @@  GLIBC_2.29 mtrace F
 GLIBC_2.29 mtx_destroy F
 GLIBC_2.29 mtx_init F
 GLIBC_2.29 mtx_lock F
+GLIBC_2.29 mtx_timedlock F
 GLIBC_2.29 munlock F
 GLIBC_2.29 munlockall F
 GLIBC_2.29 munmap F
@@ -2208,6 +2209,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 90ffccd26a..832e5dbab9 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_timedlock F
 GLIBC_2.29 mtx_trylock F
 GLIBC_2.29 mtx_unlock F
 GLIBC_2.29 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 7e2f59f7db..eb7edb7e37 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1941,6 +1941,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2159,6 +2160,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index d8d7f8d16a..60d9756495 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2115,6 +2115,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2336,6 +2337,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 5938138bc0..75ea03ac21 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 5584b1a64b..87826dfa6c 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1976,6 +1976,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2193,6 +2194,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 33bd97a499..b6630b5e7b 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index a4281dc2df..1643eb6333 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -131,6 +131,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -190,6 +191,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 0a1cd29570..2a315a3aa0 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 8cfb177030..36ab55be13 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2058,6 +2058,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2279,6 +2280,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 5938138bc0..75ea03ac21 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 425e0d990f..f0cad86fce 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2200,6 +2200,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2259,6 +2260,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 4cffd69461..ed0d1e9544 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index a4bcd1a3a1..00e36ad852 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2200,6 +2200,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2256,6 +2257,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 4cffd69461..ed0d1e9544 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f133e33451..8adb7b4525 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2028,6 +2028,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2242,6 +2243,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 7302e6da9b..bfd0f94d24 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b447672e99..bb8df361d3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2026,6 +2026,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2240,6 +2241,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 7302e6da9b..bfd0f94d24 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 2ce58b7eeb..69e9c442cc 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2034,6 +2034,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2248,6 +2249,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 938f213777..a15f1f2d41 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2029,6 +2029,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2242,6 +2243,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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/mtx_timedlock.c b/sysdeps/unix/sysv/linux/mtx_timedlock.c
index e39735691f..7715ebb315 100644
--- a/sysdeps/unix/sysv/linux/mtx_timedlock.c
+++ b/sysdeps/unix/sysv/linux/mtx_timedlock.c
@@ -17,27 +17,34 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <time.h>
+#include <shlib-compat.h>
 #include "thrd_priv.h"
 
 int
-__mtx_timedlock64 (mtx_t *restrict mutex,
-                   const struct __timespec64 *restrict time_point)
+___mtx_timedlock64 (mtx_t *restrict mutex,
+                    const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_mutex_timedlock64 ((pthread_mutex_t *)mutex,
                                               time_point);
   return thrd_err_map (err_code);
 }
 
-#if __TIMESIZE != 64
-libpthread_hidden_def (__mtx_timedlock64)
+#if __TIMESIZE == 64
+strong_alias (___mtx_timedlock64, ___mtx_timedlock)
+#else
+libc_hidden_ver (___mtx_timedlock64, __mtx_timedlock64)
 
 int
-__mtx_timedlock (mtx_t *restrict mutex,
-                 const struct timespec *restrict time_point)
+___mtx_timedlock (mtx_t *restrict mutex,
+                  const struct timespec *restrict time_point)
 {
   struct __timespec64 ts64 = valid_timespec_to_timespec64 (*time_point);
 
   return __mtx_timedlock64 (mutex, &ts64);
 }
+#endif /* __TIMESIZE == 64 */
+versioned_symbol (libc, ___mtx_timedlock, mtx_timedlock, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libpthread, ___mtx_timedlock, mtx_timedlock, GLIBC_2_28);
 #endif
-weak_alias (__mtx_timedlock, mtx_timedlock)
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 6b681b153a..48ecc4660d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2242,6 +2242,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2298,6 +2299,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 a3dabc6f7e..510b01ee59 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 6ea57ea5bd..6cdb97772f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2062,6 +2062,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2306,6 +2307,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 f2da256ab7..a3b6705014 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 1f11006c06..22b9434fa8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2066,6 +2066,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2339,6 +2340,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 c3759018e7..a04c5d68af 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -130,6 +130,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2160,6 +2161,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 92bfaa5cc3..14c965f483 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index e6d06cda29..65df332c12 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2299,6 +2299,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2461,6 +2462,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 37fc95b6ad..384647abf4 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index dbbaeb78af..ff4b837049 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1268,6 +1268,7 @@  GLIBC_2.33 mtrace F
 GLIBC_2.33 mtx_destroy F
 GLIBC_2.33 mtx_init F
 GLIBC_2.33 mtx_lock F
+GLIBC_2.33 mtx_timedlock F
 GLIBC_2.33 munlock F
 GLIBC_2.33 munlockall F
 GLIBC_2.33 munmap F
@@ -2026,6 +2027,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 948d829b70..457807ca74 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_timedlock F
 GLIBC_2.33 mtx_trylock F
 GLIBC_2.33 mtx_unlock F
 GLIBC_2.33 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 6e41d4de6b..0600635ee4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2170,6 +2170,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2226,6 +2227,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 b74bc965f6..3071f817cd 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index c6f5a2ea73..95448b3461 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2071,6 +2071,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2304,6 +2305,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 4fc99bac9a..ebe96305f7 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index c38f44f2a8..6da442b4c6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1968,6 +1968,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2197,6 +2198,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 45cdd07296..3825650334 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 55c198f738..b446e56e92 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1945,6 +1945,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2166,6 +2167,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index b71bc1135e..1cfdb2f2d3 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1945,6 +1945,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2163,6 +2164,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 19e4676872..1e022d872c 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index d8b0a9be83..592aeb1fb1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2065,6 +2065,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2295,6 +2296,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 97c50454fe..03148f24c6 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 2667408f2a..b49e975295 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1998,6 +1998,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2214,6 +2215,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 33bd97a499..b6630b5e7b 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/thrd_priv.h b/sysdeps/unix/sysv/linux/thrd_priv.h
index 81dacdc3ea..181a628a8c 100644
--- a/sysdeps/unix/sysv/linux/thrd_priv.h
+++ b/sysdeps/unix/sysv/linux/thrd_priv.h
@@ -28,7 +28,7 @@  extern int __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
 libc_hidden_proto (__cnd_timedwait64)
 extern int __mtx_timedlock64 (mtx_t *restrict mutex,
                               const struct __timespec64 *restrict time_point);
-libpthread_hidden_proto (__mtx_timedlock64)
+libc_hidden_proto (__mtx_timedlock64)
 extern int __thrd_sleep64 (const struct __timespec64 *time_point,
                            struct __timespec64 *remaining);
 libc_hidden_proto (__thrd_sleep64)
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index a59a3b1c9a..6b05f0cf23 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1957,6 +1957,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2175,6 +2176,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 9174074f26..991e108444 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index c1e33cb829..843fd504e4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2222,6 +2222,7 @@  GLIBC_2.28 fcntl64 F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
 GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
@@ -2280,6 +2281,7 @@  GLIBC_2.34 cnd_wait F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
+GLIBC_2.34 mtx_timedlock 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 337c23fbf2..d3e0486a35 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_timedlock F
 GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 thrd_create F