[v3,24/37] nptl: Move pthread_key_create, __pthread_key_create into libc

Message ID a7b53d331d3a15094a313d5f83ce0c853205ae54.1615914632.git.fweimer@redhat.com
State Superseded
Delegated to: Adhemerval Zanella Netto
Headers
Series libpthread removal: NPTL forwarders are gone |

Commit Message

Florian Weimer March 16, 2021, 5:30 p.m. UTC
  The symbols have been moved using scripts/move-symbol-to-libc.py.
---
 nptl/Makefile                                 |  2 +-
 nptl/Versions                                 |  6 ++++--
 nptl/nptl-init.c                              |  1 -
 nptl/pthreadP.h                               |  1 -
 nptl/pthread_key_create.c                     | 21 +++++++++++++++----
 sysdeps/nptl/libc-lockP.h                     |  2 --
 sysdeps/nptl/pthread-functions.h              |  1 -
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
 .../sysv/linux/aarch64/libpthread.abilist     |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++++
 .../unix/sysv/linux/alpha/libpthread.abilist  |  2 --
 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 |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  2 --
 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   |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++++
 .../unix/sysv/linux/i386/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
 .../unix/sysv/linux/ia64/libpthread.abilist   |  2 --
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
 .../linux/m68k/coldfire/libpthread.abilist    |  2 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  2 --
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
 .../linux/microblaze/be/libpthread.abilist    |  2 --
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
 .../linux/microblaze/le/libpthread.abilist    |  2 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
 .../sysv/linux/mips/mips32/libpthread.abilist |  2 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
 .../sysv/linux/mips/mips64/libpthread.abilist |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  2 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
 .../powerpc/powerpc32/libpthread.abilist      |  2 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
 .../powerpc/powerpc64/be/libpthread.abilist   |  2 --
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
 .../powerpc/powerpc64/le/libpthread.abilist   |  2 --
 .../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  |  2 --
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
 .../linux/s390/s390-32/libpthread.abilist     |  2 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
 .../linux/s390/s390-64/libpthread.abilist     |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  2 --
 .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++++
 .../linux/sparc/sparc32/libpthread.abilist    |  2 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
 .../linux/sparc/sparc64/libpthread.abilist    |  2 --
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
 .../sysv/linux/x86_64/64/libpthread.abilist   |  2 --
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  2 --
 68 files changed, 150 insertions(+), 70 deletions(-)
  

Comments

Adhemerval Zanella March 24, 2021, 2:09 p.m. UTC | #1
On 16/03/2021 14:30, Florian Weimer via Libc-alpha wrote:
> The symbols have been moved using scripts/move-symbol-to-libc.py.

LGTM in general, some comments below.

> ---
>  nptl/Makefile                                 |  2 +-
>  nptl/Versions                                 |  6 ++++--
>  nptl/nptl-init.c                              |  1 -
>  nptl/pthreadP.h                               |  1 -
>  nptl/pthread_key_create.c                     | 21 +++++++++++++++----
>  sysdeps/nptl/libc-lockP.h                     |  2 --
>  sysdeps/nptl/pthread-functions.h              |  1 -
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
>  .../sysv/linux/aarch64/libpthread.abilist     |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  2 --
>  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 |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  2 --
>  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   |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  2 --
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
>  .../linux/m68k/coldfire/libpthread.abilist    |  2 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  2 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
>  .../linux/microblaze/be/libpthread.abilist    |  2 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
>  .../linux/microblaze/le/libpthread.abilist    |  2 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  2 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  2 --
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  2 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
>  .../powerpc/powerpc32/libpthread.abilist      |  2 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  2 --
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  2 --
>  .../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  |  2 --
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
>  .../linux/s390/s390-32/libpthread.abilist     |  2 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
>  .../linux/s390/s390-64/libpthread.abilist     |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  2 --
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++++
>  .../linux/sparc/sparc32/libpthread.abilist    |  2 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
>  .../linux/sparc/sparc64/libpthread.abilist    |  2 --
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  2 --
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  2 --
>  68 files changed, 150 insertions(+), 70 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 098c31115f..4255953fad 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -78,6 +78,7 @@ routines = \
>    pthread_getaffinity \
>    pthread_getattr_np \
>    pthread_getschedparam \
> +  pthread_key_create \
>    pthread_keys \
>    pthread_mutex_consistent \
>    pthread_once \
> @@ -160,7 +161,6 @@ libpthread-routines = \
>    pthread_getspecific \
>    pthread_join \
>    pthread_join_common \
> -  pthread_key_create \
>    pthread_key_delete \
>    pthread_kill \
>    pthread_kill_other_threads \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index c50a5442af..d44958f5b6 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -1,5 +1,6 @@
>  libc {
>    GLIBC_2.0 {
> +    __pthread_key_create;
>      __pthread_once;
>      _pthread_cleanup_pop;
>      _pthread_cleanup_pop_restore;
> @@ -28,6 +29,7 @@ libc {
>      pthread_equal;
>      pthread_exit;
>      pthread_getschedparam;
> +    pthread_key_create;
>      pthread_mutex_destroy;
>      pthread_mutex_init;
>      pthread_mutex_lock;
> @@ -86,7 +88,9 @@ libc {
>    }
>    GLIBC_2.34 {
>      __pthread_cleanup_routine;
> +    __pthread_key_create;
>      __pthread_once;
> +    pthread_key_create;
>      pthread_mutex_consistent;
>      pthread_once;
>    }

Why do we need a __pthread_key_create for 2.34?  

> @@ -143,7 +147,6 @@ libpthread {
>      __open;
>      __pthread_atfork;
>      __pthread_getspecific;
> -    __pthread_key_create;
>      __pthread_mutex_destroy;
>      __pthread_mutex_init;
>      __pthread_mutex_lock;
> @@ -180,7 +183,6 @@ libpthread {
>      pthread_detach;
>      pthread_getspecific;
>      pthread_join;
> -    pthread_key_create;
>      pthread_key_delete;
>      pthread_kill;
>      pthread_kill_other_threads_np;

Ok.

> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index 5913bf7272..b1a8b1a95b 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -70,7 +70,6 @@ static const struct pthread_functions pthread_functions =
>      .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
>      .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
>      .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
> -    .ptr___pthread_key_create = __pthread_key_create,
>      .ptr___pthread_getspecific = __pthread_getspecific,
>      .ptr___pthread_setspecific = __pthread_setspecific,
>      .ptr__nptl_setxid = __nptl_setxid,

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 68f8ef5aa1..38aeed1dfc 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -553,7 +553,6 @@ hidden_proto (__pthread_mutex_unlock)
>  hidden_proto (__pthread_rwlock_rdlock)
>  hidden_proto (__pthread_rwlock_wrlock)
>  hidden_proto (__pthread_rwlock_unlock)
> -hidden_proto (__pthread_key_create)
>  hidden_proto (__pthread_getspecific)
>  hidden_proto (__pthread_setspecific)
>  hidden_proto (__pthread_testcancel)

Ok.

> diff --git a/nptl/pthread_key_create.c b/nptl/pthread_key_create.c
> index 5b725c56e2..5b3726e9f3 100644
> --- a/nptl/pthread_key_create.c
> +++ b/nptl/pthread_key_create.c
> @@ -19,10 +19,10 @@
>  #include <errno.h>
>  #include "pthreadP.h"
>  #include <atomic.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -__pthread_key_create (pthread_key_t *key, void (*destr) (void *))
> +__pthread_key_create_1 (pthread_key_t *key, void (*destr) (void *))
>  {
>    /* Find a slot in __pthread_keys which is unused.  */
>    for (size_t cnt = 0; cnt < PTHREAD_KEYS_MAX; ++cnt)
> @@ -47,5 +47,18 @@ __pthread_key_create (pthread_key_t *key, void (*destr) (void *))
>  
>    return EAGAIN;
>  }
> -weak_alias (__pthread_key_create, pthread_key_create)
> -hidden_def (__pthread_key_create)
> +versioned_symbol (libc, __pthread_key_create_1, __pthread_key_create,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_key_create_1, __pthread_key_create)
> +
> +/* Several aliases for setting different symbol versions.  */
> +strong_alias (__pthread_key_create_1, __pthread_key_create_2)
> +strong_alias (__pthread_key_create_1, __pthread_key_create_3)
> +strong_alias (__pthread_key_create_1, __pthread_key_create_4)
> +
> +versioned_symbol (libc, __pthread_key_create_2, pthread_key_create,
> +		  GLIBC_2_34);
> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libc, __pthread_key_create_3, __pthread_key_create, GLIBC_2_0);
> +compat_symbol (libc, __pthread_key_create_4, pthread_key_create, GLIBC_2_0);
> +#endif

I think you might want to revise it once compat_symbol has support
for multiple targets.

> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index d032463dd0..64c7a99bbf 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -338,7 +338,6 @@ weak_extern (__pthread_rwlock_tryrdlock)
>  weak_extern (__pthread_rwlock_wrlock)
>  weak_extern (__pthread_rwlock_trywrlock)
>  weak_extern (__pthread_rwlock_unlock)
> -weak_extern (__pthread_key_create)
>  weak_extern (__pthread_setspecific)
>  weak_extern (__pthread_getspecific)
>  weak_extern (__pthread_initialize)
> @@ -358,7 +357,6 @@ weak_extern (__pthread_atfork)
>  #  pragma weak __pthread_rwlock_wrlock
>  #  pragma weak __pthread_rwlock_trywrlock
>  #  pragma weak __pthread_rwlock_unlock
> -#  pragma weak __pthread_key_create
>  #  pragma weak __pthread_setspecific
>  #  pragma weak __pthread_getspecific
>  #  pragma weak __pthread_initialize

Ok.

> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 844838cd49..69ba1d8278 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -49,7 +49,6 @@ struct pthread_functions
>    int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
>    int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
>    int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
> -  int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
>    void *(*ptr___pthread_getspecific) (pthread_key_t);
>    int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
>    int (*ptr__nptl_setxid) (struct xid_command *);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index a4eec97fd0..edd8ff4e1a 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -339,6 +339,7 @@ GLIBC_2.17 __profile_frequency F
>  GLIBC_2.17 __progname D 0x8
>  GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
> +GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_once F
>  GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
> @@ -1449,6 +1450,7 @@ GLIBC_2.17 pthread_exit F
>  GLIBC_2.17 pthread_getaffinity_np F
>  GLIBC_2.17 pthread_getattr_np F
>  GLIBC_2.17 pthread_getschedparam F
> +GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_mutex_consistent F
>  GLIBC_2.17 pthread_mutex_consistent_np F
>  GLIBC_2.17 pthread_mutex_destroy F
> @@ -2183,7 +2185,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 47c5564772..620915eca6 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.17 __open F
>  GLIBC_2.17 __open64 F
>  GLIBC_2.17 __pread64 F
>  GLIBC_2.17 __pthread_getspecific F
> -GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_mutex_destroy F
>  GLIBC_2.17 __pthread_mutex_init F
>  GLIBC_2.17 __pthread_mutex_lock F
> @@ -89,7 +88,6 @@ GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
>  GLIBC_2.17 pthread_getspecific F
>  GLIBC_2.17 pthread_join F
> -GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_key_delete F
>  GLIBC_2.17 pthread_kill F
>  GLIBC_2.17 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index cfd43859bc..ad921167a2 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -188,6 +188,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x8
>  GLIBC_2.0 __progname_full D 0x8
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x8
>  GLIBC_2.0 __read F
> @@ -888,6 +889,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2264,8 +2266,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 1d834d6d54..85a6f26e5d 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index f4a38131a0..2bdf0fffdb 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -328,6 +328,7 @@ GLIBC_2.32 __profile_frequency F
>  GLIBC_2.32 __progname D 0x4
>  GLIBC_2.32 __progname_full D 0x4
>  GLIBC_2.32 __pthread_cleanup_routine F
> +GLIBC_2.32 __pthread_key_create F
>  GLIBC_2.32 __pthread_once F
>  GLIBC_2.32 __pthread_unwind_next F
>  GLIBC_2.32 __ptsname_r_chk F
> @@ -1376,6 +1377,7 @@ GLIBC_2.32 pthread_exit F
>  GLIBC_2.32 pthread_getaffinity_np F
>  GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_getschedparam F
> +GLIBC_2.32 pthread_key_create F
>  GLIBC_2.32 pthread_mutex_consistent F
>  GLIBC_2.32 pthread_mutex_consistent_np F
>  GLIBC_2.32 pthread_mutex_destroy F
> @@ -1943,7 +1945,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 3c1054101c..d79ba9adbf 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.32 __open F
>  GLIBC_2.32 __open64 F
>  GLIBC_2.32 __pread64 F
>  GLIBC_2.32 __pthread_getspecific F
> -GLIBC_2.32 __pthread_key_create F
>  GLIBC_2.32 __pthread_mutex_destroy F
>  GLIBC_2.32 __pthread_mutex_init F
>  GLIBC_2.32 __pthread_mutex_lock F
> @@ -103,7 +102,6 @@ GLIBC_2.32 pthread_getcpuclockid F
>  GLIBC_2.32 pthread_getname_np F
>  GLIBC_2.32 pthread_getspecific F
>  GLIBC_2.32 pthread_join F
> -GLIBC_2.32 pthread_key_create F
>  GLIBC_2.32 pthread_key_delete F
>  GLIBC_2.32 pthread_kill F
>  GLIBC_2.32 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 9e6b989de2..451c02d687 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -158,8 +158,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -490,6 +492,7 @@ GLIBC_2.4 __profile_frequency F
>  GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
> +GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1548,6 +1551,7 @@ GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index c2892c4b8d..d00e0e9258 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -48,7 +48,6 @@ GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
>  GLIBC_2.4 __pthread_getspecific F
> -GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_mutex_destroy F
>  GLIBC_2.4 __pthread_mutex_init F
>  GLIBC_2.4 __pthread_mutex_lock F
> @@ -122,7 +121,6 @@ GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_getspecific F
>  GLIBC_2.4 pthread_join F
> -GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 319cf8474a..873d6c3f22 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -155,8 +155,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -487,6 +489,7 @@ GLIBC_2.4 __profile_frequency F
>  GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
> +GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1545,6 +1548,7 @@ GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index c2892c4b8d..d00e0e9258 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -48,7 +48,6 @@ GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
>  GLIBC_2.4 __pthread_getspecific F
> -GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_mutex_destroy F
>  GLIBC_2.4 __pthread_mutex_init F
>  GLIBC_2.4 __pthread_mutex_lock F
> @@ -122,7 +121,6 @@ GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_getspecific F
>  GLIBC_2.4 pthread_join F
> -GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index a9094c6575..d9149b68cc 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -332,6 +332,7 @@ GLIBC_2.29 __profile_frequency F
>  GLIBC_2.29 __progname D 0x4
>  GLIBC_2.29 __progname_full D 0x4
>  GLIBC_2.29 __pthread_cleanup_routine F
> +GLIBC_2.29 __pthread_key_create F
>  GLIBC_2.29 __pthread_once F
>  GLIBC_2.29 __pthread_unwind_next F
>  GLIBC_2.29 __ptsname_r_chk F
> @@ -1437,6 +1438,7 @@ GLIBC_2.29 pthread_exit F
>  GLIBC_2.29 pthread_getaffinity_np F
>  GLIBC_2.29 pthread_getattr_np F
>  GLIBC_2.29 pthread_getschedparam F
> +GLIBC_2.29 pthread_key_create F
>  GLIBC_2.29 pthread_mutex_consistent F
>  GLIBC_2.29 pthread_mutex_consistent_np F
>  GLIBC_2.29 pthread_mutex_destroy F
> @@ -2127,7 +2129,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 2d125f11a3..e3721d98e6 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.29 __open F
>  GLIBC_2.29 __open64 F
>  GLIBC_2.29 __pread64 F
>  GLIBC_2.29 __pthread_getspecific F
> -GLIBC_2.29 __pthread_key_create F
>  GLIBC_2.29 __pthread_mutex_destroy F
>  GLIBC_2.29 __pthread_mutex_init F
>  GLIBC_2.29 __pthread_mutex_lock F
> @@ -101,7 +100,6 @@ GLIBC_2.29 pthread_getcpuclockid F
>  GLIBC_2.29 pthread_getname_np F
>  GLIBC_2.29 pthread_getspecific F
>  GLIBC_2.29 pthread_join F
> -GLIBC_2.29 pthread_key_create F
>  GLIBC_2.29 pthread_key_delete F
>  GLIBC_2.29 pthread_kill F
>  GLIBC_2.29 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 63e458dc99..938fa14288 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -356,6 +356,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1272,6 +1273,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2085,8 +2087,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 11fa4711d8..bf871d121b 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 428ff25c25..425d1df5a3 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -865,6 +866,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2252,8 +2254,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 1d84eb35fb..b186b3039b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 3556b0eac4..c34b5a157d 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -360,6 +360,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1293,6 +1294,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2117,8 +2119,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 88e178b1c3..b49b6ef57a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 245ae8da1f..56d55caed9 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -159,8 +159,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -476,6 +478,7 @@ GLIBC_2.4 __profile_frequency F
>  GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
> +GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1528,6 +1531,7 @@ GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_destroy F
>  GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index c2892c4b8d..d00e0e9258 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -48,7 +48,6 @@ GLIBC_2.4 __open F
>  GLIBC_2.4 __open64 F
>  GLIBC_2.4 __pread64 F
>  GLIBC_2.4 __pthread_getspecific F
> -GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_mutex_destroy F
>  GLIBC_2.4 __pthread_mutex_init F
>  GLIBC_2.4 __pthread_mutex_lock F
> @@ -122,7 +121,6 @@ GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_getspecific F
>  GLIBC_2.4 pthread_join F
> -GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
>  GLIBC_2.4 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index fba3ac0138..a3b3bf4f74 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -864,6 +865,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2197,8 +2199,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 1d84eb35fb..b186b3039b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 6a6d813b2c..75213c08d4 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -340,6 +340,7 @@ GLIBC_2.18 __profile_frequency F
>  GLIBC_2.18 __progname D 0x4
>  GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
> +GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_once F
>  GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
> @@ -1452,6 +1453,7 @@ GLIBC_2.18 pthread_exit F
>  GLIBC_2.18 pthread_getaffinity_np F
>  GLIBC_2.18 pthread_getattr_np F
>  GLIBC_2.18 pthread_getschedparam F
> +GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_mutex_consistent F
>  GLIBC_2.18 pthread_mutex_consistent_np F
>  GLIBC_2.18 pthread_mutex_destroy F
> @@ -2178,7 +2180,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index b19c648328..ca115fe783 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.18 __open F
>  GLIBC_2.18 __open64 F
>  GLIBC_2.18 __pread64 F
>  GLIBC_2.18 __pthread_getspecific F
> -GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_mutex_destroy F
>  GLIBC_2.18 __pthread_mutex_init F
>  GLIBC_2.18 __pthread_mutex_lock F
> @@ -90,7 +89,6 @@ GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_getspecific F
>  GLIBC_2.18 pthread_join F
> -GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_key_delete F
>  GLIBC_2.18 pthread_kill F
>  GLIBC_2.18 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 7138bb3fe7..014d53f893 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -340,6 +340,7 @@ GLIBC_2.18 __profile_frequency F
>  GLIBC_2.18 __progname D 0x4
>  GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
> +GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_once F
>  GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
> @@ -1452,6 +1453,7 @@ GLIBC_2.18 pthread_exit F
>  GLIBC_2.18 pthread_getaffinity_np F
>  GLIBC_2.18 pthread_getattr_np F
>  GLIBC_2.18 pthread_getschedparam F
> +GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_mutex_consistent F
>  GLIBC_2.18 pthread_mutex_consistent_np F
>  GLIBC_2.18 pthread_mutex_destroy F
> @@ -2175,7 +2177,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index b19c648328..ca115fe783 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.18 __open F
>  GLIBC_2.18 __open64 F
>  GLIBC_2.18 __pread64 F
>  GLIBC_2.18 __pthread_getspecific F
> -GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_mutex_destroy F
>  GLIBC_2.18 __pthread_mutex_init F
>  GLIBC_2.18 __pthread_mutex_lock F
> @@ -90,7 +89,6 @@ GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_getspecific F
>  GLIBC_2.18 pthread_join F
> -GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_key_delete F
>  GLIBC_2.18 pthread_kill F
>  GLIBC_2.18 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index d070746259..46c7716ee6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -861,6 +862,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2168,8 +2170,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 0d7d23b8f3..2b830751c8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index d40d0079fc..5666362839 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -861,6 +862,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2166,8 +2168,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 0d7d23b8f3..2b830751c8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index d56b5a25cb..97866f80c7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -861,6 +862,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2174,8 +2176,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index d334efb37c..3d9321f9e0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x8
>  GLIBC_2.0 __progname_full D 0x8
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x8
>  GLIBC_2.0 __read F
> @@ -859,6 +860,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2168,8 +2170,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 4422b5ca92..3a0c0c5d8a 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -377,6 +377,7 @@ GLIBC_2.21 __profile_frequency F
>  GLIBC_2.21 __progname D 0x4
>  GLIBC_2.21 __progname_full D 0x4
>  GLIBC_2.21 __pthread_cleanup_routine F
> +GLIBC_2.21 __pthread_key_create F
>  GLIBC_2.21 __pthread_once F
>  GLIBC_2.21 __pthread_unwind_next F
>  GLIBC_2.21 __ptsname_r_chk F
> @@ -1494,6 +1495,7 @@ GLIBC_2.21 pthread_exit F
>  GLIBC_2.21 pthread_getaffinity_np F
>  GLIBC_2.21 pthread_getattr_np F
>  GLIBC_2.21 pthread_getschedparam F
> +GLIBC_2.21 pthread_key_create F
>  GLIBC_2.21 pthread_mutex_consistent F
>  GLIBC_2.21 pthread_mutex_consistent_np F
>  GLIBC_2.21 pthread_mutex_destroy F
> @@ -2216,7 +2218,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 34c81eb8db..06500b1865 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.21 __open F
>  GLIBC_2.21 __open64 F
>  GLIBC_2.21 __pread64 F
>  GLIBC_2.21 __pthread_getspecific F
> -GLIBC_2.21 __pthread_key_create F
>  GLIBC_2.21 __pthread_mutex_destroy F
>  GLIBC_2.21 __pthread_mutex_init F
>  GLIBC_2.21 __pthread_mutex_lock F
> @@ -90,7 +89,6 @@ GLIBC_2.21 pthread_getcpuclockid F
>  GLIBC_2.21 pthread_getname_np F
>  GLIBC_2.21 pthread_getspecific F
>  GLIBC_2.21 pthread_join F
> -GLIBC_2.21 pthread_key_create F
>  GLIBC_2.21 pthread_key_delete F
>  GLIBC_2.21 pthread_kill F
>  GLIBC_2.21 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 8bd6dd5b48..c01a200e83 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -194,6 +194,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -872,6 +873,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2224,8 +2226,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 9ef23ed6d6..d36522b751 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 6bf7342f4c..3eced88f9f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -194,6 +194,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -872,6 +873,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2257,8 +2259,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 2d616e24cd..35b689a767 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -409,6 +409,7 @@ GLIBC_2.3 __printf_fp F
>  GLIBC_2.3 __profile_frequency F
>  GLIBC_2.3 __progname D 0x8
>  GLIBC_2.3 __progname_full D 0x8
> +GLIBC_2.3 __pthread_key_create F
>  GLIBC_2.3 __pthread_once F
>  GLIBC_2.3 __pwrite64 F
>  GLIBC_2.3 __rawmemchr F
> @@ -1379,6 +1380,7 @@ GLIBC_2.3 pthread_equal F
>  GLIBC_2.3 pthread_exit F
>  GLIBC_2.3 pthread_getattr_np F
>  GLIBC_2.3 pthread_getschedparam F
> +GLIBC_2.3 pthread_key_create F
>  GLIBC_2.3 pthread_mutex_destroy F
>  GLIBC_2.3 pthread_mutex_init F
>  GLIBC_2.3 pthread_mutex_lock F
> @@ -2087,8 +2089,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 5474d3eb4d..2d24956efe 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -42,7 +42,6 @@ GLIBC_2.3 __open F
>  GLIBC_2.3 __open64 F
>  GLIBC_2.3 __pread64 F
>  GLIBC_2.3 __pthread_getspecific F
> -GLIBC_2.3 __pthread_key_create F
>  GLIBC_2.3 __pthread_mutex_destroy F
>  GLIBC_2.3 __pthread_mutex_init F
>  GLIBC_2.3 __pthread_mutex_lock F
> @@ -108,7 +107,6 @@ GLIBC_2.3 pthread_getconcurrency F
>  GLIBC_2.3 pthread_getcpuclockid F
>  GLIBC_2.3 pthread_getspecific F
>  GLIBC_2.3 pthread_join F
> -GLIBC_2.3 pthread_key_create F
>  GLIBC_2.3 pthread_key_delete F
>  GLIBC_2.3 pthread_kill F
>  GLIBC_2.3 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 247c8f77cf..d54a37f8ad 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -425,6 +425,7 @@ GLIBC_2.17 __profile_frequency F
>  GLIBC_2.17 __progname D 0x8
>  GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
> +GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_once F
>  GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
> @@ -1538,6 +1539,7 @@ GLIBC_2.17 pthread_exit F
>  GLIBC_2.17 pthread_getaffinity_np F
>  GLIBC_2.17 pthread_getattr_np F
>  GLIBC_2.17 pthread_getschedparam F
> +GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_mutex_consistent F
>  GLIBC_2.17 pthread_mutex_consistent_np F
>  GLIBC_2.17 pthread_mutex_destroy F
> @@ -2378,7 +2380,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 47c5564772..620915eca6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.17 __open F
>  GLIBC_2.17 __open64 F
>  GLIBC_2.17 __pread64 F
>  GLIBC_2.17 __pthread_getspecific F
> -GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_mutex_destroy F
>  GLIBC_2.17 __pthread_mutex_init F
>  GLIBC_2.17 __pthread_mutex_lock F
> @@ -89,7 +88,6 @@ GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
>  GLIBC_2.17 pthread_getspecific F
>  GLIBC_2.17 pthread_join F
> -GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_key_delete F
>  GLIBC_2.17 pthread_kill F
>  GLIBC_2.17 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 1af16292a7..e82a4a7a90 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -325,6 +325,7 @@ GLIBC_2.33 __profile_frequency F
>  GLIBC_2.33 __progname D 0x4
>  GLIBC_2.33 __progname_full D 0x4
>  GLIBC_2.33 __pthread_cleanup_routine F
> +GLIBC_2.33 __pthread_key_create F
>  GLIBC_2.33 __pthread_once F
>  GLIBC_2.33 __pthread_unwind_next F
>  GLIBC_2.33 __ptsname_r_chk F
> @@ -1378,6 +1379,7 @@ GLIBC_2.33 pthread_exit F
>  GLIBC_2.33 pthread_getaffinity_np F
>  GLIBC_2.33 pthread_getattr_np F
>  GLIBC_2.33 pthread_getschedparam F
> +GLIBC_2.33 pthread_key_create F
>  GLIBC_2.33 pthread_mutex_consistent F
>  GLIBC_2.33 pthread_mutex_consistent_np F
>  GLIBC_2.33 pthread_mutex_destroy F
> @@ -1945,7 +1947,9 @@ GLIBC_2.33 writev F
>  GLIBC_2.33 wscanf F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index e86e8cab1d..c2dd7f8dee 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.33 __open F
>  GLIBC_2.33 __open64 F
>  GLIBC_2.33 __pread64 F
>  GLIBC_2.33 __pthread_getspecific F
> -GLIBC_2.33 __pthread_key_create F
>  GLIBC_2.33 __pthread_mutex_destroy F
>  GLIBC_2.33 __pthread_mutex_init F
>  GLIBC_2.33 __pthread_mutex_lock F
> @@ -103,7 +102,6 @@ GLIBC_2.33 pthread_getcpuclockid F
>  GLIBC_2.33 pthread_getname_np F
>  GLIBC_2.33 pthread_getspecific F
>  GLIBC_2.33 pthread_join F
> -GLIBC_2.33 pthread_key_create F
>  GLIBC_2.33 pthread_key_delete F
>  GLIBC_2.33 pthread_kill F
>  GLIBC_2.33 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 54038ac5ba..0c81f1a72c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -336,6 +336,7 @@ GLIBC_2.27 __profile_frequency F
>  GLIBC_2.27 __progname D 0x8
>  GLIBC_2.27 __progname_full D 0x8
>  GLIBC_2.27 __pthread_cleanup_routine F
> +GLIBC_2.27 __pthread_key_create F
>  GLIBC_2.27 __pthread_once F
>  GLIBC_2.27 __pthread_unwind_next F
>  GLIBC_2.27 __ptsname_r_chk F
> @@ -1440,6 +1441,7 @@ GLIBC_2.27 pthread_exit F
>  GLIBC_2.27 pthread_getaffinity_np F
>  GLIBC_2.27 pthread_getattr_np F
>  GLIBC_2.27 pthread_getschedparam F
> +GLIBC_2.27 pthread_key_create F
>  GLIBC_2.27 pthread_mutex_consistent F
>  GLIBC_2.27 pthread_mutex_consistent_np F
>  GLIBC_2.27 pthread_mutex_destroy F
> @@ -2145,7 +2147,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 220affa7f0..d53306f3cb 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.27 __open F
>  GLIBC_2.27 __open64 F
>  GLIBC_2.27 __pread64 F
>  GLIBC_2.27 __pthread_getspecific F
> -GLIBC_2.27 __pthread_key_create F
>  GLIBC_2.27 __pthread_mutex_destroy F
>  GLIBC_2.27 __pthread_mutex_init F
>  GLIBC_2.27 __pthread_mutex_lock F
> @@ -90,7 +89,6 @@ GLIBC_2.27 pthread_getcpuclockid F
>  GLIBC_2.27 pthread_getname_np F
>  GLIBC_2.27 pthread_getspecific F
>  GLIBC_2.27 pthread_join F
> -GLIBC_2.27 pthread_key_create F
>  GLIBC_2.27 pthread_key_delete F
>  GLIBC_2.27 pthread_kill F
>  GLIBC_2.27 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 1e896254ef..ca08d2f3f5 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -863,6 +864,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2222,8 +2224,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 81b8d5ce5c..accbf2be59 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 3cf10b2ab2..061e0c6ffa 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -370,6 +370,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1290,6 +1291,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2123,8 +2125,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index b916709d08..9d6d87494a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -22,7 +22,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -89,7 +88,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index f7bded858a..d102c24997 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -359,6 +359,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1276,6 +1277,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2092,8 +2094,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 11fa4711d8..bf871d121b 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index c8ec299eac..3ed1b31c84 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -359,6 +359,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x4
>  GLIBC_2.2 __progname_full D 0x4
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1276,6 +1277,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2089,8 +2091,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 11fa4711d8..bf871d121b 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 64529443e9..78f69c96ab 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -189,6 +189,7 @@ GLIBC_2.0 __printf_fp F
>  GLIBC_2.0 __profile_frequency F
>  GLIBC_2.0 __progname D 0x4
>  GLIBC_2.0 __progname_full D 0x4
> +GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_once F
>  GLIBC_2.0 __rcmd_errstr D 0x4
>  GLIBC_2.0 __read F
> @@ -866,6 +867,7 @@ GLIBC_2.0 pthread_condattr_init F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> +GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_mutex_destroy F
>  GLIBC_2.0 pthread_mutex_init F
>  GLIBC_2.0 pthread_mutex_lock F
> @@ -2213,8 +2215,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 1d834d6d54..85a6f26e5d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.0 __h_errno_location F
>  GLIBC_2.0 __lseek F
>  GLIBC_2.0 __open F
>  GLIBC_2.0 __pthread_getspecific F
> -GLIBC_2.0 __pthread_key_create F
>  GLIBC_2.0 __pthread_mutex_destroy F
>  GLIBC_2.0 __pthread_mutex_init F
>  GLIBC_2.0 __pthread_mutex_lock F
> @@ -45,7 +44,6 @@ GLIBC_2.0 pthread_create F
>  GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_getspecific F
>  GLIBC_2.0 pthread_join F
> -GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
>  GLIBC_2.0 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 5c5ad0af63..49d6360768 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -397,6 +397,7 @@ GLIBC_2.2 __printf_fp F
>  GLIBC_2.2 __profile_frequency F
>  GLIBC_2.2 __progname D 0x8
>  GLIBC_2.2 __progname_full D 0x8
> +GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1319,6 +1320,7 @@ GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> +GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_mutex_destroy F
>  GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
> @@ -2140,8 +2142,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 88e178b1c3..b49b6ef57a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2 __open F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_getspecific F
> -GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_mutex_destroy F
>  GLIBC_2.2 __pthread_mutex_init F
>  GLIBC_2.2 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_getspecific F
>  GLIBC_2.2 pthread_join F
> -GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
>  GLIBC_2.2 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 1805cd6b9b..c795ffb505 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -358,6 +358,7 @@ GLIBC_2.2.5 __printf_fp F
>  GLIBC_2.2.5 __profile_frequency F
>  GLIBC_2.2.5 __progname D 0x8
>  GLIBC_2.2.5 __progname_full D 0x8
> +GLIBC_2.2.5 __pthread_key_create F
>  GLIBC_2.2.5 __pthread_once F
>  GLIBC_2.2.5 __pwrite64 F
>  GLIBC_2.2.5 __rawmemchr F
> @@ -1287,6 +1288,7 @@ GLIBC_2.2.5 pthread_equal F
>  GLIBC_2.2.5 pthread_exit F
>  GLIBC_2.2.5 pthread_getattr_np F
>  GLIBC_2.2.5 pthread_getschedparam F
> +GLIBC_2.2.5 pthread_key_create F
>  GLIBC_2.2.5 pthread_mutex_destroy F
>  GLIBC_2.2.5 pthread_mutex_init F
>  GLIBC_2.2.5 pthread_mutex_lock F
> @@ -2099,8 +2101,10 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index f11ffd687f..0408564253 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.2.5 __open F
>  GLIBC_2.2.5 __open64 F
>  GLIBC_2.2.5 __pread64 F
>  GLIBC_2.2.5 __pthread_getspecific F
> -GLIBC_2.2.5 __pthread_key_create F
>  GLIBC_2.2.5 __pthread_mutex_destroy F
>  GLIBC_2.2.5 __pthread_mutex_init F
>  GLIBC_2.2.5 __pthread_mutex_lock F
> @@ -88,7 +87,6 @@ GLIBC_2.2.5 pthread_getconcurrency F
>  GLIBC_2.2.5 pthread_getcpuclockid F
>  GLIBC_2.2.5 pthread_getspecific F
>  GLIBC_2.2.5 pthread_join F
> -GLIBC_2.2.5 pthread_key_create F
>  GLIBC_2.2.5 pthread_key_delete F
>  GLIBC_2.2.5 pthread_kill F
>  GLIBC_2.2.5 pthread_kill_other_threads_np F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 780679cb52..74ccdc4905 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -340,6 +340,7 @@ GLIBC_2.16 __profile_frequency F
>  GLIBC_2.16 __progname D 0x4
>  GLIBC_2.16 __progname_full D 0x4
>  GLIBC_2.16 __pthread_cleanup_routine F
> +GLIBC_2.16 __pthread_key_create F
>  GLIBC_2.16 __pthread_once F
>  GLIBC_2.16 __pthread_unwind_next F
>  GLIBC_2.16 __ptsname_r_chk F
> @@ -1457,6 +1458,7 @@ GLIBC_2.16 pthread_exit F
>  GLIBC_2.16 pthread_getaffinity_np F
>  GLIBC_2.16 pthread_getattr_np F
>  GLIBC_2.16 pthread_getschedparam F
> +GLIBC_2.16 pthread_key_create F
>  GLIBC_2.16 pthread_mutex_consistent F
>  GLIBC_2.16 pthread_mutex_consistent_np F
>  GLIBC_2.16 pthread_mutex_destroy F
> @@ -2197,7 +2199,9 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
> +GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 579d0ffea2..79ab1b8cef 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.16 __open F
>  GLIBC_2.16 __open64 F
>  GLIBC_2.16 __pread64 F
>  GLIBC_2.16 __pthread_getspecific F
> -GLIBC_2.16 __pthread_key_create F
>  GLIBC_2.16 __pthread_mutex_destroy F
>  GLIBC_2.16 __pthread_mutex_init F
>  GLIBC_2.16 __pthread_mutex_lock F
> @@ -89,7 +88,6 @@ GLIBC_2.16 pthread_getcpuclockid F
>  GLIBC_2.16 pthread_getname_np F
>  GLIBC_2.16 pthread_getspecific F
>  GLIBC_2.16 pthread_join F
> -GLIBC_2.16 pthread_key_create F
>  GLIBC_2.16 pthread_key_delete F
>  GLIBC_2.16 pthread_kill F
>  GLIBC_2.16 pthread_kill_other_threads_np F
> 

Ok.
  
Florian Weimer March 24, 2021, 2:32 p.m. UTC | #2
* Adhemerval Zanella:

>> @@ -86,7 +88,9 @@ libc {
>>    }
>>    GLIBC_2.34 {
>>      __pthread_cleanup_routine;
>> +    __pthread_key_create;
>>      __pthread_once;
>> +    pthread_key_create;
>>      pthread_mutex_consistent;
>>      pthread_once;
>>    }
>
> Why do we need a __pthread_key_create for 2.34?

__pthread_key_create is used by libstdc++.

>> @@ -47,5 +47,18 @@ __pthread_key_create (pthread_key_t *key, void (*destr) (void *))
>>  
>>    return EAGAIN;
>>  }
>> -weak_alias (__pthread_key_create, pthread_key_create)
>> -hidden_def (__pthread_key_create)
>> +versioned_symbol (libc, __pthread_key_create_1, __pthread_key_create,
>> +		  GLIBC_2_34);
>> +libc_hidden_ver (__pthread_key_create_1, __pthread_key_create)
>> +
>> +/* Several aliases for setting different symbol versions.  */
>> +strong_alias (__pthread_key_create_1, __pthread_key_create_2)
>> +strong_alias (__pthread_key_create_1, __pthread_key_create_3)
>> +strong_alias (__pthread_key_create_1, __pthread_key_create_4)
>> +
>> +versioned_symbol (libc, __pthread_key_create_2, pthread_key_create,
>> +		  GLIBC_2_34);
>> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
>> +compat_symbol (libc, __pthread_key_create_3, __pthread_key_create, GLIBC_2_0);
>> +compat_symbol (libc, __pthread_key_create_4, pthread_key_create, GLIBC_2_0);
>> +#endif
>
> I think you might want to revise it once compat_symbol has support
> for multiple targets.

Right that, applies in other places throughout the series, too.

Speaking of which, should I repost the compat_symbol patches?

Thanks,
Florian
  
Adhemerval Zanella March 24, 2021, 2:42 p.m. UTC | #3
On 24/03/2021 11:32, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>>> @@ -86,7 +88,9 @@ libc {
>>>    }
>>>    GLIBC_2.34 {
>>>      __pthread_cleanup_routine;
>>> +    __pthread_key_create;
>>>      __pthread_once;
>>> +    pthread_key_create;
>>>      pthread_mutex_consistent;
>>>      pthread_once;
>>>    }
>>
>> Why do we need a __pthread_key_create for 2.34?
> 
> __pthread_key_create is used by libstdc++.

Sigh... the description at libgcc/gthr-posix.h is *really* hacky and I
think we provide the __libc_single_threaded exactly to avoid keep
providing this kind of interfaces. 

> 
>>> @@ -47,5 +47,18 @@ __pthread_key_create (pthread_key_t *key, void (*destr) (void *))
>>>  
>>>    return EAGAIN;
>>>  }
>>> -weak_alias (__pthread_key_create, pthread_key_create)
>>> -hidden_def (__pthread_key_create)
>>> +versioned_symbol (libc, __pthread_key_create_1, __pthread_key_create,
>>> +		  GLIBC_2_34);
>>> +libc_hidden_ver (__pthread_key_create_1, __pthread_key_create)
>>> +
>>> +/* Several aliases for setting different symbol versions.  */
>>> +strong_alias (__pthread_key_create_1, __pthread_key_create_2)
>>> +strong_alias (__pthread_key_create_1, __pthread_key_create_3)
>>> +strong_alias (__pthread_key_create_1, __pthread_key_create_4)
>>> +
>>> +versioned_symbol (libc, __pthread_key_create_2, pthread_key_create,
>>> +		  GLIBC_2_34);
>>> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
>>> +compat_symbol (libc, __pthread_key_create_3, __pthread_key_create, GLIBC_2_0);
>>> +compat_symbol (libc, __pthread_key_create_4, pthread_key_create, GLIBC_2_0);
>>> +#endif
>>
>> I think you might want to revise it once compat_symbol has support
>> for multiple targets.
> 
> Right that, applies in other places throughout the series, too.
> 
> Speaking of which, should I repost the compat_symbol patches?

Isn't the one in patchwork the latest [1]?

[1] https://patchwork.sourceware.org/project/glibc/patch/07c2defd7f03c5f2493a4132de673f33457d7806.1616184336.git.fweimer@redhat.com/
  
Florian Weimer March 24, 2021, 3:08 p.m. UTC | #4
* Adhemerval Zanella:

> Sigh... the description at libgcc/gthr-posix.h is *really* hacky and I
> think we provide the __libc_single_threaded exactly to avoid keep
> providing this kind of interfaces.

The newer versions should use it, but there is just one header file
shared by everything POSIX-like.

>> Right that, applies in other places throughout the series, too.
>> 
>> Speaking of which, should I repost the compat_symbol patches?
>
> Isn't the one in patchwork the latest [1]?
>
> [1] https://patchwork.sourceware.org/project/glibc/patch/07c2defd7f03c5f2493a4132de673f33457d7806.1616184336.git.fweimer@redhat.com/

I think it lacks the __attribute__ ((nocommon)) for
__malloc_initialize_hook (need for building with GCC 9 and earlier).

Thanks,
Florian
  
Adhemerval Zanella March 24, 2021, 3:46 p.m. UTC | #5
On 24/03/2021 12:08, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> Sigh... the description at libgcc/gthr-posix.h is *really* hacky and I
>> think we provide the __libc_single_threaded exactly to avoid keep
>> providing this kind of interfaces.
> 
> The newer versions should use it, but there is just one header file
> shared by everything POSIX-like.
> 
>>> Right that, applies in other places throughout the series, too.
>>>
>>> Speaking of which, should I repost the compat_symbol patches?
>>
>> Isn't the one in patchwork the latest [1]?
>>
>> [1] https://patchwork.sourceware.org/project/glibc/patch/07c2defd7f03c5f2493a4132de673f33457d7806.1616184336.git.fweimer@redhat.com/
> 
> I think it lacks the __attribute__ ((nocommon)) for
> __malloc_initialize_hook (need for building with GCC 9 and earlier).

Ah right, I think there is no need for a newer version.  I review/ack
the one you already sent.
  

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index 098c31115f..4255953fad 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -78,6 +78,7 @@  routines = \
   pthread_getaffinity \
   pthread_getattr_np \
   pthread_getschedparam \
+  pthread_key_create \
   pthread_keys \
   pthread_mutex_consistent \
   pthread_once \
@@ -160,7 +161,6 @@  libpthread-routines = \
   pthread_getspecific \
   pthread_join \
   pthread_join_common \
-  pthread_key_create \
   pthread_key_delete \
   pthread_kill \
   pthread_kill_other_threads \
diff --git a/nptl/Versions b/nptl/Versions
index c50a5442af..d44958f5b6 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -1,5 +1,6 @@ 
 libc {
   GLIBC_2.0 {
+    __pthread_key_create;
     __pthread_once;
     _pthread_cleanup_pop;
     _pthread_cleanup_pop_restore;
@@ -28,6 +29,7 @@  libc {
     pthread_equal;
     pthread_exit;
     pthread_getschedparam;
+    pthread_key_create;
     pthread_mutex_destroy;
     pthread_mutex_init;
     pthread_mutex_lock;
@@ -86,7 +88,9 @@  libc {
   }
   GLIBC_2.34 {
     __pthread_cleanup_routine;
+    __pthread_key_create;
     __pthread_once;
+    pthread_key_create;
     pthread_mutex_consistent;
     pthread_once;
   }
@@ -143,7 +147,6 @@  libpthread {
     __open;
     __pthread_atfork;
     __pthread_getspecific;
-    __pthread_key_create;
     __pthread_mutex_destroy;
     __pthread_mutex_init;
     __pthread_mutex_lock;
@@ -180,7 +183,6 @@  libpthread {
     pthread_detach;
     pthread_getspecific;
     pthread_join;
-    pthread_key_create;
     pthread_key_delete;
     pthread_kill;
     pthread_kill_other_threads_np;
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 5913bf7272..b1a8b1a95b 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -70,7 +70,6 @@  static const struct pthread_functions pthread_functions =
     .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
     .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
     .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
-    .ptr___pthread_key_create = __pthread_key_create,
     .ptr___pthread_getspecific = __pthread_getspecific,
     .ptr___pthread_setspecific = __pthread_setspecific,
     .ptr__nptl_setxid = __nptl_setxid,
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 68f8ef5aa1..38aeed1dfc 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -553,7 +553,6 @@  hidden_proto (__pthread_mutex_unlock)
 hidden_proto (__pthread_rwlock_rdlock)
 hidden_proto (__pthread_rwlock_wrlock)
 hidden_proto (__pthread_rwlock_unlock)
-hidden_proto (__pthread_key_create)
 hidden_proto (__pthread_getspecific)
 hidden_proto (__pthread_setspecific)
 hidden_proto (__pthread_testcancel)
diff --git a/nptl/pthread_key_create.c b/nptl/pthread_key_create.c
index 5b725c56e2..5b3726e9f3 100644
--- a/nptl/pthread_key_create.c
+++ b/nptl/pthread_key_create.c
@@ -19,10 +19,10 @@ 
 #include <errno.h>
 #include "pthreadP.h"
 #include <atomic.h>
-
+#include <shlib-compat.h>
 
 int
-__pthread_key_create (pthread_key_t *key, void (*destr) (void *))
+__pthread_key_create_1 (pthread_key_t *key, void (*destr) (void *))
 {
   /* Find a slot in __pthread_keys which is unused.  */
   for (size_t cnt = 0; cnt < PTHREAD_KEYS_MAX; ++cnt)
@@ -47,5 +47,18 @@  __pthread_key_create (pthread_key_t *key, void (*destr) (void *))
 
   return EAGAIN;
 }
-weak_alias (__pthread_key_create, pthread_key_create)
-hidden_def (__pthread_key_create)
+versioned_symbol (libc, __pthread_key_create_1, __pthread_key_create,
+		  GLIBC_2_34);
+libc_hidden_ver (__pthread_key_create_1, __pthread_key_create)
+
+/* Several aliases for setting different symbol versions.  */
+strong_alias (__pthread_key_create_1, __pthread_key_create_2)
+strong_alias (__pthread_key_create_1, __pthread_key_create_3)
+strong_alias (__pthread_key_create_1, __pthread_key_create_4)
+
+versioned_symbol (libc, __pthread_key_create_2, pthread_key_create,
+		  GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libc, __pthread_key_create_3, __pthread_key_create, GLIBC_2_0);
+compat_symbol (libc, __pthread_key_create_4, pthread_key_create, GLIBC_2_0);
+#endif
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index d032463dd0..64c7a99bbf 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -338,7 +338,6 @@  weak_extern (__pthread_rwlock_tryrdlock)
 weak_extern (__pthread_rwlock_wrlock)
 weak_extern (__pthread_rwlock_trywrlock)
 weak_extern (__pthread_rwlock_unlock)
-weak_extern (__pthread_key_create)
 weak_extern (__pthread_setspecific)
 weak_extern (__pthread_getspecific)
 weak_extern (__pthread_initialize)
@@ -358,7 +357,6 @@  weak_extern (__pthread_atfork)
 #  pragma weak __pthread_rwlock_wrlock
 #  pragma weak __pthread_rwlock_trywrlock
 #  pragma weak __pthread_rwlock_unlock
-#  pragma weak __pthread_key_create
 #  pragma weak __pthread_setspecific
 #  pragma weak __pthread_getspecific
 #  pragma weak __pthread_initialize
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 844838cd49..69ba1d8278 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -49,7 +49,6 @@  struct pthread_functions
   int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
   int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
   int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
   void *(*ptr___pthread_getspecific) (pthread_key_t);
   int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
   int (*ptr__nptl_setxid) (struct xid_command *);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index a4eec97fd0..edd8ff4e1a 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -339,6 +339,7 @@  GLIBC_2.17 __profile_frequency F
 GLIBC_2.17 __progname D 0x8
 GLIBC_2.17 __progname_full D 0x8
 GLIBC_2.17 __pthread_cleanup_routine F
+GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_once F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
@@ -1449,6 +1450,7 @@  GLIBC_2.17 pthread_exit F
 GLIBC_2.17 pthread_getaffinity_np F
 GLIBC_2.17 pthread_getattr_np F
 GLIBC_2.17 pthread_getschedparam F
+GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_mutex_consistent F
 GLIBC_2.17 pthread_mutex_consistent_np F
 GLIBC_2.17 pthread_mutex_destroy F
@@ -2183,7 +2185,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 47c5564772..620915eca6 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.17 __open F
 GLIBC_2.17 __open64 F
 GLIBC_2.17 __pread64 F
 GLIBC_2.17 __pthread_getspecific F
-GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_mutex_destroy F
 GLIBC_2.17 __pthread_mutex_init F
 GLIBC_2.17 __pthread_mutex_lock F
@@ -89,7 +88,6 @@  GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
 GLIBC_2.17 pthread_getspecific F
 GLIBC_2.17 pthread_join F
-GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_key_delete F
 GLIBC_2.17 pthread_kill F
 GLIBC_2.17 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index cfd43859bc..ad921167a2 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -188,6 +188,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x8
 GLIBC_2.0 __progname_full D 0x8
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x8
 GLIBC_2.0 __read F
@@ -888,6 +889,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2264,8 +2266,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 1d834d6d54..85a6f26e5d 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index f4a38131a0..2bdf0fffdb 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -328,6 +328,7 @@  GLIBC_2.32 __profile_frequency F
 GLIBC_2.32 __progname D 0x4
 GLIBC_2.32 __progname_full D 0x4
 GLIBC_2.32 __pthread_cleanup_routine F
+GLIBC_2.32 __pthread_key_create F
 GLIBC_2.32 __pthread_once F
 GLIBC_2.32 __pthread_unwind_next F
 GLIBC_2.32 __ptsname_r_chk F
@@ -1376,6 +1377,7 @@  GLIBC_2.32 pthread_exit F
 GLIBC_2.32 pthread_getaffinity_np F
 GLIBC_2.32 pthread_getattr_np F
 GLIBC_2.32 pthread_getschedparam F
+GLIBC_2.32 pthread_key_create F
 GLIBC_2.32 pthread_mutex_consistent F
 GLIBC_2.32 pthread_mutex_consistent_np F
 GLIBC_2.32 pthread_mutex_destroy F
@@ -1943,7 +1945,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 3c1054101c..d79ba9adbf 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.32 __open F
 GLIBC_2.32 __open64 F
 GLIBC_2.32 __pread64 F
 GLIBC_2.32 __pthread_getspecific F
-GLIBC_2.32 __pthread_key_create F
 GLIBC_2.32 __pthread_mutex_destroy F
 GLIBC_2.32 __pthread_mutex_init F
 GLIBC_2.32 __pthread_mutex_lock F
@@ -103,7 +102,6 @@  GLIBC_2.32 pthread_getcpuclockid F
 GLIBC_2.32 pthread_getname_np F
 GLIBC_2.32 pthread_getspecific F
 GLIBC_2.32 pthread_join F
-GLIBC_2.32 pthread_key_create F
 GLIBC_2.32 pthread_key_delete F
 GLIBC_2.32 pthread_kill F
 GLIBC_2.32 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 9e6b989de2..451c02d687 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -158,8 +158,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -490,6 +492,7 @@  GLIBC_2.4 __profile_frequency F
 GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1548,6 +1551,7 @@  GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index c2892c4b8d..d00e0e9258 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -48,7 +48,6 @@  GLIBC_2.4 __open F
 GLIBC_2.4 __open64 F
 GLIBC_2.4 __pread64 F
 GLIBC_2.4 __pthread_getspecific F
-GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_mutex_destroy F
 GLIBC_2.4 __pthread_mutex_init F
 GLIBC_2.4 __pthread_mutex_lock F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_getspecific F
 GLIBC_2.4 pthread_join F
-GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
 GLIBC_2.4 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 319cf8474a..873d6c3f22 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -155,8 +155,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -487,6 +489,7 @@  GLIBC_2.4 __profile_frequency F
 GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1545,6 +1548,7 @@  GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index c2892c4b8d..d00e0e9258 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -48,7 +48,6 @@  GLIBC_2.4 __open F
 GLIBC_2.4 __open64 F
 GLIBC_2.4 __pread64 F
 GLIBC_2.4 __pthread_getspecific F
-GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_mutex_destroy F
 GLIBC_2.4 __pthread_mutex_init F
 GLIBC_2.4 __pthread_mutex_lock F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_getspecific F
 GLIBC_2.4 pthread_join F
-GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
 GLIBC_2.4 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a9094c6575..d9149b68cc 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -332,6 +332,7 @@  GLIBC_2.29 __profile_frequency F
 GLIBC_2.29 __progname D 0x4
 GLIBC_2.29 __progname_full D 0x4
 GLIBC_2.29 __pthread_cleanup_routine F
+GLIBC_2.29 __pthread_key_create F
 GLIBC_2.29 __pthread_once F
 GLIBC_2.29 __pthread_unwind_next F
 GLIBC_2.29 __ptsname_r_chk F
@@ -1437,6 +1438,7 @@  GLIBC_2.29 pthread_exit F
 GLIBC_2.29 pthread_getaffinity_np F
 GLIBC_2.29 pthread_getattr_np F
 GLIBC_2.29 pthread_getschedparam F
+GLIBC_2.29 pthread_key_create F
 GLIBC_2.29 pthread_mutex_consistent F
 GLIBC_2.29 pthread_mutex_consistent_np F
 GLIBC_2.29 pthread_mutex_destroy F
@@ -2127,7 +2129,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 2d125f11a3..e3721d98e6 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.29 __open F
 GLIBC_2.29 __open64 F
 GLIBC_2.29 __pread64 F
 GLIBC_2.29 __pthread_getspecific F
-GLIBC_2.29 __pthread_key_create F
 GLIBC_2.29 __pthread_mutex_destroy F
 GLIBC_2.29 __pthread_mutex_init F
 GLIBC_2.29 __pthread_mutex_lock F
@@ -101,7 +100,6 @@  GLIBC_2.29 pthread_getcpuclockid F
 GLIBC_2.29 pthread_getname_np F
 GLIBC_2.29 pthread_getspecific F
 GLIBC_2.29 pthread_join F
-GLIBC_2.29 pthread_key_create F
 GLIBC_2.29 pthread_key_delete F
 GLIBC_2.29 pthread_kill F
 GLIBC_2.29 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 63e458dc99..938fa14288 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -356,6 +356,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x4
 GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1272,6 +1273,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2085,8 +2087,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 11fa4711d8..bf871d121b 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 428ff25c25..425d1df5a3 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -185,6 +185,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -865,6 +866,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2252,8 +2254,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 1d84eb35fb..b186b3039b 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 3556b0eac4..c34b5a157d 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -360,6 +360,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x8
 GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1293,6 +1294,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2117,8 +2119,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 88e178b1c3..b49b6ef57a 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 245ae8da1f..56d55caed9 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -159,8 +159,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -476,6 +478,7 @@  GLIBC_2.4 __profile_frequency F
 GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1528,6 +1531,7 @@  GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index c2892c4b8d..d00e0e9258 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -48,7 +48,6 @@  GLIBC_2.4 __open F
 GLIBC_2.4 __open64 F
 GLIBC_2.4 __pread64 F
 GLIBC_2.4 __pthread_getspecific F
-GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_mutex_destroy F
 GLIBC_2.4 __pthread_mutex_init F
 GLIBC_2.4 __pthread_mutex_lock F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_getspecific F
 GLIBC_2.4 pthread_join F
-GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
 GLIBC_2.4 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index fba3ac0138..a3b3bf4f74 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -185,6 +185,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -864,6 +865,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2197,8 +2199,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 1d84eb35fb..b186b3039b 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6a6d813b2c..75213c08d4 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -340,6 +340,7 @@  GLIBC_2.18 __profile_frequency F
 GLIBC_2.18 __progname D 0x4
 GLIBC_2.18 __progname_full D 0x4
 GLIBC_2.18 __pthread_cleanup_routine F
+GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_once F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
@@ -1452,6 +1453,7 @@  GLIBC_2.18 pthread_exit F
 GLIBC_2.18 pthread_getaffinity_np F
 GLIBC_2.18 pthread_getattr_np F
 GLIBC_2.18 pthread_getschedparam F
+GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_mutex_consistent F
 GLIBC_2.18 pthread_mutex_consistent_np F
 GLIBC_2.18 pthread_mutex_destroy F
@@ -2178,7 +2180,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index b19c648328..ca115fe783 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.18 __open F
 GLIBC_2.18 __open64 F
 GLIBC_2.18 __pread64 F
 GLIBC_2.18 __pthread_getspecific F
-GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_mutex_destroy F
 GLIBC_2.18 __pthread_mutex_init F
 GLIBC_2.18 __pthread_mutex_lock F
@@ -90,7 +89,6 @@  GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
 GLIBC_2.18 pthread_getspecific F
 GLIBC_2.18 pthread_join F
-GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_key_delete F
 GLIBC_2.18 pthread_kill F
 GLIBC_2.18 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 7138bb3fe7..014d53f893 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -340,6 +340,7 @@  GLIBC_2.18 __profile_frequency F
 GLIBC_2.18 __progname D 0x4
 GLIBC_2.18 __progname_full D 0x4
 GLIBC_2.18 __pthread_cleanup_routine F
+GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_once F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
@@ -1452,6 +1453,7 @@  GLIBC_2.18 pthread_exit F
 GLIBC_2.18 pthread_getaffinity_np F
 GLIBC_2.18 pthread_getattr_np F
 GLIBC_2.18 pthread_getschedparam F
+GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_mutex_consistent F
 GLIBC_2.18 pthread_mutex_consistent_np F
 GLIBC_2.18 pthread_mutex_destroy F
@@ -2175,7 +2177,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index b19c648328..ca115fe783 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.18 __open F
 GLIBC_2.18 __open64 F
 GLIBC_2.18 __pread64 F
 GLIBC_2.18 __pthread_getspecific F
-GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_mutex_destroy F
 GLIBC_2.18 __pthread_mutex_init F
 GLIBC_2.18 __pthread_mutex_lock F
@@ -90,7 +89,6 @@  GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
 GLIBC_2.18 pthread_getspecific F
 GLIBC_2.18 pthread_join F
-GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_key_delete F
 GLIBC_2.18 pthread_kill F
 GLIBC_2.18 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index d070746259..46c7716ee6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -183,6 +183,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -861,6 +862,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2168,8 +2170,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 0d7d23b8f3..2b830751c8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index d40d0079fc..5666362839 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -183,6 +183,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -861,6 +862,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2166,8 +2168,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 0d7d23b8f3..2b830751c8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index d56b5a25cb..97866f80c7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -183,6 +183,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -861,6 +862,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2174,8 +2176,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index d334efb37c..3d9321f9e0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -183,6 +183,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x8
 GLIBC_2.0 __progname_full D 0x8
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x8
 GLIBC_2.0 __read F
@@ -859,6 +860,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2168,8 +2170,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 4422b5ca92..3a0c0c5d8a 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -377,6 +377,7 @@  GLIBC_2.21 __profile_frequency F
 GLIBC_2.21 __progname D 0x4
 GLIBC_2.21 __progname_full D 0x4
 GLIBC_2.21 __pthread_cleanup_routine F
+GLIBC_2.21 __pthread_key_create F
 GLIBC_2.21 __pthread_once F
 GLIBC_2.21 __pthread_unwind_next F
 GLIBC_2.21 __ptsname_r_chk F
@@ -1494,6 +1495,7 @@  GLIBC_2.21 pthread_exit F
 GLIBC_2.21 pthread_getaffinity_np F
 GLIBC_2.21 pthread_getattr_np F
 GLIBC_2.21 pthread_getschedparam F
+GLIBC_2.21 pthread_key_create F
 GLIBC_2.21 pthread_mutex_consistent F
 GLIBC_2.21 pthread_mutex_consistent_np F
 GLIBC_2.21 pthread_mutex_destroy F
@@ -2216,7 +2218,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 34c81eb8db..06500b1865 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.21 __open F
 GLIBC_2.21 __open64 F
 GLIBC_2.21 __pread64 F
 GLIBC_2.21 __pthread_getspecific F
-GLIBC_2.21 __pthread_key_create F
 GLIBC_2.21 __pthread_mutex_destroy F
 GLIBC_2.21 __pthread_mutex_init F
 GLIBC_2.21 __pthread_mutex_lock F
@@ -90,7 +89,6 @@  GLIBC_2.21 pthread_getcpuclockid F
 GLIBC_2.21 pthread_getname_np F
 GLIBC_2.21 pthread_getspecific F
 GLIBC_2.21 pthread_join F
-GLIBC_2.21 pthread_key_create F
 GLIBC_2.21 pthread_key_delete F
 GLIBC_2.21 pthread_kill F
 GLIBC_2.21 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 8bd6dd5b48..c01a200e83 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -194,6 +194,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -872,6 +873,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2224,8 +2226,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 9ef23ed6d6..d36522b751 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 6bf7342f4c..3eced88f9f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -194,6 +194,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -872,6 +873,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2257,8 +2259,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 2d616e24cd..35b689a767 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -409,6 +409,7 @@  GLIBC_2.3 __printf_fp F
 GLIBC_2.3 __profile_frequency F
 GLIBC_2.3 __progname D 0x8
 GLIBC_2.3 __progname_full D 0x8
+GLIBC_2.3 __pthread_key_create F
 GLIBC_2.3 __pthread_once F
 GLIBC_2.3 __pwrite64 F
 GLIBC_2.3 __rawmemchr F
@@ -1379,6 +1380,7 @@  GLIBC_2.3 pthread_equal F
 GLIBC_2.3 pthread_exit F
 GLIBC_2.3 pthread_getattr_np F
 GLIBC_2.3 pthread_getschedparam F
+GLIBC_2.3 pthread_key_create F
 GLIBC_2.3 pthread_mutex_destroy F
 GLIBC_2.3 pthread_mutex_init F
 GLIBC_2.3 pthread_mutex_lock F
@@ -2087,8 +2089,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 5474d3eb4d..2d24956efe 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -42,7 +42,6 @@  GLIBC_2.3 __open F
 GLIBC_2.3 __open64 F
 GLIBC_2.3 __pread64 F
 GLIBC_2.3 __pthread_getspecific F
-GLIBC_2.3 __pthread_key_create F
 GLIBC_2.3 __pthread_mutex_destroy F
 GLIBC_2.3 __pthread_mutex_init F
 GLIBC_2.3 __pthread_mutex_lock F
@@ -108,7 +107,6 @@  GLIBC_2.3 pthread_getconcurrency F
 GLIBC_2.3 pthread_getcpuclockid F
 GLIBC_2.3 pthread_getspecific F
 GLIBC_2.3 pthread_join F
-GLIBC_2.3 pthread_key_create F
 GLIBC_2.3 pthread_key_delete F
 GLIBC_2.3 pthread_kill F
 GLIBC_2.3 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 247c8f77cf..d54a37f8ad 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -425,6 +425,7 @@  GLIBC_2.17 __profile_frequency F
 GLIBC_2.17 __progname D 0x8
 GLIBC_2.17 __progname_full D 0x8
 GLIBC_2.17 __pthread_cleanup_routine F
+GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_once F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
@@ -1538,6 +1539,7 @@  GLIBC_2.17 pthread_exit F
 GLIBC_2.17 pthread_getaffinity_np F
 GLIBC_2.17 pthread_getattr_np F
 GLIBC_2.17 pthread_getschedparam F
+GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_mutex_consistent F
 GLIBC_2.17 pthread_mutex_consistent_np F
 GLIBC_2.17 pthread_mutex_destroy F
@@ -2378,7 +2380,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 47c5564772..620915eca6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.17 __open F
 GLIBC_2.17 __open64 F
 GLIBC_2.17 __pread64 F
 GLIBC_2.17 __pthread_getspecific F
-GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_mutex_destroy F
 GLIBC_2.17 __pthread_mutex_init F
 GLIBC_2.17 __pthread_mutex_lock F
@@ -89,7 +88,6 @@  GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
 GLIBC_2.17 pthread_getspecific F
 GLIBC_2.17 pthread_join F
-GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_key_delete F
 GLIBC_2.17 pthread_kill F
 GLIBC_2.17 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 1af16292a7..e82a4a7a90 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -325,6 +325,7 @@  GLIBC_2.33 __profile_frequency F
 GLIBC_2.33 __progname D 0x4
 GLIBC_2.33 __progname_full D 0x4
 GLIBC_2.33 __pthread_cleanup_routine F
+GLIBC_2.33 __pthread_key_create F
 GLIBC_2.33 __pthread_once F
 GLIBC_2.33 __pthread_unwind_next F
 GLIBC_2.33 __ptsname_r_chk F
@@ -1378,6 +1379,7 @@  GLIBC_2.33 pthread_exit F
 GLIBC_2.33 pthread_getaffinity_np F
 GLIBC_2.33 pthread_getattr_np F
 GLIBC_2.33 pthread_getschedparam F
+GLIBC_2.33 pthread_key_create F
 GLIBC_2.33 pthread_mutex_consistent F
 GLIBC_2.33 pthread_mutex_consistent_np F
 GLIBC_2.33 pthread_mutex_destroy F
@@ -1945,7 +1947,9 @@  GLIBC_2.33 writev F
 GLIBC_2.33 wscanf F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index e86e8cab1d..c2dd7f8dee 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.33 __open F
 GLIBC_2.33 __open64 F
 GLIBC_2.33 __pread64 F
 GLIBC_2.33 __pthread_getspecific F
-GLIBC_2.33 __pthread_key_create F
 GLIBC_2.33 __pthread_mutex_destroy F
 GLIBC_2.33 __pthread_mutex_init F
 GLIBC_2.33 __pthread_mutex_lock F
@@ -103,7 +102,6 @@  GLIBC_2.33 pthread_getcpuclockid F
 GLIBC_2.33 pthread_getname_np F
 GLIBC_2.33 pthread_getspecific F
 GLIBC_2.33 pthread_join F
-GLIBC_2.33 pthread_key_create F
 GLIBC_2.33 pthread_key_delete F
 GLIBC_2.33 pthread_kill F
 GLIBC_2.33 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 54038ac5ba..0c81f1a72c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -336,6 +336,7 @@  GLIBC_2.27 __profile_frequency F
 GLIBC_2.27 __progname D 0x8
 GLIBC_2.27 __progname_full D 0x8
 GLIBC_2.27 __pthread_cleanup_routine F
+GLIBC_2.27 __pthread_key_create F
 GLIBC_2.27 __pthread_once F
 GLIBC_2.27 __pthread_unwind_next F
 GLIBC_2.27 __ptsname_r_chk F
@@ -1440,6 +1441,7 @@  GLIBC_2.27 pthread_exit F
 GLIBC_2.27 pthread_getaffinity_np F
 GLIBC_2.27 pthread_getattr_np F
 GLIBC_2.27 pthread_getschedparam F
+GLIBC_2.27 pthread_key_create F
 GLIBC_2.27 pthread_mutex_consistent F
 GLIBC_2.27 pthread_mutex_consistent_np F
 GLIBC_2.27 pthread_mutex_destroy F
@@ -2145,7 +2147,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 220affa7f0..d53306f3cb 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.27 __open F
 GLIBC_2.27 __open64 F
 GLIBC_2.27 __pread64 F
 GLIBC_2.27 __pthread_getspecific F
-GLIBC_2.27 __pthread_key_create F
 GLIBC_2.27 __pthread_mutex_destroy F
 GLIBC_2.27 __pthread_mutex_init F
 GLIBC_2.27 __pthread_mutex_lock F
@@ -90,7 +89,6 @@  GLIBC_2.27 pthread_getcpuclockid F
 GLIBC_2.27 pthread_getname_np F
 GLIBC_2.27 pthread_getspecific F
 GLIBC_2.27 pthread_join F
-GLIBC_2.27 pthread_key_create F
 GLIBC_2.27 pthread_key_delete F
 GLIBC_2.27 pthread_kill F
 GLIBC_2.27 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 1e896254ef..ca08d2f3f5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -185,6 +185,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -863,6 +864,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2222,8 +2224,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 81b8d5ce5c..accbf2be59 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 3cf10b2ab2..061e0c6ffa 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -370,6 +370,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x8
 GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1290,6 +1291,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2123,8 +2125,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index b916709d08..9d6d87494a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -22,7 +22,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -89,7 +88,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index f7bded858a..d102c24997 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -359,6 +359,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x4
 GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1276,6 +1277,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2092,8 +2094,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 11fa4711d8..bf871d121b 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index c8ec299eac..3ed1b31c84 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -359,6 +359,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x4
 GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1276,6 +1277,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2089,8 +2091,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 11fa4711d8..bf871d121b 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 64529443e9..78f69c96ab 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -189,6 +189,7 @@  GLIBC_2.0 __printf_fp F
 GLIBC_2.0 __profile_frequency F
 GLIBC_2.0 __progname D 0x4
 GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
@@ -866,6 +867,7 @@  GLIBC_2.0 pthread_condattr_init F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
+GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
@@ -2213,8 +2215,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 1d834d6d54..85a6f26e5d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -9,7 +9,6 @@  GLIBC_2.0 __h_errno_location F
 GLIBC_2.0 __lseek F
 GLIBC_2.0 __open F
 GLIBC_2.0 __pthread_getspecific F
-GLIBC_2.0 __pthread_key_create F
 GLIBC_2.0 __pthread_mutex_destroy F
 GLIBC_2.0 __pthread_mutex_init F
 GLIBC_2.0 __pthread_mutex_lock F
@@ -45,7 +44,6 @@  GLIBC_2.0 pthread_create F
 GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_getspecific F
 GLIBC_2.0 pthread_join F
-GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
 GLIBC_2.0 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 5c5ad0af63..49d6360768 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -397,6 +397,7 @@  GLIBC_2.2 __printf_fp F
 GLIBC_2.2 __profile_frequency F
 GLIBC_2.2 __progname D 0x8
 GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1319,6 +1320,7 @@  GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
+GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
@@ -2140,8 +2142,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 88e178b1c3..b49b6ef57a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __open F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_getspecific F
-GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_mutex_destroy F
 GLIBC_2.2 __pthread_mutex_init F
 GLIBC_2.2 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_getspecific F
 GLIBC_2.2 pthread_join F
-GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
 GLIBC_2.2 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 1805cd6b9b..c795ffb505 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -358,6 +358,7 @@  GLIBC_2.2.5 __printf_fp F
 GLIBC_2.2.5 __profile_frequency F
 GLIBC_2.2.5 __progname D 0x8
 GLIBC_2.2.5 __progname_full D 0x8
+GLIBC_2.2.5 __pthread_key_create F
 GLIBC_2.2.5 __pthread_once F
 GLIBC_2.2.5 __pwrite64 F
 GLIBC_2.2.5 __rawmemchr F
@@ -1287,6 +1288,7 @@  GLIBC_2.2.5 pthread_equal F
 GLIBC_2.2.5 pthread_exit F
 GLIBC_2.2.5 pthread_getattr_np F
 GLIBC_2.2.5 pthread_getschedparam F
+GLIBC_2.2.5 pthread_key_create F
 GLIBC_2.2.5 pthread_mutex_destroy F
 GLIBC_2.2.5 pthread_mutex_init F
 GLIBC_2.2.5 pthread_mutex_lock F
@@ -2099,8 +2101,10 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index f11ffd687f..0408564253 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2.5 __open F
 GLIBC_2.2.5 __open64 F
 GLIBC_2.2.5 __pread64 F
 GLIBC_2.2.5 __pthread_getspecific F
-GLIBC_2.2.5 __pthread_key_create F
 GLIBC_2.2.5 __pthread_mutex_destroy F
 GLIBC_2.2.5 __pthread_mutex_init F
 GLIBC_2.2.5 __pthread_mutex_lock F
@@ -88,7 +87,6 @@  GLIBC_2.2.5 pthread_getconcurrency F
 GLIBC_2.2.5 pthread_getcpuclockid F
 GLIBC_2.2.5 pthread_getspecific F
 GLIBC_2.2.5 pthread_join F
-GLIBC_2.2.5 pthread_key_create F
 GLIBC_2.2.5 pthread_key_delete F
 GLIBC_2.2.5 pthread_kill F
 GLIBC_2.2.5 pthread_kill_other_threads_np F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 780679cb52..74ccdc4905 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -340,6 +340,7 @@  GLIBC_2.16 __profile_frequency F
 GLIBC_2.16 __progname D 0x4
 GLIBC_2.16 __progname_full D 0x4
 GLIBC_2.16 __pthread_cleanup_routine F
+GLIBC_2.16 __pthread_key_create F
 GLIBC_2.16 __pthread_once F
 GLIBC_2.16 __pthread_unwind_next F
 GLIBC_2.16 __ptsname_r_chk F
@@ -1457,6 +1458,7 @@  GLIBC_2.16 pthread_exit F
 GLIBC_2.16 pthread_getaffinity_np F
 GLIBC_2.16 pthread_getattr_np F
 GLIBC_2.16 pthread_getschedparam F
+GLIBC_2.16 pthread_key_create F
 GLIBC_2.16 pthread_mutex_consistent F
 GLIBC_2.16 pthread_mutex_consistent_np F
 GLIBC_2.16 pthread_mutex_destroy F
@@ -2197,7 +2199,9 @@  GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 579d0ffea2..79ab1b8cef 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -14,7 +14,6 @@  GLIBC_2.16 __open F
 GLIBC_2.16 __open64 F
 GLIBC_2.16 __pread64 F
 GLIBC_2.16 __pthread_getspecific F
-GLIBC_2.16 __pthread_key_create F
 GLIBC_2.16 __pthread_mutex_destroy F
 GLIBC_2.16 __pthread_mutex_init F
 GLIBC_2.16 __pthread_mutex_lock F
@@ -89,7 +88,6 @@  GLIBC_2.16 pthread_getcpuclockid F
 GLIBC_2.16 pthread_getname_np F
 GLIBC_2.16 pthread_getspecific F
 GLIBC_2.16 pthread_join F
-GLIBC_2.16 pthread_key_create F
 GLIBC_2.16 pthread_key_delete F
 GLIBC_2.16 pthread_kill F
 GLIBC_2.16 pthread_kill_other_threads_np F