[02/19] nptl: Move call_once into libc

Message ID 153f16014e686af477c0e8b9509ab24fb74913f9.1619456219.git.fweimer@redhat.com
State Committed
Commit 575295fc8314b089e52f98de4aa16a9d7aeb9bf4
Headers
Series nptl: Move most C11 symbols into libc |

Commit Message

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

This change also turns __pthread_once into a compatibility symbol
because after the call_once move, an internal call to __pthread_once
can be used.  This an adjustment to __libc_once: Outside libc (e.g.,
in nscd), it has to call pthread_once.  With __pthread_once as a
compatibility symbol, it is no longer to add a new GLIBC_2.34
version after the move from libpthread, and this commit removes
the new __pthread_once@@GLIBC_2.34 version.
---
 nptl/Versions                                         |  4 ++--
 nptl/pthread_once.c                                   |  4 +++-
 sysdeps/nptl/libc-lockP.h                             | 10 ++++++++--
 sysdeps/pthread/Makefile                              |  3 +--
 sysdeps/pthread/call_once.c                           | 11 ++++++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  3 ++-
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist            |  3 ++-
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist              |  3 ++-
 sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  3 ++-
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  3 ++-
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist             |  3 ++-
 sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist             |  3 ++-
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist             |  3 ++-
 sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist             |  3 ++-
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  3 ++-
 .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  3 ++-
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  3 ++-
 .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  3 ++-
 .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  3 ++-
 .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  3 ++-
 .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  3 ++-
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  3 ++-
 sysdeps/unix/sysv/linux/nios2/libc.abilist            |  3 ++-
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  3 ++-
 .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
 .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  3 ++-
 .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  3 ++-
 .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
 .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  3 ++-
 .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  3 ++-
 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  3 ++-
 sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  3 ++-
 .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  3 ++-
 .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  3 ++-
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  3 ++-
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  3 ++-
 .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  3 ++-
 .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  3 ++-
 sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  3 ++-
 sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
 66 files changed, 88 insertions(+), 69 deletions(-)
  

Comments

Carlos O'Donell May 2, 2021, 8:46 p.m. UTC | #1
On 4/26/21 1:00 PM, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> This change also turns __pthread_once into a compatibility symbol
> because after the call_once move, an internal call to __pthread_once
> can be used.  This an adjustment to __libc_once: Outside libc (e.g.,
> in nscd), it has to call pthread_once.  With __pthread_once as a
> compatibility symbol, it is no longer to add a new GLIBC_2.34
> version after the move from libpthread, and this commit removes
> the new __pthread_once@@GLIBC_2.34 version.

Tested and reviewed on x86_64 and i686.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  nptl/Versions                                         |  4 ++--
>  nptl/pthread_once.c                                   |  4 +++-
>  sysdeps/nptl/libc-lockP.h                             | 10 ++++++++--
>  sysdeps/pthread/Makefile                              |  3 +--
>  sysdeps/pthread/call_once.c                           | 11 ++++++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  3 ++-
>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist            |  3 ++-
>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist              |  3 ++-
>  sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  3 ++-
>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  3 ++-
>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist             |  3 ++-
>  sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist             |  3 ++-
>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist             |  3 ++-
>  sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist             |  3 ++-
>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  3 ++-
>  .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  3 ++-
>  .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  3 ++-
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  3 ++-
>  sysdeps/unix/sysv/linux/nios2/libc.abilist            |  3 ++-
>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  3 ++-
>  .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
>  .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  3 ++-
>  .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  3 ++-
>  .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
>  .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  3 ++-
>  .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  3 ++-
>  sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  3 ++-
>  sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  3 ++-
>  .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  3 ++-
>  .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  3 ++-
>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  3 ++-
>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  3 ++-
>  .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  3 ++-
>  sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  3 ++-
>  sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
>  66 files changed, 88 insertions(+), 69 deletions(-)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index 03e159ee0f..1217a15bdf 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -126,6 +126,7 @@ libc {
>    }
>    # C11 thread symbols.
>    GLIBC_2.28 {
> +    call_once;
>      thrd_current;
>      thrd_equal;
>      thrd_sleep;
> @@ -153,8 +154,8 @@ libc {
>      __pthread_mutex_unlock;
>      __pthread_mutexattr_init;
>      __pthread_mutexattr_settype;
> -    __pthread_once;
>      __pthread_setspecific;
> +    call_once;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -373,7 +374,6 @@ libpthread {
>  
>    # C11 thread symbols.
>    GLIBC_2.28 {
> -    call_once;
>      cnd_broadcast;
>      cnd_destroy;
>      cnd_init;
> diff --git a/nptl/pthread_once.c b/nptl/pthread_once.c
> index 323583c118..e8cf54cf96 100644
> --- a/nptl/pthread_once.c
> +++ b/nptl/pthread_once.c
> @@ -143,8 +143,10 @@ ___pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
>    else
>      return __pthread_once_slow (once_control, init_routine);
>  }
> -versioned_symbol (libc, ___pthread_once, __pthread_once, GLIBC_2_34);
>  libc_hidden_ver (___pthread_once, __pthread_once)
> +#ifndef SHARED
> +strong_alias (___pthread_once, __pthread_once)
> +#endif
>  
>  versioned_symbol (libc, ___pthread_once, pthread_once, GLIBC_2_34);
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index e573689799..aad9c9778c 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -210,9 +210,15 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>    CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT
>  #endif
>  
> -/* Call handler iff the first call.  */
> -#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
> +/* Call handler iff the first call.  Use a local call in libc, but the
> +   global pthread_once symbol elsewhere.  */
> +#if IS_IN (libc)
> +# define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
>    __pthread_once (&(ONCE_CONTROL), INIT_FUNCTION)
> +#else
> +# define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
> +  pthread_once (&(ONCE_CONTROL), INIT_FUNCTION)
> +#endif
>  
>  /* Get once control variable.  */
>  #define __libc_once_get(ONCE_CONTROL)	((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 8133bcda8f..adb4815b4e 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -32,7 +32,6 @@ headers += threads.h
>  routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  
>  libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
> -		       call_once \
>  		       mtx_destroy mtx_init mtx_lock mtx_timedlock \
>  		       mtx_trylock mtx_unlock \
>  		       cnd_broadcast \
> @@ -40,7 +39,7 @@ libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
>  		       tss_create tss_delete tss_get tss_set
>  
>  $(libpthread-routines-var) += \
> -
> +  call_once \
>  
>  tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
>  	 tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \
> diff --git a/sysdeps/pthread/call_once.c b/sysdeps/pthread/call_once.c
> index 9690530ab2..0847dbc9f4 100644
> --- a/sysdeps/pthread/call_once.c
> +++ b/sysdeps/pthread/call_once.c
> @@ -17,11 +17,12 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <stdalign.h>
> +#include <shlib-compat.h>
>  
>  #include "thrd_priv.h"
>  
>  void
> -call_once (once_flag *flag, void (*func)(void))
> +__call_once (once_flag *flag, void (*func)(void))
>  {
>    _Static_assert (sizeof (once_flag) == sizeof (pthread_once_t),
>  		  "sizeof (once_flag) != sizeof (pthread_once_t)");
> @@ -29,3 +30,11 @@ call_once (once_flag *flag, void (*func)(void))
>  		  "alignof (once_flag) != alignof (pthread_once_t)");
>    __pthread_once ((pthread_once_t *) flag, func);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __call_once, call_once, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libpthread, __call_once, call_once, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__call_once, call_once)
> +#endif
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 96f61e91b5..c11ab22ceb 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2198,6 +2198,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2247,9 +2248,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 2f584deb17..d0f5f7b12c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.17 sem_unlink F
>  GLIBC_2.17 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 46e59e73f8..6c97010471 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2091,6 +2091,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2328,9 +2329,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 3871bd7fd1..2cec6a77a8 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 49687f093c..1aff75ab15 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -593,6 +593,7 @@ GLIBC_2.32 bzero F
>  GLIBC_2.32 c16rtomb F
>  GLIBC_2.32 c32rtomb F
>  GLIBC_2.32 cacheflush F
> +GLIBC_2.32 call_once F
>  GLIBC_2.32 calloc F
>  GLIBC_2.32 canonicalize_file_name F
>  GLIBC_2.32 capget F
> @@ -2006,9 +2007,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index c4bad742a2..9ed70b37a4 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.32 __pthread_rwlock_tryrdlock F
>  GLIBC_2.32 __pthread_rwlock_trywrlock F
>  GLIBC_2.32 __pthread_unregister_cancel F
>  GLIBC_2.32 __pthread_unregister_cancel_restore F
> -GLIBC_2.32 call_once F
>  GLIBC_2.32 cnd_broadcast F
>  GLIBC_2.32 cnd_destroy F
>  GLIBC_2.32 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 4d6abeeb42..377aa665ff 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -118,6 +118,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -171,9 +172,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 5be2f9ac79..2b02b6fb64 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 91243f33b8..21646b12ee 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -118,6 +118,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -168,9 +169,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 5be2f9ac79..2b02b6fb64 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index c7cec5e1a6..c08128bd75 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -613,6 +613,7 @@ GLIBC_2.29 bzero F
>  GLIBC_2.29 c16rtomb F
>  GLIBC_2.29 c32rtomb F
>  GLIBC_2.29 cacheflush F
> +GLIBC_2.29 call_once F
>  GLIBC_2.29 calloc F
>  GLIBC_2.29 callrpc F
>  GLIBC_2.29 canonicalize_file_name F
> @@ -2190,9 +2191,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 99dae41dc5..0998962205 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.29 __pthread_rwlock_tryrdlock F
>  GLIBC_2.29 __pthread_rwlock_trywrlock F
>  GLIBC_2.29 __pthread_unregister_cancel F
>  GLIBC_2.29 __pthread_unregister_cancel_restore F
> -GLIBC_2.29 call_once F
>  GLIBC_2.29 cnd_broadcast F
>  GLIBC_2.29 cnd_destroy F
>  GLIBC_2.29 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 69d2d7f3e1..cbab81fe94 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1929,6 +1929,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2141,9 +2142,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index ccd2decf49..346e899b10 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index cd4e29c056..1822a0b3ee 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2103,6 +2103,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2318,9 +2319,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 5972b30b09..71c3594c82 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index e64d081e88..9051490cfd 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1965,6 +1965,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2175,9 +2176,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index e4fcc373fa..b17cd8c595 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 19bb5930fe..7dcc4e003b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -119,6 +119,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -172,9 +173,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 5be2f9ac79..2b02b6fb64 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index a4cc4f872c..70e7eb3a39 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2046,6 +2046,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2261,9 +2262,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 5972b30b09..71c3594c82 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index e2f65f7ac5..b38af61755 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2188,6 +2188,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2241,9 +2242,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index df17daaa5e..703e84aed6 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.18 sem_timedwait F
>  GLIBC_2.18 sem_trywait F
>  GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 417c311b51..18f9304314 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2188,6 +2188,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2238,9 +2239,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index df17daaa5e..703e84aed6 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.18 sem_timedwait F
>  GLIBC_2.18 sem_trywait F
>  GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 00b3cf0757..5ab33e126e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2016,6 +2016,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2224,9 +2225,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 71c79c0a9b..40fec2b84b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -68,7 +68,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 8cbc935a95..ea0e8c39ff 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2014,6 +2014,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2222,9 +2223,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 71c79c0a9b..40fec2b84b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -68,7 +68,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 1d9f61c7b0..12fe5e461d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2022,6 +2022,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2230,9 +2231,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index c41013212d..82581170e7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2018,6 +2018,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2224,9 +2225,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 412a99f35f..c04e838ee5 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2230,6 +2230,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2280,9 +2281,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index ace0bff7c6..dd4be0f10d 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.21 sem_timedwait F
>  GLIBC_2.21 sem_trywait F
>  GLIBC_2.21 sem_unlink F
>  GLIBC_2.21 sem_wait F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 2b4bca90e0..cf722e91a6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2050,6 +2050,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2288,9 +2289,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 0febdfd3e8..cd2c0659fa 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 3802eaac60..f78998edc0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2054,6 +2054,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2321,9 +2322,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 4383f4d579..f8d1810f5e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -119,6 +119,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2142,9 +2143,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index fa13a56f55..bfc91a00c7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -3,7 +3,6 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index b272c02184..127e39ed72 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2288,6 +2288,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2443,9 +2444,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 2f584deb17..d0f5f7b12c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.17 sem_unlink F
>  GLIBC_2.17 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 27556ad2b0..94d6d127c4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -586,6 +586,7 @@ GLIBC_2.33 btowc F
>  GLIBC_2.33 bzero F
>  GLIBC_2.33 c16rtomb F
>  GLIBC_2.33 c32rtomb F
> +GLIBC_2.33 call_once F
>  GLIBC_2.33 calloc F
>  GLIBC_2.33 canonicalize_file_name F
>  GLIBC_2.33 capget F
> @@ -2008,9 +2009,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index c71a787709..03181a2732 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.33 __pthread_rwlock_tryrdlock F
>  GLIBC_2.33 __pthread_rwlock_trywrlock F
>  GLIBC_2.33 __pthread_unregister_cancel F
>  GLIBC_2.33 __pthread_unregister_cancel_restore F
> -GLIBC_2.33 call_once F
>  GLIBC_2.33 cnd_broadcast F
>  GLIBC_2.33 cnd_destroy F
>  GLIBC_2.33 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index d9b8afedee..79d3516e81 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2159,6 +2159,7 @@ GLIBC_2.27 xdrstdio_create F
>  GLIBC_2.27 xencrypt F
>  GLIBC_2.27 xprt_register F
>  GLIBC_2.27 xprt_unregister F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2208,9 +2209,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 39178c36ff..67ba542f1b 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.27 sem_timedwait F
>  GLIBC_2.27 sem_trywait F
>  GLIBC_2.27 sem_unlink F
>  GLIBC_2.27 sem_wait F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 551a18069c..cfcfa02375 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2059,6 +2059,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2286,9 +2287,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 54dc15bdff..f509261ffa 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -70,7 +70,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index df4c296f13..97bf0ef929 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1957,6 +1957,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2179,9 +2180,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 7e41af116d..37f1713bab 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -62,7 +62,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 94818d5751..5f40a9c5ad 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1933,6 +1933,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2148,9 +2149,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index ccd2decf49..346e899b10 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index b2cc36bc99..bdb5596d6c 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1933,6 +1933,7 @@ GLIBC_2.27 wcstof32x F
>  GLIBC_2.27 wcstof32x_l F
>  GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2145,9 +2146,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index ccd2decf49..346e899b10 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index fa32910b71..2fd340b407 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2053,6 +2053,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
> @@ -2277,9 +2278,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 3871bd7fd1..2cec6a77a8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.2 pthread_yield F
>  GLIBC_2.2 sem_timedwait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index d673ec9d03..33ac1505f1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1987,6 +1987,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2196,9 +2197,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index e4fcc373fa..b17cd8c595 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -61,7 +61,6 @@ GLIBC_2.2 sem_unlink F
>  GLIBC_2.2 sem_wait F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 0a1608dd23..889106018f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1946,6 +1946,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2157,9 +2158,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index df296d9f92..fe4fd51c54 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -60,7 +60,6 @@ GLIBC_2.2.5 sem_trywait F
>  GLIBC_2.2.5 sem_unlink F
>  GLIBC_2.2.5 sem_wait F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index f49596ec05..4f947766a7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2211,6 +2211,7 @@ GLIBC_2.27 wcstof64 F
>  GLIBC_2.27 wcstof64_l F
>  GLIBC_2.27 wcstof64x F
>  GLIBC_2.27 wcstof64x_l F
> +GLIBC_2.28 call_once F
>  GLIBC_2.28 fcntl64 F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
> @@ -2262,9 +2263,9 @@ GLIBC_2.34 __pthread_mutex_trylock F
>  GLIBC_2.34 __pthread_mutex_unlock F
>  GLIBC_2.34 __pthread_mutexattr_init F
>  GLIBC_2.34 __pthread_mutexattr_settype F
> -GLIBC_2.34 __pthread_once F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 call_once F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 85972c43f0..804ccc4962 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.16 sem_unlink F
>  GLIBC_2.16 sem_wait F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
> -GLIBC_2.28 call_once F
>  GLIBC_2.28 cnd_broadcast F
>  GLIBC_2.28 cnd_destroy F
>  GLIBC_2.28 cnd_init F
>
  

Patch

diff --git a/nptl/Versions b/nptl/Versions
index 03e159ee0f..1217a15bdf 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -126,6 +126,7 @@  libc {
   }
   # C11 thread symbols.
   GLIBC_2.28 {
+    call_once;
     thrd_current;
     thrd_equal;
     thrd_sleep;
@@ -153,8 +154,8 @@  libc {
     __pthread_mutex_unlock;
     __pthread_mutexattr_init;
     __pthread_mutexattr_settype;
-    __pthread_once;
     __pthread_setspecific;
+    call_once;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -373,7 +374,6 @@  libpthread {
 
   # C11 thread symbols.
   GLIBC_2.28 {
-    call_once;
     cnd_broadcast;
     cnd_destroy;
     cnd_init;
diff --git a/nptl/pthread_once.c b/nptl/pthread_once.c
index 323583c118..e8cf54cf96 100644
--- a/nptl/pthread_once.c
+++ b/nptl/pthread_once.c
@@ -143,8 +143,10 @@  ___pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
   else
     return __pthread_once_slow (once_control, init_routine);
 }
-versioned_symbol (libc, ___pthread_once, __pthread_once, GLIBC_2_34);
 libc_hidden_ver (___pthread_once, __pthread_once)
+#ifndef SHARED
+strong_alias (___pthread_once, __pthread_once)
+#endif
 
 versioned_symbol (libc, ___pthread_once, pthread_once, GLIBC_2_34);
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index e573689799..aad9c9778c 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -210,9 +210,15 @@  _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
   CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT
 #endif
 
-/* Call handler iff the first call.  */
-#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
+/* Call handler iff the first call.  Use a local call in libc, but the
+   global pthread_once symbol elsewhere.  */
+#if IS_IN (libc)
+# define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
   __pthread_once (&(ONCE_CONTROL), INIT_FUNCTION)
+#else
+# define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
+  pthread_once (&(ONCE_CONTROL), INIT_FUNCTION)
+#endif
 
 /* Get once control variable.  */
 #define __libc_once_get(ONCE_CONTROL)	((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 8133bcda8f..adb4815b4e 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -32,7 +32,6 @@  headers += threads.h
 routines += thrd_current thrd_equal thrd_sleep thrd_yield
 
 libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
-		       call_once \
 		       mtx_destroy mtx_init mtx_lock mtx_timedlock \
 		       mtx_trylock mtx_unlock \
 		       cnd_broadcast \
@@ -40,7 +39,7 @@  libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
 		       tss_create tss_delete tss_get tss_set
 
 $(libpthread-routines-var) += \
-
+  call_once \
 
 tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
 	 tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \
diff --git a/sysdeps/pthread/call_once.c b/sysdeps/pthread/call_once.c
index 9690530ab2..0847dbc9f4 100644
--- a/sysdeps/pthread/call_once.c
+++ b/sysdeps/pthread/call_once.c
@@ -17,11 +17,12 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <stdalign.h>
+#include <shlib-compat.h>
 
 #include "thrd_priv.h"
 
 void
-call_once (once_flag *flag, void (*func)(void))
+__call_once (once_flag *flag, void (*func)(void))
 {
   _Static_assert (sizeof (once_flag) == sizeof (pthread_once_t),
 		  "sizeof (once_flag) != sizeof (pthread_once_t)");
@@ -29,3 +30,11 @@  call_once (once_flag *flag, void (*func)(void))
 		  "alignof (once_flag) != alignof (pthread_once_t)");
   __pthread_once ((pthread_once_t *) flag, func);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __call_once, call_once, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libpthread, __call_once, call_once, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__call_once, call_once)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 96f61e91b5..c11ab22ceb 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2198,6 +2198,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2247,9 +2248,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 2f584deb17..d0f5f7b12c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 46e59e73f8..6c97010471 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2091,6 +2091,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2328,9 +2329,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 3871bd7fd1..2cec6a77a8 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 49687f093c..1aff75ab15 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -593,6 +593,7 @@  GLIBC_2.32 bzero F
 GLIBC_2.32 c16rtomb F
 GLIBC_2.32 c32rtomb F
 GLIBC_2.32 cacheflush F
+GLIBC_2.32 call_once F
 GLIBC_2.32 calloc F
 GLIBC_2.32 canonicalize_file_name F
 GLIBC_2.32 capget F
@@ -2006,9 +2007,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index c4bad742a2..9ed70b37a4 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.32 __pthread_rwlock_tryrdlock F
 GLIBC_2.32 __pthread_rwlock_trywrlock F
 GLIBC_2.32 __pthread_unregister_cancel F
 GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 call_once F
 GLIBC_2.32 cnd_broadcast F
 GLIBC_2.32 cnd_destroy F
 GLIBC_2.32 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 4d6abeeb42..377aa665ff 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -118,6 +118,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -171,9 +172,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 5be2f9ac79..2b02b6fb64 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 91243f33b8..21646b12ee 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -118,6 +118,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -168,9 +169,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 5be2f9ac79..2b02b6fb64 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index c7cec5e1a6..c08128bd75 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -613,6 +613,7 @@  GLIBC_2.29 bzero F
 GLIBC_2.29 c16rtomb F
 GLIBC_2.29 c32rtomb F
 GLIBC_2.29 cacheflush F
+GLIBC_2.29 call_once F
 GLIBC_2.29 calloc F
 GLIBC_2.29 callrpc F
 GLIBC_2.29 canonicalize_file_name F
@@ -2190,9 +2191,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 99dae41dc5..0998962205 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.29 __pthread_rwlock_tryrdlock F
 GLIBC_2.29 __pthread_rwlock_trywrlock F
 GLIBC_2.29 __pthread_unregister_cancel F
 GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 call_once F
 GLIBC_2.29 cnd_broadcast F
 GLIBC_2.29 cnd_destroy F
 GLIBC_2.29 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 69d2d7f3e1..cbab81fe94 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1929,6 +1929,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2141,9 +2142,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index ccd2decf49..346e899b10 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index cd4e29c056..1822a0b3ee 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2103,6 +2103,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2318,9 +2319,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 5972b30b09..71c3594c82 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index e64d081e88..9051490cfd 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1965,6 +1965,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2175,9 +2176,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index e4fcc373fa..b17cd8c595 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 19bb5930fe..7dcc4e003b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -119,6 +119,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -172,9 +173,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 5be2f9ac79..2b02b6fb64 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a4cc4f872c..70e7eb3a39 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2046,6 +2046,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2261,9 +2262,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 5972b30b09..71c3594c82 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e2f65f7ac5..b38af61755 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2188,6 +2188,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2241,9 +2242,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index df17daaa5e..703e84aed6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 417c311b51..18f9304314 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2188,6 +2188,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2238,9 +2239,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index df17daaa5e..703e84aed6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 00b3cf0757..5ab33e126e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2016,6 +2016,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2224,9 +2225,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 71c79c0a9b..40fec2b84b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -68,7 +68,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 8cbc935a95..ea0e8c39ff 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2014,6 +2014,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2222,9 +2223,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 71c79c0a9b..40fec2b84b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -68,7 +68,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 1d9f61c7b0..12fe5e461d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2022,6 +2022,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2230,9 +2231,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index c41013212d..82581170e7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2018,6 +2018,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2224,9 +2225,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 412a99f35f..c04e838ee5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2230,6 +2230,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2280,9 +2281,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index ace0bff7c6..dd4be0f10d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.21 sem_timedwait F
 GLIBC_2.21 sem_trywait F
 GLIBC_2.21 sem_unlink F
 GLIBC_2.21 sem_wait F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 2b4bca90e0..cf722e91a6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2050,6 +2050,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2288,9 +2289,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 0febdfd3e8..cd2c0659fa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 3802eaac60..f78998edc0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2054,6 +2054,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2321,9 +2322,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 4383f4d579..f8d1810f5e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -119,6 +119,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2142,9 +2143,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index fa13a56f55..bfc91a00c7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -3,7 +3,6 @@  GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index b272c02184..127e39ed72 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2288,6 +2288,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2443,9 +2444,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 2f584deb17..d0f5f7b12c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 27556ad2b0..94d6d127c4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -586,6 +586,7 @@  GLIBC_2.33 btowc F
 GLIBC_2.33 bzero F
 GLIBC_2.33 c16rtomb F
 GLIBC_2.33 c32rtomb F
+GLIBC_2.33 call_once F
 GLIBC_2.33 calloc F
 GLIBC_2.33 canonicalize_file_name F
 GLIBC_2.33 capget F
@@ -2008,9 +2009,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index c71a787709..03181a2732 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -10,7 +10,6 @@  GLIBC_2.33 __pthread_rwlock_tryrdlock F
 GLIBC_2.33 __pthread_rwlock_trywrlock F
 GLIBC_2.33 __pthread_unregister_cancel F
 GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 call_once F
 GLIBC_2.33 cnd_broadcast F
 GLIBC_2.33 cnd_destroy F
 GLIBC_2.33 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index d9b8afedee..79d3516e81 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2159,6 +2159,7 @@  GLIBC_2.27 xdrstdio_create F
 GLIBC_2.27 xencrypt F
 GLIBC_2.27 xprt_register F
 GLIBC_2.27 xprt_unregister F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2208,9 +2209,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 39178c36ff..67ba542f1b 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.27 sem_timedwait F
 GLIBC_2.27 sem_trywait F
 GLIBC_2.27 sem_unlink F
 GLIBC_2.27 sem_wait F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 551a18069c..cfcfa02375 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2059,6 +2059,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2286,9 +2287,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 54dc15bdff..f509261ffa 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -70,7 +70,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index df4c296f13..97bf0ef929 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1957,6 +1957,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2179,9 +2180,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 7e41af116d..37f1713bab 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -62,7 +62,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 94818d5751..5f40a9c5ad 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1933,6 +1933,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2148,9 +2149,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index ccd2decf49..346e899b10 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index b2cc36bc99..bdb5596d6c 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1933,6 +1933,7 @@  GLIBC_2.27 wcstof32x F
 GLIBC_2.27 wcstof32x_l F
 GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2145,9 +2146,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index ccd2decf49..346e899b10 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index fa32910b71..2fd340b407 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2053,6 +2053,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
@@ -2277,9 +2278,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 3871bd7fd1..2cec6a77a8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.2 pthread_yield F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index d673ec9d03..33ac1505f1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1987,6 +1987,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2196,9 +2197,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index e4fcc373fa..b17cd8c595 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 0a1608dd23..889106018f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1946,6 +1946,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2157,9 +2158,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index df296d9f92..fe4fd51c54 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -60,7 +60,6 @@  GLIBC_2.2.5 sem_trywait F
 GLIBC_2.2.5 sem_unlink F
 GLIBC_2.2.5 sem_wait F
 GLIBC_2.2.6 __libpthread_version_placeholder F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index f49596ec05..4f947766a7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2211,6 +2211,7 @@  GLIBC_2.27 wcstof64 F
 GLIBC_2.27 wcstof64_l F
 GLIBC_2.27 wcstof64x F
 GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 call_once F
 GLIBC_2.28 fcntl64 F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
@@ -2262,9 +2263,9 @@  GLIBC_2.34 __pthread_mutex_trylock F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_mutexattr_init F
 GLIBC_2.34 __pthread_mutexattr_settype F
-GLIBC_2.34 __pthread_once F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 call_once F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 85972c43f0..804ccc4962 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.16 sem_unlink F
 GLIBC_2.16 sem_wait F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.28 call_once F
 GLIBC_2.28 cnd_broadcast F
 GLIBC_2.28 cnd_destroy F
 GLIBC_2.28 cnd_init F