[07/19] nptl: Move cnd_timedwait into libc

Message ID 3b4b0fe5114a53eb40529581e7deb7bdc25dc743.1619456219.git.fweimer@redhat.com
State Committed
Commit 08a31ef923c51dc5ff2ef815730de0ba4d591ae3
Headers
Series nptl: Move most C11 symbols into libc |

Commit Message

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

The __pthread_cond_timedwait@@GLIBC_PRIVATE symbol is no longer
neded, so remove that as well.
---
 nptl/Versions                                 |  4 ++--
 nptl/pthread_cond_wait.c                      | 10 +++++----
 sysdeps/pthread/Makefile                      |  3 ++-
 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/cnd_timedwait.c       | 21 ++++++++++++-------
 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/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, 89 insertions(+), 44 deletions(-)
  

Comments

Carlos O'Donell May 2, 2021, 8:46 p.m. UTC | #1
On 4/26/21 1:00 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_cond_timedwait@@GLIBC_PRIVATE symbol is no longer
> neded, so remove that as well.
> ---
>  nptl/Versions                                 |  4 ++--
>  nptl/pthread_cond_wait.c                      | 10 +++++----
>  sysdeps/pthread/Makefile                      |  3 ++-
>  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/cnd_timedwait.c       | 21 ++++++++++++-------
>  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/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, 89 insertions(+), 44 deletions(-)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index b18709c8e1..1aecde43ed 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -131,6 +131,7 @@ libc {
>      cnd_destroy;
>      cnd_init;
>      cnd_signal;
> +    cnd_timedwait;
>      thrd_current;
>      thrd_equal;
>      thrd_sleep;
> @@ -164,6 +165,7 @@ libc {
>      cnd_destroy;
>      cnd_init;
>      cnd_signal;
> +    cnd_timedwait;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -226,7 +228,6 @@ libc {
>      __pthread_cleanup_pop;
>      __pthread_cleanup_push;
>      __pthread_cleanup_upto;
> -    __pthread_cond_timedwait; # Used by the C11 threads.
>      __pthread_cond_wait; # Used by the C11 threads.
>      __pthread_current_priority;
>      __pthread_exit;
> @@ -378,7 +379,6 @@ libpthread {
>  
>    # C11 thread symbols.
>    GLIBC_2.28 {
> -    cnd_timedwait;
>      cnd_wait;
>      mtx_destroy;
>      mtx_init;
> diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
> index 5a1642b932..89ea231554 100644
> --- a/nptl/pthread_cond_wait.c
> +++ b/nptl/pthread_cond_wait.c
> @@ -646,9 +646,10 @@ ___pthread_cond_timedwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
>  #if __TIMESIZE == 64
>  strong_alias (___pthread_cond_timedwait64, ___pthread_cond_timedwait)
>  #else
> -versioned_symbol (libc, ___pthread_cond_timedwait64,
> -		  __pthread_cond_timedwait64, GLIBC_PRIVATE);
>  libc_hidden_ver (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
> +#ifndef SHARED
> +strong_alias (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
> +#endif
>  
>  int
>  ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
> @@ -662,8 +663,9 @@ ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
>  versioned_symbol (libc, ___pthread_cond_timedwait,
>  		  pthread_cond_timedwait, GLIBC_2_3_2);
>  libc_hidden_ver (___pthread_cond_timedwait, __pthread_cond_timedwait)
> -versioned_symbol (libc, ___pthread_cond_timedwait,
> -		  __pthread_cond_timedwait, GLIBC_PRIVATE);
> +#ifndef SHARED
> +strong_alias (___pthread_cond_timedwait, __pthread_cond_timedwait)
> +#endif
>  
>  /* See __pthread_cond_wait_common.  */
>  int
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index fcc5f841fd..4928f91f04 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -34,7 +34,7 @@ routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
>  		       mtx_destroy mtx_init mtx_lock mtx_timedlock \
>  		       mtx_trylock mtx_unlock \
> -		       cnd_timedwait cnd_wait \
> +		       cnd_wait \
>  		       tss_create tss_delete tss_get tss_set
>  
>  $(libpthread-routines-var) += \
> @@ -43,6 +43,7 @@ $(libpthread-routines-var) += \
>    cnd_destroy \
>    cnd_init \
>    cnd_signal \
> +  cnd_timedwait \
>  
>  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 defb9dc974..5c8c6dbff5 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2203,6 +2203,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2259,6 +2260,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 2a03782c65..ad08f4362a 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 46fb382ab6..712fe8fd85 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2096,6 +2096,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2340,6 +2341,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 95cf8307c1..687b742199 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 01af77fbb0..c7a2b49251 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -630,6 +630,7 @@ GLIBC_2.32 cnd_broadcast F
>  GLIBC_2.32 cnd_destroy F
>  GLIBC_2.32 cnd_init F
>  GLIBC_2.32 cnd_signal F
> +GLIBC_2.32 cnd_timedwait F
>  GLIBC_2.32 confstr F
>  GLIBC_2.32 connect F
>  GLIBC_2.32 copy_file_range F
> @@ -2018,6 +2019,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 83decc712c..d54040242c 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.32 __pthread_rwlock_tryrdlock F
>  GLIBC_2.32 __pthread_rwlock_trywrlock F
>  GLIBC_2.32 __pthread_unregister_cancel F
>  GLIBC_2.32 __pthread_unregister_cancel_restore F
> -GLIBC_2.32 cnd_timedwait F
>  GLIBC_2.32 cnd_wait F
>  GLIBC_2.32 flockfile F
>  GLIBC_2.32 ftrylockfile F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 981e31d7df..5e06805905 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -123,6 +123,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -183,6 +184,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index c094d4ca72..8109b70aec 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -123,6 +123,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -180,6 +181,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/cnd_timedwait.c b/sysdeps/unix/sysv/linux/cnd_timedwait.c
> index 1bd0e70f7d..0415c683f9 100644
> --- a/sysdeps/unix/sysv/linux/cnd_timedwait.c
> +++ b/sysdeps/unix/sysv/linux/cnd_timedwait.c
> @@ -17,11 +17,12 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <time.h>
> +#include <shlib-compat.h>
>  #include "thrd_priv.h"
>  
>  int
> -__cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
> -                   const struct __timespec64 *restrict time_point)
> +___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
> +                    const struct __timespec64 *restrict time_point)
>  {
>    int err_code = __pthread_cond_timedwait64 ((pthread_cond_t *) cond,
>                                               (pthread_mutex_t *) mutex,
> @@ -29,16 +30,22 @@ __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
>    return thrd_err_map (err_code);
>  }
>  
> -#if __TIMESIZE != 64
> -libpthread_hidden_def (__cnd_timedwait64)
> +#if __TIMESIZE == 64
> +strong_alias (___cnd_timedwait64, ___cnd_timedwait)
> +#else
> +libc_hidden_ver (___cnd_timedwait64, __cnd_timedwait64)
>  
>  int
> -__cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
> -                 const struct timespec *restrict time_point)
> +___cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
> +                  const struct timespec *restrict time_point)
>  {
>    struct __timespec64 ts64 = valid_timespec_to_timespec64 (*time_point);
>  
>    return __cnd_timedwait64(cond, mutex, &ts64);
>  }
> +#endif /* __TIMESIZE == 64 */
> +versioned_symbol (libc, ___cnd_timedwait, cnd_timedwait, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libpthread, ___cnd_timedwait, cnd_timedwait, GLIBC_2_28);
>  #endif
> -weak_alias (__cnd_timedwait, cnd_timedwait)
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 7eeb378c5d..fec491a915 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -665,6 +665,7 @@ GLIBC_2.29 cnd_broadcast F
>  GLIBC_2.29 cnd_destroy F
>  GLIBC_2.29 cnd_init F
>  GLIBC_2.29 cnd_signal F
> +GLIBC_2.29 cnd_timedwait F
>  GLIBC_2.29 confstr F
>  GLIBC_2.29 connect F
>  GLIBC_2.29 copy_file_range F
> @@ -2202,6 +2203,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 f6bc446e72..41d1755f5c 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.29 __pthread_rwlock_tryrdlock F
>  GLIBC_2.29 __pthread_rwlock_trywrlock F
>  GLIBC_2.29 __pthread_unregister_cancel F
>  GLIBC_2.29 __pthread_unregister_cancel_restore F
> -GLIBC_2.29 cnd_timedwait F
>  GLIBC_2.29 cnd_wait F
>  GLIBC_2.29 flockfile F
>  GLIBC_2.29 ftrylockfile F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index d374294b74..775d252ea8 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1934,6 +1934,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2153,6 +2154,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index a04cffe918..fd456cc40f 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2108,6 +2108,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2330,6 +2331,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 95b1fd0c71..0859bb6e01 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 7d726cf83a..f0f6f45173 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1970,6 +1970,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2187,6 +2188,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 7ca68df981..2b5f0faafe 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 8ce26f3464..9bce1b9306 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -124,6 +124,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -184,6 +185,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index c45351349d..9ad3a48ac7 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2051,6 +2051,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2273,6 +2274,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 95b1fd0c71..0859bb6e01 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index bef33f44c7..01f7f9f610 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2193,6 +2193,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2253,6 +2254,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 9022a933a6..de1c00e0da 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index b439dd4e20..4295037bc3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2193,6 +2193,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2250,6 +2251,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 9022a933a6..de1c00e0da 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 0841e90060..dd084a4cd8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2021,6 +2021,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2236,6 +2237,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 2bb846c3aa..547af268e9 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index ecaa9272d4..c02d5f6441 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2019,6 +2019,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2234,6 +2235,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 2bb846c3aa..547af268e9 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 0c6ba2872f..9252a6d6b1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2027,6 +2027,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2242,6 +2243,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 f090cc2c6b..1cc33dff71 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2023,6 +2023,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2236,6 +2237,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 920d0cac62..fa171795e8 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2235,6 +2235,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2292,6 +2293,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 d754e6a54b..6bc25a621a 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index aff18d7606..9c05ec6f69 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2055,6 +2055,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2300,6 +2301,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 e965753d48..ef9b58bcde 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 8bc8c0afaf..0ba84f6229 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2059,6 +2059,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2333,6 +2334,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 ca1f493315..c15f8e1987 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -124,6 +124,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2154,6 +2155,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 71d81f8a6e..99a031f12c 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index c138101ee2..159314039b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2293,6 +2293,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2455,6 +2456,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 2a03782c65..ad08f4362a 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 0bc0489a68..d1508cc2e1 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -623,6 +623,7 @@ GLIBC_2.33 cnd_broadcast F
>  GLIBC_2.33 cnd_destroy F
>  GLIBC_2.33 cnd_init F
>  GLIBC_2.33 cnd_signal F
> +GLIBC_2.33 cnd_timedwait F
>  GLIBC_2.33 confstr F
>  GLIBC_2.33 connect F
>  GLIBC_2.33 copy_file_range F
> @@ -2020,6 +2021,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 c081f3b879..ce9c39a66e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.33 __pthread_rwlock_tryrdlock F
>  GLIBC_2.33 __pthread_rwlock_trywrlock F
>  GLIBC_2.33 __pthread_unregister_cancel F
>  GLIBC_2.33 __pthread_unregister_cancel_restore F
> -GLIBC_2.33 cnd_timedwait F
>  GLIBC_2.33 cnd_wait F
>  GLIBC_2.33 flockfile F
>  GLIBC_2.33 ftrylockfile F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 1381e5756e..21adb65d38 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2164,6 +2164,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2220,6 +2221,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 1c1eb7b63c..2f2f739453 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 65a0363520..df52cb17db 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2064,6 +2064,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2298,6 +2299,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 de7ae45036..51a06f351c 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index f6b14d02f2..f57652d201 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1962,6 +1962,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2191,6 +2192,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 518c17fcb9..f0227448e0 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 073735ac3b..ee2f873226 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1938,6 +1938,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2160,6 +2161,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 4c33d0bc6d..f5832d5ceb 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1938,6 +1938,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2157,6 +2158,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index ab8a5b02b1..e99e3b8d67 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2058,6 +2058,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2289,6 +2290,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 95cf8307c1..687b742199 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 9c4952047b..6a16608ffb 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1992,6 +1992,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2208,6 +2209,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 7ca68df981..2b5f0faafe 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/thrd_priv.h b/sysdeps/unix/sysv/linux/thrd_priv.h
> index 9fb300df03..81dacdc3ea 100644
> --- a/sysdeps/unix/sysv/linux/thrd_priv.h
> +++ b/sysdeps/unix/sysv/linux/thrd_priv.h
> @@ -25,7 +25,7 @@
>  #else
>  extern int __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
>                                const struct __timespec64 *restrict time_point);
> -libpthread_hidden_proto (__cnd_timedwait64)
> +libc_hidden_proto (__cnd_timedwait64)
>  extern int __mtx_timedlock64 (mtx_t *restrict mutex,
>                                const struct __timespec64 *restrict time_point);
>  libpthread_hidden_proto (__mtx_timedlock64)
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 3e989106f6..6caabf8639 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1951,6 +1951,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2169,6 +2170,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 3559c385a0..452198549e 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index b6ff19db0a..7971686678 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2216,6 +2216,7 @@ GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>  GLIBC_2.28 cnd_signal F
> +GLIBC_2.28 cnd_timedwait F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2274,6 +2275,7 @@ GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
>  GLIBC_2.34 cnd_init F
>  GLIBC_2.34 cnd_signal F
> +GLIBC_2.34 cnd_timedwait 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 1ce3839af0..6844d45ecd 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 cnd_timedwait F
>  GLIBC_2.28 cnd_wait F
>  GLIBC_2.28 mtx_destroy F
>  GLIBC_2.28 mtx_init F
>
  

Patch

diff --git a/nptl/Versions b/nptl/Versions
index b18709c8e1..1aecde43ed 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -131,6 +131,7 @@  libc {
     cnd_destroy;
     cnd_init;
     cnd_signal;
+    cnd_timedwait;
     thrd_current;
     thrd_equal;
     thrd_sleep;
@@ -164,6 +165,7 @@  libc {
     cnd_destroy;
     cnd_init;
     cnd_signal;
+    cnd_timedwait;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -226,7 +228,6 @@  libc {
     __pthread_cleanup_pop;
     __pthread_cleanup_push;
     __pthread_cleanup_upto;
-    __pthread_cond_timedwait; # Used by the C11 threads.
     __pthread_cond_wait; # Used by the C11 threads.
     __pthread_current_priority;
     __pthread_exit;
@@ -378,7 +379,6 @@  libpthread {
 
   # C11 thread symbols.
   GLIBC_2.28 {
-    cnd_timedwait;
     cnd_wait;
     mtx_destroy;
     mtx_init;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 5a1642b932..89ea231554 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -646,9 +646,10 @@  ___pthread_cond_timedwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_cond_timedwait64, ___pthread_cond_timedwait)
 #else
-versioned_symbol (libc, ___pthread_cond_timedwait64,
-		  __pthread_cond_timedwait64, GLIBC_PRIVATE);
 libc_hidden_ver (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
+#ifndef SHARED
+strong_alias (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
+#endif
 
 int
 ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
@@ -662,8 +663,9 @@  ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
 versioned_symbol (libc, ___pthread_cond_timedwait,
 		  pthread_cond_timedwait, GLIBC_2_3_2);
 libc_hidden_ver (___pthread_cond_timedwait, __pthread_cond_timedwait)
-versioned_symbol (libc, ___pthread_cond_timedwait,
-		  __pthread_cond_timedwait, GLIBC_PRIVATE);
+#ifndef SHARED
+strong_alias (___pthread_cond_timedwait, __pthread_cond_timedwait)
+#endif
 
 /* See __pthread_cond_wait_common.  */
 int
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index fcc5f841fd..4928f91f04 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -34,7 +34,7 @@  routines += thrd_current thrd_equal thrd_sleep thrd_yield
 libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
 		       mtx_destroy mtx_init mtx_lock mtx_timedlock \
 		       mtx_trylock mtx_unlock \
-		       cnd_timedwait cnd_wait \
+		       cnd_wait \
 		       tss_create tss_delete tss_get tss_set
 
 $(libpthread-routines-var) += \
@@ -43,6 +43,7 @@  $(libpthread-routines-var) += \
   cnd_destroy \
   cnd_init \
   cnd_signal \
+  cnd_timedwait \
 
 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 defb9dc974..5c8c6dbff5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2203,6 +2203,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2259,6 +2260,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 2a03782c65..ad08f4362a 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 46fb382ab6..712fe8fd85 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2096,6 +2096,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2340,6 +2341,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 95cf8307c1..687b742199 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 01af77fbb0..c7a2b49251 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -630,6 +630,7 @@  GLIBC_2.32 cnd_broadcast F
 GLIBC_2.32 cnd_destroy F
 GLIBC_2.32 cnd_init F
 GLIBC_2.32 cnd_signal F
+GLIBC_2.32 cnd_timedwait F
 GLIBC_2.32 confstr F
 GLIBC_2.32 connect F
 GLIBC_2.32 copy_file_range F
@@ -2018,6 +2019,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 83decc712c..d54040242c 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.32 __pthread_rwlock_tryrdlock F
 GLIBC_2.32 __pthread_rwlock_trywrlock F
 GLIBC_2.32 __pthread_unregister_cancel F
 GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 cnd_timedwait F
 GLIBC_2.32 cnd_wait F
 GLIBC_2.32 flockfile F
 GLIBC_2.32 ftrylockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 981e31d7df..5e06805905 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -123,6 +123,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -183,6 +184,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index c094d4ca72..8109b70aec 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -123,6 +123,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -180,6 +181,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/cnd_timedwait.c b/sysdeps/unix/sysv/linux/cnd_timedwait.c
index 1bd0e70f7d..0415c683f9 100644
--- a/sysdeps/unix/sysv/linux/cnd_timedwait.c
+++ b/sysdeps/unix/sysv/linux/cnd_timedwait.c
@@ -17,11 +17,12 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <time.h>
+#include <shlib-compat.h>
 #include "thrd_priv.h"
 
 int
-__cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
-                   const struct __timespec64 *restrict time_point)
+___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
+                    const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_cond_timedwait64 ((pthread_cond_t *) cond,
                                              (pthread_mutex_t *) mutex,
@@ -29,16 +30,22 @@  __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
   return thrd_err_map (err_code);
 }
 
-#if __TIMESIZE != 64
-libpthread_hidden_def (__cnd_timedwait64)
+#if __TIMESIZE == 64
+strong_alias (___cnd_timedwait64, ___cnd_timedwait)
+#else
+libc_hidden_ver (___cnd_timedwait64, __cnd_timedwait64)
 
 int
-__cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
-                 const struct timespec *restrict time_point)
+___cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
+                  const struct timespec *restrict time_point)
 {
   struct __timespec64 ts64 = valid_timespec_to_timespec64 (*time_point);
 
   return __cnd_timedwait64(cond, mutex, &ts64);
 }
+#endif /* __TIMESIZE == 64 */
+versioned_symbol (libc, ___cnd_timedwait, cnd_timedwait, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libpthread, ___cnd_timedwait, cnd_timedwait, GLIBC_2_28);
 #endif
-weak_alias (__cnd_timedwait, cnd_timedwait)
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 7eeb378c5d..fec491a915 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -665,6 +665,7 @@  GLIBC_2.29 cnd_broadcast F
 GLIBC_2.29 cnd_destroy F
 GLIBC_2.29 cnd_init F
 GLIBC_2.29 cnd_signal F
+GLIBC_2.29 cnd_timedwait F
 GLIBC_2.29 confstr F
 GLIBC_2.29 connect F
 GLIBC_2.29 copy_file_range F
@@ -2202,6 +2203,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 f6bc446e72..41d1755f5c 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.29 __pthread_rwlock_tryrdlock F
 GLIBC_2.29 __pthread_rwlock_trywrlock F
 GLIBC_2.29 __pthread_unregister_cancel F
 GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 cnd_timedwait F
 GLIBC_2.29 cnd_wait F
 GLIBC_2.29 flockfile F
 GLIBC_2.29 ftrylockfile F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index d374294b74..775d252ea8 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1934,6 +1934,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2153,6 +2154,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a04cffe918..fd456cc40f 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2108,6 +2108,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2330,6 +2331,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 95b1fd0c71..0859bb6e01 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 7d726cf83a..f0f6f45173 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1970,6 +1970,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2187,6 +2188,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 7ca68df981..2b5f0faafe 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 8ce26f3464..9bce1b9306 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -124,6 +124,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -184,6 +185,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 ee56b58ec8..5e3722bfa0 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index c45351349d..9ad3a48ac7 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2051,6 +2051,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2273,6 +2274,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 95b1fd0c71..0859bb6e01 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index bef33f44c7..01f7f9f610 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2193,6 +2193,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2253,6 +2254,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 9022a933a6..de1c00e0da 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index b439dd4e20..4295037bc3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2193,6 +2193,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2250,6 +2251,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 9022a933a6..de1c00e0da 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 0841e90060..dd084a4cd8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2021,6 +2021,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2236,6 +2237,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 2bb846c3aa..547af268e9 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index ecaa9272d4..c02d5f6441 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2019,6 +2019,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2234,6 +2235,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 2bb846c3aa..547af268e9 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 0c6ba2872f..9252a6d6b1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2027,6 +2027,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2242,6 +2243,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 f090cc2c6b..1cc33dff71 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2023,6 +2023,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2236,6 +2237,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 920d0cac62..fa171795e8 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2235,6 +2235,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2292,6 +2293,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 d754e6a54b..6bc25a621a 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index aff18d7606..9c05ec6f69 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2055,6 +2055,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2300,6 +2301,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 e965753d48..ef9b58bcde 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 8bc8c0afaf..0ba84f6229 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2059,6 +2059,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2333,6 +2334,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 ca1f493315..c15f8e1987 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -124,6 +124,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2154,6 +2155,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 71d81f8a6e..99a031f12c 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index c138101ee2..159314039b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2293,6 +2293,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2455,6 +2456,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 2a03782c65..ad08f4362a 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 0bc0489a68..d1508cc2e1 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -623,6 +623,7 @@  GLIBC_2.33 cnd_broadcast F
 GLIBC_2.33 cnd_destroy F
 GLIBC_2.33 cnd_init F
 GLIBC_2.33 cnd_signal F
+GLIBC_2.33 cnd_timedwait F
 GLIBC_2.33 confstr F
 GLIBC_2.33 connect F
 GLIBC_2.33 copy_file_range F
@@ -2020,6 +2021,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 c081f3b879..ce9c39a66e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.33 __pthread_rwlock_tryrdlock F
 GLIBC_2.33 __pthread_rwlock_trywrlock F
 GLIBC_2.33 __pthread_unregister_cancel F
 GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 cnd_timedwait F
 GLIBC_2.33 cnd_wait F
 GLIBC_2.33 flockfile F
 GLIBC_2.33 ftrylockfile F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 1381e5756e..21adb65d38 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2164,6 +2164,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2220,6 +2221,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 1c1eb7b63c..2f2f739453 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 65a0363520..df52cb17db 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2064,6 +2064,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2298,6 +2299,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 de7ae45036..51a06f351c 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index f6b14d02f2..f57652d201 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1962,6 +1962,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2191,6 +2192,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 518c17fcb9..f0227448e0 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 073735ac3b..ee2f873226 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1938,6 +1938,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2160,6 +2161,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 4c33d0bc6d..f5832d5ceb 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1938,6 +1938,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2157,6 +2158,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 23288daa14..1907735eae 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index ab8a5b02b1..e99e3b8d67 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2058,6 +2058,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2289,6 +2290,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 95cf8307c1..687b742199 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 9c4952047b..6a16608ffb 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1992,6 +1992,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2208,6 +2209,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 7ca68df981..2b5f0faafe 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/thrd_priv.h b/sysdeps/unix/sysv/linux/thrd_priv.h
index 9fb300df03..81dacdc3ea 100644
--- a/sysdeps/unix/sysv/linux/thrd_priv.h
+++ b/sysdeps/unix/sysv/linux/thrd_priv.h
@@ -25,7 +25,7 @@ 
 #else
 extern int __cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
                               const struct __timespec64 *restrict time_point);
-libpthread_hidden_proto (__cnd_timedwait64)
+libc_hidden_proto (__cnd_timedwait64)
 extern int __mtx_timedlock64 (mtx_t *restrict mutex,
                               const struct __timespec64 *restrict time_point);
 libpthread_hidden_proto (__mtx_timedlock64)
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 3e989106f6..6caabf8639 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1951,6 +1951,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2169,6 +2170,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 3559c385a0..452198549e 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index b6ff19db0a..7971686678 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2216,6 +2216,7 @@  GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
 GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2274,6 +2275,7 @@  GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
 GLIBC_2.34 cnd_init F
 GLIBC_2.34 cnd_signal F
+GLIBC_2.34 cnd_timedwait 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 1ce3839af0..6844d45ecd 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 cnd_timedwait F
 GLIBC_2.28 cnd_wait F
 GLIBC_2.28 mtx_destroy F
 GLIBC_2.28 mtx_init F