diff mbox series

[05/10] nptl: Move pthread_create, thrd_create into libc

Message ID d396af961e68502389402d7d2f4d64ccdda0cfda.1621347402.git.fweimer@redhat.com
State Superseded
Headers show
Series nptl: Complete libpthread removal | expand

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Florian Weimer May 18, 2021, 2:25 p.m. UTC
The symbols were moved using scripts/move-symbol-to-libc.py.

The libpthread placeholder symbols need some changes because some
symbol versions have gone away completely.  But
__errno_location@@GLIBC_2.0 still exists, so the GLIBC_2.0 version
is still there.

The internal __pthread_create symbol now points to the correct
function, so the sysdeps/nptl/thrd_create.c override is no longer
necessary.

There was an issue how the hidden alias of pthread_getattr_default_np
was defined, so this commit cleans up that aspects and removes the
GLIBC_PRIVATE export altogether.
---
 include/libc-internal.h                       |  6 ++++-
 nptl/Makefile                                 |  2 +-
 nptl/Versions                                 | 14 +++++++----
 nptl/libpthread-compat.c                      | 24 +++++++++----------
 nptl/pthreadP.h                               |  7 +++---
 nptl/pthread_create.c                         | 11 +++++++--
 nptl/pthread_getattr_default_np.c             |  6 +++--
 nptl_db/Makefile                              |  2 +-
 nptl_db/structs.def                           | 10 ++++----
 sysdeps/nptl/thrd_create.c                    |  2 --
 sysdeps/pthread/Makefile                      |  3 +--
 sysdeps/pthread/thrd_create.c                 | 11 ++++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
 .../sysv/linux/aarch64/libpthread.abilist     |  3 +--
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  5 ++++
 .../unix/sysv/linux/alpha/libpthread.abilist  |  5 ++--
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++++
 .../unix/sysv/linux/arc/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++++
 .../unix/sysv/linux/arm/be/libpthread.abilist |  3 +--
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  3 +--
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++++
 .../unix/sysv/linux/csky/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++++
 .../unix/sysv/linux/hppa/libpthread.abilist   |  3 +--
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 ++++
 .../unix/sysv/linux/i386/libpthread.abilist   |  5 ++--
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
 .../unix/sysv/linux/ia64/libpthread.abilist   |  3 +--
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
 .../linux/m68k/coldfire/libpthread.abilist    |  3 +--
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 ++++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  5 ++--
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
 .../linux/microblaze/be/libpthread.abilist    |  3 +--
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
 .../linux/microblaze/le/libpthread.abilist    |  3 +--
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 ++++
 .../sysv/linux/mips/mips32/libpthread.abilist |  5 ++--
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 ++++
 .../sysv/linux/mips/mips64/libpthread.abilist |  5 ++--
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 ++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  5 ++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  3 +--
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 ++++
 .../powerpc/powerpc32/libpthread.abilist      |  5 ++--
 .../powerpc/powerpc32/nofpu/libc.abilist      |  5 ++++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
 .../powerpc/powerpc64/be/libpthread.abilist   |  3 +--
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
 .../powerpc/powerpc64/le/libpthread.abilist   |  3 +--
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
 .../sysv/linux/riscv/rv32/libpthread.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
 .../sysv/linux/riscv/rv64/libpthread.abilist  |  3 +--
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 ++++
 .../linux/s390/s390-32/libpthread.abilist     |  5 ++--
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
 .../linux/s390/s390-64/libpthread.abilist     |  3 +--
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  3 +--
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  3 +--
 .../sysv/linux/sparc/sparc32/libc.abilist     |  5 ++++
 .../linux/sparc/sparc32/libpthread.abilist    |  5 ++--
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
 .../linux/sparc/sparc64/libpthread.abilist    |  3 +--
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
 .../sysv/linux/x86_64/64/libpthread.abilist   |  3 +--
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  3 +--
 73 files changed, 233 insertions(+), 104 deletions(-)
 delete mode 100644 sysdeps/nptl/thrd_create.c

Comments

Adhemerval Zanella May 20, 2021, 8:44 p.m. UTC | #1
On 18/05/2021 11:25, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> 
> The libpthread placeholder symbols need some changes because some
> symbol versions have gone away completely.  But
> __errno_location@@GLIBC_2.0 still exists, so the GLIBC_2.0 version
> is still there.
> 
> The internal __pthread_create symbol now points to the correct
> function, so the sysdeps/nptl/thrd_create.c override is no longer
> necessary.
> 
> There was an issue how the hidden alias of pthread_getattr_default_np
> was defined, so this commit cleans up that aspects and removes the
> GLIBC_PRIVATE export altogether.

LGTM, thanks.

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

> ---
>  include/libc-internal.h                       |  6 ++++-
>  nptl/Makefile                                 |  2 +-
>  nptl/Versions                                 | 14 +++++++----
>  nptl/libpthread-compat.c                      | 24 +++++++++----------
>  nptl/pthreadP.h                               |  7 +++---
>  nptl/pthread_create.c                         | 11 +++++++--
>  nptl/pthread_getattr_default_np.c             |  6 +++--
>  nptl_db/Makefile                              |  2 +-
>  nptl_db/structs.def                           | 10 ++++----
>  sysdeps/nptl/thrd_create.c                    |  2 --
>  sysdeps/pthread/Makefile                      |  3 +--
>  sysdeps/pthread/thrd_create.c                 | 11 ++++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
>  .../sysv/linux/aarch64/libpthread.abilist     |  3 +--
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  5 ++++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  5 ++--
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++++
>  .../unix/sysv/linux/arc/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  3 +--
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  3 +--
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  3 +--
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 ++++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  5 ++--
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  3 +--
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
>  .../linux/m68k/coldfire/libpthread.abilist    |  3 +--
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 ++++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  5 ++--
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
>  .../linux/microblaze/be/libpthread.abilist    |  3 +--
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
>  .../linux/microblaze/le/libpthread.abilist    |  3 +--
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 ++++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  5 ++--
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 ++++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  5 ++--
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 ++++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  5 ++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  3 +--
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 ++++
>  .../powerpc/powerpc32/libpthread.abilist      |  5 ++--
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  5 ++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  3 +--
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  3 +--
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  3 +--
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 ++++
>  .../linux/s390/s390-32/libpthread.abilist     |  5 ++--
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
>  .../linux/s390/s390-64/libpthread.abilist     |  3 +--
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  3 +--
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  3 +--
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  5 ++++
>  .../linux/sparc/sparc32/libpthread.abilist    |  5 ++--
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
>  .../linux/sparc/sparc64/libpthread.abilist    |  3 +--
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  3 +--
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  3 +--
>  73 files changed, 233 insertions(+), 104 deletions(-)
>  delete mode 100644 sysdeps/nptl/thrd_create.c
> 
> diff --git a/include/libc-internal.h b/include/libc-internal.h
> index 5b18c7c9f2..749dfb919c 100644
> --- a/include/libc-internal.h
> +++ b/include/libc-internal.h
> @@ -38,7 +38,11 @@ extern void __libc_freeres (void);
>  libc_hidden_proto (__libc_freeres)
>  
>  /* Free resources stored in thread-local variables on thread exit.  */
> -extern void __libc_thread_freeres (void);
> +extern void __libc_thread_freeres (void)
> +#if PTHREAD_IN_LIBC
> +  attribute_hidden
> +#endif
> +  ;
>  
>  /* Define and initialize `__progname' et. al.  */

Ok.

>  extern void __init_misc (int, char **, char **) attribute_hidden;
> diff --git a/nptl/Makefile b/nptl/Makefile
> index bd5a9ce51f..7426997a83 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -109,6 +109,7 @@ routines = \
>    pthread_condattr_init \
>    pthread_condattr_setclock \
>    pthread_condattr_setpshared \
> +  pthread_create \
>    pthread_detach \
>    pthread_equal \
>    pthread_exit \
> @@ -211,7 +212,6 @@ libpthread-routines = \
>    libpthread-compat \
>    nptl-init \
>    pt-interp \
> -  pthread_create \
>    version \
>  
>  libpthread-shared-only-routines = \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 845001847b..0db56bce29 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -38,6 +38,7 @@ libc {
>      pthread_cond_wait;
>      pthread_condattr_destroy;
>      pthread_condattr_init;
> +    pthread_create;
>      pthread_detach;
>      pthread_equal;
>      pthread_exit;
> @@ -80,6 +81,7 @@ libc {
>      pthread_attr_setguardsize;
>      pthread_attr_setstackaddr;
>      pthread_attr_setstacksize;
> +    pthread_create;
>      pthread_getconcurrency;
>      pthread_mutexattr_gettype;
>      pthread_mutexattr_settype;
> @@ -217,6 +219,7 @@ libc {
>      mtx_trylock;
>      mtx_unlock;
>      thrd_current;
> +    thrd_create;
>      thrd_detach;
>      thrd_equal;
>      thrd_exit;
> @@ -358,6 +361,7 @@ libc {
>      sem_trywait;
>      sem_unlink;
>      sem_wait;
> +    thrd_create;
>      thrd_detach;
>      thrd_exit;
>      thrd_join;

Ok.

> @@ -409,8 +413,6 @@ libc {
>      __pthread_enable_asynccancel;
>      __pthread_force_elision;
>      __pthread_get_minstack;
> -    __pthread_getattr_default_np;
> -    __pthread_getattr_default_np;
>      __pthread_keys;
>      __pthread_mutex_unlock_usercnt;
>      __pthread_setcancelstate;

Ok.

> @@ -438,7 +440,7 @@ libpthread {
>    }
>  
>    GLIBC_2.1 {
> -    pthread_create;
> +    __libpthread_version_placeholder;
>    }
>  
>    GLIBC_2.1.1 {
> @@ -495,9 +497,11 @@ libpthread {
>    GLIBC_2.19 {
>    }
>  
> -  # C11 thread symbols.
>    GLIBC_2.28 {
> -    thrd_create;
> +    __libpthread_version_placeholder;
> +  }
> +
> +  GLIBC_2.29 {
>    }
>  
>    GLIBC_2.30 {

Ok.

> diff --git a/nptl/libpthread-compat.c b/nptl/libpthread-compat.c
> index 7e3e7aa0c3..2dcf175f3f 100644
> --- a/nptl/libpthread-compat.c
> +++ b/nptl/libpthread-compat.c
> @@ -28,14 +28,11 @@ __libpthread_version_placeholder_1 (void)
>  }
>  #endif
>  
> -/* This is an unused compatibility symbol definition, to prevent ld
> -   from creating a weak version definition for GLIBC_2.1.2.  (__vfork
> -   used to be defined at that version, but it is now provided by libc,
> -   and there are no versions left in libpthread for that symbol
> -   version.)  If the ABI baseline for glibc is the GLIBC_2.2 symbol
> -   version or later, the placeholder symbol is not needed because
> -   there are plenty of other symbols which populate those later
> -   versions.  */
> +#if (SHLIB_COMPAT (libpthread, GLIBC_2_1, GLIBC_2_2))
> +compat_symbol (libpthread, __libpthread_version_placeholder_1,
> +	       __libpthread_version_placeholder, GLIBC_2_1);
> +#endif
> +
>  #if (SHLIB_COMPAT (libpthread, GLIBC_2_1_1, GLIBC_2_1_2))
>  compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_1_1);

Ok.

> @@ -45,12 +42,8 @@ compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_1_2);
>  #endif
>  
> -/* Do not create the placeholder symbol version if there are other
> -   symbols left that keep the version around (because GLIBC_2.0 got
> -   promoted to GLIBC_2.2).  */
>  #if SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_2_3) \
> -  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_0 \
> -  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_1_3
> +  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_0
>  compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_2);
>  #endif

Ok.

> @@ -101,6 +94,11 @@ compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_18);
>  #endif
>  
> +#if (SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_29))
> +compat_symbol (libpthread, __libpthread_version_placeholder_1,
> +	       __libpthread_version_placeholder, GLIBC_2_28);
> +#endif
> +
>  #if (SHLIB_COMPAT (libpthread, GLIBC_2_30, GLIBC_2_31))
>  compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_30);

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 3151842891..05f2bae521 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -314,9 +314,10 @@ libc_hidden_proto (__pthread_cleanup_upto)
>  
>  
>  /* Functions with versioned interfaces.  */
> -extern int __pthread_create_2_1 (pthread_t *newthread,
> -				 const pthread_attr_t *attr,
> -				 void *(*start_routine) (void *), void *arg);
> +extern int __pthread_create (pthread_t *newthread,
> +			     const pthread_attr_t *attr,
> +			     void *(*start_routine) (void *), void *arg);
> +libc_hidden_proto (__pthread_create)
>  extern int __pthread_create_2_0 (pthread_t *newthread,
>  				 const pthread_attr_t *attr,
>  				 void *(*start_routine) (void *), void *arg);

Ok.

> diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
> index 438b8a7ae1..5680687efe 100644
> --- a/nptl/pthread_create.c
> +++ b/nptl/pthread_create.c
> @@ -762,10 +762,17 @@ __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr,
>  
>    return retval;
>  }
> -versioned_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1);
> +versioned_symbol (libc, __pthread_create_2_1, pthread_create, GLIBC_2_34);
> +libc_hidden_ver (__pthread_create_2_1, __pthread_create)
> +#ifndef SHARED
> +strong_alias (__pthread_create_2_1, __pthread_create)
> +#endif
>  
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1);
> +#endif
>  
> -#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
>  int
>  __pthread_create_2_0 (pthread_t *newthread, const pthread_attr_t *attr,
>  		      void *(*start_routine) (void *), void *arg)

Ok.

> diff --git a/nptl/pthread_getattr_default_np.c b/nptl/pthread_getattr_default_np.c
> index f38f687431..ad10a27339 100644
> --- a/nptl/pthread_getattr_default_np.c
> +++ b/nptl/pthread_getattr_default_np.c
> @@ -29,8 +29,10 @@ ___pthread_getattr_default_np (pthread_attr_t *out)
>  }
>  versioned_symbol (libc, ___pthread_getattr_default_np,
>                    pthread_getattr_default_np, GLIBC_2_34);
> -versioned_symbol (libc, ___pthread_getattr_default_np,
> -                  __pthread_getattr_default_np, GLIBC_PRIVATE);
> +libc_hidden_ver (___pthread_getattr_default_np, __pthread_getattr_default_np)
> +#ifndef SHARED
> +strong_alias (___pthread_getattr_default_np, __pthread_getattr_default_np)
> +#endif
>  
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_18, GLIBC_2_34)
>  compat_symbol (libpthread, ___pthread_getattr_default_np,

Ok.

> diff --git a/nptl_db/Makefile b/nptl_db/Makefile
> index 8873a0a0ee..ea721c1dcf 100644
> --- a/nptl_db/Makefile
> +++ b/nptl_db/Makefile
> @@ -56,7 +56,7 @@ tests-special += $(objpfx)db-symbols.out
>  include ../Rules
>  
>  $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
> -			 $(common-objpfx)nptl/libpthread.so
> +			 $(common-objpfx)libc.so
>  	LC_ALL=C $(READELF) -W -s $(filter %.so,$^) | $(AWK) -f $< > $@; \
>  	$(evaluate-test)
>  

Ok.

> diff --git a/nptl_db/structs.def b/nptl_db/structs.def
> index 71c9f7bfc2..6a726f207e 100644
> --- a/nptl_db/structs.def
> +++ b/nptl_db/structs.def
> @@ -1,4 +1,4 @@
> -/* List of types and symbols in libpthread examined by libthread_db.
> +/* List of types and symbols in libc examined by libthread_db.
>     Copyright (C) 2003-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
>  
> @@ -27,7 +27,7 @@
>  #endif
>  
>  /* DB_MAIN_VARIABLE, DB_MAIN_SYMBOL, DB_MAIN_ARRAY_VARIABLE are not
> -   covered by the libpthread symbol check in db-symbols.awk.  */
> +   covered by the libc symbol check in db-symbols.awk.  */
>  #ifndef DB_MAIN_VARIABLE
>  # define DB_MAIN_VARIABLE(name) DB_VARIABLE (name)
>  #endif
> @@ -39,7 +39,7 @@
>  #endif
>  
>  #ifndef DB_RTLD_GLOBAL_FIELD
> -# if !IS_IN (libpthread)
> +# if !IS_IN (libc)
>  #  define DB_RTLD_GLOBAL_FIELD(field)		\
>    DB_STRUCT_FIELD (rtld_global, _##field)	\
>    DB_MAIN_VARIABLE (_##field)

Ok.

> @@ -103,11 +103,11 @@ DB_STRUCT_ARRAY_FIELD (dtv, dtv)
>  #define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
>  DB_STRUCT_FIELD (dtv_t, pointer_val)
>  DB_STRUCT_FIELD (dtv_t, counter)
> -#if !IS_IN (libpthread) || TLS_TCB_AT_TP
> +#if !IS_IN (libc) || TLS_TCB_AT_TP
>  DB_STRUCT_FIELD (pthread, dtvp)
>  #endif
>  
> -#if !(IS_IN (libpthread) && !defined SHARED)
> +#if !(IS_IN (libc) && !defined SHARED)
>  DB_VARIABLE (__nptl_rtld_global)
>  #endif
>  DB_RTLD_GLOBAL_FIELD (dl_tls_dtv_slotinfo_list)

Ok.

> diff --git a/sysdeps/nptl/thrd_create.c b/sysdeps/nptl/thrd_create.c
> deleted file mode 100644
> index 596a7ba588..0000000000
> --- a/sysdeps/nptl/thrd_create.c
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -#define __pthread_create __pthread_create_2_1
> -#include <sysdeps/pthread/thrd_create.c>

Ok.

> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index b15d085f51..bca642f438 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -31,8 +31,6 @@ headers += threads.h
>  
>  routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  
> -libpthread-routines += thrd_create
> -
>  $(libpthread-routines-var) += \
>    call_once \
>    cnd_broadcast \
> @@ -47,6 +45,7 @@ $(libpthread-routines-var) += \
>    mtx_timedlock \
>    mtx_trylock \
>    mtx_unlock \
> +  thrd_create \
>    thrd_detach \
>    thrd_exit \
>    thrd_join \

Ok.

> diff --git a/sysdeps/pthread/thrd_create.c b/sysdeps/pthread/thrd_create.c
> index 07848c0aab..3cb9f1cefb 100644
> --- a/sysdeps/pthread/thrd_create.c
> +++ b/sysdeps/pthread/thrd_create.c
> @@ -17,9 +17,10 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include "thrd_priv.h"
> +#include <shlib-compat.h>
>  
>  int
> -thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
> +__thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
>  {
>    _Static_assert (sizeof (thrd_t) == sizeof (pthread_t),
>  		  "sizeof (thrd_t) != sizeof (pthread_t)");
> @@ -28,3 +29,11 @@ thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
>  				   (void* (*) (void*))func, arg);
>    return thrd_err_map (err_code);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __thrd_create, thrd_create, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libc, __thrd_create, thrd_create, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__thrd_create, thrd_create)
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index bc051ba9f5..d22c7da7ef 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1488,6 +1488,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
>  GLIBC_2.17 pthread_condattr_init F
>  GLIBC_2.17 pthread_condattr_setclock F
>  GLIBC_2.17 pthread_condattr_setpshared F
> +GLIBC_2.17 pthread_create F
>  GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_equal F
>  GLIBC_2.17 pthread_exit F
> @@ -2277,6 +2278,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2370,6 +2372,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2442,6 +2445,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 3c03fcc17b..14ada15a35 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.17 __errno_location F
> -GLIBC_2.17 pthread_create F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 3bea473d00..cefff3bf36 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -898,6 +898,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1620,6 +1621,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2166,6 +2168,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2461,6 +2464,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2533,6 +2537,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index c8f065b787..47cbcf3baf 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -9,7 +8,7 @@ GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 3461527c5a..91a90f8ca4 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1429,6 +1429,7 @@ GLIBC_2.32 pthread_condattr_getpshared F
>  GLIBC_2.32 pthread_condattr_init F
>  GLIBC_2.32 pthread_condattr_setclock F
>  GLIBC_2.32 pthread_condattr_setpshared F
> +GLIBC_2.32 pthread_create F
>  GLIBC_2.32 pthread_detach F
>  GLIBC_2.32 pthread_equal F
>  GLIBC_2.32 pthread_exit F
> @@ -1889,6 +1890,7 @@ GLIBC_2.32 tempnam F
>  GLIBC_2.32 textdomain F
>  GLIBC_2.32 tfind F
>  GLIBC_2.32 tgkill F
> +GLIBC_2.32 thrd_create F
>  GLIBC_2.32 thrd_current F
>  GLIBC_2.32 thrd_detach F
>  GLIBC_2.32 thrd_equal F
> @@ -2129,6 +2131,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2201,6 +2204,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 1d363aa47f..c4264810e6 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -1,3 +1 @@
>  GLIBC_2.32 __errno_location F
> -GLIBC_2.32 pthread_create F
> -GLIBC_2.32 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 7c3029a7e5..120288d766 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -236,6 +237,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -308,6 +310,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> @@ -1740,6 +1743,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 0ad6524820..f8ebb4cae2 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -1,9 +1,8 @@
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __errno_location F
>  GLIBC_2.4 __libpthread_version_placeholder F
> -GLIBC_2.4 pthread_create F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 24f5b202e8..be987da77e 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -233,6 +234,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -305,6 +307,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> @@ -1737,6 +1740,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 0ad6524820..f8ebb4cae2 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -1,9 +1,8 @@
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __errno_location F
>  GLIBC_2.4 __libpthread_version_placeholder F
> -GLIBC_2.4 pthread_create F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 85851c5fca..adb4e15cb8 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1488,6 +1488,7 @@ GLIBC_2.29 pthread_condattr_getpshared F
>  GLIBC_2.29 pthread_condattr_init F
>  GLIBC_2.29 pthread_condattr_setclock F
>  GLIBC_2.29 pthread_condattr_setpshared F
> +GLIBC_2.29 pthread_create F
>  GLIBC_2.29 pthread_detach F
>  GLIBC_2.29 pthread_equal F
>  GLIBC_2.29 pthread_exit F
> @@ -1979,6 +1980,7 @@ GLIBC_2.29 telldir F
>  GLIBC_2.29 tempnam F
>  GLIBC_2.29 textdomain F
>  GLIBC_2.29 tfind F
> +GLIBC_2.29 thrd_create F
>  GLIBC_2.29 thrd_current F
>  GLIBC_2.29 thrd_detach F
>  GLIBC_2.29 thrd_equal F
> @@ -2313,6 +2315,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2385,6 +2388,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index d2f66f45ff..f7649b87b2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -1,5 +1,3 @@
>  GLIBC_2.29 __errno_location F
> -GLIBC_2.29 pthread_create F
> -GLIBC_2.29 thrd_create F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index ede69c7ed5..bd022276e8 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1312,6 +1312,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -1999,6 +2000,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2266,6 +2268,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2338,6 +2341,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index cc941573b6..f1adf37ff2 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -2,10 +2,9 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index c883dc08bc..9e37e1cb38 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -875,6 +875,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1588,6 +1589,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2179,6 +2181,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2449,6 +2452,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2521,6 +2525,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index c8f065b787..47cbcf3baf 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -9,7 +8,7 @@ GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 38fb02e32b..b8089b0b0c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1333,6 +1333,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -2034,6 +2035,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2302,6 +2304,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2374,6 +2377,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index cc941573b6..f1adf37ff2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -2,10 +2,9 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 8ee9648828..093854ad85 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -141,6 +141,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -237,6 +238,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -309,6 +311,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> @@ -1720,6 +1723,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 0ad6524820..f8ebb4cae2 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -1,9 +1,8 @@
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __errno_location F
>  GLIBC_2.4 __libpthread_version_placeholder F
> -GLIBC_2.4 pthread_create F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 1c51cb41ec..87554f1468 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -874,6 +874,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1584,6 +1585,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2122,6 +2124,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2392,6 +2395,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2464,6 +2468,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index c8f065b787..47cbcf3baf 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -9,7 +8,7 @@ GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index f8b67cd170..e9340671c5 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1490,6 +1490,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
>  GLIBC_2.18 pthread_condattr_init F
>  GLIBC_2.18 pthread_condattr_setclock F
>  GLIBC_2.18 pthread_condattr_setpshared F
> +GLIBC_2.18 pthread_create F
>  GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_equal F
>  GLIBC_2.18 pthread_exit F
> @@ -2268,6 +2269,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2364,6 +2366,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2436,6 +2439,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 921e604dbe..c99c8b026c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __errno_location F
> -GLIBC_2.18 pthread_create F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index edac4a1bb4..6ddc0e90cf 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1490,6 +1490,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
>  GLIBC_2.18 pthread_condattr_init F
>  GLIBC_2.18 pthread_condattr_setclock F
>  GLIBC_2.18 pthread_condattr_setpshared F
> +GLIBC_2.18 pthread_create F
>  GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_equal F
>  GLIBC_2.18 pthread_exit F
> @@ -2268,6 +2269,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2361,6 +2363,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2433,6 +2436,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 921e604dbe..c99c8b026c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __errno_location F
> -GLIBC_2.18 pthread_create F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index db900c89ab..8582c9c371 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -871,6 +871,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1869,6 +1870,7 @@ GLIBC_2.2 pthread_barrierattr_init F
>  GLIBC_2.2 pthread_barrierattr_setpshared F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_mutex_timedlock F
> @@ -2092,6 +2094,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2357,6 +2360,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2429,6 +2433,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index a5f3d5ce2a..2d0b9e3542 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -1,12 +1,11 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.2 pthread_create F
> +GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 4e15f48b6c..b0849bec98 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -871,6 +871,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1867,6 +1868,7 @@ GLIBC_2.2 pthread_barrierattr_init F
>  GLIBC_2.2 pthread_barrierattr_setpshared F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_mutex_timedlock F
> @@ -2090,6 +2092,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2355,6 +2358,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2427,6 +2431,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index a5f3d5ce2a..2d0b9e3542 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -1,12 +1,11 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.2 pthread_create F
> +GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 616a6076f1..386660a5a1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -871,6 +871,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1867,6 +1868,7 @@ GLIBC_2.2 pthread_barrierattr_init F
>  GLIBC_2.2 pthread_barrierattr_setpshared F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_mutex_timedlock F
> @@ -2098,6 +2100,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2363,6 +2366,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2435,6 +2439,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 59a353d306..4d05128f21 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -869,6 +869,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1863,6 +1864,7 @@ GLIBC_2.2 pthread_barrierattr_init F
>  GLIBC_2.2 pthread_barrierattr_setpshared F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_mutex_timedlock F
> @@ -2093,6 +2095,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2357,6 +2360,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2429,6 +2433,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 0fc42897aa..bd305f440f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1533,6 +1533,7 @@ GLIBC_2.21 pthread_condattr_getpshared F
>  GLIBC_2.21 pthread_condattr_init F
>  GLIBC_2.21 pthread_condattr_setclock F
>  GLIBC_2.21 pthread_condattr_setpshared F
> +GLIBC_2.21 pthread_create F
>  GLIBC_2.21 pthread_detach F
>  GLIBC_2.21 pthread_equal F
>  GLIBC_2.21 pthread_exit F
> @@ -2310,6 +2311,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2403,6 +2405,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2475,6 +2478,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index f36733746e..4d8ff6a262 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.21 __errno_location F
> -GLIBC_2.21 pthread_create F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 553ecdabc9..c2665624aa 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -882,6 +882,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1592,6 +1593,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2126,6 +2128,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2419,6 +2422,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2491,6 +2495,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 84a1592904..e545bcc56c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -9,7 +8,7 @@ GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 7ec438f7b4..13ef6ef39e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -882,6 +882,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1592,6 +1593,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2130,6 +2132,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2452,6 +2455,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2524,6 +2528,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index f382e3e296..b21072e313 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -1437,6 +1438,7 @@ GLIBC_2.3 pthread_condattr_destroy F
>  GLIBC_2.3 pthread_condattr_getpshared F
>  GLIBC_2.3 pthread_condattr_init F
>  GLIBC_2.3 pthread_condattr_setpshared F
> +GLIBC_2.3 pthread_create F
>  GLIBC_2.3 pthread_detach F
>  GLIBC_2.3 pthread_equal F
>  GLIBC_2.3 pthread_exit F
> @@ -2267,6 +2269,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2339,6 +2342,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index b66279a352..e10c836946 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -1,9 +1,8 @@
>  GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3 __errno_location F
> -GLIBC_2.3 pthread_create F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 97ff951418..62af65536c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1576,6 +1576,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
>  GLIBC_2.17 pthread_condattr_init F
>  GLIBC_2.17 pthread_condattr_setclock F
>  GLIBC_2.17 pthread_condattr_setpshared F
> +GLIBC_2.17 pthread_create F
>  GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_equal F
>  GLIBC_2.17 pthread_exit F
> @@ -2367,6 +2368,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2566,6 +2568,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2638,6 +2641,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 3c03fcc17b..14ada15a35 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.17 __errno_location F
> -GLIBC_2.17 pthread_create F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 5bde5bb508..a63aec3379 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1431,6 +1431,7 @@ GLIBC_2.33 pthread_condattr_getpshared F
>  GLIBC_2.33 pthread_condattr_init F
>  GLIBC_2.33 pthread_condattr_setclock F
>  GLIBC_2.33 pthread_condattr_setpshared F
> +GLIBC_2.33 pthread_create F
>  GLIBC_2.33 pthread_detach F
>  GLIBC_2.33 pthread_equal F
>  GLIBC_2.33 pthread_exit F
> @@ -1899,6 +1900,7 @@ GLIBC_2.33 tempnam F
>  GLIBC_2.33 textdomain F
>  GLIBC_2.33 tfind F
>  GLIBC_2.33 tgkill F
> +GLIBC_2.33 thrd_create F
>  GLIBC_2.33 thrd_current F
>  GLIBC_2.33 thrd_detach F
>  GLIBC_2.33 thrd_equal F
> @@ -2131,6 +2133,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2203,6 +2206,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index e9cded0b3c..73188776b6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -1,3 +1 @@
>  GLIBC_2.33 __errno_location F
> -GLIBC_2.33 pthread_create F
> -GLIBC_2.33 thrd_create F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 42f6d52e13..b52efaf5ee 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1478,6 +1478,7 @@ GLIBC_2.27 pthread_condattr_getpshared F
>  GLIBC_2.27 pthread_condattr_init F
>  GLIBC_2.27 pthread_condattr_setclock F
>  GLIBC_2.27 pthread_condattr_setpshared F
> +GLIBC_2.27 pthread_create F
>  GLIBC_2.27 pthread_detach F
>  GLIBC_2.27 pthread_equal F
>  GLIBC_2.27 pthread_exit F
> @@ -2238,6 +2239,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2331,6 +2333,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2403,6 +2406,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 07a3c7f01d..35a6a20935 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.27 __errno_location F
> -GLIBC_2.27 pthread_create F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 2274342208..b699dedcc1 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -873,6 +873,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1584,6 +1585,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2135,6 +2137,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2417,6 +2420,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2489,6 +2493,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index faae6bcf76..ac212e942a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -10,7 +9,7 @@ GLIBC_2.19 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 14d1c5e7f8..94209858b1 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1330,6 +1330,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -2026,6 +2027,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2304,6 +2306,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2376,6 +2379,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index ac3a2834dc..e0feab34d5 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -3,10 +3,9 @@ GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.19 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 97942ff01a..0fab90e1e3 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1316,6 +1316,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -2003,6 +2004,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2273,6 +2275,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2345,6 +2348,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index cc941573b6..f1adf37ff2 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -2,10 +2,9 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 617b673620..2f3a64b580 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1316,6 +1316,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -2003,6 +2004,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2270,6 +2272,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2342,6 +2345,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index cc941573b6..f1adf37ff2 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -2,10 +2,9 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 3c6559bb4f..e6fe453f50 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -876,6 +876,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
> @@ -1585,6 +1586,7 @@ GLIBC_2.1 pthread_attr_init F
>  GLIBC_2.1 pthread_attr_setguardsize F
>  GLIBC_2.1 pthread_attr_setstackaddr F
>  GLIBC_2.1 pthread_attr_setstacksize F
> +GLIBC_2.1 pthread_create F
>  GLIBC_2.1 pthread_getconcurrency F
>  GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
> @@ -2129,6 +2131,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2410,6 +2413,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2482,6 +2486,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index c8f065b787..47cbcf3baf 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.0 __errno_location F
> -GLIBC_2.0 pthread_create F
> -GLIBC_2.1 pthread_create F
> +GLIBC_2.1 __libpthread_version_placeholder F
>  GLIBC_2.1.1 __libpthread_version_placeholder F
>  GLIBC_2.1.2 __libpthread_version_placeholder F
>  GLIBC_2.11 __libpthread_version_placeholder F
> @@ -9,7 +8,7 @@ GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __libpthread_version_placeholder F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 77f54bb23b..4327cf5eb3 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1359,6 +1359,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
> @@ -2056,6 +2057,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2323,6 +2325,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2395,6 +2398,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index cc941573b6..f1adf37ff2 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -2,10 +2,9 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2 __errno_location F
> -GLIBC_2.2 pthread_create F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 4035841a1e..318a6d50f9 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1326,6 +1326,7 @@ GLIBC_2.2.5 pthread_condattr_destroy F
>  GLIBC_2.2.5 pthread_condattr_getpshared F
>  GLIBC_2.2.5 pthread_condattr_init F
>  GLIBC_2.2.5 pthread_condattr_setpshared F
> +GLIBC_2.2.5 pthread_create F
>  GLIBC_2.2.5 pthread_detach F
>  GLIBC_2.2.5 pthread_equal F
>  GLIBC_2.2.5 pthread_exit F
> @@ -2015,6 +2016,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2282,6 +2284,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2354,6 +2357,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index d3abfb7d11..ec4e3c0ecd 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -2,9 +2,8 @@ GLIBC_2.11 __libpthread_version_placeholder F
>  GLIBC_2.12 __libpthread_version_placeholder F
>  GLIBC_2.18 __libpthread_version_placeholder F
>  GLIBC_2.2.5 __errno_location F
> -GLIBC_2.2.5 pthread_create F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __libpthread_version_placeholder F
>  GLIBC_2.3.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 61ac187db9..0bcf898d4d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1495,6 +1495,7 @@ GLIBC_2.16 pthread_condattr_getpshared F
>  GLIBC_2.16 pthread_condattr_init F
>  GLIBC_2.16 pthread_condattr_setclock F
>  GLIBC_2.16 pthread_condattr_setpshared F
> +GLIBC_2.16 pthread_create F
>  GLIBC_2.16 pthread_detach F
>  GLIBC_2.16 pthread_equal F
>  GLIBC_2.16 pthread_exit F
> @@ -2290,6 +2291,7 @@ GLIBC_2.28 mtx_trylock F
>  GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> +GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
> @@ -2385,6 +2387,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_create F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getattr_default_np F
>  GLIBC_2.34 pthread_getconcurrency F
> @@ -2457,6 +2460,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index af42dea518..cc6e073a11 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.16 __errno_location F
> -GLIBC_2.16 pthread_create F
>  GLIBC_2.18 __libpthread_version_placeholder F
> -GLIBC_2.28 thrd_create F
> +GLIBC_2.28 __libpthread_version_placeholder F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 __libpthread_version_placeholder F
> 

Ok.
diff mbox series

Patch

diff --git a/include/libc-internal.h b/include/libc-internal.h
index 5b18c7c9f2..749dfb919c 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -38,7 +38,11 @@  extern void __libc_freeres (void);
 libc_hidden_proto (__libc_freeres)
 
 /* Free resources stored in thread-local variables on thread exit.  */
-extern void __libc_thread_freeres (void);
+extern void __libc_thread_freeres (void)
+#if PTHREAD_IN_LIBC
+  attribute_hidden
+#endif
+  ;
 
 /* Define and initialize `__progname' et. al.  */
 extern void __init_misc (int, char **, char **) attribute_hidden;
diff --git a/nptl/Makefile b/nptl/Makefile
index bd5a9ce51f..7426997a83 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -109,6 +109,7 @@  routines = \
   pthread_condattr_init \
   pthread_condattr_setclock \
   pthread_condattr_setpshared \
+  pthread_create \
   pthread_detach \
   pthread_equal \
   pthread_exit \
@@ -211,7 +212,6 @@  libpthread-routines = \
   libpthread-compat \
   nptl-init \
   pt-interp \
-  pthread_create \
   version \
 
 libpthread-shared-only-routines = \
diff --git a/nptl/Versions b/nptl/Versions
index 845001847b..0db56bce29 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -38,6 +38,7 @@  libc {
     pthread_cond_wait;
     pthread_condattr_destroy;
     pthread_condattr_init;
+    pthread_create;
     pthread_detach;
     pthread_equal;
     pthread_exit;
@@ -80,6 +81,7 @@  libc {
     pthread_attr_setguardsize;
     pthread_attr_setstackaddr;
     pthread_attr_setstacksize;
+    pthread_create;
     pthread_getconcurrency;
     pthread_mutexattr_gettype;
     pthread_mutexattr_settype;
@@ -217,6 +219,7 @@  libc {
     mtx_trylock;
     mtx_unlock;
     thrd_current;
+    thrd_create;
     thrd_detach;
     thrd_equal;
     thrd_exit;
@@ -358,6 +361,7 @@  libc {
     sem_trywait;
     sem_unlink;
     sem_wait;
+    thrd_create;
     thrd_detach;
     thrd_exit;
     thrd_join;
@@ -409,8 +413,6 @@  libc {
     __pthread_enable_asynccancel;
     __pthread_force_elision;
     __pthread_get_minstack;
-    __pthread_getattr_default_np;
-    __pthread_getattr_default_np;
     __pthread_keys;
     __pthread_mutex_unlock_usercnt;
     __pthread_setcancelstate;
@@ -438,7 +440,7 @@  libpthread {
   }
 
   GLIBC_2.1 {
-    pthread_create;
+    __libpthread_version_placeholder;
   }
 
   GLIBC_2.1.1 {
@@ -495,9 +497,11 @@  libpthread {
   GLIBC_2.19 {
   }
 
-  # C11 thread symbols.
   GLIBC_2.28 {
-    thrd_create;
+    __libpthread_version_placeholder;
+  }
+
+  GLIBC_2.29 {
   }
 
   GLIBC_2.30 {
diff --git a/nptl/libpthread-compat.c b/nptl/libpthread-compat.c
index 7e3e7aa0c3..2dcf175f3f 100644
--- a/nptl/libpthread-compat.c
+++ b/nptl/libpthread-compat.c
@@ -28,14 +28,11 @@  __libpthread_version_placeholder_1 (void)
 }
 #endif
 
-/* This is an unused compatibility symbol definition, to prevent ld
-   from creating a weak version definition for GLIBC_2.1.2.  (__vfork
-   used to be defined at that version, but it is now provided by libc,
-   and there are no versions left in libpthread for that symbol
-   version.)  If the ABI baseline for glibc is the GLIBC_2.2 symbol
-   version or later, the placeholder symbol is not needed because
-   there are plenty of other symbols which populate those later
-   versions.  */
+#if (SHLIB_COMPAT (libpthread, GLIBC_2_1, GLIBC_2_2))
+compat_symbol (libpthread, __libpthread_version_placeholder_1,
+	       __libpthread_version_placeholder, GLIBC_2_1);
+#endif
+
 #if (SHLIB_COMPAT (libpthread, GLIBC_2_1_1, GLIBC_2_1_2))
 compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_1_1);
@@ -45,12 +42,8 @@  compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_1_2);
 #endif
 
-/* Do not create the placeholder symbol version if there are other
-   symbols left that keep the version around (because GLIBC_2.0 got
-   promoted to GLIBC_2.2).  */
 #if SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_2_3) \
-  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_0 \
-  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_1_3
+  && ABI_libpthread_GLIBC_2_2 != ABI_libpthread_GLIBC_2_0
 compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_2);
 #endif
@@ -101,6 +94,11 @@  compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_18);
 #endif
 
+#if (SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_29))
+compat_symbol (libpthread, __libpthread_version_placeholder_1,
+	       __libpthread_version_placeholder, GLIBC_2_28);
+#endif
+
 #if (SHLIB_COMPAT (libpthread, GLIBC_2_30, GLIBC_2_31))
 compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_30);
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 3151842891..05f2bae521 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -314,9 +314,10 @@  libc_hidden_proto (__pthread_cleanup_upto)
 
 
 /* Functions with versioned interfaces.  */
-extern int __pthread_create_2_1 (pthread_t *newthread,
-				 const pthread_attr_t *attr,
-				 void *(*start_routine) (void *), void *arg);
+extern int __pthread_create (pthread_t *newthread,
+			     const pthread_attr_t *attr,
+			     void *(*start_routine) (void *), void *arg);
+libc_hidden_proto (__pthread_create)
 extern int __pthread_create_2_0 (pthread_t *newthread,
 				 const pthread_attr_t *attr,
 				 void *(*start_routine) (void *), void *arg);
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 438b8a7ae1..5680687efe 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -762,10 +762,17 @@  __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr,
 
   return retval;
 }
-versioned_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1);
+versioned_symbol (libc, __pthread_create_2_1, pthread_create, GLIBC_2_34);
+libc_hidden_ver (__pthread_create_2_1, __pthread_create)
+#ifndef SHARED
+strong_alias (__pthread_create_2_1, __pthread_create)
+#endif
 
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1);
+#endif
 
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
 int
 __pthread_create_2_0 (pthread_t *newthread, const pthread_attr_t *attr,
 		      void *(*start_routine) (void *), void *arg)
diff --git a/nptl/pthread_getattr_default_np.c b/nptl/pthread_getattr_default_np.c
index f38f687431..ad10a27339 100644
--- a/nptl/pthread_getattr_default_np.c
+++ b/nptl/pthread_getattr_default_np.c
@@ -29,8 +29,10 @@  ___pthread_getattr_default_np (pthread_attr_t *out)
 }
 versioned_symbol (libc, ___pthread_getattr_default_np,
                   pthread_getattr_default_np, GLIBC_2_34);
-versioned_symbol (libc, ___pthread_getattr_default_np,
-                  __pthread_getattr_default_np, GLIBC_PRIVATE);
+libc_hidden_ver (___pthread_getattr_default_np, __pthread_getattr_default_np)
+#ifndef SHARED
+strong_alias (___pthread_getattr_default_np, __pthread_getattr_default_np)
+#endif
 
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_18, GLIBC_2_34)
 compat_symbol (libpthread, ___pthread_getattr_default_np,
diff --git a/nptl_db/Makefile b/nptl_db/Makefile
index 8873a0a0ee..ea721c1dcf 100644
--- a/nptl_db/Makefile
+++ b/nptl_db/Makefile
@@ -56,7 +56,7 @@  tests-special += $(objpfx)db-symbols.out
 include ../Rules
 
 $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
-			 $(common-objpfx)nptl/libpthread.so
+			 $(common-objpfx)libc.so
 	LC_ALL=C $(READELF) -W -s $(filter %.so,$^) | $(AWK) -f $< > $@; \
 	$(evaluate-test)
 
diff --git a/nptl_db/structs.def b/nptl_db/structs.def
index 71c9f7bfc2..6a726f207e 100644
--- a/nptl_db/structs.def
+++ b/nptl_db/structs.def
@@ -1,4 +1,4 @@ 
-/* List of types and symbols in libpthread examined by libthread_db.
+/* List of types and symbols in libc examined by libthread_db.
    Copyright (C) 2003-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -27,7 +27,7 @@ 
 #endif
 
 /* DB_MAIN_VARIABLE, DB_MAIN_SYMBOL, DB_MAIN_ARRAY_VARIABLE are not
-   covered by the libpthread symbol check in db-symbols.awk.  */
+   covered by the libc symbol check in db-symbols.awk.  */
 #ifndef DB_MAIN_VARIABLE
 # define DB_MAIN_VARIABLE(name) DB_VARIABLE (name)
 #endif
@@ -39,7 +39,7 @@ 
 #endif
 
 #ifndef DB_RTLD_GLOBAL_FIELD
-# if !IS_IN (libpthread)
+# if !IS_IN (libc)
 #  define DB_RTLD_GLOBAL_FIELD(field)		\
   DB_STRUCT_FIELD (rtld_global, _##field)	\
   DB_MAIN_VARIABLE (_##field)
@@ -103,11 +103,11 @@  DB_STRUCT_ARRAY_FIELD (dtv, dtv)
 #define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
 DB_STRUCT_FIELD (dtv_t, pointer_val)
 DB_STRUCT_FIELD (dtv_t, counter)
-#if !IS_IN (libpthread) || TLS_TCB_AT_TP
+#if !IS_IN (libc) || TLS_TCB_AT_TP
 DB_STRUCT_FIELD (pthread, dtvp)
 #endif
 
-#if !(IS_IN (libpthread) && !defined SHARED)
+#if !(IS_IN (libc) && !defined SHARED)
 DB_VARIABLE (__nptl_rtld_global)
 #endif
 DB_RTLD_GLOBAL_FIELD (dl_tls_dtv_slotinfo_list)
diff --git a/sysdeps/nptl/thrd_create.c b/sysdeps/nptl/thrd_create.c
deleted file mode 100644
index 596a7ba588..0000000000
--- a/sysdeps/nptl/thrd_create.c
+++ /dev/null
@@ -1,2 +0,0 @@ 
-#define __pthread_create __pthread_create_2_1
-#include <sysdeps/pthread/thrd_create.c>
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index b15d085f51..bca642f438 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -31,8 +31,6 @@  headers += threads.h
 
 routines += thrd_current thrd_equal thrd_sleep thrd_yield
 
-libpthread-routines += thrd_create
-
 $(libpthread-routines-var) += \
   call_once \
   cnd_broadcast \
@@ -47,6 +45,7 @@  $(libpthread-routines-var) += \
   mtx_timedlock \
   mtx_trylock \
   mtx_unlock \
+  thrd_create \
   thrd_detach \
   thrd_exit \
   thrd_join \
diff --git a/sysdeps/pthread/thrd_create.c b/sysdeps/pthread/thrd_create.c
index 07848c0aab..3cb9f1cefb 100644
--- a/sysdeps/pthread/thrd_create.c
+++ b/sysdeps/pthread/thrd_create.c
@@ -17,9 +17,10 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include "thrd_priv.h"
+#include <shlib-compat.h>
 
 int
-thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
+__thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
 {
   _Static_assert (sizeof (thrd_t) == sizeof (pthread_t),
 		  "sizeof (thrd_t) != sizeof (pthread_t)");
@@ -28,3 +29,11 @@  thrd_create (thrd_t *thr, thrd_start_t func, void *arg)
 				   (void* (*) (void*))func, arg);
   return thrd_err_map (err_code);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __thrd_create, thrd_create, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libc, __thrd_create, thrd_create, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__thrd_create, thrd_create)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index bc051ba9f5..d22c7da7ef 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1488,6 +1488,7 @@  GLIBC_2.17 pthread_condattr_getpshared F
 GLIBC_2.17 pthread_condattr_init F
 GLIBC_2.17 pthread_condattr_setclock F
 GLIBC_2.17 pthread_condattr_setpshared F
+GLIBC_2.17 pthread_create F
 GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_equal F
 GLIBC_2.17 pthread_exit F
@@ -2277,6 +2278,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2370,6 +2372,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2442,6 +2445,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 3c03fcc17b..14ada15a35 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.17 __errno_location F
-GLIBC_2.17 pthread_create F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 3bea473d00..cefff3bf36 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -898,6 +898,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1620,6 +1621,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2166,6 +2168,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2461,6 +2464,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2533,6 +2537,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index c8f065b787..47cbcf3baf 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -9,7 +8,7 @@  GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 3461527c5a..91a90f8ca4 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1429,6 +1429,7 @@  GLIBC_2.32 pthread_condattr_getpshared F
 GLIBC_2.32 pthread_condattr_init F
 GLIBC_2.32 pthread_condattr_setclock F
 GLIBC_2.32 pthread_condattr_setpshared F
+GLIBC_2.32 pthread_create F
 GLIBC_2.32 pthread_detach F
 GLIBC_2.32 pthread_equal F
 GLIBC_2.32 pthread_exit F
@@ -1889,6 +1890,7 @@  GLIBC_2.32 tempnam F
 GLIBC_2.32 textdomain F
 GLIBC_2.32 tfind F
 GLIBC_2.32 tgkill F
+GLIBC_2.32 thrd_create F
 GLIBC_2.32 thrd_current F
 GLIBC_2.32 thrd_detach F
 GLIBC_2.32 thrd_equal F
@@ -2129,6 +2131,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2201,6 +2204,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 1d363aa47f..c4264810e6 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -1,3 +1 @@ 
 GLIBC_2.32 __errno_location F
-GLIBC_2.32 pthread_create F
-GLIBC_2.32 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 7c3029a7e5..120288d766 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -140,6 +140,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -236,6 +237,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -308,6 +310,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
@@ -1740,6 +1743,7 @@  GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 0ad6524820..f8ebb4cae2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -1,9 +1,8 @@ 
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __errno_location F
 GLIBC_2.4 __libpthread_version_placeholder F
-GLIBC_2.4 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 24f5b202e8..be987da77e 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -140,6 +140,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -233,6 +234,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -305,6 +307,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
@@ -1737,6 +1740,7 @@  GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 0ad6524820..f8ebb4cae2 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -1,9 +1,8 @@ 
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __errno_location F
 GLIBC_2.4 __libpthread_version_placeholder F
-GLIBC_2.4 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 85851c5fca..adb4e15cb8 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1488,6 +1488,7 @@  GLIBC_2.29 pthread_condattr_getpshared F
 GLIBC_2.29 pthread_condattr_init F
 GLIBC_2.29 pthread_condattr_setclock F
 GLIBC_2.29 pthread_condattr_setpshared F
+GLIBC_2.29 pthread_create F
 GLIBC_2.29 pthread_detach F
 GLIBC_2.29 pthread_equal F
 GLIBC_2.29 pthread_exit F
@@ -1979,6 +1980,7 @@  GLIBC_2.29 telldir F
 GLIBC_2.29 tempnam F
 GLIBC_2.29 textdomain F
 GLIBC_2.29 tfind F
+GLIBC_2.29 thrd_create F
 GLIBC_2.29 thrd_current F
 GLIBC_2.29 thrd_detach F
 GLIBC_2.29 thrd_equal F
@@ -2313,6 +2315,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2385,6 +2388,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index d2f66f45ff..f7649b87b2 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -1,5 +1,3 @@ 
 GLIBC_2.29 __errno_location F
-GLIBC_2.29 pthread_create F
-GLIBC_2.29 thrd_create F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index ede69c7ed5..bd022276e8 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1312,6 +1312,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -1999,6 +2000,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2266,6 +2268,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2338,6 +2341,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cc941573b6..f1adf37ff2 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -2,10 +2,9 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c883dc08bc..9e37e1cb38 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -875,6 +875,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1588,6 +1589,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2179,6 +2181,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2449,6 +2452,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2521,6 +2525,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index c8f065b787..47cbcf3baf 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -9,7 +8,7 @@  GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 38fb02e32b..b8089b0b0c 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1333,6 +1333,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -2034,6 +2035,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2302,6 +2304,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2374,6 +2377,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index cc941573b6..f1adf37ff2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -2,10 +2,9 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 8ee9648828..093854ad85 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -141,6 +141,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -237,6 +238,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -309,6 +311,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
@@ -1720,6 +1723,7 @@  GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 0ad6524820..f8ebb4cae2 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -1,9 +1,8 @@ 
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __errno_location F
 GLIBC_2.4 __libpthread_version_placeholder F
-GLIBC_2.4 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 1c51cb41ec..87554f1468 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -874,6 +874,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1584,6 +1585,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2122,6 +2124,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2392,6 +2395,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2464,6 +2468,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index c8f065b787..47cbcf3baf 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -9,7 +8,7 @@  GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index f8b67cd170..e9340671c5 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1490,6 +1490,7 @@  GLIBC_2.18 pthread_condattr_getpshared F
 GLIBC_2.18 pthread_condattr_init F
 GLIBC_2.18 pthread_condattr_setclock F
 GLIBC_2.18 pthread_condattr_setpshared F
+GLIBC_2.18 pthread_create F
 GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_equal F
 GLIBC_2.18 pthread_exit F
@@ -2268,6 +2269,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2364,6 +2366,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2436,6 +2439,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 921e604dbe..c99c8b026c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -1,5 +1,4 @@ 
 GLIBC_2.18 __errno_location F
-GLIBC_2.18 pthread_create F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index edac4a1bb4..6ddc0e90cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1490,6 +1490,7 @@  GLIBC_2.18 pthread_condattr_getpshared F
 GLIBC_2.18 pthread_condattr_init F
 GLIBC_2.18 pthread_condattr_setclock F
 GLIBC_2.18 pthread_condattr_setpshared F
+GLIBC_2.18 pthread_create F
 GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_equal F
 GLIBC_2.18 pthread_exit F
@@ -2268,6 +2269,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2361,6 +2363,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2433,6 +2436,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 921e604dbe..c99c8b026c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -1,5 +1,4 @@ 
 GLIBC_2.18 __errno_location F
-GLIBC_2.18 pthread_create F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index db900c89ab..8582c9c371 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -871,6 +871,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1869,6 +1870,7 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_mutex_timedlock F
@@ -2092,6 +2094,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2357,6 +2360,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2429,6 +2433,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index a5f3d5ce2a..2d0b9e3542 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -1,12 +1,11 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.2 pthread_create F
+GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 4e15f48b6c..b0849bec98 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -871,6 +871,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1867,6 +1868,7 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_mutex_timedlock F
@@ -2090,6 +2092,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2355,6 +2358,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2427,6 +2431,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index a5f3d5ce2a..2d0b9e3542 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -1,12 +1,11 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.2 pthread_create F
+GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 616a6076f1..386660a5a1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -871,6 +871,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1867,6 +1868,7 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_mutex_timedlock F
@@ -2098,6 +2100,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2363,6 +2366,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2435,6 +2439,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 59a353d306..4d05128f21 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -869,6 +869,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1863,6 +1864,7 @@  GLIBC_2.2 pthread_barrierattr_init F
 GLIBC_2.2 pthread_barrierattr_setpshared F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_mutex_timedlock F
@@ -2093,6 +2095,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2357,6 +2360,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2429,6 +2433,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 0fc42897aa..bd305f440f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1533,6 +1533,7 @@  GLIBC_2.21 pthread_condattr_getpshared F
 GLIBC_2.21 pthread_condattr_init F
 GLIBC_2.21 pthread_condattr_setclock F
 GLIBC_2.21 pthread_condattr_setpshared F
+GLIBC_2.21 pthread_create F
 GLIBC_2.21 pthread_detach F
 GLIBC_2.21 pthread_equal F
 GLIBC_2.21 pthread_exit F
@@ -2310,6 +2311,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2403,6 +2405,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2475,6 +2478,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index f36733746e..4d8ff6a262 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -1,5 +1,4 @@ 
 GLIBC_2.21 __errno_location F
-GLIBC_2.21 pthread_create F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 553ecdabc9..c2665624aa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -882,6 +882,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1592,6 +1593,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2126,6 +2128,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2419,6 +2422,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2491,6 +2495,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 84a1592904..e545bcc56c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -9,7 +8,7 @@  GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 7ec438f7b4..13ef6ef39e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -882,6 +882,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1592,6 +1593,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2130,6 +2132,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2452,6 +2455,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2524,6 +2528,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index f382e3e296..b21072e313 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -140,6 +140,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -1437,6 +1438,7 @@  GLIBC_2.3 pthread_condattr_destroy F
 GLIBC_2.3 pthread_condattr_getpshared F
 GLIBC_2.3 pthread_condattr_init F
 GLIBC_2.3 pthread_condattr_setpshared F
+GLIBC_2.3 pthread_create F
 GLIBC_2.3 pthread_detach F
 GLIBC_2.3 pthread_equal F
 GLIBC_2.3 pthread_exit F
@@ -2267,6 +2269,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2339,6 +2342,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index b66279a352..e10c836946 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -1,9 +1,8 @@ 
 GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3 __errno_location F
-GLIBC_2.3 pthread_create F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 97ff951418..62af65536c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1576,6 +1576,7 @@  GLIBC_2.17 pthread_condattr_getpshared F
 GLIBC_2.17 pthread_condattr_init F
 GLIBC_2.17 pthread_condattr_setclock F
 GLIBC_2.17 pthread_condattr_setpshared F
+GLIBC_2.17 pthread_create F
 GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_equal F
 GLIBC_2.17 pthread_exit F
@@ -2367,6 +2368,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2566,6 +2568,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2638,6 +2641,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 3c03fcc17b..14ada15a35 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.17 __errno_location F
-GLIBC_2.17 pthread_create F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 5bde5bb508..a63aec3379 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1431,6 +1431,7 @@  GLIBC_2.33 pthread_condattr_getpshared F
 GLIBC_2.33 pthread_condattr_init F
 GLIBC_2.33 pthread_condattr_setclock F
 GLIBC_2.33 pthread_condattr_setpshared F
+GLIBC_2.33 pthread_create F
 GLIBC_2.33 pthread_detach F
 GLIBC_2.33 pthread_equal F
 GLIBC_2.33 pthread_exit F
@@ -1899,6 +1900,7 @@  GLIBC_2.33 tempnam F
 GLIBC_2.33 textdomain F
 GLIBC_2.33 tfind F
 GLIBC_2.33 tgkill F
+GLIBC_2.33 thrd_create F
 GLIBC_2.33 thrd_current F
 GLIBC_2.33 thrd_detach F
 GLIBC_2.33 thrd_equal F
@@ -2131,6 +2133,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2203,6 +2206,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index e9cded0b3c..73188776b6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -1,3 +1 @@ 
 GLIBC_2.33 __errno_location F
-GLIBC_2.33 pthread_create F
-GLIBC_2.33 thrd_create F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 42f6d52e13..b52efaf5ee 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1478,6 +1478,7 @@  GLIBC_2.27 pthread_condattr_getpshared F
 GLIBC_2.27 pthread_condattr_init F
 GLIBC_2.27 pthread_condattr_setclock F
 GLIBC_2.27 pthread_condattr_setpshared F
+GLIBC_2.27 pthread_create F
 GLIBC_2.27 pthread_detach F
 GLIBC_2.27 pthread_equal F
 GLIBC_2.27 pthread_exit F
@@ -2238,6 +2239,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2331,6 +2333,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2403,6 +2406,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 07a3c7f01d..35a6a20935 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -1,5 +1,4 @@ 
 GLIBC_2.27 __errno_location F
-GLIBC_2.27 pthread_create F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 2274342208..b699dedcc1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -873,6 +873,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1584,6 +1585,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2135,6 +2137,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2417,6 +2420,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2489,6 +2493,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index faae6bcf76..ac212e942a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -10,7 +9,7 @@  GLIBC_2.19 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 14d1c5e7f8..94209858b1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1330,6 +1330,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -2026,6 +2027,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2304,6 +2306,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2376,6 +2379,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index ac3a2834dc..e0feab34d5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -3,10 +3,9 @@  GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.19 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 97942ff01a..0fab90e1e3 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1316,6 +1316,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -2003,6 +2004,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2273,6 +2275,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2345,6 +2348,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cc941573b6..f1adf37ff2 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -2,10 +2,9 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 617b673620..2f3a64b580 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1316,6 +1316,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -2003,6 +2004,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2270,6 +2272,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2342,6 +2345,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cc941573b6..f1adf37ff2 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -2,10 +2,9 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 3c6559bb4f..e6fe453f50 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -876,6 +876,7 @@  GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
@@ -1585,6 +1586,7 @@  GLIBC_2.1 pthread_attr_init F
 GLIBC_2.1 pthread_attr_setguardsize F
 GLIBC_2.1 pthread_attr_setstackaddr F
 GLIBC_2.1 pthread_attr_setstacksize F
+GLIBC_2.1 pthread_create F
 GLIBC_2.1 pthread_getconcurrency F
 GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
@@ -2129,6 +2131,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2410,6 +2413,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2482,6 +2486,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index c8f065b787..47cbcf3baf 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.0 __errno_location F
-GLIBC_2.0 pthread_create F
-GLIBC_2.1 pthread_create F
+GLIBC_2.1 __libpthread_version_placeholder F
 GLIBC_2.1.1 __libpthread_version_placeholder F
 GLIBC_2.1.2 __libpthread_version_placeholder F
 GLIBC_2.11 __libpthread_version_placeholder F
@@ -9,7 +8,7 @@  GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __libpthread_version_placeholder F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 77f54bb23b..4327cf5eb3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1359,6 +1359,7 @@  GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
@@ -2056,6 +2057,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2323,6 +2325,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2395,6 +2398,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index cc941573b6..f1adf37ff2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -2,10 +2,9 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2 __errno_location F
-GLIBC_2.2 pthread_create F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 4035841a1e..318a6d50f9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1326,6 +1326,7 @@  GLIBC_2.2.5 pthread_condattr_destroy F
 GLIBC_2.2.5 pthread_condattr_getpshared F
 GLIBC_2.2.5 pthread_condattr_init F
 GLIBC_2.2.5 pthread_condattr_setpshared F
+GLIBC_2.2.5 pthread_create F
 GLIBC_2.2.5 pthread_detach F
 GLIBC_2.2.5 pthread_equal F
 GLIBC_2.2.5 pthread_exit F
@@ -2015,6 +2016,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2282,6 +2284,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2354,6 +2357,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index d3abfb7d11..ec4e3c0ecd 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -2,9 +2,8 @@  GLIBC_2.11 __libpthread_version_placeholder F
 GLIBC_2.12 __libpthread_version_placeholder F
 GLIBC_2.18 __libpthread_version_placeholder F
 GLIBC_2.2.5 __errno_location F
-GLIBC_2.2.5 pthread_create F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __libpthread_version_placeholder F
 GLIBC_2.3.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 61ac187db9..0bcf898d4d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1495,6 +1495,7 @@  GLIBC_2.16 pthread_condattr_getpshared F
 GLIBC_2.16 pthread_condattr_init F
 GLIBC_2.16 pthread_condattr_setclock F
 GLIBC_2.16 pthread_condattr_setpshared F
+GLIBC_2.16 pthread_create F
 GLIBC_2.16 pthread_detach F
 GLIBC_2.16 pthread_equal F
 GLIBC_2.16 pthread_exit F
@@ -2290,6 +2291,7 @@  GLIBC_2.28 mtx_trylock F
 GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
+GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
@@ -2385,6 +2387,7 @@  GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_create F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getattr_default_np F
 GLIBC_2.34 pthread_getconcurrency F
@@ -2457,6 +2460,7 @@  GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index af42dea518..cc6e073a11 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.16 __errno_location F
-GLIBC_2.16 pthread_create F
 GLIBC_2.18 __libpthread_version_placeholder F
-GLIBC_2.28 thrd_create F
+GLIBC_2.28 __libpthread_version_placeholder F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 __libpthread_version_placeholder F