[15/19] nptl: Move thrd_exit into libc

Message ID e43a938767ac1ec44b32cf9312741195609455e6.1619456219.git.fweimer@redhat.com
State Committed
Commit 96e61709b49c3ebe4fa49c235ddafaad1f1dfc84
Headers
Series nptl: Move most C11 symbols into libc |

Commit Message

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

The __pthread_exit@@GLIBC_PRIVATE symbol is no longer needed
after this change, so remove it.
---
 nptl/Versions                                         |  4 ++--
 sysdeps/pthread/Makefile                              |  3 ++-
 sysdeps/pthread/thrd_exit.c                           | 11 ++++++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  2 ++
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist              |  2 ++
 sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  2 ++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  2 ++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  2 ++
 .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  2 ++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  2 ++
 .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  2 ++
 .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  2 ++
 .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  2 ++
 .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  2 ++
 sysdeps/unix/sysv/linux/nios2/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  2 ++
 .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
 .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  2 ++
 .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
 .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  2 ++
 .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  2 ++
 .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  2 ++
 .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  2 ++
 .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  2 ++
 .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  2 ++
 sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
 64 files changed, 78 insertions(+), 33 deletions(-)
  

Comments

Carlos O'Donell May 2, 2021, 8:47 p.m. UTC | #1
On 4/26/21 1:11 PM, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

Tested and reviewed on x86_64 and i686.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
 
> The __pthread_exit@@GLIBC_PRIVATE symbol is no longer needed
> after this change, so remove it.

OK.

> ---
>  nptl/Versions                                         |  4 ++--
>  sysdeps/pthread/Makefile                              |  3 ++-
>  sysdeps/pthread/thrd_exit.c                           | 11 ++++++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist          |  2 ++
>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist            |  2 ++
>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist              |  2 ++
>  sysdeps/unix/sysv/linux/arc/libpthread.abilist        |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist           |  2 ++
>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist           |  2 ++
>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist             |  2 ++
>  sysdeps/unix/sysv/linux/csky/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist             |  2 ++
>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist             |  2 ++
>  sysdeps/unix/sysv/linux/i386/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist             |  2 ++
>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist       |  1 -
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist    |  2 ++
>  .../unix/sysv/linux/m68k/coldfire/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist      |  2 ++
>  .../unix/sysv/linux/m68k/m680x0/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist    |  2 ++
>  .../unix/sysv/linux/microblaze/be/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist    |  2 ++
>  .../unix/sysv/linux/microblaze/le/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  2 ++
>  .../unix/sysv/linux/mips/mips32/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist    |  2 ++
>  .../unix/sysv/linux/mips/mips64/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist  |  2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist  |  2 ++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist            |  2 ++
>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist      |  1 -
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist     |  2 ++
>  .../sysv/linux/powerpc/powerpc32/libpthread.abilist   |  1 -
>  .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist   |  2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist |  2 ++
>  .../linux/powerpc/powerpc64/be/libpthread.abilist     |  1 -
>  .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist |  2 ++
>  .../linux/powerpc/powerpc64/le/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist       |  2 ++
>  sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist       |  2 ++
>  sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist     |  2 ++
>  .../unix/sysv/linux/s390/s390-32/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist     |  2 ++
>  .../unix/sysv/linux/s390/s390-64/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist            |  2 ++
>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist            |  2 ++
>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist      |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist    |  2 ++
>  .../unix/sysv/linux/sparc/sparc32/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist    |  2 ++
>  .../unix/sysv/linux/sparc/sparc64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist        |  2 ++
>  sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist       |  2 ++
>  sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist |  1 -
>  64 files changed, 78 insertions(+), 33 deletions(-)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index 47704ba4d1..834fdbbd87 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -141,6 +141,7 @@ libc {
>      mtx_unlock;
>      thrd_current;
>      thrd_equal;
> +    thrd_exit;
>      thrd_sleep;
>      thrd_yield;
>    }
> @@ -210,6 +211,7 @@ libc {
>      pthread_spin_lock;
>      pthread_spin_trylock;
>      pthread_spin_unlock;
> +    thrd_exit;
>    }
>    GLIBC_PRIVATE {
>      __futex_abstimed_wait64;
> @@ -239,7 +241,6 @@ libc {
>      __pthread_cleanup_push;
>      __pthread_cleanup_upto;
>      __pthread_current_priority;
> -    __pthread_exit;
>      __pthread_force_elision;
>      __pthread_getattr_default_np;
>      __pthread_key_delete;
> @@ -389,7 +390,6 @@ libpthread {
>    GLIBC_2.28 {
>      thrd_create;
>      thrd_detach;
> -    thrd_exit;
>      thrd_join;
>      tss_create;
>      tss_delete;
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 6f204ccab2..75a74be340 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -31,7 +31,7 @@ headers += threads.h
>  
>  routines += thrd_current thrd_equal thrd_sleep thrd_yield
>  
> -libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
> +libpthread-routines += thrd_create thrd_detach thrd_join \
>  		       tss_create tss_delete tss_get tss_set
>  
>  $(libpthread-routines-var) += \
> @@ -48,6 +48,7 @@ $(libpthread-routines-var) += \
>    mtx_timedlock \
>    mtx_trylock \
>    mtx_unlock \
> +  thrd_exit \
>  
>  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/thrd_exit.c b/sysdeps/pthread/thrd_exit.c
> index 7348e83dcc..1554af422c 100644
> --- a/sysdeps/pthread/thrd_exit.c
> +++ b/sysdeps/pthread/thrd_exit.c
> @@ -16,10 +16,19 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
>  #include "thrd_priv.h"
>  
>  _Noreturn void
> -thrd_exit (int res)
> +__thrd_exit (int res)
>  {
>    __pthread_exit ((void*)(uintptr_t) res);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __thrd_exit, thrd_exit, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libpthread, __thrd_exit, thrd_exit, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__thrd_exit, thrd_exit)
> +#endif
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index fddeb25a72..9390752b11 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2216,6 +2216,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2307,3 +2308,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index d18f1540f8..2e044698b7 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 38d2821356..01830f4b8c 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2109,6 +2109,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2388,6 +2389,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 0357adc360..69716922ba 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 08d1092337..f647e9ceb9 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1824,6 +1824,7 @@ GLIBC_2.32 tfind F
>  GLIBC_2.32 tgkill F
>  GLIBC_2.32 thrd_current F
>  GLIBC_2.32 thrd_equal F
> +GLIBC_2.32 thrd_exit F
>  GLIBC_2.32 thrd_sleep F
>  GLIBC_2.32 thrd_yield F
>  GLIBC_2.32 time F
> @@ -2066,3 +2067,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index f6d0d01f47..ed881e9417 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -75,7 +75,6 @@ GLIBC_2.32 sem_unlink F
>  GLIBC_2.32 sem_wait F
>  GLIBC_2.32 thrd_create F
>  GLIBC_2.32 thrd_detach F
> -GLIBC_2.32 thrd_exit F
>  GLIBC_2.32 thrd_join F
>  GLIBC_2.32 tss_create F
>  GLIBC_2.32 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 011d0a2a72..b088edc561 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -137,6 +137,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -231,6 +232,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
>  GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index df380de883..9579814f70 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 77f88a1614..c9820ecb46 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -137,6 +137,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -228,6 +229,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
>  GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index df380de883..9579814f70 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 97dfaf2710..7a9c18250a 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1918,6 +1918,7 @@ GLIBC_2.29 textdomain F
>  GLIBC_2.29 tfind F
>  GLIBC_2.29 thrd_current F
>  GLIBC_2.29 thrd_equal F
> +GLIBC_2.29 thrd_exit F
>  GLIBC_2.29 thrd_sleep F
>  GLIBC_2.29 thrd_yield F
>  GLIBC_2.29 time F
> @@ -2250,3 +2251,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 8f2662e794..57a14c0db4 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.29 sem_unlink F
>  GLIBC_2.29 sem_wait F
>  GLIBC_2.29 thrd_create F
>  GLIBC_2.29 thrd_detach F
> -GLIBC_2.29 thrd_exit F
>  GLIBC_2.29 thrd_join F
>  GLIBC_2.29 tss_create F
>  GLIBC_2.29 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 673de09c0c..a811fe0505 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1948,6 +1948,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2201,6 +2202,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 666b409e05..727b654b8e 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -63,7 +63,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index ff914ff287..b2f8bae2c5 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2122,6 +2122,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2378,6 +2379,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index c151fd4bce..0a9d46d9cc 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index b429c9d290..b5c58de5f5 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1983,6 +1983,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2235,6 +2236,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 7b38318523..93c85d7a2c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -63,7 +63,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 3232874576..23a3f12406 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -138,6 +138,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -232,6 +233,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0x98
>  GLIBC_2.4 _IO_2_1_stdin_ D 0x98
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index df380de883..9579814f70 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index a9b92d93cd..e729a07a9f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2065,6 +2065,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2321,6 +2322,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index c151fd4bce..0a9d46d9cc 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index b022965fe0..3dd1428f25 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2207,6 +2207,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2301,3 +2302,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 5ae61bbe9d..dfeb3e6b9c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index f3dbd4e6df..800797f67c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2207,6 +2207,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2298,3 +2299,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 5ae61bbe9d..dfeb3e6b9c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.18 sem_unlink F
>  GLIBC_2.18 sem_wait F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 51cd0e8a86..4ada6e5338 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2035,6 +2035,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2284,6 +2285,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index b9a81337d6..20c9082450 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -70,7 +70,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 1211e370c8..f3a3f9db83 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2033,6 +2033,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2282,6 +2283,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index b9a81337d6..20c9082450 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -70,7 +70,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 293c679204..3790903af4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2041,6 +2041,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2290,6 +2291,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index aa912f46d2..38e5aba36f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2036,6 +2036,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2284,6 +2285,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index d5bb6cf400..d37e1419e5 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2249,6 +2249,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2340,3 +2341,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 4e4b0c70fd..0e33b9f0fa 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.21 sem_unlink F
>  GLIBC_2.21 sem_wait F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 18e9526f46..dbd492a3b1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2069,6 +2069,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2348,6 +2349,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 175dfc459a..740ac67c90 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 5dd0a83d0b..0c82faa201 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2073,6 +2073,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2381,6 +2382,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 9703ac0e2f..f479c57024 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -137,6 +137,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2202,6 +2203,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index e4e52afc9d..2af5309ed9 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index b55ac71c1b..892e46c976 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2306,6 +2306,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2503,3 +2504,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index d18f1540f8..2e044698b7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index f5a3ab9bcd..459edaa125 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1834,6 +1834,7 @@ GLIBC_2.33 tfind F
>  GLIBC_2.33 tgkill F
>  GLIBC_2.33 thrd_current F
>  GLIBC_2.33 thrd_equal F
> +GLIBC_2.33 thrd_exit F
>  GLIBC_2.33 thrd_sleep F
>  GLIBC_2.33 thrd_yield F
>  GLIBC_2.33 time F
> @@ -2068,3 +2069,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 25a34d836d..e688a30693 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -75,7 +75,6 @@ GLIBC_2.33 sem_unlink F
>  GLIBC_2.33 sem_wait F
>  GLIBC_2.33 thrd_create F
>  GLIBC_2.33 thrd_detach F
> -GLIBC_2.33 thrd_exit F
>  GLIBC_2.33 thrd_join F
>  GLIBC_2.33 tss_create F
>  GLIBC_2.33 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index e1ab110de7..17345bbd51 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2177,6 +2177,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2268,3 +2269,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 70408a1f6b..23cec4e3dc 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.27 sem_unlink F
>  GLIBC_2.27 sem_wait F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index a20d113936..25d56b5c7d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2078,6 +2078,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2346,6 +2347,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 79db0fcdcb..51d8afb571 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -72,7 +72,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 8993c14069..950de9cf1e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1975,6 +1975,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 __fentry__ F
> @@ -2239,6 +2240,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 18871ea360..5a19f9d49a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -64,7 +64,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 86fb418fe9..a0b7a5cae7 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1952,6 +1952,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2208,6 +2209,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 666b409e05..727b654b8e 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -63,7 +63,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index e591103913..5eaa888765 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1952,6 +1952,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2205,6 +2206,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 666b409e05..727b654b8e 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -63,7 +63,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 62df52de0b..37ace12a89 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2072,6 +2072,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2337,6 +2338,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
>  GLIBC_2.4 _IO_sprintf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 0357adc360..69716922ba 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 440a75d481..e7ff31b657 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2005,6 +2005,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2256,6 +2257,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 7b38318523..93c85d7a2c 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -63,7 +63,6 @@ GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 001bfbe8fd..ab2445528e 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1964,6 +1964,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2217,6 +2218,7 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 2d147416d8..aaa813da94 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -62,7 +62,6 @@ GLIBC_2.2.5 sem_wait F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 46c26caced..1c68c6ee85 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2229,6 +2229,7 @@ GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_equal F
> +GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.29 getcpu F
> @@ -2322,3 +2323,4 @@ GLIBC_2.34 pthread_spin_init F
>  GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
> +GLIBC_2.34 thrd_exit F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 3ab8e0dca9..916b4ef95c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -71,7 +71,6 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.28 thrd_create F
>  GLIBC_2.28 thrd_detach F
> -GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.28 tss_create F
>  GLIBC_2.28 tss_delete F
>
  

Patch

diff --git a/nptl/Versions b/nptl/Versions
index 47704ba4d1..834fdbbd87 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -141,6 +141,7 @@  libc {
     mtx_unlock;
     thrd_current;
     thrd_equal;
+    thrd_exit;
     thrd_sleep;
     thrd_yield;
   }
@@ -210,6 +211,7 @@  libc {
     pthread_spin_lock;
     pthread_spin_trylock;
     pthread_spin_unlock;
+    thrd_exit;
   }
   GLIBC_PRIVATE {
     __futex_abstimed_wait64;
@@ -239,7 +241,6 @@  libc {
     __pthread_cleanup_push;
     __pthread_cleanup_upto;
     __pthread_current_priority;
-    __pthread_exit;
     __pthread_force_elision;
     __pthread_getattr_default_np;
     __pthread_key_delete;
@@ -389,7 +390,6 @@  libpthread {
   GLIBC_2.28 {
     thrd_create;
     thrd_detach;
-    thrd_exit;
     thrd_join;
     tss_create;
     tss_delete;
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 6f204ccab2..75a74be340 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -31,7 +31,7 @@  headers += threads.h
 
 routines += thrd_current thrd_equal thrd_sleep thrd_yield
 
-libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \
+libpthread-routines += thrd_create thrd_detach thrd_join \
 		       tss_create tss_delete tss_get tss_set
 
 $(libpthread-routines-var) += \
@@ -48,6 +48,7 @@  $(libpthread-routines-var) += \
   mtx_timedlock \
   mtx_trylock \
   mtx_unlock \
+  thrd_exit \
 
 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/thrd_exit.c b/sysdeps/pthread/thrd_exit.c
index 7348e83dcc..1554af422c 100644
--- a/sysdeps/pthread/thrd_exit.c
+++ b/sysdeps/pthread/thrd_exit.c
@@ -16,10 +16,19 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
 #include "thrd_priv.h"
 
 _Noreturn void
-thrd_exit (int res)
+__thrd_exit (int res)
 {
   __pthread_exit ((void*)(uintptr_t) res);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __thrd_exit, thrd_exit, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libpthread, __thrd_exit, thrd_exit, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__thrd_exit, thrd_exit)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index fddeb25a72..9390752b11 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2216,6 +2216,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2307,3 +2308,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index d18f1540f8..2e044698b7 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 38d2821356..01830f4b8c 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2109,6 +2109,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2388,6 +2389,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 0357adc360..69716922ba 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 08d1092337..f647e9ceb9 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1824,6 +1824,7 @@  GLIBC_2.32 tfind F
 GLIBC_2.32 tgkill F
 GLIBC_2.32 thrd_current F
 GLIBC_2.32 thrd_equal F
+GLIBC_2.32 thrd_exit F
 GLIBC_2.32 thrd_sleep F
 GLIBC_2.32 thrd_yield F
 GLIBC_2.32 time F
@@ -2066,3 +2067,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index f6d0d01f47..ed881e9417 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -75,7 +75,6 @@  GLIBC_2.32 sem_unlink F
 GLIBC_2.32 sem_wait F
 GLIBC_2.32 thrd_create F
 GLIBC_2.32 thrd_detach F
-GLIBC_2.32 thrd_exit F
 GLIBC_2.32 thrd_join F
 GLIBC_2.32 tss_create F
 GLIBC_2.32 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 011d0a2a72..b088edc561 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -137,6 +137,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -231,6 +232,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index df380de883..9579814f70 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -5,7 +5,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 77f88a1614..c9820ecb46 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -137,6 +137,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -228,6 +229,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index df380de883..9579814f70 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -5,7 +5,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 97dfaf2710..7a9c18250a 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1918,6 +1918,7 @@  GLIBC_2.29 textdomain F
 GLIBC_2.29 tfind F
 GLIBC_2.29 thrd_current F
 GLIBC_2.29 thrd_equal F
+GLIBC_2.29 thrd_exit F
 GLIBC_2.29 thrd_sleep F
 GLIBC_2.29 thrd_yield F
 GLIBC_2.29 time F
@@ -2250,3 +2251,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 8f2662e794..57a14c0db4 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.29 sem_unlink F
 GLIBC_2.29 sem_wait F
 GLIBC_2.29 thrd_create F
 GLIBC_2.29 thrd_detach F
-GLIBC_2.29 thrd_exit F
 GLIBC_2.29 thrd_join F
 GLIBC_2.29 tss_create F
 GLIBC_2.29 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 673de09c0c..a811fe0505 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1948,6 +1948,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2201,6 +2202,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 666b409e05..727b654b8e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -63,7 +63,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index ff914ff287..b2f8bae2c5 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2122,6 +2122,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2378,6 +2379,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index c151fd4bce..0a9d46d9cc 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b429c9d290..b5c58de5f5 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1983,6 +1983,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2235,6 +2236,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 7b38318523..93c85d7a2c 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -63,7 +63,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 3232874576..23a3f12406 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -138,6 +138,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -232,6 +233,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0x98
 GLIBC_2.4 _IO_2_1_stdin_ D 0x98
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index df380de883..9579814f70 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -5,7 +5,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a9b92d93cd..e729a07a9f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2065,6 +2065,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2321,6 +2322,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index c151fd4bce..0a9d46d9cc 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index b022965fe0..3dd1428f25 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2207,6 +2207,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2301,3 +2302,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 5ae61bbe9d..dfeb3e6b9c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index f3dbd4e6df..800797f67c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2207,6 +2207,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2298,3 +2299,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 5ae61bbe9d..dfeb3e6b9c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 51cd0e8a86..4ada6e5338 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2035,6 +2035,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2284,6 +2285,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b9a81337d6..20c9082450 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -70,7 +70,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 1211e370c8..f3a3f9db83 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2033,6 +2033,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2282,6 +2283,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index b9a81337d6..20c9082450 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -70,7 +70,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 293c679204..3790903af4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2041,6 +2041,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2290,6 +2291,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index aa912f46d2..38e5aba36f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2036,6 +2036,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2284,6 +2285,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index d5bb6cf400..d37e1419e5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2249,6 +2249,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2340,3 +2341,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 4e4b0c70fd..0e33b9f0fa 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.21 sem_unlink F
 GLIBC_2.21 sem_wait F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 18e9526f46..dbd492a3b1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2069,6 +2069,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2348,6 +2349,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 175dfc459a..740ac67c90 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 5dd0a83d0b..0c82faa201 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2073,6 +2073,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2381,6 +2382,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 9703ac0e2f..f479c57024 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -137,6 +137,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2202,6 +2203,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index e4e52afc9d..2af5309ed9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -5,7 +5,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index b55ac71c1b..892e46c976 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2306,6 +2306,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2503,3 +2504,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index d18f1540f8..2e044698b7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index f5a3ab9bcd..459edaa125 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1834,6 +1834,7 @@  GLIBC_2.33 tfind F
 GLIBC_2.33 tgkill F
 GLIBC_2.33 thrd_current F
 GLIBC_2.33 thrd_equal F
+GLIBC_2.33 thrd_exit F
 GLIBC_2.33 thrd_sleep F
 GLIBC_2.33 thrd_yield F
 GLIBC_2.33 time F
@@ -2068,3 +2069,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 25a34d836d..e688a30693 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -75,7 +75,6 @@  GLIBC_2.33 sem_unlink F
 GLIBC_2.33 sem_wait F
 GLIBC_2.33 thrd_create F
 GLIBC_2.33 thrd_detach F
-GLIBC_2.33 thrd_exit F
 GLIBC_2.33 thrd_join F
 GLIBC_2.33 tss_create F
 GLIBC_2.33 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index e1ab110de7..17345bbd51 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2177,6 +2177,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2268,3 +2269,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 70408a1f6b..23cec4e3dc 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.27 sem_unlink F
 GLIBC_2.27 sem_wait F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a20d113936..25d56b5c7d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2078,6 +2078,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2346,6 +2347,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 79db0fcdcb..51d8afb571 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -72,7 +72,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 8993c14069..950de9cf1e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1975,6 +1975,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 __fentry__ F
@@ -2239,6 +2240,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 18871ea360..5a19f9d49a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -64,7 +64,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 86fb418fe9..a0b7a5cae7 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1952,6 +1952,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2208,6 +2209,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 666b409e05..727b654b8e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -63,7 +63,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index e591103913..5eaa888765 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1952,6 +1952,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2205,6 +2206,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 666b409e05..727b654b8e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -63,7 +63,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 62df52de0b..37ace12a89 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2072,6 +2072,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2337,6 +2338,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 0357adc360..69716922ba 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 440a75d481..e7ff31b657 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2005,6 +2005,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2256,6 +2257,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 7b38318523..93c85d7a2c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -63,7 +63,6 @@  GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 001bfbe8fd..ab2445528e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1964,6 +1964,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2217,6 +2218,7 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 2d147416d8..aaa813da94 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -62,7 +62,6 @@  GLIBC_2.2.5 sem_wait F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 46c26caced..1c68c6ee85 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2229,6 +2229,7 @@  GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.29 getcpu F
@@ -2322,3 +2323,4 @@  GLIBC_2.34 pthread_spin_init F
 GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
+GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 3ab8e0dca9..916b4ef95c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -71,7 +71,6 @@  GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.28 thrd_create F
 GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_join F
 GLIBC_2.28 tss_create F
 GLIBC_2.28 tss_delete F