diff mbox series

[v4,08/37] nptl: Move pthread_once and __pthread_once into libc

Message ID 7402a667884c950361b9d1fb5dc132920ef2bb2c.1618564630.git.fweimer@redhat.com
State New
Headers show
Series libpthread: Remove NPTL forwarders | expand

Commit Message

Florian Weimer April 16, 2021, 9:20 a.m. UTC
And also the fork generation counter, __fork_generation.  This
eliminates the need for __fork_generation_pointer.

call_once remains in libpthread and calls the exported __pthread_once
symbol.

pthread_once and __pthread_once have been moved using
scripts/move-symbol-to-libc.py.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 nptl/Makefile                                     |  2 +-
 nptl/Versions                                     |  6 ++++--
 nptl/libc_pthread_init.c                          |  8 +-------
 nptl/nptl-init.c                                  |  4 +---
 nptl/pthreadP.h                                   |  8 +++-----
 nptl/pthread_once.c                               | 15 +++++++++++----
 sysdeps/nptl/fork.c                               |  3 +--
 sysdeps/nptl/libc-lockP.h                         | 13 ++-----------
 sysdeps/nptl/pthread-functions.h                  |  1 -
 sysdeps/unix/sysv/linux/aarch64/libc.abilist      |  4 ++++
 .../unix/sysv/linux/aarch64/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/arc/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/arc/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist   |  2 --
 .../unix/sysv/linux/m68k/coldfire/libc.abilist    |  4 ++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
 .../sysv/linux/m68k/m680x0/libpthread.abilist     |  2 --
 .../unix/sysv/linux/microblaze/be/libc.abilist    |  4 ++++
 .../sysv/linux/microblaze/be/libpthread.abilist   |  2 --
 .../unix/sysv/linux/microblaze/le/libc.abilist    |  4 ++++
 .../sysv/linux/microblaze/le/libpthread.abilist   |  2 --
 .../unix/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 --
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist  |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist  |  2 --
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist |  4 ++++
 .../linux/powerpc/powerpc32/libpthread.abilist    |  2 --
 .../linux/powerpc/powerpc32/nofpu/libc.abilist    |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/libc.abilist  |  4 ++++
 .../linux/powerpc/powerpc64/be/libpthread.abilist |  2 --
 .../sysv/linux/powerpc/powerpc64/le/libc.abilist  |  4 ++++
 .../linux/powerpc/powerpc64/le/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/riscv/rv32/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
 .../unix/sysv/linux/riscv/rv64/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
 .../sysv/linux/s390/s390-32/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
 .../sysv/linux/s390/s390-64/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist  |  2 --
 .../unix/sysv/linux/sparc/sparc32/libc.abilist    |  4 ++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist   |  2 --
 .../unix/sysv/linux/sparc/sparc64/libc.abilist    |  4 ++++
 .../sysv/linux/sparc/sparc64/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
 .../unix/sysv/linux/x86_64/64/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/x86_64/x32/libpthread.abilist |  2 --
 70 files changed, 152 insertions(+), 94 deletions(-)
diff mbox series

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index ef0fc76511..ec58e746c5 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -77,6 +77,7 @@  routines = \
   pthread_getschedparam \
   pthread_kill \
   pthread_mutex_consistent \
+  pthread_once \
   pthread_self \
   pthread_setschedparam \
   pthread_sigmask \
@@ -162,7 +163,6 @@  libpthread-routines = \
   pthread_mutexattr_setpshared \
   pthread_mutexattr_setrobust \
   pthread_mutexattr_settype \
-  pthread_once \
   pthread_rwlock_clockrdlock \
   pthread_rwlock_clockwrlock \
   pthread_rwlock_destroy \
diff --git a/nptl/Versions b/nptl/Versions
index e59a11753e..1a7946cf2f 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -1,5 +1,6 @@ 
 libc {
   GLIBC_2.0 {
+    __pthread_once;
     _pthread_cleanup_pop;
     _pthread_cleanup_pop_restore;
     _pthread_cleanup_push;
@@ -32,6 +33,7 @@  libc {
     pthread_mutex_init;
     pthread_mutex_lock;
     pthread_mutex_unlock;
+    pthread_once;
     pthread_self;
     pthread_setcancelstate;
     pthread_setcanceltype;
@@ -84,8 +86,10 @@  libc {
   }
   GLIBC_2.34 {
     __pthread_cleanup_routine;
+    __pthread_once;
     pthread_kill;
     pthread_mutex_consistent;
+    pthread_once;
   }
   GLIBC_PRIVATE {
     __futex_abstimed_wait64;
@@ -135,7 +139,6 @@  libpthread {
     __pthread_mutexattr_destroy;
     __pthread_mutexattr_init;
     __pthread_mutexattr_settype;
-    __pthread_once;
     __pthread_setspecific;
     _exit;
     flockfile;
@@ -164,7 +167,6 @@  libpthread {
     pthread_mutexattr_getkind_np;
     pthread_mutexattr_init;
     pthread_mutexattr_setkind_np;
-    pthread_once;
     pthread_setcancelstate;
     pthread_setcanceltype;
     pthread_setspecific;
diff --git a/nptl/libc_pthread_init.c b/nptl/libc_pthread_init.c
index 4de182b4e4..b67a69f9a1 100644
--- a/nptl/libc_pthread_init.c
+++ b/nptl/libc_pthread_init.c
@@ -28,9 +28,6 @@ 
 #include <ldsodefs.h>
 
 
-unsigned long int *__fork_generation_pointer;
-
-
 #ifdef TLS_MULTIPLE_THREADS_IN_TCB
 void
 #else
@@ -38,12 +35,9 @@  extern int __libc_multiple_threads attribute_hidden;
 
 int *
 #endif
-__libc_pthread_init (unsigned long int *ptr, void (*reclaim) (void),
+__libc_pthread_init (void (*reclaim) (void),
 		     const struct pthread_functions *functions)
 {
-  /* Remember the pointer to the generation counter in libpthread.  */
-  __fork_generation_pointer = ptr;
-
   /* Called by a child after fork.  */
   __register_atfork (NULL, NULL, reclaim, NULL);
 
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 9decc143cb..b683adb698 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -87,7 +87,6 @@  static const struct pthread_functions pthread_functions =
     .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
     .ptr___pthread_setcancelstate = __pthread_setcancelstate,
     .ptr_pthread_setcanceltype = __pthread_setcanceltype,
-    .ptr___pthread_once = __pthread_once,
     .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
     .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
     .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
@@ -333,8 +332,7 @@  __pthread_initialize_minimal_internal (void)
 #ifndef TLS_MULTIPLE_THREADS_IN_TCB
   __libc_multiple_threads_ptr =
 #endif
-    __libc_pthread_init (&__fork_generation, __reclaim_stacks,
-			 ptr_pthread_functions);
+    __libc_pthread_init (__reclaim_stacks, ptr_pthread_functions);
 
 #if HAVE_TUNABLES
   __pthread_tunables_init ();
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index ab0e92f2ca..75fec43fed 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -361,12 +361,10 @@  extern unsigned long int *__fork_generation_pointer attribute_hidden;
 
 /* Register the generation counter in the libpthread with the libc.  */
 #ifdef TLS_MULTIPLE_THREADS_IN_TCB
-extern void __libc_pthread_init (unsigned long int *ptr,
-				 void (*reclaim) (void),
+extern void __libc_pthread_init (void (*reclaim) (void),
 				 const struct pthread_functions *functions);
 #else
-extern int *__libc_pthread_init (unsigned long int *ptr,
-				 void (*reclaim) (void),
+extern int *__libc_pthread_init (void (*reclaim) (void),
 				 const struct pthread_functions *functions);
 
 /* Variable set to a nonzero value either if more than one thread runs or ran,
@@ -525,6 +523,7 @@  extern void *__pthread_getspecific (pthread_key_t key);
 extern int __pthread_setspecific (pthread_key_t key, const void *value);
 extern int __pthread_once (pthread_once_t *once_control,
 			   void (*init_routine) (void));
+libc_hidden_proto (__pthread_once)
 extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
 			     void (*child) (void));
 extern pthread_t __pthread_self (void);
@@ -557,7 +556,6 @@  hidden_proto (__pthread_rwlock_unlock)
 hidden_proto (__pthread_key_create)
 hidden_proto (__pthread_getspecific)
 hidden_proto (__pthread_setspecific)
-hidden_proto (__pthread_once)
 hidden_proto (__pthread_setcancelstate)
 hidden_proto (__pthread_testcancel)
 hidden_proto (__pthread_mutexattr_init)
diff --git a/nptl/pthread_once.c b/nptl/pthread_once.c
index 7645da222a..323583c118 100644
--- a/nptl/pthread_once.c
+++ b/nptl/pthread_once.c
@@ -19,7 +19,8 @@ 
 #include "pthreadP.h"
 #include <futex-internal.h>
 #include <atomic.h>
-
+#include <libc-lockP.h>
+#include <shlib-compat.h>
 
 unsigned long int __fork_generation attribute_hidden;
 
@@ -132,7 +133,7 @@  __pthread_once_slow (pthread_once_t *once_control, void (*init_routine) (void))
 }
 
 int
-__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
+___pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
 {
   /* Fast path.  See __pthread_once_slow.  */
   int val;
@@ -142,5 +143,11 @@  __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
   else
     return __pthread_once_slow (once_control, init_routine);
 }
-weak_alias (__pthread_once, pthread_once)
-hidden_def (__pthread_once)
+versioned_symbol (libc, ___pthread_once, __pthread_once, GLIBC_2_34);
+libc_hidden_ver (___pthread_once, __pthread_once)
+
+versioned_symbol (libc, ___pthread_once, pthread_once, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libpthread, ___pthread_once, __pthread_once, GLIBC_2_0);
+compat_symbol (libpthread, ___pthread_once, pthread_once, GLIBC_2_0);
+#endif
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 9737127cd6..ccdda11a7c 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -88,8 +88,7 @@  __libc_fork (void)
       struct pthread *self = THREAD_SELF;
 
       /* See __pthread_once.  */
-      if (__fork_generation_pointer != NULL)
-	*__fork_generation_pointer += __PTHREAD_ONCE_FORK_GEN_INCR;
+      __fork_generation += __PTHREAD_ONCE_FORK_GEN_INCR;
 
       /* Initialize the robust mutex list setting in the kernel which has
 	 been reset during the fork.  We do not check for errors because if
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index 2c928b7a76..ca3edd0af1 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -238,15 +238,7 @@  _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
 
 /* Call handler iff the first call.  */
 #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
-  do {									      \
-    if (PTFAVAIL (__pthread_once))					      \
-      __libc_ptf_call_always (__pthread_once, (&(ONCE_CONTROL),		      \
-					       INIT_FUNCTION));		      \
-    else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) {			      \
-      INIT_FUNCTION ();							      \
-      (ONCE_CONTROL) |= 2;						      \
-    }									      \
-  } while (0)
+  __pthread_once (&(ONCE_CONTROL), INIT_FUNCTION)
 
 /* Get once control variable.  */
 #define __libc_once_get(ONCE_CONTROL)	((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
@@ -334,6 +326,7 @@  extern void *__pthread_getspecific (pthread_key_t __key);
 
 extern int __pthread_once (pthread_once_t *__once_control,
 			   void (*__init_routine) (void));
+libc_hidden_proto (__pthread_once)
 
 extern int __pthread_atfork (void (*__prepare) (void),
 			     void (*__parent) (void),
@@ -364,7 +357,6 @@  weak_extern (__pthread_rwlock_unlock)
 weak_extern (__pthread_key_create)
 weak_extern (__pthread_setspecific)
 weak_extern (__pthread_getspecific)
-weak_extern (__pthread_once)
 weak_extern (__pthread_initialize)
 weak_extern (__pthread_atfork)
 weak_extern (__pthread_setcancelstate)
@@ -386,7 +378,6 @@  weak_extern (__pthread_setcancelstate)
 #  pragma weak __pthread_key_create
 #  pragma weak __pthread_setspecific
 #  pragma weak __pthread_getspecific
-#  pragma weak __pthread_once
 #  pragma weak __pthread_initialize
 #  pragma weak __pthread_atfork
 #  pragma weak __pthread_setcancelstate
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 1bbe609598..6ef7602cb9 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -49,7 +49,6 @@  struct pthread_functions
   int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
   int (*ptr___pthread_setcancelstate) (int, int *);
   int (*ptr_pthread_setcanceltype) (int, int *);
-  int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
   int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
   int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
   int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 12895b08b5..bc77a51673 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_once F
 GLIBC_2.17 __ptsname_r_chk F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __rawmemchr F
@@ -1455,6 +1456,7 @@  GLIBC_2.17 pthread_mutex_destroy F
 GLIBC_2.17 pthread_mutex_init F
 GLIBC_2.17 pthread_mutex_lock F
 GLIBC_2.17 pthread_mutex_unlock F
+GLIBC_2.17 pthread_once F
 GLIBC_2.17 pthread_self F
 GLIBC_2.17 pthread_setcancelstate F
 GLIBC_2.17 pthread_setcanceltype F
@@ -2182,5 +2184,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 1af15835d7..d7db479580 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.17 __pthread_mutex_unlock F
 GLIBC_2.17 __pthread_mutexattr_destroy F
 GLIBC_2.17 __pthread_mutexattr_init F
 GLIBC_2.17 __pthread_mutexattr_settype F
-GLIBC_2.17 __pthread_once F
 GLIBC_2.17 __pthread_register_cancel F
 GLIBC_2.17 __pthread_register_cancel_defer F
 GLIBC_2.17 __pthread_rwlock_destroy F
@@ -91,7 +90,6 @@  GLIBC_2.17 pthread_mutexattr_setpshared F
 GLIBC_2.17 pthread_mutexattr_setrobust F
 GLIBC_2.17 pthread_mutexattr_setrobust_np F
 GLIBC_2.17 pthread_mutexattr_settype F
-GLIBC_2.17 pthread_once F
 GLIBC_2.17 pthread_rwlock_destroy F
 GLIBC_2.17 pthread_rwlock_init F
 GLIBC_2.17 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 732ea877dc..a178ce7f31 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x8
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x8
@@ -892,6 +893,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2270,8 +2272,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index cb89cb21d1..2a22ffa684 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 7951038086..c65b78075f 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_once F
 GLIBC_2.32 __ptsname_r_chk F
 GLIBC_2.32 __pwrite64 F
 GLIBC_2.32 __rawmemchr F
@@ -1381,6 +1382,7 @@  GLIBC_2.32 pthread_mutex_destroy F
 GLIBC_2.32 pthread_mutex_init F
 GLIBC_2.32 pthread_mutex_lock F
 GLIBC_2.32 pthread_mutex_unlock F
+GLIBC_2.32 pthread_once F
 GLIBC_2.32 pthread_self F
 GLIBC_2.32 pthread_setcancelstate F
 GLIBC_2.32 pthread_setcanceltype F
@@ -1941,5 +1943,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 07304e7949..db93147ebc 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.32 __pthread_mutex_unlock F
 GLIBC_2.32 __pthread_mutexattr_destroy F
 GLIBC_2.32 __pthread_mutexattr_init F
 GLIBC_2.32 __pthread_mutexattr_settype F
-GLIBC_2.32 __pthread_once F
 GLIBC_2.32 __pthread_register_cancel F
 GLIBC_2.32 __pthread_register_cancel_defer F
 GLIBC_2.32 __pthread_rwlock_destroy F
@@ -108,7 +107,6 @@  GLIBC_2.32 pthread_mutexattr_setpshared F
 GLIBC_2.32 pthread_mutexattr_setrobust F
 GLIBC_2.32 pthread_mutexattr_setrobust_np F
 GLIBC_2.32 pthread_mutexattr_settype F
-GLIBC_2.32 pthread_once F
 GLIBC_2.32 pthread_rwlock_clockrdlock F
 GLIBC_2.32 pthread_rwlock_clockwrlock F
 GLIBC_2.32 pthread_rwlock_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 58114f1a4e..b7f575400f 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -488,6 +490,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_once F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
@@ -1550,6 +1553,7 @@  GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 7eeb4433a9..ca348c073a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -47,7 +47,6 @@  GLIBC_2.4 __pthread_mutex_unlock F
 GLIBC_2.4 __pthread_mutexattr_destroy F
 GLIBC_2.4 __pthread_mutexattr_init F
 GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_mutexattr_setprotocol F
 GLIBC_2.4 pthread_mutexattr_setpshared F
 GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
 GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 91a406f92d..bb86b0c11a 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -485,6 +487,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_once F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
@@ -1547,6 +1550,7 @@  GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 7eeb4433a9..ca348c073a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -47,7 +47,6 @@  GLIBC_2.4 __pthread_mutex_unlock F
 GLIBC_2.4 __pthread_mutexattr_destroy F
 GLIBC_2.4 __pthread_mutexattr_init F
 GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_mutexattr_setprotocol F
 GLIBC_2.4 pthread_mutexattr_setpshared F
 GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
 GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index e24e8cb91e..311a9ec0ab 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_once F
 GLIBC_2.29 __ptsname_r_chk F
 GLIBC_2.29 __pwrite64 F
 GLIBC_2.29 __rawmemchr F
@@ -1442,6 +1443,7 @@  GLIBC_2.29 pthread_mutex_destroy F
 GLIBC_2.29 pthread_mutex_init F
 GLIBC_2.29 pthread_mutex_lock F
 GLIBC_2.29 pthread_mutex_unlock F
+GLIBC_2.29 pthread_once F
 GLIBC_2.29 pthread_self F
 GLIBC_2.29 pthread_setcancelstate F
 GLIBC_2.29 pthread_setcanceltype F
@@ -2125,5 +2127,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 6f519a21a9..00b134fdc0 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.29 __pthread_mutex_unlock F
 GLIBC_2.29 __pthread_mutexattr_destroy F
 GLIBC_2.29 __pthread_mutexattr_init F
 GLIBC_2.29 __pthread_mutexattr_settype F
-GLIBC_2.29 __pthread_once F
 GLIBC_2.29 __pthread_register_cancel F
 GLIBC_2.29 __pthread_register_cancel_defer F
 GLIBC_2.29 __pthread_rwlock_destroy F
@@ -105,7 +104,6 @@  GLIBC_2.29 pthread_mutexattr_setpshared F
 GLIBC_2.29 pthread_mutexattr_setrobust F
 GLIBC_2.29 pthread_mutexattr_setrobust_np F
 GLIBC_2.29 pthread_mutexattr_settype F
-GLIBC_2.29 pthread_once F
 GLIBC_2.29 pthread_rwlock_destroy F
 GLIBC_2.29 pthread_rwlock_init F
 GLIBC_2.29 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index fa83c016a0..e844ff708a 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1276,6 +1277,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2083,8 +2085,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 709a3065c7..7894da456f 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 969cb27bbd..dd2b1bf53f 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -869,6 +870,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2260,8 +2262,10 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index f18fce9353..ca110278ec 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index aa30e0f51a..d992dfcb8e 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1297,6 +1298,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2117,8 +2119,10 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index dcbcfddae2..c5471a5aaf 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 8a11b9f9af..6f65f0dbf3 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0x98
 GLIBC_2.4 _IO_2_1_stdin_ D 0x98
@@ -474,6 +476,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_once F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
@@ -1530,6 +1533,7 @@  GLIBC_2.4 pthread_mutex_destroy F
 GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 7eeb4433a9..ca348c073a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -47,7 +47,6 @@  GLIBC_2.4 __pthread_mutex_unlock F
 GLIBC_2.4 __pthread_mutexattr_destroy F
 GLIBC_2.4 __pthread_mutexattr_init F
 GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
 GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
@@ -122,7 +121,6 @@  GLIBC_2.4 pthread_mutexattr_setprotocol F
 GLIBC_2.4 pthread_mutexattr_setpshared F
 GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
 GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 404fbc5e6d..c50e22f248 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -868,6 +869,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2203,8 +2205,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index f18fce9353..ca110278ec 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index afbc5fe040..0cebd1ead4 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_once F
 GLIBC_2.18 __ptsname_r_chk F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __rawmemchr F
@@ -1457,6 +1458,7 @@  GLIBC_2.18 pthread_mutex_destroy F
 GLIBC_2.18 pthread_mutex_init F
 GLIBC_2.18 pthread_mutex_lock F
 GLIBC_2.18 pthread_mutex_unlock F
+GLIBC_2.18 pthread_once F
 GLIBC_2.18 pthread_self F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
@@ -2176,5 +2178,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 5dc126db6f..8ee5bcffb3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.18 __pthread_mutex_unlock F
 GLIBC_2.18 __pthread_mutexattr_destroy F
 GLIBC_2.18 __pthread_mutexattr_init F
 GLIBC_2.18 __pthread_mutexattr_settype F
-GLIBC_2.18 __pthread_once F
 GLIBC_2.18 __pthread_register_cancel F
 GLIBC_2.18 __pthread_register_cancel_defer F
 GLIBC_2.18 __pthread_rwlock_destroy F
@@ -92,7 +91,6 @@  GLIBC_2.18 pthread_mutexattr_setpshared F
 GLIBC_2.18 pthread_mutexattr_setrobust F
 GLIBC_2.18 pthread_mutexattr_setrobust_np F
 GLIBC_2.18 pthread_mutexattr_settype F
-GLIBC_2.18 pthread_once F
 GLIBC_2.18 pthread_rwlock_destroy F
 GLIBC_2.18 pthread_rwlock_init F
 GLIBC_2.18 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d4d37eae2a..7c39cc1de3 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_once F
 GLIBC_2.18 __ptsname_r_chk F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __rawmemchr F
@@ -1457,6 +1458,7 @@  GLIBC_2.18 pthread_mutex_destroy F
 GLIBC_2.18 pthread_mutex_init F
 GLIBC_2.18 pthread_mutex_lock F
 GLIBC_2.18 pthread_mutex_unlock F
+GLIBC_2.18 pthread_once F
 GLIBC_2.18 pthread_self F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
@@ -2173,5 +2175,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 5dc126db6f..8ee5bcffb3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.18 __pthread_mutex_unlock F
 GLIBC_2.18 __pthread_mutexattr_destroy F
 GLIBC_2.18 __pthread_mutexattr_init F
 GLIBC_2.18 __pthread_mutexattr_settype F
-GLIBC_2.18 __pthread_once F
 GLIBC_2.18 __pthread_register_cancel F
 GLIBC_2.18 __pthread_register_cancel_defer F
 GLIBC_2.18 __pthread_rwlock_destroy F
@@ -92,7 +91,6 @@  GLIBC_2.18 pthread_mutexattr_setpshared F
 GLIBC_2.18 pthread_mutexattr_setrobust F
 GLIBC_2.18 pthread_mutexattr_setrobust_np F
 GLIBC_2.18 pthread_mutexattr_settype F
-GLIBC_2.18 pthread_once F
 GLIBC_2.18 pthread_rwlock_destroy F
 GLIBC_2.18 pthread_rwlock_init F
 GLIBC_2.18 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a21d435f14..2dda1422bb 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -865,6 +866,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index ac5fd281e9..8033493435 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 020d46f4bd..9ea18faa53 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -865,6 +866,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2164,8 +2166,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index ac5fd281e9..8033493435 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 0f20b3f067..e69909ea6c 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -865,6 +866,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2172,8 +2174,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_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 b9d5d40018..7957f861da 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x8
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x8
@@ -863,6 +864,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 665472df33..c2e1f8ad71 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_once F
 GLIBC_2.21 __ptsname_r_chk F
 GLIBC_2.21 __pwrite64 F
 GLIBC_2.21 __rawmemchr F
@@ -1500,6 +1501,7 @@  GLIBC_2.21 pthread_mutex_destroy F
 GLIBC_2.21 pthread_mutex_init F
 GLIBC_2.21 pthread_mutex_lock F
 GLIBC_2.21 pthread_mutex_unlock F
+GLIBC_2.21 pthread_once F
 GLIBC_2.21 pthread_self F
 GLIBC_2.21 pthread_setcancelstate F
 GLIBC_2.21 pthread_setcanceltype F
@@ -2215,5 +2217,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 c29e86eb94..7e98fb0c37 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.21 __pthread_mutex_unlock F
 GLIBC_2.21 __pthread_mutexattr_destroy F
 GLIBC_2.21 __pthread_mutexattr_init F
 GLIBC_2.21 __pthread_mutexattr_settype F
-GLIBC_2.21 __pthread_once F
 GLIBC_2.21 __pthread_register_cancel F
 GLIBC_2.21 __pthread_register_cancel_defer F
 GLIBC_2.21 __pthread_rwlock_destroy F
@@ -92,7 +91,6 @@  GLIBC_2.21 pthread_mutexattr_setpshared F
 GLIBC_2.21 pthread_mutexattr_setrobust F
 GLIBC_2.21 pthread_mutexattr_setrobust_np F
 GLIBC_2.21 pthread_mutexattr_settype F
-GLIBC_2.21 pthread_once F
 GLIBC_2.21 pthread_rwlock_destroy F
 GLIBC_2.21 pthread_rwlock_init F
 GLIBC_2.21 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4c62c06418..b986052c97 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -876,6 +877,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2230,8 +2232,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 5834972a63..d792002a3a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 84125b68dd..56b6bb30f8 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -876,6 +877,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2263,8 +2265,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index b4b38770a5..413526648c 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_once F
 GLIBC_2.3 __pwrite64 F
 GLIBC_2.3 __rawmemchr F
 GLIBC_2.3 __rcmd_errstr D 0x8
@@ -1383,6 +1384,7 @@  GLIBC_2.3 pthread_mutex_destroy F
 GLIBC_2.3 pthread_mutex_init F
 GLIBC_2.3 pthread_mutex_lock F
 GLIBC_2.3 pthread_mutex_unlock F
+GLIBC_2.3 pthread_once F
 GLIBC_2.3 pthread_self F
 GLIBC_2.3 pthread_setcancelstate F
 GLIBC_2.3 pthread_setcanceltype 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 4cccc15046..d2b99c7daa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -41,7 +41,6 @@  GLIBC_2.3 __pthread_mutex_unlock F
 GLIBC_2.3 __pthread_mutexattr_destroy F
 GLIBC_2.3 __pthread_mutexattr_init F
 GLIBC_2.3 __pthread_mutexattr_settype F
-GLIBC_2.3 __pthread_once F
 GLIBC_2.3 __pthread_rwlock_destroy F
 GLIBC_2.3 __pthread_rwlock_init F
 GLIBC_2.3 __pthread_rwlock_rdlock F
@@ -99,7 +98,6 @@  GLIBC_2.3 pthread_mutexattr_init F
 GLIBC_2.3 pthread_mutexattr_setkind_np F
 GLIBC_2.3 pthread_mutexattr_setpshared F
 GLIBC_2.3 pthread_mutexattr_settype F
-GLIBC_2.3 pthread_once F
 GLIBC_2.3 pthread_rwlock_destroy F
 GLIBC_2.3 pthread_rwlock_init F
 GLIBC_2.3 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 05ff5cfa96..7960c6ba23 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_once F
 GLIBC_2.17 __ptsname_r_chk F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __rawmemchr F
@@ -1543,6 +1544,7 @@  GLIBC_2.17 pthread_mutex_destroy F
 GLIBC_2.17 pthread_mutex_init F
 GLIBC_2.17 pthread_mutex_lock F
 GLIBC_2.17 pthread_mutex_unlock F
+GLIBC_2.17 pthread_once F
 GLIBC_2.17 pthread_self F
 GLIBC_2.17 pthread_setcancelstate F
 GLIBC_2.17 pthread_setcanceltype F
@@ -2378,5 +2380,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
 GLIBC_2.34 pthread_kill 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 1af15835d7..d7db479580 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.17 __pthread_mutex_unlock F
 GLIBC_2.17 __pthread_mutexattr_destroy F
 GLIBC_2.17 __pthread_mutexattr_init F
 GLIBC_2.17 __pthread_mutexattr_settype F
-GLIBC_2.17 __pthread_once F
 GLIBC_2.17 __pthread_register_cancel F
 GLIBC_2.17 __pthread_register_cancel_defer F
 GLIBC_2.17 __pthread_rwlock_destroy F
@@ -91,7 +90,6 @@  GLIBC_2.17 pthread_mutexattr_setpshared F
 GLIBC_2.17 pthread_mutexattr_setrobust F
 GLIBC_2.17 pthread_mutexattr_setrobust_np F
 GLIBC_2.17 pthread_mutexattr_settype F
-GLIBC_2.17 pthread_once F
 GLIBC_2.17 pthread_rwlock_destroy F
 GLIBC_2.17 pthread_rwlock_init F
 GLIBC_2.17 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index ba056b0292..b1446b3e47 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_once F
 GLIBC_2.33 __ptsname_r_chk F
 GLIBC_2.33 __pwrite64 F
 GLIBC_2.33 __rawmemchr F
@@ -1383,6 +1384,7 @@  GLIBC_2.33 pthread_mutex_destroy F
 GLIBC_2.33 pthread_mutex_init F
 GLIBC_2.33 pthread_mutex_lock F
 GLIBC_2.33 pthread_mutex_unlock F
+GLIBC_2.33 pthread_once F
 GLIBC_2.33 pthread_self F
 GLIBC_2.33 pthread_setcancelstate F
 GLIBC_2.33 pthread_setcanceltype F
@@ -1943,5 +1945,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 a1c20a854c..060c4c8166 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.33 __pthread_mutex_unlock F
 GLIBC_2.33 __pthread_mutexattr_destroy F
 GLIBC_2.33 __pthread_mutexattr_init F
 GLIBC_2.33 __pthread_mutexattr_settype F
-GLIBC_2.33 __pthread_once F
 GLIBC_2.33 __pthread_register_cancel F
 GLIBC_2.33 __pthread_register_cancel_defer F
 GLIBC_2.33 __pthread_rwlock_destroy F
@@ -108,7 +107,6 @@  GLIBC_2.33 pthread_mutexattr_setpshared F
 GLIBC_2.33 pthread_mutexattr_setrobust F
 GLIBC_2.33 pthread_mutexattr_setrobust_np F
 GLIBC_2.33 pthread_mutexattr_settype F
-GLIBC_2.33 pthread_once F
 GLIBC_2.33 pthread_rwlock_clockrdlock F
 GLIBC_2.33 pthread_rwlock_clockwrlock F
 GLIBC_2.33 pthread_rwlock_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 50f38c226f..7b541db179 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_once F
 GLIBC_2.27 __ptsname_r_chk F
 GLIBC_2.27 __pwrite64 F
 GLIBC_2.27 __rawmemchr F
@@ -1445,6 +1446,7 @@  GLIBC_2.27 pthread_mutex_destroy F
 GLIBC_2.27 pthread_mutex_init F
 GLIBC_2.27 pthread_mutex_lock F
 GLIBC_2.27 pthread_mutex_unlock F
+GLIBC_2.27 pthread_once F
 GLIBC_2.27 pthread_self F
 GLIBC_2.27 pthread_setcancelstate F
 GLIBC_2.27 pthread_setcanceltype F
@@ -2143,5 +2145,7 @@  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_once F
 GLIBC_2.34 pthread_kill 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 046420055b..0da6ea80a1 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.27 __pthread_mutex_unlock F
 GLIBC_2.27 __pthread_mutexattr_destroy F
 GLIBC_2.27 __pthread_mutexattr_init F
 GLIBC_2.27 __pthread_mutexattr_settype F
-GLIBC_2.27 __pthread_once F
 GLIBC_2.27 __pthread_register_cancel F
 GLIBC_2.27 __pthread_register_cancel_defer F
 GLIBC_2.27 __pthread_rwlock_destroy F
@@ -92,7 +91,6 @@  GLIBC_2.27 pthread_mutexattr_setpshared F
 GLIBC_2.27 pthread_mutexattr_setrobust F
 GLIBC_2.27 pthread_mutexattr_setrobust_np F
 GLIBC_2.27 pthread_mutexattr_settype F
-GLIBC_2.27 pthread_once F
 GLIBC_2.27 pthread_rwlock_destroy F
 GLIBC_2.27 pthread_rwlock_init F
 GLIBC_2.27 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 5f3ae094fe..078dd7b3a9 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -867,6 +868,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2228,8 +2230,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 16e2d902c5..33153dea7f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 74164c6333..6e20c1d05d 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1294,6 +1295,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2121,8 +2123,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index da88becd5e..19381fee60 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -21,7 +21,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -80,7 +79,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 74844f795c..9377e8d224 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1280,6 +1281,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2090,8 +2092,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 709a3065c7..7894da456f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 341abf5bc8..3ec049b709 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1280,6 +1281,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype 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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 709a3065c7..7894da456f 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 318995dbc5..c4faaa416b 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_once F
 GLIBC_2.0 __rcmd_errstr D 0x4
 GLIBC_2.0 __read F
 GLIBC_2.0 __realloc_hook D 0x4
@@ -870,6 +871,7 @@  GLIBC_2.0 pthread_mutex_destroy F
 GLIBC_2.0 pthread_mutex_init F
 GLIBC_2.0 pthread_mutex_lock F
 GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_self F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
@@ -2219,8 +2221,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index cb89cb21d1..2a22ffa684 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.0 __pthread_mutex_unlock F
 GLIBC_2.0 __pthread_mutexattr_destroy F
 GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
 GLIBC_2.0 flockfile F
 GLIBC_2.0 ftrylockfile F
@@ -41,7 +40,6 @@  GLIBC_2.0 pthread_mutexattr_destroy F
 GLIBC_2.0 pthread_mutexattr_getkind_np F
 GLIBC_2.0 pthread_mutexattr_init F
 GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
 GLIBC_2.0 pthread_setcancelstate F
 GLIBC_2.0 pthread_setcanceltype F
 GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index c39ae6fe21..0698a3cec3 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_once F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1323,6 +1324,7 @@  GLIBC_2.2 pthread_mutex_destroy F
 GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2138,8 +2140,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_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index dcbcfddae2..c5471a5aaf 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2 __pthread_mutex_unlock F
 GLIBC_2.2 __pthread_mutexattr_destroy F
 GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
 GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2 pthread_mutexattr_init F
 GLIBC_2.2 pthread_mutexattr_setkind_np F
 GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
 GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 260320a7ab..efa7aed9a1 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_once F
 GLIBC_2.2.5 __pwrite64 F
 GLIBC_2.2.5 __rawmemchr F
 GLIBC_2.2.5 __rcmd_errstr D 0x8
@@ -1291,6 +1292,7 @@  GLIBC_2.2.5 pthread_mutex_destroy F
 GLIBC_2.2.5 pthread_mutex_init F
 GLIBC_2.2.5 pthread_mutex_lock F
 GLIBC_2.2.5 pthread_mutex_unlock F
+GLIBC_2.2.5 pthread_once F
 GLIBC_2.2.5 pthread_self F
 GLIBC_2.2.5 pthread_setcancelstate F
 GLIBC_2.2.5 pthread_setcanceltype F
@@ -2099,8 +2101,10 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_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 f1904bd31f..360ebbf618 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -20,7 +20,6 @@  GLIBC_2.2.5 __pthread_mutex_unlock F
 GLIBC_2.2.5 __pthread_mutexattr_destroy F
 GLIBC_2.2.5 __pthread_mutexattr_init F
 GLIBC_2.2.5 __pthread_mutexattr_settype F
-GLIBC_2.2.5 __pthread_once F
 GLIBC_2.2.5 __pthread_rwlock_destroy F
 GLIBC_2.2.5 __pthread_rwlock_init F
 GLIBC_2.2.5 __pthread_rwlock_rdlock F
@@ -79,7 +78,6 @@  GLIBC_2.2.5 pthread_mutexattr_init F
 GLIBC_2.2.5 pthread_mutexattr_setkind_np F
 GLIBC_2.2.5 pthread_mutexattr_setpshared F
 GLIBC_2.2.5 pthread_mutexattr_settype F
-GLIBC_2.2.5 pthread_once F
 GLIBC_2.2.5 pthread_rwlock_destroy F
 GLIBC_2.2.5 pthread_rwlock_init F
 GLIBC_2.2.5 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index d854fb5ece..9b5b8ebbfa 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_once F
 GLIBC_2.16 __ptsname_r_chk F
 GLIBC_2.16 __pwrite64 F
 GLIBC_2.16 __rawmemchr F
@@ -1462,6 +1463,7 @@  GLIBC_2.16 pthread_mutex_destroy F
 GLIBC_2.16 pthread_mutex_init F
 GLIBC_2.16 pthread_mutex_lock F
 GLIBC_2.16 pthread_mutex_unlock F
+GLIBC_2.16 pthread_once F
 GLIBC_2.16 pthread_self F
 GLIBC_2.16 pthread_setcancelstate F
 GLIBC_2.16 pthread_setcanceltype F
@@ -2197,5 +2199,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
 GLIBC_2.34 pthread_kill 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 302d7dc913..1146db590c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -13,7 +13,6 @@  GLIBC_2.16 __pthread_mutex_unlock F
 GLIBC_2.16 __pthread_mutexattr_destroy F
 GLIBC_2.16 __pthread_mutexattr_init F
 GLIBC_2.16 __pthread_mutexattr_settype F
-GLIBC_2.16 __pthread_once F
 GLIBC_2.16 __pthread_register_cancel F
 GLIBC_2.16 __pthread_register_cancel_defer F
 GLIBC_2.16 __pthread_rwlock_destroy F
@@ -91,7 +90,6 @@  GLIBC_2.16 pthread_mutexattr_setpshared F
 GLIBC_2.16 pthread_mutexattr_setrobust F
 GLIBC_2.16 pthread_mutexattr_setrobust_np F
 GLIBC_2.16 pthread_mutexattr_settype F
-GLIBC_2.16 pthread_once F
 GLIBC_2.16 pthread_rwlock_destroy F
 GLIBC_2.16 pthread_rwlock_init F
 GLIBC_2.16 pthread_rwlock_rdlock F