public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc
@ 2021-05-10 12:37 Florian Weimer
  2021-05-10 12:37 ` [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation Florian Weimer
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

This needs a few cleanups first, and the series also moves the remaining
stack cache management into libc (reducing the size of
nptl/allocatestack.c as a side effect).

Tested on i686-linux-gnu and x86_64-linux-gnu, built with
build-many-glibcs.py.  (I had to revert the 32-bit incompatible warning
patches.)

Florian Weimer (8):
  nptl: Remove unused nptl/pthread_sigqueue.c stub implementation
  nptl: Move pthread_sigqueue implementation into main nptl directory
  nptl: Remove always-disabled debugging support
  nptl: Move pthread_setattr_default_np into libc
  nptl: Move stack cache management, __libpthread_freeres into libc
  nptl: Move __free_tcb into libc
  nptl: Move pthread_detach, thrd_detach into libc
  nptl: Move thread join functions into libc

 malloc/set-freeres.c                          |  15 +-
 nptl/Makefile                                 |  18 ++-
 nptl/Versions                                 |  36 +++--
 nptl/allocatestack.c                          | 147 +-----------------
 nptl/descr.h                                  |   6 +
 nptl/libpthread-compat.c                      |   5 +
 nptl/nptl-stack.c                             | 130 ++++++++++++++++
 nptl/nptl-stack.h                             |  50 ++++++
 nptl/nptl_free_tcb.c                          |  46 ++++++
 nptl/nptlfreeres.c                            |   3 +-
 nptl/pthreadP.h                               |  40 ++---
 nptl/pthread_clockjoin.c                      |  27 ++--
 nptl/pthread_create.c                         |  78 +---------
 nptl/pthread_detach.c                         |  16 +-
 nptl/pthread_join.c                           |  13 +-
 nptl/pthread_join_common.c                    |   2 +-
 nptl/pthread_setattr_default_np.c             |  10 +-
 nptl/pthread_sigqueue.c                       |  41 ++++-
 nptl/pthread_timedjoin.c                      |  22 ++-
 nptl/pthread_tryjoin.c                        |   8 +-
 sysdeps/pthread/Makefile                      |   4 +-
 sysdeps/pthread/thrd_detach.c                 |  11 +-
 sysdeps/pthread/thrd_join.c                   |  11 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  16 ++
 .../sysv/linux/aarch64/libpthread.abilist     |   9 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  16 ++
 .../unix/sysv/linux/alpha/libpthread.abilist  |   9 +-
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  16 ++
 .../unix/sysv/linux/arc/libpthread.abilist    |   8 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  16 ++
 .../unix/sysv/linux/arm/be/libpthread.abilist |   9 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  16 ++
 .../unix/sysv/linux/arm/le/libpthread.abilist |   9 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  16 ++
 .../unix/sysv/linux/csky/libpthread.abilist   |   9 +-
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  16 ++
 .../unix/sysv/linux/hppa/libpthread.abilist   |   9 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  16 ++
 .../unix/sysv/linux/i386/libpthread.abilist   |   9 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  16 ++
 .../unix/sysv/linux/ia64/libpthread.abilist   |   9 +-
 .../sysv/linux/m68k/coldfire/libc.abilist     |  16 ++
 .../linux/m68k/coldfire/libpthread.abilist    |   9 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  16 ++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |   9 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  16 ++
 .../linux/microblaze/be/libpthread.abilist    |   9 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  16 ++
 .../linux/microblaze/le/libpthread.abilist    |   9 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  16 ++
 .../sysv/linux/mips/mips32/libpthread.abilist |   9 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  16 ++
 .../sysv/linux/mips/mips64/libpthread.abilist |   9 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  16 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  16 ++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  16 ++
 .../unix/sysv/linux/nios2/libpthread.abilist  |   9 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  16 ++
 .../powerpc/powerpc32/libpthread.abilist      |   9 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  16 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  16 ++
 .../powerpc/powerpc64/be/libpthread.abilist   |   9 +-
 .../linux/powerpc/powerpc64/le/libc.abilist   |  16 ++
 .../powerpc/powerpc64/le/libpthread.abilist   |   9 +-
 sysdeps/unix/sysv/linux/pthread_sigqueue.c    |  71 ---------
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  16 ++
 .../sysv/linux/riscv/rv32/libpthread.abilist  |   8 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  16 ++
 .../sysv/linux/riscv/rv64/libpthread.abilist  |   9 +-
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  16 ++
 .../linux/s390/s390-32/libpthread.abilist     |   9 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  16 ++
 .../linux/s390/s390-64/libpthread.abilist     |   9 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  16 ++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |   9 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  16 ++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |   9 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  16 ++
 .../linux/sparc/sparc32/libpthread.abilist    |   9 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  16 ++
 .../linux/sparc/sparc64/libpthread.abilist    |   9 +-
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  16 ++
 .../sysv/linux/x86_64/64/libpthread.abilist   |   9 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  16 ++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |   9 +-
 85 files changed, 973 insertions(+), 608 deletions(-)
 create mode 100644 nptl/nptl-stack.c
 create mode 100644 nptl/nptl-stack.h
 create mode 100644 nptl/nptl_free_tcb.c
 delete mode 100644 sysdeps/unix/sysv/linux/pthread_sigqueue.c

-- 
2.31.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
@ 2021-05-10 12:37 ` Florian Weimer
  2021-05-10 13:21   ` Adhemerval Zanella
  2021-05-10 12:37 ` [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory Florian Weimer
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

---
 nptl/pthread_sigqueue.c | 37 -------------------------------------
 1 file changed, 37 deletions(-)
 delete mode 100644 nptl/pthread_sigqueue.c

diff --git a/nptl/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
deleted file mode 100644
index 7d60e2b98d..0000000000
--- a/nptl/pthread_sigqueue.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Queue a signal (with value) for a specific pthread.  Stub version.
-   Copyright (C) 2014-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <signal.h>
-#include <pthreadP.h>
-
-
-int
-pthread_sigqueue (pthread_t threadid, int signo, const union sigval value)
-{
-  struct pthread *pd = (struct pthread *) threadid;
-
-  /* Make sure the descriptor is valid.  */
-  if (DEBUGGING_P && INVALID_TD_P (pd))
-    /* Not a valid thread handle.  */
-    return ESRCH;
-
-  return ENOSYS;
-}
-
-stub_warning (pthread_sigqueue)
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
  2021-05-10 12:37 ` [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation Florian Weimer
@ 2021-05-10 12:37 ` Florian Weimer
  2021-05-10 13:25   ` Adhemerval Zanella
  2021-05-10 12:37 ` [PATCH 3/8] nptl: Remove always-disabled debugging support Florian Weimer
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

---
 {sysdeps/unix/sysv/linux => nptl}/pthread_sigqueue.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename {sysdeps/unix/sysv/linux => nptl}/pthread_sigqueue.c (100%)

diff --git a/sysdeps/unix/sysv/linux/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
similarity index 100%
rename from sysdeps/unix/sysv/linux/pthread_sigqueue.c
rename to nptl/pthread_sigqueue.c
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3/8] nptl: Remove always-disabled debugging support
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
  2021-05-10 12:37 ` [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation Florian Weimer
  2021-05-10 12:37 ` [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory Florian Weimer
@ 2021-05-10 12:37 ` Florian Weimer
  2021-05-10 13:47   ` Adhemerval Zanella
  2021-05-10 12:37 ` [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc Florian Weimer
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

This removes the DEBUGGING_P macro and the __pthread_debug variable.
The __find_in_stack_list function is now unused and deleted as well.
---
 nptl/pthreadP.h         | 26 +++++-----------------
 nptl/pthread_create.c   | 49 -----------------------------------------
 nptl/pthread_sigqueue.c |  5 -----
 3 files changed, 5 insertions(+), 75 deletions(-)

diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index d9b97c814a..d9a6137bd3 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -243,23 +243,11 @@ libc_hidden_proto (__pthread_tpp_change_priority)
 extern int __pthread_current_priority (void);
 libc_hidden_proto (__pthread_current_priority)
 
-/* The library can run in debugging mode where it performs a lot more
-   tests.  */
-extern int __pthread_debug attribute_hidden;
-/** For now disable debugging support.  */
-#if 0
-# define DEBUGGING_P __builtin_expect (__pthread_debug, 0)
-# define INVALID_TD_P(pd) (DEBUGGING_P && __find_in_stack_list (pd) == NULL)
-# define INVALID_NOT_TERMINATED_TD_P(pd) INVALID_TD_P (pd)
-#else
-# define DEBUGGING_P 0
-/* Simplified test.  This will not catch all invalid descriptors but
-   is better than nothing.  And if the test triggers the thread
-   descriptor is guaranteed to be invalid.  */
-# define INVALID_TD_P(pd) __builtin_expect ((pd)->tid <= 0, 0)
-# define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect ((pd)->tid < 0, 0)
-#endif
-
+/* This will not catch all invalid descriptors but is better than
+   nothing.  And if the test triggers the thread descriptor is
+   guaranteed to be invalid.  */
+#define INVALID_TD_P(pd) __builtin_expect ((pd)->tid <= 0, 0)
+#define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect ((pd)->tid < 0, 0)
 
 /* Cancellation test.  */
 #define CANCELLATION_P(self) \
@@ -322,10 +310,6 @@ __do_cancel (void)
 
 /* Internal prototypes.  */
 
-/* Thread list handling.  */
-extern struct pthread *__find_in_stack_list (struct pthread *pd)
-     attribute_hidden;
-
 /* Deallocate a thread's stack after optionally making sure the thread
    descriptor is still valid.  */
 extern void __free_tcb (struct pthread *pd) attribute_hidden;
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 775287d0e4..d19456d48b 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -42,9 +42,6 @@
 #include <stap-probe.h>
 
 
-/* Nozero if debugging mode is enabled.  */
-int __pthread_debug;
-
 /* Globally enabled events.  */
 static td_thr_events_t __nptl_threads_events __attribute_used__;
 
@@ -210,46 +207,6 @@ static int create_thread (struct pthread *pd, const struct pthread_attr *attr,
 
 #include <createthread.c>
 
-
-struct pthread *
-__find_in_stack_list (struct pthread *pd)
-{
-  list_t *entry;
-  struct pthread *result = NULL;
-
-  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
-
-  list_for_each (entry, &GL (dl_stack_used))
-    {
-      struct pthread *curp;
-
-      curp = list_entry (entry, struct pthread, list);
-      if (curp == pd)
-	{
-	  result = curp;
-	  break;
-	}
-    }
-
-  if (result == NULL)
-    list_for_each (entry, &GL (dl_stack_user))
-      {
-	struct pthread *curp;
-
-	curp = list_entry (entry, struct pthread, list);
-	if (curp == pd)
-	  {
-	    result = curp;
-	    break;
-	  }
-      }
-
-  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
-
-  return result;
-}
-
-
 /* Deallocate a thread's stack after optionally making sure the thread
    descriptor is still valid.  */
 void
@@ -259,12 +216,6 @@ __free_tcb (struct pthread *pd)
   if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
 					     TERMINATED_BIT) == 0, 1))
     {
-      /* Remove the descriptor from the list.  */
-      if (DEBUGGING_P && __find_in_stack_list (pd) == NULL)
-	/* Something is really wrong.  The descriptor for a still
-	   running thread is gone.  */
-	abort ();
-
       /* Free TPP data.  */
       if (__glibc_unlikely (pd->tpp != NULL))
 	{
diff --git a/nptl/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
index 64bacfe41b..3ffb595489 100644
--- a/nptl/pthread_sigqueue.c
+++ b/nptl/pthread_sigqueue.c
@@ -31,11 +31,6 @@ pthread_sigqueue (pthread_t threadid, int signo, const union sigval value)
 #ifdef __NR_rt_tgsigqueueinfo
   struct pthread *pd = (struct pthread *) threadid;
 
-  /* Make sure the descriptor is valid.  */
-  if (DEBUGGING_P && INVALID_TD_P (pd))
-    /* Not a valid thread handle.  */
-    return ESRCH;
-
   /* Force load of pd->tid into local variable or register.  Otherwise
      if a thread exits between ESRCH test and tgkill, we might return
      EINVAL, because pd->tid would be cleared by the kernel.  */
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
                   ` (2 preceding siblings ...)
  2021-05-10 12:37 ` [PATCH 3/8] nptl: Remove always-disabled debugging support Florian Weimer
@ 2021-05-10 12:37 ` Florian Weimer
  2021-05-10 16:28   ` Adhemerval Zanella
  2021-05-10 12:37 ` [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres " Florian Weimer
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.

The export of  __default_pthread_attr_freeres is temporary.  There
is a minor regression in freeres coverage because in the dynamic case,
__default_pthread_attr_freeres is no longer called if libpthread is
not linked in.
---
 nptl/Makefile                                          |  2 +-
 nptl/Versions                                          |  8 ++++++--
 nptl/pthreadP.h                                        |  2 +-
 nptl/pthread_setattr_default_np.c                      | 10 ++++++++--
 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 ++
 sysdeps/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 ++
 sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
 sysdeps/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 -
 .../unix/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 ++
 .../sysv/linux/powerpc/powerpc64/be/libpthread.abilist |  1 -
 .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist  |  2 ++
 .../sysv/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 -
 65 files changed, 80 insertions(+), 35 deletions(-)

diff --git a/nptl/Makefile b/nptl/Makefile
index f7723cb808..2a18eadf71 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -145,6 +145,7 @@ routines = \
   pthread_rwlockattr_setkind_np \
   pthread_rwlockattr_setpshared \
   pthread_self \
+  pthread_setattr_default_np \
   pthread_setcancelstate \
   pthread_setcanceltype \
   pthread_setschedparam \
@@ -206,7 +207,6 @@ libpthread-routines = \
   pthread_join \
   pthread_join_common \
   pthread_setaffinity \
-  pthread_setattr_default_np \
   pthread_setconcurrency \
   pthread_setname \
   pthread_setschedprio \
diff --git a/nptl/Versions b/nptl/Versions
index 4c1c4ee0a7..de025e179c 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -167,6 +167,9 @@ libc {
     pthread_mutexattr_getrobust;
     pthread_mutexattr_setrobust;
   }
+  GLIBC_2.18 {
+    pthread_setattr_default_np;
+  }
   # C11 thread symbols.
   GLIBC_2.28 {
     call_once;
@@ -230,8 +233,8 @@ libc {
     pthread_barrier_wait;
     pthread_barrierattr_destroy;
     pthread_barrierattr_getpshared;
-    pthread_barrierattr_setpshared;
     pthread_barrierattr_init;
+    pthread_barrierattr_setpshared;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -273,6 +276,7 @@ libc {
     pthread_rwlockattr_init;
     pthread_rwlockattr_setkind_np;
     pthread_rwlockattr_setpshared;
+    pthread_setattr_default_np;
     pthread_setspecific;
     pthread_spin_destroy;
     pthread_spin_init;
@@ -299,6 +303,7 @@ libc {
   }
   GLIBC_PRIVATE {
     __default_pthread_attr;
+    __default_pthread_attr_freeres;
     __default_pthread_attr_lock;
     __futex_abstimed_wait64;
     __futex_abstimed_wait_cancelable64;
@@ -436,7 +441,6 @@ libpthread {
 
   GLIBC_2.18 {
     pthread_getattr_default_np;
-    pthread_setattr_default_np;
   }
 
   # C11 thread symbols.
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index d9a6137bd3..8466332248 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -203,7 +203,7 @@ libc_hidden_proto (__default_pthread_attr)
 extern int __default_pthread_attr_lock;
 libc_hidden_proto (__default_pthread_attr_lock)
 /* Called from __libc_freeres to deallocate the default attribute.  */
-extern void __default_pthread_attr_freeres (void) attribute_hidden;
+extern void __default_pthread_attr_freeres (void);
 
 /* Size and alignment of static TLS block.  */
 extern size_t __static_tls_size attribute_hidden;
diff --git a/nptl/pthread_setattr_default_np.c b/nptl/pthread_setattr_default_np.c
index fcf1873d2f..bfdb93bc6e 100644
--- a/nptl/pthread_setattr_default_np.c
+++ b/nptl/pthread_setattr_default_np.c
@@ -20,10 +20,10 @@
 #include <stdlib.h>
 #include <pthreadP.h>
 #include <string.h>
-
+#include <shlib-compat.h>
 
 int
-pthread_setattr_default_np (const pthread_attr_t *in)
+__pthread_setattr_default_np (const pthread_attr_t *in)
 {
   const struct pthread_attr *real_in;
   int ret;
@@ -81,6 +81,12 @@ pthread_setattr_default_np (const pthread_attr_t *in)
   lll_unlock (__default_pthread_attr_lock, LLL_PRIVATE);
   return ret;
 }
+versioned_symbol (libc, __pthread_setattr_default_np,
+		  pthread_setattr_default_np, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_18, GLIBC_2_34)
+compat_symbol (libc, __pthread_setattr_default_np,
+	       pthread_setattr_default_np, GLIBC_2_18);
+#endif
 
 /* This is placed in the same file as pthread_setattr_default_np
    because only this function can trigger allocation of attribute
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 36d760212c..caee529c98 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2179,6 +2179,7 @@ GLIBC_2.17 xprt_register F
 GLIBC_2.17 xprt_unregister F
 GLIBC_2.18 __cxa_thread_atexit_impl F
 GLIBC_2.18 _mcount F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -2364,6 +2365,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index b4f0fdd999..f09c6d434a 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -33,7 +33,6 @@ GLIBC_2.17 pthread_sigqueue F
 GLIBC_2.17 pthread_timedjoin_np F
 GLIBC_2.17 pthread_tryjoin_np F
 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_join F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 8fc9b75676..7a9a6608f4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1854,6 +1854,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _IO_adjust_wcolumn F
 GLIBC_2.2 _IO_fgetpos F
 GLIBC_2.2 _IO_fgetpos64 F
@@ -2451,6 +2452,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index c2017537e2..9b2e09a2e4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
 GLIBC_2.2 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 8e84a695fd..6fef10b0ad 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1470,6 +1470,7 @@ GLIBC_2.32 pthread_rwlockattr_init F
 GLIBC_2.32 pthread_rwlockattr_setkind_np F
 GLIBC_2.32 pthread_rwlockattr_setpshared F
 GLIBC_2.32 pthread_self F
+GLIBC_2.32 pthread_setattr_default_np F
 GLIBC_2.32 pthread_setcancelstate F
 GLIBC_2.32 pthread_setcanceltype F
 GLIBC_2.32 pthread_setschedparam F
@@ -2123,6 +2124,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index bc072be61f..8a4bea9aa9 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -28,7 +28,6 @@ GLIBC_2.32 pthread_getcpuclockid F
 GLIBC_2.32 pthread_getname_np F
 GLIBC_2.32 pthread_join F
 GLIBC_2.32 pthread_setaffinity_np F
-GLIBC_2.32 pthread_setattr_default_np F
 GLIBC_2.32 pthread_setconcurrency F
 GLIBC_2.32 pthread_setname_np F
 GLIBC_2.32 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 424d683ffe..f97aeeb047 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -253,6 +254,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 5b52c456fb..117d44ad5f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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 thrd_create F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 15acd896df..70f5f81faf 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -250,6 +251,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 5b52c456fb..117d44ad5f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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 thrd_create F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 61c58b1e0f..bd80fd1afd 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1527,6 +1527,7 @@ GLIBC_2.29 pthread_rwlockattr_init F
 GLIBC_2.29 pthread_rwlockattr_setkind_np F
 GLIBC_2.29 pthread_rwlockattr_setpshared F
 GLIBC_2.29 pthread_self F
+GLIBC_2.29 pthread_setattr_default_np F
 GLIBC_2.29 pthread_setcancelstate F
 GLIBC_2.29 pthread_setcanceltype F
 GLIBC_2.29 pthread_setschedparam F
@@ -2307,6 +2308,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index d55f09a9fe..8ad8fc7c7f 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -27,7 +27,6 @@ GLIBC_2.29 pthread_getcpuclockid F
 GLIBC_2.29 pthread_getname_np F
 GLIBC_2.29 pthread_join F
 GLIBC_2.29 pthread_setaffinity_np F
-GLIBC_2.29 pthread_setattr_default_np F
 GLIBC_2.29 pthread_setconcurrency F
 GLIBC_2.29 pthread_setname_np F
 GLIBC_2.29 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index e89b8b935f..fb40c0292c 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -77,6 +77,7 @@ GLIBC_2.17 secure_getenv F
 GLIBC_2.17 sys_errlist D 0x410
 GLIBC_2.17 sys_nerr D 0x4
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 fanotify_mark F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0xa0
@@ -2258,6 +2259,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 2c4a7041b6..7e7fdfb8cd 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
 GLIBC_2.2 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 3c3c826952..dd243f7808 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1856,6 +1856,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _IO_adjust_wcolumn F
 GLIBC_2.2 _IO_fgetpos F
 GLIBC_2.2 _IO_fgetpos64 F
@@ -2441,6 +2442,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 1cbc49b937..1f5547e80c 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
 GLIBC_2.2 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 94a0819e08..b805382c4b 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
 GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
@@ -2292,6 +2293,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 6b87a988d4..3460d95267 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
 GLIBC_2.2 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 789189ea9d..21332b7b39 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -75,6 +75,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -254,6 +255,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 5b52c456fb..117d44ad5f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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 thrd_create F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index ae2fd168e7..5159aee942 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1812,6 +1812,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _IO_adjust_wcolumn F
 GLIBC_2.2 _IO_fgetpos F
 GLIBC_2.2 _IO_fgetpos64 F
@@ -2384,6 +2385,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 1cbc49b937..1f5547e80c 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
 GLIBC_2.2 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 4a39e0d5d5..4609ade92c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1529,6 +1529,7 @@ GLIBC_2.18 pthread_rwlockattr_init F
 GLIBC_2.18 pthread_rwlockattr_setkind_np F
 GLIBC_2.18 pthread_rwlockattr_setpshared F
 GLIBC_2.18 pthread_self F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
 GLIBC_2.18 pthread_setschedparam F
@@ -2358,6 +2359,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index ee29730057..c87d939959 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -27,7 +27,6 @@ GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
 GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_setaffinity_np F
-GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.18 pthread_setconcurrency F
 GLIBC_2.18 pthread_setname_np F
 GLIBC_2.18 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index f0d2c10414..41db7ed508 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1529,6 +1529,7 @@ GLIBC_2.18 pthread_rwlockattr_init F
 GLIBC_2.18 pthread_rwlockattr_setkind_np F
 GLIBC_2.18 pthread_rwlockattr_setpshared F
 GLIBC_2.18 pthread_self F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
 GLIBC_2.18 pthread_setschedparam F
@@ -2355,6 +2356,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index ee29730057..c87d939959 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -27,7 +27,6 @@ GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
 GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_setaffinity_np F
-GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.18 pthread_setconcurrency F
 GLIBC_2.18 pthread_setname_np F
 GLIBC_2.18 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ece8508afc..77d3b72f2b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1421,6 +1421,7 @@ GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
 GLIBC_2.18 __mips_fpu_getcw F
 GLIBC_2.18 __mips_fpu_setcw F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 getrlimit64 F
 GLIBC_2.19 setrlimit64 F
 GLIBC_2.2 _Exit F
@@ -2347,6 +2348,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index e523996633..fa52921d78 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getguardsize F
 GLIBC_2.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 0bfd7786d3..bfc6ca8d87 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1419,6 +1419,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 getrlimit64 F
 GLIBC_2.19 setrlimit64 F
 GLIBC_2.2 _Exit F
@@ -2345,6 +2346,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index e523996633..fa52921d78 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getguardsize F
 GLIBC_2.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index ae1796b582..cdade4e56a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1419,6 +1419,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 getrlimit64 F
 GLIBC_2.19 setrlimit64 F
 GLIBC_2.2 _Exit F
@@ -2353,6 +2354,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4139762550..62184c7a10 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1417,6 +1417,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
 GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
@@ -2347,6 +2348,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index f442fdf645..bc230f7020 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1572,6 +1572,7 @@ GLIBC_2.21 pthread_rwlockattr_init F
 GLIBC_2.21 pthread_rwlockattr_setkind_np F
 GLIBC_2.21 pthread_rwlockattr_setpshared F
 GLIBC_2.21 pthread_self F
+GLIBC_2.21 pthread_setattr_default_np F
 GLIBC_2.21 pthread_setcancelstate F
 GLIBC_2.21 pthread_setcanceltype F
 GLIBC_2.21 pthread_setschedparam F
@@ -2397,6 +2398,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 059b21f854..502268cbd5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -27,7 +27,6 @@ GLIBC_2.21 pthread_getcpuclockid F
 GLIBC_2.21 pthread_getname_np F
 GLIBC_2.21 pthread_join F
 GLIBC_2.21 pthread_setaffinity_np F
-GLIBC_2.21 pthread_setattr_default_np F
 GLIBC_2.21 pthread_setconcurrency F
 GLIBC_2.21 pthread_setname_np F
 GLIBC_2.21 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 0e3d3a3648..0e384dd37e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1818,6 +1818,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _IO_adjust_wcolumn F
 GLIBC_2.2 _IO_fgetpos F
 GLIBC_2.2 _IO_fgetpos64 F
@@ -2411,6 +2412,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 84312f522b..c2ac178742 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
 GLIBC_2.2 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index a14c3c9531..dac4a03938 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1818,6 +1818,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 __atomic_feclearexcept F
 GLIBC_2.19 __atomic_feholdexcept F
 GLIBC_2.19 __atomic_feupdateenv F
@@ -2444,6 +2445,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 513df99b4d..6a8958d5a8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -75,6 +75,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -2259,6 +2260,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 2d5583ebe8..89b4083cf4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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 thrd_create F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index e271e61128..16f4d90871 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2266,6 +2266,7 @@ GLIBC_2.17 xencrypt F
 GLIBC_2.17 xprt_register F
 GLIBC_2.17 xprt_unregister F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -2560,6 +2561,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index b4f0fdd999..f09c6d434a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -33,7 +33,6 @@ GLIBC_2.17 pthread_sigqueue F
 GLIBC_2.17 pthread_timedjoin_np F
 GLIBC_2.17 pthread_tryjoin_np F
 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_join F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index c883de1279..876ed3d11f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1472,6 +1472,7 @@ GLIBC_2.33 pthread_rwlockattr_init F
 GLIBC_2.33 pthread_rwlockattr_setkind_np F
 GLIBC_2.33 pthread_rwlockattr_setpshared F
 GLIBC_2.33 pthread_self F
+GLIBC_2.33 pthread_setattr_default_np F
 GLIBC_2.33 pthread_setcancelstate F
 GLIBC_2.33 pthread_setcanceltype F
 GLIBC_2.33 pthread_setschedparam F
@@ -2125,6 +2126,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index cc35881f1a..d6f50be603 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -28,7 +28,6 @@ GLIBC_2.33 pthread_getcpuclockid F
 GLIBC_2.33 pthread_getname_np F
 GLIBC_2.33 pthread_join F
 GLIBC_2.33 pthread_setaffinity_np F
-GLIBC_2.33 pthread_setattr_default_np F
 GLIBC_2.33 pthread_setconcurrency F
 GLIBC_2.33 pthread_setname_np F
 GLIBC_2.33 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index a8202f95cd..ec2dbc5f6c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1517,6 +1517,7 @@ GLIBC_2.27 pthread_rwlockattr_init F
 GLIBC_2.27 pthread_rwlockattr_setkind_np F
 GLIBC_2.27 pthread_rwlockattr_setpshared F
 GLIBC_2.27 pthread_self F
+GLIBC_2.27 pthread_setattr_default_np F
 GLIBC_2.27 pthread_setcancelstate F
 GLIBC_2.27 pthread_setcanceltype F
 GLIBC_2.27 pthread_setschedparam F
@@ -2325,6 +2326,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 6946ced1b9..240dfc6c9a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -27,7 +27,6 @@ GLIBC_2.27 pthread_getcpuclockid F
 GLIBC_2.27 pthread_getname_np F
 GLIBC_2.27 pthread_join F
 GLIBC_2.27 pthread_setaffinity_np F
-GLIBC_2.27 pthread_setattr_default_np F
 GLIBC_2.27 pthread_setconcurrency F
 GLIBC_2.27 pthread_setname_np F
 GLIBC_2.27 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index d63e9a2139..d1bc174497 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1808,6 +1808,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 __longjmp_chk F
 GLIBC_2.19 __sigsetjmp F
 GLIBC_2.19 _longjmp F
@@ -2409,6 +2410,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0c6df4a437..20ee83baca 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.19 __libpthread_version_placeholder F
 GLIBC_2.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 55cd1e75ce..3771dc652a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.19 __longjmp_chk F
 GLIBC_2.19 __sigsetjmp F
 GLIBC_2.19 _longjmp F
@@ -2296,6 +2297,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index d287d8fe7a..35f0b89d66 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.19 __libpthread_version_placeholder F
 GLIBC_2.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 39c4667cb0..6355ca1061 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0x98
 GLIBC_2.2 _IO_2_1_stdin_ D 0x98
@@ -2265,6 +2266,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 2c4a7041b6..7e7fdfb8cd 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
 GLIBC_2.2 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index ae7e00cbc4..a1e3c3a93b 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0x98
 GLIBC_2.2 _IO_2_1_stdin_ D 0x98
@@ -2262,6 +2263,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 2c4a7041b6..7e7fdfb8cd 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
 GLIBC_2.2 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 8556de3265..17026a997b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1814,6 +1814,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _IO_adjust_wcolumn F
 GLIBC_2.2 _IO_fgetpos F
 GLIBC_2.2 _IO_fgetpos64 F
@@ -2400,6 +2401,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index c2017537e2..9b2e09a2e4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 pthread_attr_getstack F
 GLIBC_2.2 pthread_attr_setstack F
 GLIBC_2.2 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index d2f08437d1..9dc72e0556 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -83,6 +83,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2 _Exit F
 GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
 GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
@@ -2313,6 +2314,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 6b87a988d4..3460d95267 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2 _IO_flockfile F
 GLIBC_2.2 _IO_ftrylockfile F
 GLIBC_2.2 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index f752981203..586aec23cb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -76,6 +76,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.2.5 _Exit F
 GLIBC_2.2.5 _IO_2_1_stderr_ D 0xe0
 GLIBC_2.2.5 _IO_2_1_stdin_ D 0xe0
@@ -2274,6 +2275,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index cea092874a..fd77f8a602 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
 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.2.5 _IO_flockfile F
 GLIBC_2.2.5 _IO_ftrylockfile F
 GLIBC_2.2.5 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 55f133b0d5..1529b87004 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2189,6 +2189,7 @@ GLIBC_2.17 clock_nanosleep F
 GLIBC_2.17 clock_settime F
 GLIBC_2.17 secure_getenv F
 GLIBC_2.18 __cxa_thread_atexit_impl F
+GLIBC_2.18 pthread_setattr_default_np F
 GLIBC_2.22 fmemopen F
 GLIBC_2.23 fts64_children F
 GLIBC_2.23 fts64_close F
@@ -2379,6 +2380,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
 GLIBC_2.34 pthread_rwlockattr_init F
 GLIBC_2.34 pthread_rwlockattr_setkind_np F
 GLIBC_2.34 pthread_rwlockattr_setpshared F
+GLIBC_2.34 pthread_setattr_default_np F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.34 pthread_spin_destroy F
 GLIBC_2.34 pthread_spin_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 394748f198..ab2ec9227a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -33,7 +33,6 @@ GLIBC_2.16 pthread_sigqueue F
 GLIBC_2.16 pthread_timedjoin_np F
 GLIBC_2.16 pthread_tryjoin_np F
 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_join F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres into libc
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
                   ` (3 preceding siblings ...)
  2021-05-10 12:37 ` [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc Florian Weimer
@ 2021-05-10 12:37 ` Florian Weimer
  2021-05-10 16:45   ` Adhemerval Zanella
  2021-05-10 12:38 ` [PATCH 6/8] nptl: Move __free_tcb " Florian Weimer
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:37 UTC (permalink / raw)
  To: libc-alpha

This replaces the FREE_P macro with the __nptl_stack_in_use inline
function.  stack_list_del is renamed to __nptl_stack_list_del,
stack_list_add to __nptl_stack_list_add, __deallocate_stack to
__nptl_deallocate_stack, free_stacks to __nptl_free_stacks.

It is convenient to move __libpthread_freeres into libc at the
same time.  This removes the temporary __default_pthread_attr_freeres
export and restores full freeres coverage for __default_pthread_attr.
---
 malloc/set-freeres.c  |  15 +++--
 nptl/Makefile         |   3 +-
 nptl/Versions         |   5 +-
 nptl/allocatestack.c  | 147 ++----------------------------------------
 nptl/descr.h          |   6 ++
 nptl/nptl-stack.c     | 130 +++++++++++++++++++++++++++++++++++++
 nptl/nptl-stack.h     |  50 ++++++++++++++
 nptl/nptlfreeres.c    |   3 +-
 nptl/pthreadP.h       |   7 +-
 nptl/pthread_create.c |   4 +-
 10 files changed, 212 insertions(+), 158 deletions(-)
 create mode 100644 nptl/nptl-stack.c
 create mode 100644 nptl/nptl-stack.h

diff --git a/malloc/set-freeres.c b/malloc/set-freeres.c
index d404250151..5c19a2725c 100644
--- a/malloc/set-freeres.c
+++ b/malloc/set-freeres.c
@@ -29,7 +29,15 @@ DEFINE_HOOK (__libc_subfreeres, (void));
 
 symbol_set_define (__libc_freeres_ptrs);
 
-extern __attribute__ ((weak)) void __libpthread_freeres (void);
+extern void __libpthread_freeres (void)
+#if PTHREAD_IN_LIBC && defined SHARED
+/* It is possible to call __libpthread_freeres directly in shared
+   builds with an integrated libpthread.  */
+  attribute_hidden
+#else
+  __attribute__ ((weak))
+#endif
+  ;
 
 void __libc_freeres_fn_section
 __libc_freeres (void)
@@ -51,10 +59,7 @@ __libc_freeres (void)
       /* We run the resource freeing after IO cleanup.  */
       RUN_HOOK (__libc_subfreeres, ());
 
-      /* Call the libpthread list of cleanup functions
-	 (weak-ref-and-check).  */
-      if (&__libpthread_freeres != NULL)
-	__libpthread_freeres ();
+      call_function_static_weak (__libpthread_freeres);
 
 #ifdef SHARED
       __libc_unwind_link_freeres ();
diff --git a/nptl/Makefile b/nptl/Makefile
index 2a18eadf71..3b83817163 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -44,9 +44,11 @@ routines = \
   libc_multiple_threads \
   libc_pthread_init \
   lowlevellock \
+  nptl-stack \
   nptl_deallocate_tsd \
   nptl_nthreads \
   nptl_setxid \
+  nptlfreeres \
   old_pthread_atfork \
   old_pthread_cond_broadcast \
   old_pthread_cond_destroy \
@@ -185,7 +187,6 @@ libpthread-routines = \
   funlockfile \
   libpthread-compat \
   nptl-init \
-  nptlfreeres \
   pt-interp \
   pthread_attr_getaffinity \
   pthread_attr_getguardsize \
diff --git a/nptl/Versions b/nptl/Versions
index de025e179c..93219d2657 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -303,7 +303,6 @@ libc {
   }
   GLIBC_PRIVATE {
     __default_pthread_attr;
-    __default_pthread_attr_freeres;
     __default_pthread_attr_lock;
     __futex_abstimed_wait64;
     __futex_abstimed_wait_cancelable64;
@@ -320,9 +319,12 @@ libc {
     __lll_trylock_elision;
     __lll_unlock_elision;
     __mutex_aconf;
+    __nptl_deallocate_stack;
     __nptl_deallocate_tsd;
     __nptl_nthreads;
     __nptl_setxid_sighandler;
+    __nptl_stack_list_add;
+    __nptl_stack_list_del;
     __pthread_attr_copy;
     __pthread_attr_destroy;
     __pthread_attr_init;
@@ -459,7 +461,6 @@ libpthread {
   }
 
   GLIBC_PRIVATE {
-    __libpthread_freeres;
     __pthread_clock_gettime;
     __pthread_clock_settime;
     __pthread_get_minstack;
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 8672e89e75..c0a5c4d96d 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -31,7 +31,7 @@
 #include <lowlevellock.h>
 #include <futex-internal.h>
 #include <kernel-features.h>
-
+#include <nptl-stack.h>
 
 #ifndef NEED_SEPARATE_REGISTER_STACK
 
@@ -92,56 +92,6 @@
 # define MAP_STACK 0
 #endif
 
-/* This yields the pointer that TLS support code calls the thread pointer.  */
-#if TLS_TCB_AT_TP
-# define TLS_TPADJ(pd) (pd)
-#elif TLS_DTV_AT_TP
-# define TLS_TPADJ(pd) ((struct pthread *)((char *) (pd) + TLS_PRE_TCB_SIZE))
-#endif
-
-/* Cache handling for not-yet free stacks.  */
-
-/* Maximum size in kB of cache.  */
-static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default.  */
-
-/* Check whether the stack is still used or not.  */
-#define FREE_P(descr) ((descr)->tid <= 0)
-
-
-static void
-stack_list_del (list_t *elem)
-{
-  GL (dl_in_flight_stack) = (uintptr_t) elem;
-
-  atomic_write_barrier ();
-
-  list_del (elem);
-
-  atomic_write_barrier ();
-
-  GL (dl_in_flight_stack) = 0;
-}
-
-
-static void
-stack_list_add (list_t *elem, list_t *list)
-{
-  GL (dl_in_flight_stack) = (uintptr_t) elem | 1;
-
-  atomic_write_barrier ();
-
-  list_add (elem, list);
-
-  atomic_write_barrier ();
-
-  GL (dl_in_flight_stack) = 0;
-}
-
-
-/* We create a double linked list of all cache entries.  Double linked
-   because this allows removing entries from the end.  */
-
-
 /* Get a stack frame from the cache.  We have to match by size since
    some blocks might be too small or far too large.  */
 static struct pthread *
@@ -164,7 +114,7 @@ get_cached_stack (size_t *sizep, void **memp)
       struct pthread *curr;
 
       curr = list_entry (entry, struct pthread, list);
-      if (FREE_P (curr) && curr->stackblock_size >= size)
+      if (__nptl_stack_in_use (curr) && curr->stackblock_size >= size)
 	{
 	  if (curr->stackblock_size == size)
 	    {
@@ -193,10 +143,10 @@ get_cached_stack (size_t *sizep, void **memp)
   result->setxid_futex = -1;
 
   /* Dequeue the entry.  */
-  stack_list_del (&result->list);
+  __nptl_stack_list_del (&result->list);
 
   /* And add to the list of stacks in use.  */
-  stack_list_add (&result->list, &GL (dl_stack_used));
+  __nptl_stack_list_add (&result->list, &GL (dl_stack_used));
 
   /* And decrease the cache size.  */
   GL (dl_stack_cache_actsize) -= result->stackblock_size;
@@ -229,68 +179,6 @@ get_cached_stack (size_t *sizep, void **memp)
   return result;
 }
 
-
-/* Free stacks until cache size is lower than LIMIT.  */
-static void
-free_stacks (size_t limit)
-{
-  /* We reduce the size of the cache.  Remove the last entries until
-     the size is below the limit.  */
-  list_t *entry;
-  list_t *prev;
-
-  /* Search from the end of the list.  */
-  list_for_each_prev_safe (entry, prev, &GL (dl_stack_cache))
-    {
-      struct pthread *curr;
-
-      curr = list_entry (entry, struct pthread, list);
-      if (FREE_P (curr))
-	{
-	  /* Unlink the block.  */
-	  stack_list_del (entry);
-
-	  /* Account for the freed memory.  */
-	  GL (dl_stack_cache_actsize) -= curr->stackblock_size;
-
-	  /* Free the memory associated with the ELF TLS.  */
-	  _dl_deallocate_tls (TLS_TPADJ (curr), false);
-
-	  /* Remove this block.  This should never fail.  If it does
-	     something is really wrong.  */
-	  if (__munmap (curr->stackblock, curr->stackblock_size) != 0)
-	    abort ();
-
-	  /* Maybe we have freed enough.  */
-	  if (GL (dl_stack_cache_actsize) <= limit)
-	    break;
-	}
-    }
-}
-
-/* Free all the stacks on cleanup.  */
-void
-__nptl_stacks_freeres (void)
-{
-  free_stacks (0);
-}
-
-/* Add a stack frame which is not used anymore to the stack.  Must be
-   called with the cache lock held.  */
-static inline void
-__attribute ((always_inline))
-queue_stack (struct pthread *stack)
-{
-  /* We unconditionally add the stack to the list.  The memory may
-     still be in use but it will not be reused until the kernel marks
-     the stack as not used anymore.  */
-  stack_list_add (&stack->list, &GL (dl_stack_cache));
-
-  GL (dl_stack_cache_actsize) += stack->stackblock_size;
-  if (__glibc_unlikely (GL (dl_stack_cache_actsize) > stack_cache_maxsize))
-    free_stacks (stack_cache_maxsize);
-}
-
 /* Return the guard page position on allocated stack.  */
 static inline char *
 __attribute ((always_inline))
@@ -588,7 +476,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
 
 	  /* And add to the list of stacks in use.  */
-	  stack_list_add (&pd->list, &GL (dl_stack_used));
+	  __nptl_stack_list_add (&pd->list, &GL (dl_stack_used));
 
 	  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
 
@@ -630,7 +518,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	      lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
 
 	      /* Remove the thread from the list.  */
-	      stack_list_del (&pd->list);
+	      __nptl_stack_list_del (&pd->list);
 
 	      lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
 
@@ -731,26 +619,3 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 
   return 0;
 }
-
-
-void
-__deallocate_stack (struct pthread *pd)
-{
-  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
-
-  /* Remove the thread from the list of threads with user defined
-     stacks.  */
-  stack_list_del (&pd->list);
-
-  /* Not much to do.  Just free the mmap()ed memory.  Note that we do
-     not reset the 'used' flag in the 'tid' field.  This is done by
-     the kernel.  If no thread has been created yet this field is
-     still zero.  */
-  if (__glibc_likely (! pd->user_stack))
-    (void) queue_stack (pd);
-  else
-    /* Free the memory associated with the ELF TLS.  */
-    _dl_deallocate_tls (TLS_TPADJ (pd), false);
-
-  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
-}
diff --git a/nptl/descr.h b/nptl/descr.h
index d423a53bbf..3de9535449 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -416,5 +416,11 @@ struct pthread
   (sizeof (struct pthread) - offsetof (struct pthread, end_padding))
 } __attribute ((aligned (TCB_ALIGNMENT)));
 
+/* This yields the pointer that TLS support code calls the thread pointer.  */
+#if TLS_TCB_AT_TP
+# define TLS_TPADJ(pd) (pd)
+#elif TLS_DTV_AT_TP
+# define TLS_TPADJ(pd) ((struct pthread *)((char *) (pd) + TLS_PRE_TCB_SIZE))
+#endif
 
 #endif	/* descr.h */
diff --git a/nptl/nptl-stack.c b/nptl/nptl-stack.c
new file mode 100644
index 0000000000..5ead9db198
--- /dev/null
+++ b/nptl/nptl-stack.c
@@ -0,0 +1,130 @@
+/* Stack cache management for NPTL.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <nptl-stack.h>
+#include <ldsodefs.h>
+
+/* Maximum size in kB of cache.  */
+static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default.  */
+
+void
+__nptl_stack_list_del (list_t *elem)
+{
+  GL (dl_in_flight_stack) = (uintptr_t) elem;
+
+  atomic_write_barrier ();
+
+  list_del (elem);
+
+  atomic_write_barrier ();
+
+  GL (dl_in_flight_stack) = 0;
+}
+libc_hidden_def (__nptl_stack_list_del)
+
+void
+__nptl_stack_list_add (list_t *elem, list_t *list)
+{
+  GL (dl_in_flight_stack) = (uintptr_t) elem | 1;
+
+  atomic_write_barrier ();
+
+  list_add (elem, list);
+
+  atomic_write_barrier ();
+
+  GL (dl_in_flight_stack) = 0;
+}
+libc_hidden_def (__nptl_stack_list_add)
+
+void
+__nptl_free_stacks (size_t limit)
+{
+  /* We reduce the size of the cache.  Remove the last entries until
+     the size is below the limit.  */
+  list_t *entry;
+  list_t *prev;
+
+  /* Search from the end of the list.  */
+  list_for_each_prev_safe (entry, prev, &GL (dl_stack_cache))
+    {
+      struct pthread *curr;
+
+      curr = list_entry (entry, struct pthread, list);
+      if (__nptl_stack_in_use (curr))
+	{
+	  /* Unlink the block.  */
+	  __nptl_stack_list_del (entry);
+
+	  /* Account for the freed memory.  */
+	  GL (dl_stack_cache_actsize) -= curr->stackblock_size;
+
+	  /* Free the memory associated with the ELF TLS.  */
+	  _dl_deallocate_tls (TLS_TPADJ (curr), false);
+
+	  /* Remove this block.  This should never fail.  If it does
+	     something is really wrong.  */
+	  if (__munmap (curr->stackblock, curr->stackblock_size) != 0)
+	    abort ();
+
+	  /* Maybe we have freed enough.  */
+	  if (GL (dl_stack_cache_actsize) <= limit)
+	    break;
+	}
+    }
+}
+
+/* Add a stack frame which is not used anymore to the stack.  Must be
+   called with the cache lock held.  */
+static inline void
+__attribute ((always_inline))
+queue_stack (struct pthread *stack)
+{
+  /* We unconditionally add the stack to the list.  The memory may
+     still be in use but it will not be reused until the kernel marks
+     the stack as not used anymore.  */
+  __nptl_stack_list_add (&stack->list, &GL (dl_stack_cache));
+
+  GL (dl_stack_cache_actsize) += stack->stackblock_size;
+  if (__glibc_unlikely (GL (dl_stack_cache_actsize) > stack_cache_maxsize))
+    __nptl_free_stacks (stack_cache_maxsize);
+}
+
+void
+__nptl_deallocate_stack (struct pthread *pd)
+{
+  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
+
+  /* Remove the thread from the list of threads with user defined
+     stacks.  */
+  __nptl_stack_list_del (&pd->list);
+
+  /* Not much to do.  Just free the mmap()ed memory.  Note that we do
+     not reset the 'used' flag in the 'tid' field.  This is done by
+     the kernel.  If no thread has been created yet this field is
+     still zero.  */
+  if (__glibc_likely (! pd->user_stack))
+    (void) queue_stack (pd);
+  else
+    /* Free the memory associated with the ELF TLS.  */
+    _dl_deallocate_tls (TLS_TPADJ (pd), false);
+
+  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
+}
+libc_hidden_def (__nptl_deallocate_stack)
diff --git a/nptl/nptl-stack.h b/nptl/nptl-stack.h
new file mode 100644
index 0000000000..8631b61816
--- /dev/null
+++ b/nptl/nptl-stack.h
@@ -0,0 +1,50 @@
+/* Stack cache management for NPTL.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _NPTL_STACK_H
+#define _NPTL_STACK_H
+
+#include <descr.h>
+#include <list.h>
+#include <stdbool.h>
+
+/* Check whether the stack is still used or not.  */
+static inline bool
+__nptl_stack_in_use (struct pthread *pd)
+{
+  return pd->tid <= 0;
+}
+
+/* Remove the stack ELEM from its list.  */
+void __nptl_stack_list_del (list_t *elem);
+libc_hidden_proto (__nptl_stack_list_del)
+
+/* Add ELEM to a stack list.  LIST can be either &GL (dl_stack_used)
+   or &GL (dl_stack_cache).  */
+void __nptl_stack_list_add (list_t *elem, list_t *list);
+libc_hidden_proto (__nptl_stack_list_add)
+
+/* Free allocated stack.  */
+extern void __nptl_deallocate_stack (struct pthread *pd);
+libc_hidden_proto (__nptl_deallocate_stack)
+
+/* Free stacks until cache size is lower than LIMIT.  */
+void __nptl_free_stacks (size_t limit) attribute_hidden;
+
+#endif /* _NPTL_STACK_H */
diff --git a/nptl/nptlfreeres.c b/nptl/nptlfreeres.c
index 4833f04714..527b5ee103 100644
--- a/nptl/nptlfreeres.c
+++ b/nptl/nptlfreeres.c
@@ -19,6 +19,7 @@
 #include <set-hooks.h>
 #include <libc-symbols.h>
 #include <pthreadP.h>
+#include <nptl-stack.h>
 
 /* Free libpthread.so resources.
    Note: Caller ensures we are called only once.  */
@@ -26,5 +27,5 @@ void
 __libpthread_freeres (void)
 {
   call_function_static_weak (__default_pthread_attr_freeres);
-  call_function_static_weak (__nptl_stacks_freeres);
+  __nptl_free_stacks (0);
 }
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 8466332248..505d0f00ff 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -203,7 +203,7 @@ libc_hidden_proto (__default_pthread_attr)
 extern int __default_pthread_attr_lock;
 libc_hidden_proto (__default_pthread_attr_lock)
 /* Called from __libc_freeres to deallocate the default attribute.  */
-extern void __default_pthread_attr_freeres (void);
+extern void __default_pthread_attr_freeres (void) attribute_hidden;
 
 /* Size and alignment of static TLS block.  */
 extern size_t __static_tls_size attribute_hidden;
@@ -314,9 +314,6 @@ __do_cancel (void)
    descriptor is still valid.  */
 extern void __free_tcb (struct pthread *pd) attribute_hidden;
 
-/* Free allocated stack.  */
-extern void __deallocate_stack (struct pthread *pd) attribute_hidden;
-
 /* Change the permissions of a thread stack.  Called from
    _dl_make_stacks_executable and pthread_create.  */
 int
@@ -679,8 +676,6 @@ void __nptl_setxid_sighandler (int sig, siginfo_t *si, void *ctx);
 libc_hidden_proto (__nptl_setxid_sighandler)
 extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden;
 
-extern void __nptl_stacks_freeres (void) attribute_hidden;
-
 extern void __wait_lookup_done (void) attribute_hidden;
 
 /* Allocates the extension space for ATTR.  Returns an error code on
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index d19456d48b..fcaf440bb5 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -228,7 +228,7 @@ __free_tcb (struct pthread *pd)
       /* Queue the stack memory block for reuse and exit the process.  The
 	 kernel will signal via writing to the address returned by
 	 QUEUE-STACK when the stack is available.  */
-      __deallocate_stack (pd);
+      __nptl_deallocate_stack (pd);
     }
 }
 
@@ -711,7 +711,7 @@ __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr,
 	    futex_wake (&pd->setxid_futex, 1, FUTEX_PRIVATE);
 
 	  /* Free the resources.  */
-	  __deallocate_stack (pd);
+	  __nptl_deallocate_stack (pd);
 	}
 
       /* We have to translate error codes.  */
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 6/8] nptl: Move __free_tcb into libc
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
                   ` (4 preceding siblings ...)
  2021-05-10 12:37 ` [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres " Florian Weimer
@ 2021-05-10 12:38 ` Florian Weimer
  2021-05-10 16:49   ` Adhemerval Zanella
  2021-05-10 12:38 ` [PATCH 7/8] nptl: Move pthread_detach, thrd_detach " Florian Weimer
  2021-05-10 12:42 ` [PATCH 8/8] nptl: Move thread join functions " Florian Weimer
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:38 UTC (permalink / raw)
  To: libc-alpha

Under the name __nptl_free_tcb.
---
 nptl/Makefile              |  1 +
 nptl/Versions              |  1 +
 nptl/nptl_free_tcb.c       | 46 ++++++++++++++++++++++++++++++++++++++
 nptl/pthreadP.h            |  3 ++-
 nptl/pthread_create.c      | 27 +---------------------
 nptl/pthread_detach.c      |  2 +-
 nptl/pthread_join_common.c |  2 +-
 7 files changed, 53 insertions(+), 29 deletions(-)
 create mode 100644 nptl/nptl_free_tcb.c

diff --git a/nptl/Makefile b/nptl/Makefile
index 3b83817163..82dc6f466d 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -46,6 +46,7 @@ routines = \
   lowlevellock \
   nptl-stack \
   nptl_deallocate_tsd \
+  nptl_free_tcb \
   nptl_nthreads \
   nptl_setxid \
   nptlfreeres \
diff --git a/nptl/Versions b/nptl/Versions
index 93219d2657..da610a4803 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -321,6 +321,7 @@ libc {
     __mutex_aconf;
     __nptl_deallocate_stack;
     __nptl_deallocate_tsd;
+    __nptl_free_tcb;
     __nptl_nthreads;
     __nptl_setxid_sighandler;
     __nptl_stack_list_add;
diff --git a/nptl/nptl_free_tcb.c b/nptl/nptl_free_tcb.c
new file mode 100644
index 0000000000..65c4d3bfa7
--- /dev/null
+++ b/nptl/nptl_free_tcb.c
@@ -0,0 +1,46 @@
+/* TCB deallocation for NPTL.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <nptl-stack.h>
+#include <pthreadP.h>
+#include <stdlib.h>
+
+void
+__nptl_free_tcb (struct pthread *pd)
+{
+  /* The thread is exiting now.  */
+  if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
+                                             TERMINATED_BIT) == 0, 1))
+    {
+      /* Free TPP data.  */
+      if (__glibc_unlikely (pd->tpp != NULL))
+        {
+          struct priority_protection_data *tpp = pd->tpp;
+
+          pd->tpp = NULL;
+          free (tpp);
+        }
+
+      /* Queue the stack memory block for reuse and exit the process.  The
+         kernel will signal via writing to the address returned by
+         QUEUE-STACK when the stack is available.  */
+      __nptl_deallocate_stack (pd);
+    }
+}
+libc_hidden_def (__nptl_free_tcb)
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 505d0f00ff..d580f71a38 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -312,7 +312,8 @@ __do_cancel (void)
 
 /* Deallocate a thread's stack after optionally making sure the thread
    descriptor is still valid.  */
-extern void __free_tcb (struct pthread *pd) attribute_hidden;
+extern void __nptl_free_tcb (struct pthread *pd);
+libc_hidden_proto (__nptl_free_tcb)
 
 /* Change the permissions of a thread stack.  Called from
    _dl_make_stacks_executable and pthread_create.  */
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index fcaf440bb5..770656453d 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -207,31 +207,6 @@ static int create_thread (struct pthread *pd, const struct pthread_attr *attr,
 
 #include <createthread.c>
 
-/* Deallocate a thread's stack after optionally making sure the thread
-   descriptor is still valid.  */
-void
-__free_tcb (struct pthread *pd)
-{
-  /* The thread is exiting now.  */
-  if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
-					     TERMINATED_BIT) == 0, 1))
-    {
-      /* Free TPP data.  */
-      if (__glibc_unlikely (pd->tpp != NULL))
-	{
-	  struct priority_protection_data *tpp = pd->tpp;
-
-	  pd->tpp = NULL;
-	  free (tpp);
-	}
-
-      /* Queue the stack memory block for reuse and exit the process.  The
-	 kernel will signal via writing to the address returned by
-	 QUEUE-STACK when the stack is available.  */
-      __nptl_deallocate_stack (pd);
-    }
-}
-
 /* Local function to start thread and handle cleanup.
    createthread.c defines the macro START_THREAD_DEFN to the
    declaration that its create_thread function will refer to, and
@@ -444,7 +419,7 @@ START_THREAD_DEFN
   /* If the thread is detached free the TCB.  */
   if (IS_DETACHED (pd))
     /* Free the TCB.  */
-    __free_tcb (pd);
+    __nptl_free_tcb (pd);
 
   /* We cannot call '_exit' here.  '_exit' will terminate the process.
 
diff --git a/nptl/pthread_detach.c b/nptl/pthread_detach.c
index 57293ec950..410255bbe1 100644
--- a/nptl/pthread_detach.c
+++ b/nptl/pthread_detach.c
@@ -49,7 +49,7 @@ __pthread_detach (pthread_t th)
     if ((pd->cancelhandling & EXITING_BITMASK) != 0)
       /* Note that the code in __free_tcb makes sure each thread
 	 control block is freed only once.  */
-      __free_tcb (pd);
+      __nptl_free_tcb (pd);
 
   return result;
 }
diff --git a/nptl/pthread_join_common.c b/nptl/pthread_join_common.c
index a99c26e27e..e87801b5a3 100644
--- a/nptl/pthread_join_common.c
+++ b/nptl/pthread_join_common.c
@@ -122,7 +122,7 @@ __pthread_clockjoin_ex (pthread_t threadid, void **thread_return,
 	*thread_return = pd_result;
 
       /* Free the TCB.  */
-      __free_tcb (pd);
+      __nptl_free_tcb (pd);
     }
   else
     pd->joinid = NULL;
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 7/8] nptl: Move pthread_detach, thrd_detach into libc
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
                   ` (5 preceding siblings ...)
  2021-05-10 12:38 ` [PATCH 6/8] nptl: Move __free_tcb " Florian Weimer
@ 2021-05-10 12:38 ` Florian Weimer
  2021-05-10 16:56   ` Adhemerval Zanella
  2021-05-10 12:42 ` [PATCH 8/8] nptl: Move thread join functions " Florian Weimer
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:38 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 nptl/Makefile                                      |  2 +-
 nptl/Versions                                      |  6 ++++--
 nptl/pthreadP.h                                    |  1 +
 nptl/pthread_detach.c                              | 14 +++++++++++---
 sysdeps/pthread/Makefile                           |  3 ++-
 sysdeps/pthread/thrd_detach.c                      | 11 ++++++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/arc/libc.abilist           |  4 ++++
 sysdeps/unix/sysv/linux/arc/libpthread.abilist     |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  2 --
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  2 --
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  2 --
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
 .../unix/sysv/linux/mips/mips64/libpthread.abilist |  2 --
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  2 --
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
 .../linux/powerpc/powerpc32/libpthread.abilist     |  2 --
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
 .../linux/powerpc/powerpc64/be/libpthread.abilist  |  2 --
 .../sysv/linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
 .../linux/powerpc/powerpc64/le/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
 .../unix/sysv/linux/riscv/rv32/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
 .../unix/sysv/linux/riscv/rv64/libpthread.abilist  |  2 --
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  2 --
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
 .../sysv/linux/s390/s390-64/libpthread.abilist     |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
 .../sysv/linux/sparc/sparc64/libpthread.abilist    |  2 --
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |  4 ++++
 .../unix/sysv/linux/x86_64/64/libpthread.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
 .../unix/sysv/linux/x86_64/x32/libpthread.abilist  |  2 --
 67 files changed, 157 insertions(+), 66 deletions(-)

diff --git a/nptl/Makefile b/nptl/Makefile
index 82dc6f466d..3ef4cb966b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -95,6 +95,7 @@ routines = \
   pthread_condattr_init \
   pthread_condattr_setclock \
   pthread_condattr_setpshared \
+  pthread_detach \
   pthread_equal \
   pthread_exit \
   pthread_getaffinity \
@@ -201,7 +202,6 @@ libpthread-routines = \
   pthread_cancel \
   pthread_clockjoin \
   pthread_create \
-  pthread_detach \
   pthread_getattr_default_np \
   pthread_getconcurrency \
   pthread_getcpuclockid \
diff --git a/nptl/Versions b/nptl/Versions
index da610a4803..46ae34a1a2 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -37,6 +37,7 @@ libc {
     pthread_cond_wait;
     pthread_condattr_destroy;
     pthread_condattr_init;
+    pthread_detach;
     pthread_equal;
     pthread_exit;
     pthread_getschedparam;
@@ -186,6 +187,7 @@ libc {
     mtx_trylock;
     mtx_unlock;
     thrd_current;
+    thrd_detach;
     thrd_equal;
     thrd_exit;
     thrd_sleep;
@@ -240,6 +242,7 @@ libc {
     pthread_condattr_getpshared;
     pthread_condattr_setclock;
     pthread_condattr_setpshared;
+    pthread_detach;
     pthread_getspecific;
     pthread_key_create;
     pthread_key_delete;
@@ -295,6 +298,7 @@ libc {
     sem_trywait;
     sem_unlink;
     sem_wait;
+    thrd_detach;
     thrd_exit;
     tss_create;
     tss_delete;
@@ -365,7 +369,6 @@ libpthread {
     funlockfile;
     pthread_cancel;
     pthread_create;
-    pthread_detach;
     pthread_join;
     pthread_sigmask;
   }
@@ -449,7 +452,6 @@ libpthread {
   # C11 thread symbols.
   GLIBC_2.28 {
     thrd_create;
-    thrd_detach;
     thrd_join;
   }
 
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index d580f71a38..34d133b187 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -529,6 +529,7 @@ extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
 extern pthread_t __pthread_self (void);
 extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
 extern int __pthread_detach (pthread_t th);
+libc_hidden_proto (__pthread_detach)
 extern int __pthread_cancel (pthread_t th);
 extern int __pthread_kill (pthread_t threadid, int signo);
 extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
diff --git a/nptl/pthread_detach.c b/nptl/pthread_detach.c
index 410255bbe1..ac50db9b0e 100644
--- a/nptl/pthread_detach.c
+++ b/nptl/pthread_detach.c
@@ -19,10 +19,10 @@
 #include <errno.h>
 #include "pthreadP.h"
 #include <atomic.h>
-
+#include <shlib-compat.h>
 
 int
-__pthread_detach (pthread_t th)
+___pthread_detach (pthread_t th)
 {
   struct pthread *pd = (struct pthread *) th;
 
@@ -53,4 +53,12 @@ __pthread_detach (pthread_t th)
 
   return result;
 }
-weak_alias (__pthread_detach, pthread_detach)
+versioned_symbol (libc, ___pthread_detach, pthread_detach, GLIBC_2_34);
+libc_hidden_ver (___pthread_detach, __pthread_detach)
+#ifndef SHARED
+strong_alias (___pthread_detach, __pthread_detach)
+#endif
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libc, ___pthread_detach, pthread_detach, GLIBC_2_0);
+#endif
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 54bb11bab9..ec8e3af577 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_join
+libpthread-routines += thrd_create thrd_join
 
 $(libpthread-routines-var) += \
   call_once \
@@ -47,6 +47,7 @@ $(libpthread-routines-var) += \
   mtx_timedlock \
   mtx_trylock \
   mtx_unlock \
+  thrd_detach \
   thrd_exit \
   tss_create \
   tss_delete \
diff --git a/sysdeps/pthread/thrd_detach.c b/sysdeps/pthread/thrd_detach.c
index cbc63f57a2..29ac011d5b 100644
--- a/sysdeps/pthread/thrd_detach.c
+++ b/sysdeps/pthread/thrd_detach.c
@@ -17,12 +17,21 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include "thrd_priv.h"
+#include <shlib-compat.h>
 
 int
-thrd_detach (thrd_t thr)
+__thrd_detach (thrd_t thr)
 {
   int err_code;
 
   err_code = __pthread_detach (thr);
   return thrd_err_map (err_code);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__thrd_detach, thrd_detach)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index caee529c98..b5b0b44697 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1474,6 +1474,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
 GLIBC_2.17 pthread_condattr_init F
 GLIBC_2.17 pthread_condattr_setclock F
 GLIBC_2.17 pthread_condattr_setpshared F
+GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_equal F
 GLIBC_2.17 pthread_exit F
 GLIBC_2.17 pthread_getaffinity_np F
@@ -2251,6 +2252,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2325,6 +2327,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2384,6 +2387,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index f09c6d434a..71627a5cc8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.17 pthread_attr_setstackaddr F
 GLIBC_2.17 pthread_attr_setstacksize F
 GLIBC_2.17 pthread_cancel F
 GLIBC_2.17 pthread_create F
-GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_getconcurrency F
 GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
@@ -34,7 +33,6 @@ GLIBC_2.17 pthread_timedjoin_np F
 GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 7a9a6608f4..20d4855e90 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -897,6 +897,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2149,6 +2150,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2412,6 +2414,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2471,6 +2474,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 9b2e09a2e4..b4ea31102a 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 6fef10b0ad..19eb517f28 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1414,6 +1414,7 @@ GLIBC_2.32 pthread_condattr_getpshared F
 GLIBC_2.32 pthread_condattr_init F
 GLIBC_2.32 pthread_condattr_setclock F
 GLIBC_2.32 pthread_condattr_setpshared F
+GLIBC_2.32 pthread_detach F
 GLIBC_2.32 pthread_equal F
 GLIBC_2.32 pthread_exit F
 GLIBC_2.32 pthread_getaffinity_np F
@@ -1862,6 +1863,7 @@ GLIBC_2.32 textdomain F
 GLIBC_2.32 tfind F
 GLIBC_2.32 tgkill F
 GLIBC_2.32 thrd_current F
+GLIBC_2.32 thrd_detach F
 GLIBC_2.32 thrd_equal F
 GLIBC_2.32 thrd_exit F
 GLIBC_2.32 thrd_sleep F
@@ -2084,6 +2086,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2143,6 +2146,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 8a4bea9aa9..8ac0cde1ee 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -21,7 +21,6 @@ GLIBC_2.32 pthread_attr_setstacksize F
 GLIBC_2.32 pthread_cancel F
 GLIBC_2.32 pthread_clockjoin_np F
 GLIBC_2.32 pthread_create F
-GLIBC_2.32 pthread_detach F
 GLIBC_2.32 pthread_getattr_default_np F
 GLIBC_2.32 pthread_getconcurrency F
 GLIBC_2.32 pthread_getcpuclockid F
@@ -35,5 +34,4 @@ GLIBC_2.32 pthread_sigqueue F
 GLIBC_2.32 pthread_timedjoin_np F
 GLIBC_2.32 pthread_tryjoin_np F
 GLIBC_2.32 thrd_create F
-GLIBC_2.32 thrd_detach F
 GLIBC_2.32 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index f97aeeb047..9ba6a30214 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 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -214,6 +215,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -273,6 +275,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -1688,6 +1691,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 117d44ad5f..b74a43658d 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.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
@@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
 GLIBC_2.4 pthread_attr_setstacksize F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
-GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_join F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 70f5f81faf..9a79a6622e 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 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -211,6 +212,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -270,6 +272,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -1685,6 +1688,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 117d44ad5f..b74a43658d 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.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
@@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
 GLIBC_2.4 pthread_attr_setstacksize F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
-GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_join F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index bd80fd1afd..b21ff2de89 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1474,6 +1474,7 @@ GLIBC_2.29 pthread_condattr_getpshared F
 GLIBC_2.29 pthread_condattr_init F
 GLIBC_2.29 pthread_condattr_setclock F
 GLIBC_2.29 pthread_condattr_setpshared F
+GLIBC_2.29 pthread_detach F
 GLIBC_2.29 pthread_equal F
 GLIBC_2.29 pthread_exit F
 GLIBC_2.29 pthread_getaffinity_np F
@@ -1953,6 +1954,7 @@ GLIBC_2.29 tempnam F
 GLIBC_2.29 textdomain F
 GLIBC_2.29 tfind F
 GLIBC_2.29 thrd_current F
+GLIBC_2.29 thrd_detach F
 GLIBC_2.29 thrd_equal F
 GLIBC_2.29 thrd_exit F
 GLIBC_2.29 thrd_sleep F
@@ -2268,6 +2270,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2327,6 +2330,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 8ad8fc7c7f..665cc7bc38 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.29 pthread_attr_setstackaddr F
 GLIBC_2.29 pthread_attr_setstacksize F
 GLIBC_2.29 pthread_cancel F
 GLIBC_2.29 pthread_create F
-GLIBC_2.29 pthread_detach F
 GLIBC_2.29 pthread_getattr_default_np F
 GLIBC_2.29 pthread_getconcurrency F
 GLIBC_2.29 pthread_getcpuclockid F
@@ -34,7 +33,6 @@ GLIBC_2.29 pthread_sigqueue F
 GLIBC_2.29 pthread_timedjoin_np F
 GLIBC_2.29 pthread_tryjoin_np F
 GLIBC_2.29 thrd_create F
-GLIBC_2.29 thrd_detach F
 GLIBC_2.29 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index fb40c0292c..3e893dfcaa 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1299,6 +1299,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -1982,6 +1983,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2219,6 +2221,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2278,6 +2281,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 7e7fdfb8cd..cc1ca55754 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index dd243f7808..f0af406ec5 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -874,6 +874,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2162,6 +2163,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2402,6 +2404,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2461,6 +2464,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 1f5547e80c..0854a21e65 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b805382c4b..83985b06e0 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1320,6 +1320,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -2017,6 +2018,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2253,6 +2255,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2312,6 +2315,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 3460d95267..c377a13e65 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 21332b7b39..7d38f2fe55 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 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -215,6 +216,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -274,6 +276,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -1668,6 +1671,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
 GLIBC_2.4 pthread_condattr_init F
 GLIBC_2.4 pthread_condattr_setclock F
 GLIBC_2.4 pthread_condattr_setpshared F
+GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_equal F
 GLIBC_2.4 pthread_exit F
 GLIBC_2.4 pthread_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 117d44ad5f..b74a43658d 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.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
@@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
 GLIBC_2.4 pthread_attr_setstacksize F
 GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
-GLIBC_2.4 pthread_detach F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
 GLIBC_2.4 pthread_join F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 5159aee942..99ad04d858 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -873,6 +873,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2105,6 +2106,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2345,6 +2347,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2404,6 +2407,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 1f5547e80c..0854a21e65 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 4609ade92c..5eebad0468 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1476,6 +1476,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
 GLIBC_2.18 pthread_condattr_init F
 GLIBC_2.18 pthread_condattr_setclock F
 GLIBC_2.18 pthread_condattr_setpshared F
+GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_equal F
 GLIBC_2.18 pthread_exit F
 GLIBC_2.18 pthread_getaffinity_np F
@@ -2242,6 +2243,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2319,6 +2321,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2378,6 +2381,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index c87d939959..f50eb41a1a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.18 pthread_attr_setstackaddr F
 GLIBC_2.18 pthread_attr_setstacksize F
 GLIBC_2.18 pthread_cancel F
 GLIBC_2.18 pthread_create F
-GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_getconcurrency F
 GLIBC_2.18 pthread_getcpuclockid F
@@ -34,7 +33,6 @@ GLIBC_2.18 pthread_sigqueue F
 GLIBC_2.18 pthread_timedjoin_np F
 GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 41db7ed508..9c54e2d42c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1476,6 +1476,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
 GLIBC_2.18 pthread_condattr_init F
 GLIBC_2.18 pthread_condattr_setclock F
 GLIBC_2.18 pthread_condattr_setpshared F
+GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_equal F
 GLIBC_2.18 pthread_exit F
 GLIBC_2.18 pthread_getaffinity_np F
@@ -2242,6 +2243,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2316,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2375,6 +2378,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index c87d939959..f50eb41a1a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.18 pthread_attr_setstackaddr F
 GLIBC_2.18 pthread_attr_setstacksize F
 GLIBC_2.18 pthread_cancel F
 GLIBC_2.18 pthread_create F
-GLIBC_2.18 pthread_detach F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_getconcurrency F
 GLIBC_2.18 pthread_getcpuclockid F
@@ -34,7 +33,6 @@ GLIBC_2.18 pthread_sigqueue F
 GLIBC_2.18 pthread_timedjoin_np F
 GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 77d3b72f2b..34e77850a1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2075,6 +2076,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2308,6 +2310,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2367,6 +2370,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index fa52921d78..a1ba1503a5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.11 pthread_sigqueue F
 GLIBC_2.12 pthread_getname_np F
@@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index bfc6ca8d87..d01dc8462b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2073,6 +2074,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2306,6 +2308,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2365,6 +2368,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index fa52921d78..a1ba1503a5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.11 pthread_sigqueue F
 GLIBC_2.12 pthread_getname_np F
@@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index cdade4e56a..a906bb949a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2081,6 +2082,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2314,6 +2316,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2373,6 +2376,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 62184c7a10..89dd91a0a4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -868,6 +868,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2076,6 +2077,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2308,6 +2310,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2367,6 +2370,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index bc230f7020..8b2b19d09b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1519,6 +1519,7 @@ GLIBC_2.21 pthread_condattr_getpshared F
 GLIBC_2.21 pthread_condattr_init F
 GLIBC_2.21 pthread_condattr_setclock F
 GLIBC_2.21 pthread_condattr_setpshared F
+GLIBC_2.21 pthread_detach F
 GLIBC_2.21 pthread_equal F
 GLIBC_2.21 pthread_exit F
 GLIBC_2.21 pthread_getaffinity_np F
@@ -2284,6 +2285,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2358,6 +2360,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2417,6 +2420,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 502268cbd5..27fb415228 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.21 pthread_attr_setstackaddr F
 GLIBC_2.21 pthread_attr_setstacksize F
 GLIBC_2.21 pthread_cancel F
 GLIBC_2.21 pthread_create F
-GLIBC_2.21 pthread_detach F
 GLIBC_2.21 pthread_getattr_default_np F
 GLIBC_2.21 pthread_getconcurrency F
 GLIBC_2.21 pthread_getcpuclockid F
@@ -34,7 +33,6 @@ GLIBC_2.21 pthread_sigqueue F
 GLIBC_2.21 pthread_timedjoin_np F
 GLIBC_2.21 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 0e384dd37e..84aab42aaa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -881,6 +881,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2109,6 +2110,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2372,6 +2374,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2431,6 +2434,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index c2ac178742..831b66ee72 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index dac4a03938..00201c5544 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -881,6 +881,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2113,6 +2114,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2405,6 +2407,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2464,6 +2467,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 6a8958d5a8..8725f4a851 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 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -1422,6 +1423,7 @@ GLIBC_2.3 pthread_condattr_destroy F
 GLIBC_2.3 pthread_condattr_getpshared F
 GLIBC_2.3 pthread_condattr_init F
 GLIBC_2.3 pthread_condattr_setpshared F
+GLIBC_2.3 pthread_detach F
 GLIBC_2.3 pthread_equal F
 GLIBC_2.3 pthread_exit F
 GLIBC_2.3 pthread_getattr_np F
@@ -2220,6 +2222,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2279,6 +2282,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 89b4083cf4..91a5618412 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.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3 _IO_flockfile F
 GLIBC_2.3 _IO_ftrylockfile F
@@ -22,7 +21,6 @@ GLIBC_2.3 pthread_attr_setstackaddr F
 GLIBC_2.3 pthread_attr_setstacksize F
 GLIBC_2.3 pthread_cancel F
 GLIBC_2.3 pthread_create F
-GLIBC_2.3 pthread_detach F
 GLIBC_2.3 pthread_getconcurrency F
 GLIBC_2.3 pthread_getcpuclockid F
 GLIBC_2.3 pthread_join F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 16f4d90871..89ab60dc38 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1562,6 +1562,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
 GLIBC_2.17 pthread_condattr_init F
 GLIBC_2.17 pthread_condattr_setclock F
 GLIBC_2.17 pthread_condattr_setpshared F
+GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_equal F
 GLIBC_2.17 pthread_exit F
 GLIBC_2.17 pthread_getaffinity_np F
@@ -2341,6 +2342,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2521,6 +2523,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2580,6 +2583,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index f09c6d434a..71627a5cc8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.17 pthread_attr_setstackaddr F
 GLIBC_2.17 pthread_attr_setstacksize F
 GLIBC_2.17 pthread_cancel F
 GLIBC_2.17 pthread_create F
-GLIBC_2.17 pthread_detach F
 GLIBC_2.17 pthread_getconcurrency F
 GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
@@ -34,7 +33,6 @@ GLIBC_2.17 pthread_timedjoin_np F
 GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 876ed3d11f..e201491852 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1416,6 +1416,7 @@ GLIBC_2.33 pthread_condattr_getpshared F
 GLIBC_2.33 pthread_condattr_init F
 GLIBC_2.33 pthread_condattr_setclock F
 GLIBC_2.33 pthread_condattr_setpshared F
+GLIBC_2.33 pthread_detach F
 GLIBC_2.33 pthread_equal F
 GLIBC_2.33 pthread_exit F
 GLIBC_2.33 pthread_getaffinity_np F
@@ -1872,6 +1873,7 @@ GLIBC_2.33 textdomain F
 GLIBC_2.33 tfind F
 GLIBC_2.33 tgkill F
 GLIBC_2.33 thrd_current F
+GLIBC_2.33 thrd_detach F
 GLIBC_2.33 thrd_equal F
 GLIBC_2.33 thrd_exit F
 GLIBC_2.33 thrd_sleep F
@@ -2086,6 +2088,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2145,6 +2148,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index d6f50be603..0ad1f57b44 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -21,7 +21,6 @@ GLIBC_2.33 pthread_attr_setstacksize F
 GLIBC_2.33 pthread_cancel F
 GLIBC_2.33 pthread_clockjoin_np F
 GLIBC_2.33 pthread_create F
-GLIBC_2.33 pthread_detach F
 GLIBC_2.33 pthread_getattr_default_np F
 GLIBC_2.33 pthread_getconcurrency F
 GLIBC_2.33 pthread_getcpuclockid F
@@ -35,5 +34,4 @@ GLIBC_2.33 pthread_sigqueue F
 GLIBC_2.33 pthread_timedjoin_np F
 GLIBC_2.33 pthread_tryjoin_np F
 GLIBC_2.33 thrd_create F
-GLIBC_2.33 thrd_detach F
 GLIBC_2.33 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index ec2dbc5f6c..8f5d8490a7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1464,6 +1464,7 @@ GLIBC_2.27 pthread_condattr_getpshared F
 GLIBC_2.27 pthread_condattr_init F
 GLIBC_2.27 pthread_condattr_setclock F
 GLIBC_2.27 pthread_condattr_setpshared F
+GLIBC_2.27 pthread_detach F
 GLIBC_2.27 pthread_equal F
 GLIBC_2.27 pthread_exit F
 GLIBC_2.27 pthread_getaffinity_np F
@@ -2212,6 +2213,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2286,6 +2288,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2345,6 +2348,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 240dfc6c9a..74b4bdce74 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.27 pthread_attr_setstackaddr F
 GLIBC_2.27 pthread_attr_setstacksize F
 GLIBC_2.27 pthread_cancel F
 GLIBC_2.27 pthread_create F
-GLIBC_2.27 pthread_detach F
 GLIBC_2.27 pthread_getattr_default_np F
 GLIBC_2.27 pthread_getconcurrency F
 GLIBC_2.27 pthread_getcpuclockid F
@@ -34,7 +33,6 @@ GLIBC_2.27 pthread_sigqueue F
 GLIBC_2.27 pthread_timedjoin_np F
 GLIBC_2.27 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index d1bc174497..686a10ee24 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -872,6 +872,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2118,6 +2119,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2370,6 +2372,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2429,6 +2432,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 20ee83baca..87db062308 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -31,7 +30,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 3771dc652a..8ff9d69dca 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1317,6 +1317,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -2009,6 +2010,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2257,6 +2259,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2316,6 +2319,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 35f0b89d66..3bf0bc9538 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 6355ca1061..9ecce30901 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1303,6 +1303,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -1986,6 +1987,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2226,6 +2228,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2285,6 +2288,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 7e7fdfb8cd..cc1ca55754 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a1e3c3a93b..a6faf4e2d6 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1303,6 +1303,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -1986,6 +1987,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2223,6 +2225,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2282,6 +2285,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 7e7fdfb8cd..cc1ca55754 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 17026a997b..4d08e96ffa 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -875,6 +875,7 @@ GLIBC_2.0 pthread_cond_timedwait F
 GLIBC_2.0 pthread_cond_wait F
 GLIBC_2.0 pthread_condattr_destroy F
 GLIBC_2.0 pthread_condattr_init F
+GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
@@ -2112,6 +2113,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2361,6 +2363,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2420,6 +2423,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 9b2e09a2e4..b4ea31102a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_detach F
 GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 9dc72e0556..bc9ddd71a6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1346,6 +1346,7 @@ GLIBC_2.2 pthread_condattr_destroy F
 GLIBC_2.2 pthread_condattr_getpshared F
 GLIBC_2.2 pthread_condattr_init F
 GLIBC_2.2 pthread_condattr_setpshared F
+GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
@@ -2039,6 +2040,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2274,6 +2276,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2333,6 +2336,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 3460d95267..c377a13e65 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
 GLIBC_2.2 pthread_attr_setstacksize F
 GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
-GLIBC_2.2 pthread_detach F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2 pthread_join F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 586aec23cb..a893315017 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1313,6 +1313,7 @@ GLIBC_2.2.5 pthread_condattr_destroy F
 GLIBC_2.2.5 pthread_condattr_getpshared F
 GLIBC_2.2.5 pthread_condattr_init F
 GLIBC_2.2.5 pthread_condattr_setpshared F
+GLIBC_2.2.5 pthread_detach F
 GLIBC_2.2.5 pthread_equal F
 GLIBC_2.2.5 pthread_exit F
 GLIBC_2.2.5 pthread_getattr_np F
@@ -1998,6 +1999,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2235,6 +2237,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2294,6 +2297,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index fd77f8a602..dac904b6e9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -19,14 +19,12 @@ GLIBC_2.2.5 pthread_attr_setstackaddr F
 GLIBC_2.2.5 pthread_attr_setstacksize F
 GLIBC_2.2.5 pthread_cancel F
 GLIBC_2.2.5 pthread_create F
-GLIBC_2.2.5 pthread_detach F
 GLIBC_2.2.5 pthread_getconcurrency F
 GLIBC_2.2.5 pthread_getcpuclockid F
 GLIBC_2.2.5 pthread_join F
 GLIBC_2.2.5 pthread_setconcurrency 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_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 1529b87004..fa9319c610 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1481,6 +1481,7 @@ GLIBC_2.16 pthread_condattr_getpshared F
 GLIBC_2.16 pthread_condattr_init F
 GLIBC_2.16 pthread_condattr_setclock F
 GLIBC_2.16 pthread_condattr_setpshared F
+GLIBC_2.16 pthread_detach F
 GLIBC_2.16 pthread_equal F
 GLIBC_2.16 pthread_exit F
 GLIBC_2.16 pthread_getaffinity_np F
@@ -2264,6 +2265,7 @@ GLIBC_2.28 mtx_unlock F
 GLIBC_2.28 renameat2 F
 GLIBC_2.28 statx F
 GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
 GLIBC_2.28 thrd_sleep F
@@ -2340,6 +2342,7 @@ GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
 GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
+GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
@@ -2399,6 +2402,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index ab2ec9227a..b8bbe71c59 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -20,7 +20,6 @@ GLIBC_2.16 pthread_attr_setstackaddr F
 GLIBC_2.16 pthread_attr_setstacksize F
 GLIBC_2.16 pthread_cancel F
 GLIBC_2.16 pthread_create F
-GLIBC_2.16 pthread_detach F
 GLIBC_2.16 pthread_getconcurrency F
 GLIBC_2.16 pthread_getcpuclockid F
 GLIBC_2.16 pthread_getname_np F
@@ -34,7 +33,6 @@ GLIBC_2.16 pthread_timedjoin_np F
 GLIBC_2.16 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
 GLIBC_2.31 pthread_clockjoin_np F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 8/8] nptl: Move thread join functions into libc
  2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
                   ` (6 preceding siblings ...)
  2021-05-10 12:38 ` [PATCH 7/8] nptl: Move pthread_detach, thrd_detach " Florian Weimer
@ 2021-05-10 12:42 ` Florian Weimer
  2021-05-10 16:58   ` Adhemerval Zanella
  7 siblings, 1 reply; 20+ messages in thread
From: Florian Weimer @ 2021-05-10 12:42 UTC (permalink / raw)
  To: libc-alpha

The symbols pthread_clockjoin_np, pthread_join, pthread_timedjoin_np,
pthread_tryjoin_np, thrd_join were moved using
scripts/move-symbol-to-libc.py.

Moving the symbols at the same time avoids the need for temporary
exports.
---
 nptl/Makefile                                 | 10 +++----
 nptl/Versions                                 | 18 +++++++++----
 nptl/libpthread-compat.c                      |  5 ++++
 nptl/pthreadP.h                               |  5 ++--
 nptl/pthread_clockjoin.c                      | 27 ++++++++++++-------
 nptl/pthread_join.c                           | 13 +++++++--
 nptl/pthread_timedjoin.c                      | 22 ++++++++++-----
 nptl/pthread_tryjoin.c                        |  8 +++++-
 sysdeps/pthread/Makefile                      |  3 ++-
 sysdeps/pthread/thrd_join.c                   | 11 +++++++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  | 10 +++++++
 .../sysv/linux/aarch64/libpthread.abilist     |  6 +----
 sysdeps/unix/sysv/linux/alpha/libc.abilist    | 10 +++++++
 .../unix/sysv/linux/alpha/libpthread.abilist  |  6 +----
 sysdeps/unix/sysv/linux/arc/libc.abilist      | 10 +++++++
 .../unix/sysv/linux/arc/libpthread.abilist    |  5 ----
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   | 10 +++++++
 .../unix/sysv/linux/arm/be/libpthread.abilist |  6 +----
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   | 10 +++++++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  6 +----
 sysdeps/unix/sysv/linux/csky/libc.abilist     | 10 +++++++
 .../unix/sysv/linux/csky/libpthread.abilist   |  6 +----
 sysdeps/unix/sysv/linux/hppa/libc.abilist     | 10 +++++++
 .../unix/sysv/linux/hppa/libpthread.abilist   |  6 +----
 sysdeps/unix/sysv/linux/i386/libc.abilist     | 10 +++++++
 .../unix/sysv/linux/i386/libpthread.abilist   |  6 +----
 sysdeps/unix/sysv/linux/ia64/libc.abilist     | 10 +++++++
 .../unix/sysv/linux/ia64/libpthread.abilist   |  6 +----
 .../sysv/linux/m68k/coldfire/libc.abilist     | 10 +++++++
 .../linux/m68k/coldfire/libpthread.abilist    |  6 +----
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  | 10 +++++++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  6 +----
 .../sysv/linux/microblaze/be/libc.abilist     | 10 +++++++
 .../linux/microblaze/be/libpthread.abilist    |  6 +----
 .../sysv/linux/microblaze/le/libc.abilist     | 10 +++++++
 .../linux/microblaze/le/libpthread.abilist    |  6 +----
 .../sysv/linux/mips/mips32/fpu/libc.abilist   | 10 +++++++
 .../sysv/linux/mips/mips32/libpthread.abilist |  6 +----
 .../sysv/linux/mips/mips32/nofpu/libc.abilist | 10 +++++++
 .../sysv/linux/mips/mips64/libpthread.abilist |  6 +----
 .../sysv/linux/mips/mips64/n32/libc.abilist   | 10 +++++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   | 10 +++++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    | 10 +++++++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  6 +----
 .../linux/powerpc/powerpc32/fpu/libc.abilist  | 10 +++++++
 .../powerpc/powerpc32/libpthread.abilist      |  6 +----
 .../powerpc/powerpc32/nofpu/libc.abilist      | 10 +++++++
 .../linux/powerpc/powerpc64/be/libc.abilist   | 10 +++++++
 .../powerpc/powerpc64/be/libpthread.abilist   |  6 +----
 .../linux/powerpc/powerpc64/le/libc.abilist   | 10 +++++++
 .../powerpc/powerpc64/le/libpthread.abilist   |  6 +----
 .../unix/sysv/linux/riscv/rv32/libc.abilist   | 10 +++++++
 .../sysv/linux/riscv/rv32/libpthread.abilist  |  5 ----
 .../unix/sysv/linux/riscv/rv64/libc.abilist   | 10 +++++++
 .../sysv/linux/riscv/rv64/libpthread.abilist  |  6 +----
 .../unix/sysv/linux/s390/s390-32/libc.abilist | 10 +++++++
 .../linux/s390/s390-32/libpthread.abilist     |  6 +----
 .../unix/sysv/linux/s390/s390-64/libc.abilist | 10 +++++++
 .../linux/s390/s390-64/libpthread.abilist     |  6 +----
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    | 10 +++++++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  6 +----
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    | 10 +++++++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  6 +----
 .../sysv/linux/sparc/sparc32/libc.abilist     | 10 +++++++
 .../linux/sparc/sparc32/libpthread.abilist    |  6 +----
 .../sysv/linux/sparc/sparc64/libc.abilist     | 10 +++++++
 .../linux/sparc/sparc64/libpthread.abilist    |  6 +----
 .../unix/sysv/linux/x86_64/64/libc.abilist    | 10 +++++++
 .../sysv/linux/x86_64/64/libpthread.abilist   |  6 +----
 .../unix/sysv/linux/x86_64/x32/libc.abilist   | 10 +++++++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  6 +----
 71 files changed, 436 insertions(+), 178 deletions(-)

diff --git a/nptl/Makefile b/nptl/Makefile
index 3ef4cb966b..e8aa11b13d 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -84,6 +84,7 @@ routines = \
   pthread_barrierattr_init \
   pthread_barrierattr_setpshared \
   pthread_cleanup_upto \
+  pthread_clockjoin \
   pthread_cond_broadcast \
   pthread_cond_destroy \
   pthread_cond_init \
@@ -102,6 +103,8 @@ routines = \
   pthread_getattr_np \
   pthread_getschedparam \
   pthread_getspecific \
+  pthread_join \
+  pthread_join_common \
   pthread_key_create \
   pthread_key_delete \
   pthread_keys \
@@ -161,6 +164,8 @@ routines = \
   pthread_spin_trylock \
   pthread_spin_unlock \
   pthread_testcancel \
+  pthread_timedjoin \
+  pthread_tryjoin \
   pthread_yield \
   sem_clockwait \
   sem_close \
@@ -200,21 +205,16 @@ libpthread-routines = \
   pthread_attr_setstackaddr \
   pthread_attr_setstacksize \
   pthread_cancel \
-  pthread_clockjoin \
   pthread_create \
   pthread_getattr_default_np \
   pthread_getconcurrency \
   pthread_getcpuclockid \
   pthread_getname \
-  pthread_join \
-  pthread_join_common \
   pthread_setaffinity \
   pthread_setconcurrency \
   pthread_setname \
   pthread_setschedprio \
   pthread_sigqueue \
-  pthread_timedjoin \
-  pthread_tryjoin \
   version \
 
 libpthread-shared-only-routines = \
diff --git a/nptl/Versions b/nptl/Versions
index 46ae34a1a2..8c3e825083 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -42,6 +42,7 @@ libc {
     pthread_exit;
     pthread_getschedparam;
     pthread_getspecific;
+    pthread_join;
     pthread_key_create;
     pthread_key_delete;
     pthread_kill;
@@ -148,6 +149,8 @@ libc {
     pthread_condattr_getclock;
     pthread_condattr_setclock;
     pthread_getaffinity_np;
+    pthread_timedjoin_np;
+    pthread_tryjoin_np;
   }
   GLIBC_2.3.4 {
     pthread_attr_setaffinity_np;
@@ -190,6 +193,7 @@ libc {
     thrd_detach;
     thrd_equal;
     thrd_exit;
+    thrd_join;
     thrd_sleep;
     thrd_yield;
     tss_create;
@@ -204,6 +208,9 @@ libc {
     pthread_rwlock_clockwrlock;
     sem_clockwait;
   }
+  GLIBC_2.31 {
+    pthread_clockjoin_np;
+  }
   GLIBC_2.32 {
     pthread_attr_getsigmask_np;
     pthread_attr_setaffinity_np;
@@ -237,6 +244,7 @@ libc {
     pthread_barrierattr_getpshared;
     pthread_barrierattr_init;
     pthread_barrierattr_setpshared;
+    pthread_clockjoin_np;
     pthread_cond_clockwait;
     pthread_condattr_getclock;
     pthread_condattr_getpshared;
@@ -244,6 +252,7 @@ libc {
     pthread_condattr_setpshared;
     pthread_detach;
     pthread_getspecific;
+    pthread_join;
     pthread_key_create;
     pthread_key_delete;
     pthread_kill;
@@ -287,6 +296,8 @@ libc {
     pthread_spin_trylock;
     pthread_spin_unlock;
     pthread_testcancel;
+    pthread_timedjoin_np;
+    pthread_tryjoin_np;
     sem_clockwait;
     sem_close;
     sem_destroy;
@@ -300,6 +311,7 @@ libc {
     sem_wait;
     thrd_detach;
     thrd_exit;
+    thrd_join;
     tss_create;
     tss_delete;
     tss_get;
@@ -369,7 +381,6 @@ libpthread {
     funlockfile;
     pthread_cancel;
     pthread_create;
-    pthread_join;
     pthread_sigmask;
   }
 
@@ -421,8 +432,6 @@ libpthread {
     __pthread_unregister_cancel_restore;
     pthread_attr_getaffinity_np;
     pthread_setaffinity_np;
-    pthread_timedjoin_np;
-    pthread_tryjoin_np;
   }
 
   GLIBC_2.3.4 {
@@ -452,7 +461,6 @@ libpthread {
   # C11 thread symbols.
   GLIBC_2.28 {
     thrd_create;
-    thrd_join;
   }
 
   GLIBC_2.30 {
@@ -460,7 +468,7 @@ libpthread {
   }
 
   GLIBC_2.31 {
-    pthread_clockjoin_np;
+    __libpthread_version_placeholder;
   }
 
   GLIBC_PRIVATE {
diff --git a/nptl/libpthread-compat.c b/nptl/libpthread-compat.c
index 401fa6ad34..bc9ee36df0 100644
--- a/nptl/libpthread-compat.c
+++ b/nptl/libpthread-compat.c
@@ -69,3 +69,8 @@ compat_symbol (libpthread, __libpthread_version_placeholder_1,
 compat_symbol (libpthread, __libpthread_version_placeholder_1,
 	       __libpthread_version_placeholder, GLIBC_2_30);
 #endif
+
+#if (SHLIB_COMPAT (libpthread, GLIBC_2_31, GLIBC_2_32))
+compat_symbol (libpthread, __libpthread_version_placeholder_1,
+	       __libpthread_version_placeholder, GLIBC_2_31);
+#endif
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 34d133b187..7e3cef4709 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -456,10 +456,10 @@ libc_hidden_proto (__pthread_cond_wait)
 extern int __pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
                                      clockid_t clockid,
                                      const struct __timespec64 *abstime);
-libpthread_hidden_proto (__pthread_clockjoin_np64)
+libc_hidden_proto (__pthread_clockjoin_np64)
 extern int __pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
                                      const struct __timespec64 *abstime);
-libpthread_hidden_proto (__pthread_timedjoin_np64)
+libc_hidden_proto (__pthread_timedjoin_np64)
 extern int __pthread_cond_timedwait64 (pthread_cond_t *cond,
                                        pthread_mutex_t *mutex,
                                        const struct __timespec64 *abstime);
@@ -535,6 +535,7 @@ extern int __pthread_kill (pthread_t threadid, int signo);
 extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
 libc_hidden_proto (__pthread_exit)
 extern int __pthread_join (pthread_t threadid, void **thread_return);
+libc_hidden_proto (__pthread_join)
 extern int __pthread_setcanceltype (int type, int *oldtype);
 libc_hidden_proto (__pthread_setcanceltype)
 extern void __pthread_testcancel (void);
diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c
index 7457c187fe..f5007d7831 100644
--- a/nptl/pthread_clockjoin.c
+++ b/nptl/pthread_clockjoin.c
@@ -19,10 +19,12 @@
 #include <time.h>
 #include <futex-internal.h>
 #include "pthreadP.h"
+#include <shlib-compat.h>
 
 int
-__pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
-                          clockid_t clockid, const struct __timespec64 *abstime)
+___pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
+			   clockid_t clockid,
+			   const struct __timespec64 *abstime)
 {
   if (!futex_abstimed_supported_clockid (clockid))
     return EINVAL;
@@ -31,12 +33,14 @@ __pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
                                  clockid, abstime, true);
 }
 
-#if __TIMESIZE != 64
-libpthread_hidden_def (__pthread_clockjoin_np64)
+#if __TIMESIZE == 64
+strong_alias (___pthread_clockjoin_np64, ___pthread_clockjoin_np)
+#else /* __TIMESPEC64 != 64 */
+libc_hidden_ver (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
 
 int
-__pthread_clockjoin_np (pthread_t threadid, void **thread_return,
-                        clockid_t clockid, const struct timespec *abstime)
+___pthread_clockjoin_np (pthread_t threadid, void **thread_return,
+			 clockid_t clockid, const struct timespec *abstime)
 {
   if (abstime != NULL)
     {
@@ -45,8 +49,13 @@ __pthread_clockjoin_np (pthread_t threadid, void **thread_return,
 				       &ts64);
     }
   else
-      return __pthread_clockjoin_np64 (threadid, thread_return, clockid,
-				       NULL);
+    return __pthread_clockjoin_np64 (threadid, thread_return, clockid,
+				     NULL);
 }
+#endif /* __TIMESPEC64 != 64 */
+versioned_symbol (libc, ___pthread_clockjoin_np, pthread_clockjoin_np,
+		  GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_31, GLIBC_2_34)
+compat_symbol (libpthread, ___pthread_clockjoin_np, pthread_clockjoin_np,
+	       GLIBC_2_31);
 #endif
-weak_alias (__pthread_clockjoin_np, pthread_clockjoin_np)
diff --git a/nptl/pthread_join.c b/nptl/pthread_join.c
index 4ad718e606..d2b33de73d 100644
--- a/nptl/pthread_join.c
+++ b/nptl/pthread_join.c
@@ -17,11 +17,20 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include "pthreadP.h"
+#include <shlib-compat.h>
 
 int
-__pthread_join (pthread_t threadid, void **thread_return)
+___pthread_join (pthread_t threadid, void **thread_return)
 {
   return __pthread_clockjoin_ex (threadid, thread_return, 0 /* Ignored */,
 				 NULL, true);
 }
-weak_alias (__pthread_join, pthread_join)
+versioned_symbol (libc, ___pthread_join, pthread_join, GLIBC_2_34);
+libc_hidden_ver (___pthread_join, __pthread_join)
+#ifndef SHARED
+strong_alias (___pthread_join, __pthread_join)
+#endif
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libc, ___pthread_join, pthread_join, GLIBC_2_0);
+#endif
diff --git a/nptl/pthread_timedjoin.c b/nptl/pthread_timedjoin.c
index f5d0d3d6ce..ebc31f935a 100644
--- a/nptl/pthread_timedjoin.c
+++ b/nptl/pthread_timedjoin.c
@@ -18,21 +18,24 @@
 
 #include <time.h>
 #include "pthreadP.h"
+#include <shlib-compat.h>
 
 int
-__pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
-                          const struct __timespec64 *abstime)
+___pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
+                           const struct __timespec64 *abstime)
 {
   return __pthread_clockjoin_ex (threadid, thread_return,
                                  CLOCK_REALTIME, abstime, true);
 }
 
-#if __TIMESIZE != 64
-libpthread_hidden_def (__pthread_timedjoin_np64)
+#if __TIMESIZE == 64
+strong_alias (___pthread_timedjoin_np64, ___pthread_timedjoin_np)
+#else /* __TIMESPEC64 != 64 */
+libc_hidden_ver (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
 
 int
-__pthread_timedjoin_np (pthread_t threadid, void **thread_return,
-                        const struct timespec *abstime)
+  ___pthread_timedjoin_np (pthread_t threadid, void **thread_return,
+                           const struct timespec *abstime)
 {
   if (abstime != NULL)
     {
@@ -42,5 +45,10 @@ __pthread_timedjoin_np (pthread_t threadid, void **thread_return,
   else
     return __pthread_timedjoin_np64 (threadid, thread_return, NULL);
 }
+#endif /* __TIMESPEC64 != 64 */
+versioned_symbol (libc, ___pthread_timedjoin_np, pthread_timedjoin_np,
+                  GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (libpthread, ___pthread_timedjoin_np, pthread_timedjoin_np,
+               GLIBC_2_3_3);
 #endif
-weak_alias (__pthread_timedjoin_np, pthread_timedjoin_np)
diff --git a/nptl/pthread_tryjoin.c b/nptl/pthread_tryjoin.c
index 62c9469258..fd938e8780 100644
--- a/nptl/pthread_tryjoin.c
+++ b/nptl/pthread_tryjoin.c
@@ -17,9 +17,10 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include "pthreadP.h"
+#include <shlib-compat.h>
 
 int
-pthread_tryjoin_np (pthread_t threadid, void **thread_return)
+__pthread_tryjoin_np (pthread_t threadid, void **thread_return)
 {
   /* Return right away if the thread hasn't terminated yet.  */
   struct pthread *pd = (struct pthread *) threadid;
@@ -31,3 +32,8 @@ pthread_tryjoin_np (pthread_t threadid, void **thread_return)
   return __pthread_clockjoin_ex (threadid, thread_return, 0 /* Ignored */,
 				 NULL, false);
 }
+versioned_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_3_3);
+#endif
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index ec8e3af577..b15d085f51 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_join
+libpthread-routines += thrd_create
 
 $(libpthread-routines-var) += \
   call_once \
@@ -49,6 +49,7 @@ $(libpthread-routines-var) += \
   mtx_unlock \
   thrd_detach \
   thrd_exit \
+  thrd_join \
   tss_create \
   tss_delete \
   tss_get \
diff --git a/sysdeps/pthread/thrd_join.c b/sysdeps/pthread/thrd_join.c
index 8b53092c12..8db96ce4a5 100644
--- a/sysdeps/pthread/thrd_join.c
+++ b/sysdeps/pthread/thrd_join.c
@@ -17,9 +17,10 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include "thrd_priv.h"
+#include <shlib-compat.h>
 
 int
-thrd_join (thrd_t thr, int *res)
+__thrd_join (thrd_t thr, int *res)
 {
   void *pthread_res;
   int err_code = __pthread_join (thr, &pthread_res);
@@ -28,3 +29,11 @@ thrd_join (thrd_t thr, int *res)
 
   return thrd_err_map (err_code);
 }
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __thrd_join, thrd_join, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
+compat_symbol (libc, __thrd_join, thrd_join, GLIBC_2_28);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__thrd_join, thrd_join)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index b5b0b44697..2d06bfef34 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1481,6 +1481,7 @@ GLIBC_2.17 pthread_getaffinity_np F
 GLIBC_2.17 pthread_getattr_np F
 GLIBC_2.17 pthread_getschedparam F
 GLIBC_2.17 pthread_getspecific F
+GLIBC_2.17 pthread_join F
 GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_key_delete F
 GLIBC_2.17 pthread_kill F
@@ -1539,6 +1540,8 @@ GLIBC_2.17 pthread_spin_lock F
 GLIBC_2.17 pthread_spin_trylock F
 GLIBC_2.17 pthread_spin_unlock F
 GLIBC_2.17 pthread_testcancel F
+GLIBC_2.17 pthread_timedjoin_np F
+GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.17 pthread_yield F
 GLIBC_2.17 ptrace F
 GLIBC_2.17 ptsname F
@@ -2255,6 +2258,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2273,6 +2277,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2322,6 +2327,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2329,6 +2335,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2376,6 +2383,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2389,6 +2398,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 71627a5cc8..fd8f0f7d1c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -23,16 +23,12 @@ GLIBC_2.17 pthread_create F
 GLIBC_2.17 pthread_getconcurrency F
 GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
-GLIBC_2.17 pthread_join F
 GLIBC_2.17 pthread_setaffinity_np F
 GLIBC_2.17 pthread_setconcurrency F
 GLIBC_2.17 pthread_setname_np F
 GLIBC_2.17 pthread_setschedprio F
 GLIBC_2.17 pthread_sigqueue F
-GLIBC_2.17 pthread_timedjoin_np F
-GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 20d4855e90..8f1c1368ad 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -902,6 +902,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2153,6 +2154,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2284,6 +2286,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2360,6 +2364,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2409,6 +2414,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2416,6 +2422,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2463,6 +2470,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2476,6 +2485,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index b4ea31102a..16fa6ec4ee 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -39,11 +37,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 19eb517f28..ae902ecdd0 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1401,6 +1401,7 @@ GLIBC_2.32 pthread_barrierattr_destroy F
 GLIBC_2.32 pthread_barrierattr_getpshared F
 GLIBC_2.32 pthread_barrierattr_init F
 GLIBC_2.32 pthread_barrierattr_setpshared F
+GLIBC_2.32 pthread_clockjoin_np F
 GLIBC_2.32 pthread_cond_broadcast F
 GLIBC_2.32 pthread_cond_clockwait F
 GLIBC_2.32 pthread_cond_destroy F
@@ -1421,6 +1422,7 @@ GLIBC_2.32 pthread_getaffinity_np F
 GLIBC_2.32 pthread_getattr_np F
 GLIBC_2.32 pthread_getschedparam F
 GLIBC_2.32 pthread_getspecific F
+GLIBC_2.32 pthread_join F
 GLIBC_2.32 pthread_key_create F
 GLIBC_2.32 pthread_key_delete F
 GLIBC_2.32 pthread_kill F
@@ -1483,6 +1485,8 @@ GLIBC_2.32 pthread_spin_lock F
 GLIBC_2.32 pthread_spin_trylock F
 GLIBC_2.32 pthread_spin_unlock F
 GLIBC_2.32 pthread_testcancel F
+GLIBC_2.32 pthread_timedjoin_np F
+GLIBC_2.32 pthread_tryjoin_np F
 GLIBC_2.32 pthread_yield F
 GLIBC_2.32 ptrace F
 GLIBC_2.32 ptsname F
@@ -1866,6 +1870,7 @@ GLIBC_2.32 thrd_current F
 GLIBC_2.32 thrd_detach F
 GLIBC_2.32 thrd_equal F
 GLIBC_2.32 thrd_exit F
+GLIBC_2.32 thrd_join F
 GLIBC_2.32 thrd_sleep F
 GLIBC_2.32 thrd_yield F
 GLIBC_2.32 time F
@@ -2081,6 +2086,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2088,6 +2094,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2135,6 +2142,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2148,6 +2157,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 8ac0cde1ee..4c8b8ee724 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -19,19 +19,14 @@ GLIBC_2.32 pthread_attr_setstack F
 GLIBC_2.32 pthread_attr_setstackaddr F
 GLIBC_2.32 pthread_attr_setstacksize F
 GLIBC_2.32 pthread_cancel F
-GLIBC_2.32 pthread_clockjoin_np F
 GLIBC_2.32 pthread_create F
 GLIBC_2.32 pthread_getattr_default_np F
 GLIBC_2.32 pthread_getconcurrency F
 GLIBC_2.32 pthread_getcpuclockid F
 GLIBC_2.32 pthread_getname_np F
-GLIBC_2.32 pthread_join F
 GLIBC_2.32 pthread_setaffinity_np F
 GLIBC_2.32 pthread_setconcurrency F
 GLIBC_2.32 pthread_setname_np F
 GLIBC_2.32 pthread_setschedprio F
 GLIBC_2.32 pthread_sigqueue F
-GLIBC_2.32 pthread_timedjoin_np F
-GLIBC_2.32 pthread_tryjoin_np F
 GLIBC_2.32 thrd_create F
-GLIBC_2.32 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 9ba6a30214..acc620643f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -159,6 +160,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -210,6 +212,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -217,6 +220,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -264,6 +268,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -277,6 +283,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
@@ -1698,6 +1705,7 @@ GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
 GLIBC_2.4 pthread_getspecific F
+GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
@@ -1753,6 +1761,8 @@ GLIBC_2.4 pthread_spin_lock F
 GLIBC_2.4 pthread_spin_trylock F
 GLIBC_2.4 pthread_spin_unlock F
 GLIBC_2.4 pthread_testcancel F
+GLIBC_2.4 pthread_timedjoin_np F
+GLIBC_2.4 pthread_tryjoin_np F
 GLIBC_2.4 pthread_yield F
 GLIBC_2.4 ptrace F
 GLIBC_2.4 ptsname F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b74a43658d..072b9a30f1 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
@@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
-GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_setaffinity_np F
 GLIBC_2.4 pthread_setconcurrency F
 GLIBC_2.4 pthread_setschedprio F
-GLIBC_2.4 pthread_timedjoin_np F
-GLIBC_2.4 pthread_tryjoin_np F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 9a79a6622e..fd33a2317f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -158,6 +159,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -207,6 +209,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -214,6 +217,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -261,6 +265,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -274,6 +280,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
@@ -1695,6 +1702,7 @@ GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
 GLIBC_2.4 pthread_getspecific F
+GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
@@ -1750,6 +1758,8 @@ GLIBC_2.4 pthread_spin_lock F
 GLIBC_2.4 pthread_spin_trylock F
 GLIBC_2.4 pthread_spin_unlock F
 GLIBC_2.4 pthread_testcancel F
+GLIBC_2.4 pthread_timedjoin_np F
+GLIBC_2.4 pthread_tryjoin_np F
 GLIBC_2.4 pthread_yield F
 GLIBC_2.4 ptrace F
 GLIBC_2.4 ptsname F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b74a43658d..072b9a30f1 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
@@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
-GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_setaffinity_np F
 GLIBC_2.4 pthread_setconcurrency F
 GLIBC_2.4 pthread_setschedprio F
-GLIBC_2.4 pthread_timedjoin_np F
-GLIBC_2.4 pthread_tryjoin_np F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index b21ff2de89..c1ac24c3a2 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1481,6 +1481,7 @@ GLIBC_2.29 pthread_getaffinity_np F
 GLIBC_2.29 pthread_getattr_np F
 GLIBC_2.29 pthread_getschedparam F
 GLIBC_2.29 pthread_getspecific F
+GLIBC_2.29 pthread_join F
 GLIBC_2.29 pthread_key_create F
 GLIBC_2.29 pthread_key_delete F
 GLIBC_2.29 pthread_kill F
@@ -1540,6 +1541,8 @@ GLIBC_2.29 pthread_spin_lock F
 GLIBC_2.29 pthread_spin_trylock F
 GLIBC_2.29 pthread_spin_unlock F
 GLIBC_2.29 pthread_testcancel F
+GLIBC_2.29 pthread_timedjoin_np F
+GLIBC_2.29 pthread_tryjoin_np F
 GLIBC_2.29 pthread_yield F
 GLIBC_2.29 ptrace F
 GLIBC_2.29 ptsname F
@@ -1957,6 +1960,7 @@ GLIBC_2.29 thrd_current F
 GLIBC_2.29 thrd_detach F
 GLIBC_2.29 thrd_equal F
 GLIBC_2.29 thrd_exit F
+GLIBC_2.29 thrd_join F
 GLIBC_2.29 thrd_sleep F
 GLIBC_2.29 thrd_yield F
 GLIBC_2.29 time F
@@ -2216,6 +2220,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2265,6 +2270,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2272,6 +2278,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2319,6 +2326,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2332,6 +2341,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 665cc7bc38..678865fb8c 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -24,15 +24,11 @@ GLIBC_2.29 pthread_getattr_default_np F
 GLIBC_2.29 pthread_getconcurrency F
 GLIBC_2.29 pthread_getcpuclockid F
 GLIBC_2.29 pthread_getname_np F
-GLIBC_2.29 pthread_join F
 GLIBC_2.29 pthread_setaffinity_np F
 GLIBC_2.29 pthread_setconcurrency F
 GLIBC_2.29 pthread_setname_np F
 GLIBC_2.29 pthread_setschedprio F
 GLIBC_2.29 pthread_sigqueue F
-GLIBC_2.29 pthread_timedjoin_np F
-GLIBC_2.29 pthread_tryjoin_np F
 GLIBC_2.29 thrd_create F
-GLIBC_2.29 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 3e893dfcaa..29225ac912 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1304,6 +1304,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -1986,6 +1987,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2121,6 +2123,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2167,6 +2171,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2216,6 +2221,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2223,6 +2229,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2270,6 +2277,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2283,6 +2292,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cc1ca55754..59585f6763 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index f0af406ec5..b5026ba906 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -879,6 +879,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2166,6 +2167,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2301,6 +2303,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2348,6 +2352,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2399,6 +2404,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2406,6 +2412,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2453,6 +2460,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2466,6 +2475,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 0854a21e65..c7397f889d 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -37,11 +35,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 83985b06e0..f6fc393a21 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1325,6 +1325,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -2021,6 +2022,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2152,6 +2154,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2200,6 +2204,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2250,6 +2255,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2257,6 +2263,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2304,6 +2311,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2317,6 +2326,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index c377a13e65..1b0a061014 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -36,11 +34,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 7d38f2fe55..dfb73924b9 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -141,6 +141,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -160,6 +161,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -211,6 +213,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -218,6 +221,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -265,6 +269,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -278,6 +284,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
@@ -1678,6 +1685,7 @@ GLIBC_2.4 pthread_getaffinity_np F
 GLIBC_2.4 pthread_getattr_np F
 GLIBC_2.4 pthread_getschedparam F
 GLIBC_2.4 pthread_getspecific F
+GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_key_create F
 GLIBC_2.4 pthread_key_delete F
 GLIBC_2.4 pthread_kill F
@@ -1733,6 +1741,8 @@ GLIBC_2.4 pthread_spin_lock F
 GLIBC_2.4 pthread_spin_trylock F
 GLIBC_2.4 pthread_spin_unlock F
 GLIBC_2.4 pthread_testcancel F
+GLIBC_2.4 pthread_timedjoin_np F
+GLIBC_2.4 pthread_tryjoin_np F
 GLIBC_2.4 pthread_yield F
 GLIBC_2.4 ptrace F
 GLIBC_2.4 ptsname F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b74a43658d..072b9a30f1 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
@@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
 GLIBC_2.4 pthread_create F
 GLIBC_2.4 pthread_getconcurrency F
 GLIBC_2.4 pthread_getcpuclockid F
-GLIBC_2.4 pthread_join F
 GLIBC_2.4 pthread_setaffinity_np F
 GLIBC_2.4 pthread_setconcurrency F
 GLIBC_2.4 pthread_setschedprio F
-GLIBC_2.4 pthread_timedjoin_np F
-GLIBC_2.4 pthread_tryjoin_np F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 99ad04d858..1a88ecbca4 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -878,6 +878,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2109,6 +2110,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2244,6 +2246,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2291,6 +2295,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -2342,6 +2347,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2349,6 +2355,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2396,6 +2403,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2409,6 +2418,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 0854a21e65..c7397f889d 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -37,11 +35,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 5eebad0468..f07dba5ef0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1483,6 +1483,7 @@ GLIBC_2.18 pthread_getaffinity_np F
 GLIBC_2.18 pthread_getattr_np F
 GLIBC_2.18 pthread_getschedparam F
 GLIBC_2.18 pthread_getspecific F
+GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_key_delete F
 GLIBC_2.18 pthread_kill F
@@ -1542,6 +1543,8 @@ GLIBC_2.18 pthread_spin_lock F
 GLIBC_2.18 pthread_spin_trylock F
 GLIBC_2.18 pthread_spin_unlock F
 GLIBC_2.18 pthread_testcancel F
+GLIBC_2.18 pthread_timedjoin_np F
+GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.18 pthread_yield F
 GLIBC_2.18 ptrace F
 GLIBC_2.18 ptsname F
@@ -2246,6 +2249,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2265,6 +2269,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -2316,6 +2321,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2323,6 +2329,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2370,6 +2377,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2383,6 +2392,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index f50eb41a1a..2e35824ff0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -24,15 +24,11 @@ GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_getconcurrency F
 GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
-GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_setaffinity_np F
 GLIBC_2.18 pthread_setconcurrency F
 GLIBC_2.18 pthread_setname_np F
 GLIBC_2.18 pthread_setschedprio F
 GLIBC_2.18 pthread_sigqueue F
-GLIBC_2.18 pthread_timedjoin_np F
-GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 9c54e2d42c..688de4ee35 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1483,6 +1483,7 @@ GLIBC_2.18 pthread_getaffinity_np F
 GLIBC_2.18 pthread_getattr_np F
 GLIBC_2.18 pthread_getschedparam F
 GLIBC_2.18 pthread_getspecific F
+GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_key_create F
 GLIBC_2.18 pthread_key_delete F
 GLIBC_2.18 pthread_kill F
@@ -1542,6 +1543,8 @@ GLIBC_2.18 pthread_spin_lock F
 GLIBC_2.18 pthread_spin_trylock F
 GLIBC_2.18 pthread_spin_unlock F
 GLIBC_2.18 pthread_testcancel F
+GLIBC_2.18 pthread_timedjoin_np F
+GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.18 pthread_yield F
 GLIBC_2.18 ptrace F
 GLIBC_2.18 ptsname F
@@ -2246,6 +2249,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2264,6 +2268,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2313,6 +2318,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2320,6 +2326,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2367,6 +2374,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2380,6 +2389,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index f50eb41a1a..2e35824ff0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -24,15 +24,11 @@ GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.18 pthread_getconcurrency F
 GLIBC_2.18 pthread_getcpuclockid F
 GLIBC_2.18 pthread_getname_np F
-GLIBC_2.18 pthread_join F
 GLIBC_2.18 pthread_setaffinity_np F
 GLIBC_2.18 pthread_setconcurrency F
 GLIBC_2.18 pthread_setname_np F
 GLIBC_2.18 pthread_setschedprio F
 GLIBC_2.18 pthread_sigqueue F
-GLIBC_2.18 pthread_timedjoin_np F
-GLIBC_2.18 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 34e77850a1..7e82eadb1d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2079,6 +2080,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2210,6 +2212,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2256,6 +2260,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2305,6 +2310,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2312,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2359,6 +2366,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2372,6 +2381,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index a1ba1503a5..2a70d89cd8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.11 pthread_sigqueue F
 GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -37,11 +35,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index d01dc8462b..5891b9b563 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2077,6 +2078,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2208,6 +2210,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2254,6 +2258,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2303,6 +2308,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2310,6 +2316,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2357,6 +2364,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2370,6 +2379,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index a1ba1503a5..2a70d89cd8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.11 pthread_sigqueue F
 GLIBC_2.12 pthread_getname_np F
 GLIBC_2.12 pthread_setname_np F
@@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -37,11 +35,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index a906bb949a..dbf9dcf588 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2085,6 +2086,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2216,6 +2218,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2262,6 +2266,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2311,6 +2316,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2318,6 +2324,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2365,6 +2372,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2378,6 +2387,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 89dd91a0a4..ed31156fe5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -873,6 +873,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2080,6 +2081,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2208,6 +2210,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2256,6 +2260,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2305,6 +2310,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2312,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2359,6 +2366,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2372,6 +2381,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 8b2b19d09b..bca4034be2 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1526,6 +1526,7 @@ GLIBC_2.21 pthread_getaffinity_np F
 GLIBC_2.21 pthread_getattr_np F
 GLIBC_2.21 pthread_getschedparam F
 GLIBC_2.21 pthread_getspecific F
+GLIBC_2.21 pthread_join F
 GLIBC_2.21 pthread_key_create F
 GLIBC_2.21 pthread_key_delete F
 GLIBC_2.21 pthread_kill F
@@ -1585,6 +1586,8 @@ GLIBC_2.21 pthread_spin_lock F
 GLIBC_2.21 pthread_spin_trylock F
 GLIBC_2.21 pthread_spin_unlock F
 GLIBC_2.21 pthread_testcancel F
+GLIBC_2.21 pthread_timedjoin_np F
+GLIBC_2.21 pthread_tryjoin_np F
 GLIBC_2.21 pthread_yield F
 GLIBC_2.21 ptrace F
 GLIBC_2.21 ptsname F
@@ -2288,6 +2291,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2306,6 +2310,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2355,6 +2360,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2362,6 +2368,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2409,6 +2416,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2422,6 +2431,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 27fb415228..220d80ea95 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -24,15 +24,11 @@ GLIBC_2.21 pthread_getattr_default_np F
 GLIBC_2.21 pthread_getconcurrency F
 GLIBC_2.21 pthread_getcpuclockid F
 GLIBC_2.21 pthread_getname_np F
-GLIBC_2.21 pthread_join F
 GLIBC_2.21 pthread_setaffinity_np F
 GLIBC_2.21 pthread_setconcurrency F
 GLIBC_2.21 pthread_setname_np F
 GLIBC_2.21 pthread_setschedprio F
 GLIBC_2.21 pthread_sigqueue F
-GLIBC_2.21 pthread_timedjoin_np F
-GLIBC_2.21 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 84aab42aaa..5de9636022 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -886,6 +886,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2113,6 +2114,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2250,6 +2252,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2320,6 +2324,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2369,6 +2374,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2376,6 +2382,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2423,6 +2430,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2436,6 +2445,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 831b66ee72..1286f68dad 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -37,13 +35,11 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
 GLIBC_2.6 pthread_attr_setstack F
 GLIBC_2.6 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 00201c5544..10cb492163 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -886,6 +886,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2117,6 +2118,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2283,6 +2285,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2353,6 +2357,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2402,6 +2407,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2409,6 +2415,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2456,6 +2463,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2469,6 +2478,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 8725f4a851..4d72e24c22 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -1429,6 +1430,7 @@ GLIBC_2.3 pthread_exit F
 GLIBC_2.3 pthread_getattr_np F
 GLIBC_2.3 pthread_getschedparam F
 GLIBC_2.3 pthread_getspecific F
+GLIBC_2.3 pthread_join F
 GLIBC_2.3 pthread_key_create F
 GLIBC_2.3 pthread_key_delete F
 GLIBC_2.3 pthread_kill F
@@ -2099,6 +2101,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2168,6 +2172,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2217,6 +2222,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2224,6 +2230,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2271,6 +2278,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2284,6 +2293,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 91a5618412..496c83d9df 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.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3 _IO_flockfile F
 GLIBC_2.3 _IO_ftrylockfile F
 GLIBC_2.3 _IO_funlockfile F
@@ -23,7 +22,6 @@ GLIBC_2.3 pthread_cancel F
 GLIBC_2.3 pthread_create F
 GLIBC_2.3 pthread_getconcurrency F
 GLIBC_2.3 pthread_getcpuclockid F
-GLIBC_2.3 pthread_join F
 GLIBC_2.3 pthread_setconcurrency F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
@@ -32,13 +30,11 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
 GLIBC_2.6 pthread_attr_setstack F
 GLIBC_2.6 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 89ab60dc38..d3ac4aeefc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1569,6 +1569,7 @@ GLIBC_2.17 pthread_getaffinity_np F
 GLIBC_2.17 pthread_getattr_np F
 GLIBC_2.17 pthread_getschedparam F
 GLIBC_2.17 pthread_getspecific F
+GLIBC_2.17 pthread_join F
 GLIBC_2.17 pthread_key_create F
 GLIBC_2.17 pthread_key_delete F
 GLIBC_2.17 pthread_kill F
@@ -1627,6 +1628,8 @@ GLIBC_2.17 pthread_spin_lock F
 GLIBC_2.17 pthread_spin_trylock F
 GLIBC_2.17 pthread_spin_unlock F
 GLIBC_2.17 pthread_testcancel F
+GLIBC_2.17 pthread_timedjoin_np F
+GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.17 pthread_yield F
 GLIBC_2.17 ptrace F
 GLIBC_2.17 ptsname F
@@ -2345,6 +2348,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2375,6 +2379,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __argp_errorieee128 F
 GLIBC_2.32 __argp_failureieee128 F
 GLIBC_2.32 __asprintf_chkieee128 F
@@ -2518,6 +2523,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2525,6 +2531,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2572,6 +2579,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2585,6 +2594,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 71627a5cc8..fd8f0f7d1c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -23,16 +23,12 @@ GLIBC_2.17 pthread_create F
 GLIBC_2.17 pthread_getconcurrency F
 GLIBC_2.17 pthread_getcpuclockid F
 GLIBC_2.17 pthread_getname_np F
-GLIBC_2.17 pthread_join F
 GLIBC_2.17 pthread_setaffinity_np F
 GLIBC_2.17 pthread_setconcurrency F
 GLIBC_2.17 pthread_setname_np F
 GLIBC_2.17 pthread_setschedprio F
 GLIBC_2.17 pthread_sigqueue F
-GLIBC_2.17 pthread_timedjoin_np F
-GLIBC_2.17 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index e201491852..dcef189dcc 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1403,6 +1403,7 @@ GLIBC_2.33 pthread_barrierattr_destroy F
 GLIBC_2.33 pthread_barrierattr_getpshared F
 GLIBC_2.33 pthread_barrierattr_init F
 GLIBC_2.33 pthread_barrierattr_setpshared F
+GLIBC_2.33 pthread_clockjoin_np F
 GLIBC_2.33 pthread_cond_broadcast F
 GLIBC_2.33 pthread_cond_clockwait F
 GLIBC_2.33 pthread_cond_destroy F
@@ -1423,6 +1424,7 @@ GLIBC_2.33 pthread_getaffinity_np F
 GLIBC_2.33 pthread_getattr_np F
 GLIBC_2.33 pthread_getschedparam F
 GLIBC_2.33 pthread_getspecific F
+GLIBC_2.33 pthread_join F
 GLIBC_2.33 pthread_key_create F
 GLIBC_2.33 pthread_key_delete F
 GLIBC_2.33 pthread_kill F
@@ -1485,6 +1487,8 @@ GLIBC_2.33 pthread_spin_lock F
 GLIBC_2.33 pthread_spin_trylock F
 GLIBC_2.33 pthread_spin_unlock F
 GLIBC_2.33 pthread_testcancel F
+GLIBC_2.33 pthread_timedjoin_np F
+GLIBC_2.33 pthread_tryjoin_np F
 GLIBC_2.33 pthread_yield F
 GLIBC_2.33 ptrace F
 GLIBC_2.33 ptsname F
@@ -1876,6 +1880,7 @@ GLIBC_2.33 thrd_current F
 GLIBC_2.33 thrd_detach F
 GLIBC_2.33 thrd_equal F
 GLIBC_2.33 thrd_exit F
+GLIBC_2.33 thrd_join F
 GLIBC_2.33 thrd_sleep F
 GLIBC_2.33 thrd_yield F
 GLIBC_2.33 time F
@@ -2083,6 +2088,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2090,6 +2096,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2137,6 +2144,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2150,6 +2159,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 0ad1f57b44..0979096ed7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -19,19 +19,14 @@ GLIBC_2.33 pthread_attr_setstack F
 GLIBC_2.33 pthread_attr_setstackaddr F
 GLIBC_2.33 pthread_attr_setstacksize F
 GLIBC_2.33 pthread_cancel F
-GLIBC_2.33 pthread_clockjoin_np F
 GLIBC_2.33 pthread_create F
 GLIBC_2.33 pthread_getattr_default_np F
 GLIBC_2.33 pthread_getconcurrency F
 GLIBC_2.33 pthread_getcpuclockid F
 GLIBC_2.33 pthread_getname_np F
-GLIBC_2.33 pthread_join F
 GLIBC_2.33 pthread_setaffinity_np F
 GLIBC_2.33 pthread_setconcurrency F
 GLIBC_2.33 pthread_setname_np F
 GLIBC_2.33 pthread_setschedprio F
 GLIBC_2.33 pthread_sigqueue F
-GLIBC_2.33 pthread_timedjoin_np F
-GLIBC_2.33 pthread_tryjoin_np F
 GLIBC_2.33 thrd_create F
-GLIBC_2.33 thrd_join F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 8f5d8490a7..806d787b3f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1471,6 +1471,7 @@ GLIBC_2.27 pthread_getaffinity_np F
 GLIBC_2.27 pthread_getattr_np F
 GLIBC_2.27 pthread_getschedparam F
 GLIBC_2.27 pthread_getspecific F
+GLIBC_2.27 pthread_join F
 GLIBC_2.27 pthread_key_create F
 GLIBC_2.27 pthread_key_delete F
 GLIBC_2.27 pthread_kill F
@@ -1530,6 +1531,8 @@ GLIBC_2.27 pthread_spin_lock F
 GLIBC_2.27 pthread_spin_trylock F
 GLIBC_2.27 pthread_spin_unlock F
 GLIBC_2.27 pthread_testcancel F
+GLIBC_2.27 pthread_timedjoin_np F
+GLIBC_2.27 pthread_tryjoin_np F
 GLIBC_2.27 pthread_yield F
 GLIBC_2.27 ptrace F
 GLIBC_2.27 ptsname F
@@ -2216,6 +2219,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2234,6 +2238,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2283,6 +2288,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2290,6 +2296,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2337,6 +2344,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2350,6 +2359,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 74b4bdce74..98d64de740 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -24,15 +24,11 @@ GLIBC_2.27 pthread_getattr_default_np F
 GLIBC_2.27 pthread_getconcurrency F
 GLIBC_2.27 pthread_getcpuclockid F
 GLIBC_2.27 pthread_getname_np F
-GLIBC_2.27 pthread_join F
 GLIBC_2.27 pthread_setaffinity_np F
 GLIBC_2.27 pthread_setconcurrency F
 GLIBC_2.27 pthread_setname_np F
 GLIBC_2.27 pthread_setschedprio F
 GLIBC_2.27 pthread_sigqueue F
-GLIBC_2.27 pthread_timedjoin_np F
-GLIBC_2.27 pthread_tryjoin_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 686a10ee24..52f3cc5a97 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -877,6 +877,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2122,6 +2123,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2257,6 +2259,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2316,6 +2320,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -2367,6 +2372,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2374,6 +2380,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2421,6 +2428,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2434,6 +2443,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 87db062308..df9de2e5ed 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -38,11 +36,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 8ff9d69dca..96dcf91860 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1322,6 +1322,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -2013,6 +2014,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2145,6 +2147,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2205,6 +2209,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2254,6 +2259,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2261,6 +2267,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2308,6 +2315,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2321,6 +2330,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 3bf0bc9538..5754138e46 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -22,12 +22,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -35,11 +33,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 9ecce30901..0360f65963 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1308,6 +1308,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -1990,6 +1991,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2125,6 +2127,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2172,6 +2176,7 @@ GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
 GLIBC_2.31 msgctl F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.31 semctl F
 GLIBC_2.31 shmctl F
 GLIBC_2.32 __libc_single_threaded D 0x1
@@ -2223,6 +2228,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2230,6 +2236,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2277,6 +2284,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2290,6 +2299,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cc1ca55754..59585f6763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a6faf4e2d6..c99300d9fc 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1308,6 +1308,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -1990,6 +1991,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2125,6 +2127,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2171,6 +2175,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2220,6 +2225,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2227,6 +2233,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2274,6 +2281,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2287,6 +2296,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cc1ca55754..59585f6763 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4d08e96ffa..1d3f00ec04 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -880,6 +880,7 @@ GLIBC_2.0 pthread_equal F
 GLIBC_2.0 pthread_exit F
 GLIBC_2.0 pthread_getschedparam F
 GLIBC_2.0 pthread_getspecific F
+GLIBC_2.0 pthread_join F
 GLIBC_2.0 pthread_key_create F
 GLIBC_2.0 pthread_key_delete F
 GLIBC_2.0 pthread_kill F
@@ -2116,6 +2117,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2251,6 +2253,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2309,6 +2313,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2358,6 +2363,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2365,6 +2371,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2412,6 +2419,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2425,6 +2434,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index b4ea31102a..16fa6ec4ee 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
 GLIBC_2.0 funlockfile F
 GLIBC_2.0 pthread_cancel F
 GLIBC_2.0 pthread_create F
-GLIBC_2.0 pthread_join F
 GLIBC_2.1 pthread_attr_getguardsize F
 GLIBC_2.1 pthread_attr_getstackaddr F
 GLIBC_2.1 pthread_attr_getstacksize F
@@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -39,11 +37,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index bc9ddd71a6..eb222daa74 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1351,6 +1351,7 @@ GLIBC_2.2 pthread_equal F
 GLIBC_2.2 pthread_exit F
 GLIBC_2.2 pthread_getschedparam F
 GLIBC_2.2 pthread_getspecific F
+GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_key_create F
 GLIBC_2.2 pthread_key_delete F
 GLIBC_2.2 pthread_kill F
@@ -2043,6 +2044,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2174,6 +2176,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2222,6 +2226,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2271,6 +2276,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2278,6 +2284,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2325,6 +2332,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2338,6 +2347,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index c377a13e65..1b0a061014 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
 GLIBC_2.2 pthread_create F
 GLIBC_2.2 pthread_getconcurrency F
 GLIBC_2.2 pthread_getcpuclockid F
-GLIBC_2.2 pthread_join F
 GLIBC_2.2 pthread_setconcurrency F
 GLIBC_2.2.3 __libpthread_version_placeholder F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -36,11 +34,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index a893315017..c34f50d673 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1319,6 +1319,7 @@ GLIBC_2.2.5 pthread_exit F
 GLIBC_2.2.5 pthread_getattr_np F
 GLIBC_2.2.5 pthread_getschedparam F
 GLIBC_2.2.5 pthread_getspecific F
+GLIBC_2.2.5 pthread_join F
 GLIBC_2.2.5 pthread_key_create F
 GLIBC_2.2.5 pthread_key_delete F
 GLIBC_2.2.5 pthread_kill F
@@ -2002,6 +2003,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2133,6 +2135,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
 GLIBC_2.3.3 pthread_condattr_setclock F
 GLIBC_2.3.3 pthread_getaffinity_np F
+GLIBC_2.3.3 pthread_timedjoin_np F
+GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.3 remap_file_pages F
 GLIBC_2.3.3 sched_getaffinity F
 GLIBC_2.3.3 sched_setaffinity F
@@ -2181,6 +2185,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2232,6 +2237,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2239,6 +2245,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2286,6 +2293,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2299,6 +2308,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index dac904b6e9..df961f49ba 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -21,11 +21,9 @@ GLIBC_2.2.5 pthread_cancel F
 GLIBC_2.2.5 pthread_create F
 GLIBC_2.2.5 pthread_getconcurrency F
 GLIBC_2.2.5 pthread_getcpuclockid F
-GLIBC_2.2.5 pthread_join F
 GLIBC_2.2.5 pthread_setconcurrency F
 GLIBC_2.2.6 __libpthread_version_placeholder F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.3.2 __libpthread_version_placeholder F
 GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -33,11 +31,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_setaffinity_np F
-GLIBC_2.3.3 pthread_timedjoin_np F
-GLIBC_2.3.3 pthread_tryjoin_np F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_setaffinity_np F
 GLIBC_2.3.4 pthread_setschedprio F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
 GLIBC_2.4 __libpthread_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index fa9319c610..4fae69daff 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1488,6 +1488,7 @@ GLIBC_2.16 pthread_getaffinity_np F
 GLIBC_2.16 pthread_getattr_np F
 GLIBC_2.16 pthread_getschedparam F
 GLIBC_2.16 pthread_getspecific F
+GLIBC_2.16 pthread_join F
 GLIBC_2.16 pthread_key_create F
 GLIBC_2.16 pthread_key_delete F
 GLIBC_2.16 pthread_kill F
@@ -1546,6 +1547,8 @@ GLIBC_2.16 pthread_spin_lock F
 GLIBC_2.16 pthread_spin_trylock F
 GLIBC_2.16 pthread_spin_unlock F
 GLIBC_2.16 pthread_testcancel F
+GLIBC_2.16 pthread_timedjoin_np F
+GLIBC_2.16 pthread_tryjoin_np F
 GLIBC_2.16 pthread_yield F
 GLIBC_2.16 ptrace F
 GLIBC_2.16 ptsname F
@@ -2268,6 +2271,7 @@ GLIBC_2.28 thrd_current F
 GLIBC_2.28 thrd_detach F
 GLIBC_2.28 thrd_equal F
 GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
 GLIBC_2.28 thrd_sleep F
 GLIBC_2.28 thrd_yield F
 GLIBC_2.28 tss_create F
@@ -2286,6 +2290,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.30 tgkill F
 GLIBC_2.30 twalk_r F
+GLIBC_2.31 pthread_clockjoin_np F
 GLIBC_2.32 __libc_single_threaded D 0x1
 GLIBC_2.32 pthread_attr_getsigmask_np F
 GLIBC_2.32 pthread_attr_setaffinity_np F
@@ -2337,6 +2342,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
 GLIBC_2.34 pthread_barrierattr_getpshared F
 GLIBC_2.34 pthread_barrierattr_init F
 GLIBC_2.34 pthread_barrierattr_setpshared F
+GLIBC_2.34 pthread_clockjoin_np F
 GLIBC_2.34 pthread_cond_clockwait F
 GLIBC_2.34 pthread_condattr_getclock F
 GLIBC_2.34 pthread_condattr_getpshared F
@@ -2344,6 +2350,7 @@ GLIBC_2.34 pthread_condattr_setclock F
 GLIBC_2.34 pthread_condattr_setpshared F
 GLIBC_2.34 pthread_detach F
 GLIBC_2.34 pthread_getspecific F
+GLIBC_2.34 pthread_join F
 GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_kill F
@@ -2391,6 +2398,8 @@ GLIBC_2.34 pthread_spin_lock F
 GLIBC_2.34 pthread_spin_trylock F
 GLIBC_2.34 pthread_spin_unlock F
 GLIBC_2.34 pthread_testcancel F
+GLIBC_2.34 pthread_timedjoin_np F
+GLIBC_2.34 pthread_tryjoin_np F
 GLIBC_2.34 sem_clockwait F
 GLIBC_2.34 sem_close F
 GLIBC_2.34 sem_destroy F
@@ -2404,6 +2413,7 @@ GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
+GLIBC_2.34 thrd_join F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
 GLIBC_2.34 tss_get F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index b8bbe71c59..25d7f53b0b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -23,16 +23,12 @@ GLIBC_2.16 pthread_create F
 GLIBC_2.16 pthread_getconcurrency F
 GLIBC_2.16 pthread_getcpuclockid F
 GLIBC_2.16 pthread_getname_np F
-GLIBC_2.16 pthread_join F
 GLIBC_2.16 pthread_setaffinity_np F
 GLIBC_2.16 pthread_setconcurrency F
 GLIBC_2.16 pthread_setname_np F
 GLIBC_2.16 pthread_setschedprio F
 GLIBC_2.16 pthread_sigqueue F
-GLIBC_2.16 pthread_timedjoin_np F
-GLIBC_2.16 pthread_tryjoin_np F
 GLIBC_2.18 pthread_getattr_default_np F
 GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_join F
 GLIBC_2.30 __libpthread_version_placeholder F
-GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.31 __libpthread_version_placeholder F
-- 
2.31.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation
  2021-05-10 12:37 ` [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation Florian Weimer
@ 2021-05-10 13:21   ` Adhemerval Zanella
  0 siblings, 0 replies; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 13:21 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha

LGTM, thanks.

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

On 10/05/2021 09:37, Florian Weimer via Libc-alpha wrote:
> ---
>  nptl/pthread_sigqueue.c | 37 -------------------------------------
>  1 file changed, 37 deletions(-)
>  delete mode 100644 nptl/pthread_sigqueue.c
> 
> diff --git a/nptl/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
> deleted file mode 100644
> index 7d60e2b98d..0000000000
> --- a/nptl/pthread_sigqueue.c
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/* Queue a signal (with value) for a specific pthread.  Stub version.
> -   Copyright (C) 2014-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <errno.h>
> -#include <signal.h>
> -#include <pthreadP.h>
> -
> -
> -int
> -pthread_sigqueue (pthread_t threadid, int signo, const union sigval value)
> -{
> -  struct pthread *pd = (struct pthread *) threadid;
> -
> -  /* Make sure the descriptor is valid.  */
> -  if (DEBUGGING_P && INVALID_TD_P (pd))
> -    /* Not a valid thread handle.  */
> -    return ESRCH;
> -
> -  return ENOSYS;
> -}
> -
> -stub_warning (pthread_sigqueue)
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory
  2021-05-10 12:37 ` [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory Florian Weimer
@ 2021-05-10 13:25   ` Adhemerval Zanella
  2021-05-11  9:09     ` Florian Weimer
  0 siblings, 1 reply; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 13:25 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha

LGTM, thanks.  Maybe combine with the patch that removes the stub
version.

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

On 10/05/2021 09:37, Florian Weimer via Libc-alpha wrote:
> ---
>  {sysdeps/unix/sysv/linux => nptl}/pthread_sigqueue.c | 0
>  1 file changed, 0 insertions(+), 0 deletions(-)
>  rename {sysdeps/unix/sysv/linux => nptl}/pthread_sigqueue.c (100%)
> 
> diff --git a/sysdeps/unix/sysv/linux/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
> similarity index 100%
> rename from sysdeps/unix/sysv/linux/pthread_sigqueue.c
> rename to nptl/pthread_sigqueue.c
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 3/8] nptl: Remove always-disabled debugging support
  2021-05-10 12:37 ` [PATCH 3/8] nptl: Remove always-disabled debugging support Florian Weimer
@ 2021-05-10 13:47   ` Adhemerval Zanella
  0 siblings, 0 replies; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 13:47 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 10/05/2021 09:37, Florian Weimer via Libc-alpha wrote:
> This removes the DEBUGGING_P macro and the __pthread_debug variable.
> The __find_in_stack_list function is now unused and deleted as well.

LGTM, thanks.  As a side note we might revise the INVALID_TD_P and 
INVALID_NOT_TERMINATED_TD_P in the future, I don't their usage are
entirely safe within glibc.

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

> ---
>  nptl/pthreadP.h         | 26 +++++-----------------
>  nptl/pthread_create.c   | 49 -----------------------------------------
>  nptl/pthread_sigqueue.c |  5 -----
>  3 files changed, 5 insertions(+), 75 deletions(-)
> 
> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index d9b97c814a..d9a6137bd3 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -243,23 +243,11 @@ libc_hidden_proto (__pthread_tpp_change_priority)
>  extern int __pthread_current_priority (void);
>  libc_hidden_proto (__pthread_current_priority)
>  
> -/* The library can run in debugging mode where it performs a lot more
> -   tests.  */
> -extern int __pthread_debug attribute_hidden;
> -/** For now disable debugging support.  */
> -#if 0
> -# define DEBUGGING_P __builtin_expect (__pthread_debug, 0)
> -# define INVALID_TD_P(pd) (DEBUGGING_P && __find_in_stack_list (pd) == NULL)
> -# define INVALID_NOT_TERMINATED_TD_P(pd) INVALID_TD_P (pd)
> -#else
> -# define DEBUGGING_P 0
> -/* Simplified test.  This will not catch all invalid descriptors but
> -   is better than nothing.  And if the test triggers the thread
> -   descriptor is guaranteed to be invalid.  */
> -# define INVALID_TD_P(pd) __builtin_expect ((pd)->tid <= 0, 0)
> -# define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect ((pd)->tid < 0, 0)
> -#endif
> -
> +/* This will not catch all invalid descriptors but is better than
> +   nothing.  And if the test triggers the thread descriptor is
> +   guaranteed to be invalid.  */
> +#define INVALID_TD_P(pd) __builtin_expect ((pd)->tid <= 0, 0)
> +#define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect ((pd)->tid < 0, 0)
>  
>  /* Cancellation test.  */
>  #define CANCELLATION_P(self) \
> @@ -322,10 +310,6 @@ __do_cancel (void)
>  
>  /* Internal prototypes.  */
>  
> -/* Thread list handling.  */
> -extern struct pthread *__find_in_stack_list (struct pthread *pd)
> -     attribute_hidden;
> -
>  /* Deallocate a thread's stack after optionally making sure the thread
>     descriptor is still valid.  */
>  extern void __free_tcb (struct pthread *pd) attribute_hidden;

Ok.

> diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
> index 775287d0e4..d19456d48b 100644
> --- a/nptl/pthread_create.c
> +++ b/nptl/pthread_create.c
> @@ -42,9 +42,6 @@
>  #include <stap-probe.h>
>  
>  
> -/* Nozero if debugging mode is enabled.  */
> -int __pthread_debug;
> -
>  /* Globally enabled events.  */
>  static td_thr_events_t __nptl_threads_events __attribute_used__;
>  
> @@ -210,46 +207,6 @@ static int create_thread (struct pthread *pd, const struct pthread_attr *attr,
>  
>  #include <createthread.c>
>  
> -
> -struct pthread *
> -__find_in_stack_list (struct pthread *pd)
> -{
> -  list_t *entry;
> -  struct pthread *result = NULL;
> -
> -  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> -
> -  list_for_each (entry, &GL (dl_stack_used))
> -    {
> -      struct pthread *curp;
> -
> -      curp = list_entry (entry, struct pthread, list);
> -      if (curp == pd)
> -	{
> -	  result = curp;
> -	  break;
> -	}
> -    }
> -
> -  if (result == NULL)
> -    list_for_each (entry, &GL (dl_stack_user))
> -      {
> -	struct pthread *curp;
> -
> -	curp = list_entry (entry, struct pthread, list);
> -	if (curp == pd)
> -	  {
> -	    result = curp;
> -	    break;
> -	  }
> -      }
> -
> -  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> -
> -  return result;
> -}
> -
> -
>  /* Deallocate a thread's stack after optionally making sure the thread
>     descriptor is still valid.  */
>  void

Ok.

> @@ -259,12 +216,6 @@ __free_tcb (struct pthread *pd)
>    if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
>  					     TERMINATED_BIT) == 0, 1))
>      {
> -      /* Remove the descriptor from the list.  */
> -      if (DEBUGGING_P && __find_in_stack_list (pd) == NULL)
> -	/* Something is really wrong.  The descriptor for a still
> -	   running thread is gone.  */
> -	abort ();
> -
>        /* Free TPP data.  */
>        if (__glibc_unlikely (pd->tpp != NULL))
>  	{

Ok.

> diff --git a/nptl/pthread_sigqueue.c b/nptl/pthread_sigqueue.c
> index 64bacfe41b..3ffb595489 100644
> --- a/nptl/pthread_sigqueue.c
> +++ b/nptl/pthread_sigqueue.c
> @@ -31,11 +31,6 @@ pthread_sigqueue (pthread_t threadid, int signo, const union sigval value)
>  #ifdef __NR_rt_tgsigqueueinfo
>    struct pthread *pd = (struct pthread *) threadid;
>  
> -  /* Make sure the descriptor is valid.  */
> -  if (DEBUGGING_P && INVALID_TD_P (pd))
> -    /* Not a valid thread handle.  */
> -    return ESRCH;
> -
>    /* Force load of pd->tid into local variable or register.  Otherwise
>       if a thread exits between ESRCH test and tgkill, we might return
>       EINVAL, because pd->tid would be cleared by the kernel.  */
> 

Ok.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc
  2021-05-10 12:37 ` [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc Florian Weimer
@ 2021-05-10 16:28   ` Adhemerval Zanella
  0 siblings, 0 replies; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 16:28 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 10/05/2021 09:37, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> The export of  __default_pthread_attr_freeres is temporary.  There
> is a minor regression in freeres coverage because in the dynamic case,
> __default_pthread_attr_freeres is no longer called if libpthread is
> not linked in.

LGTM, thanks.

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

> ---
>  nptl/Makefile                                          |  2 +-
>  nptl/Versions                                          |  8 ++++++--
>  nptl/pthreadP.h                                        |  2 +-
>  nptl/pthread_setattr_default_np.c                      | 10 ++++++++--
>  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 ++
>  sysdeps/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 ++
>  sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
>  sysdeps/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 -
>  .../unix/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 ++
>  .../sysv/linux/powerpc/powerpc64/be/libpthread.abilist |  1 -
>  .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist  |  2 ++
>  .../sysv/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 -
>  65 files changed, 80 insertions(+), 35 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index f7723cb808..2a18eadf71 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -145,6 +145,7 @@ routines = \
>    pthread_rwlockattr_setkind_np \
>    pthread_rwlockattr_setpshared \
>    pthread_self \
> +  pthread_setattr_default_np \
>    pthread_setcancelstate \
>    pthread_setcanceltype \
>    pthread_setschedparam \
> @@ -206,7 +207,6 @@ libpthread-routines = \
>    pthread_join \
>    pthread_join_common \
>    pthread_setaffinity \
> -  pthread_setattr_default_np \
>    pthread_setconcurrency \
>    pthread_setname \
>    pthread_setschedprio \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 4c1c4ee0a7..de025e179c 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -167,6 +167,9 @@ libc {
>      pthread_mutexattr_getrobust;
>      pthread_mutexattr_setrobust;
>    }
> +  GLIBC_2.18 {
> +    pthread_setattr_default_np;
> +  }
>    # C11 thread symbols.
>    GLIBC_2.28 {
>      call_once;
> @@ -230,8 +233,8 @@ libc {
>      pthread_barrier_wait;
>      pthread_barrierattr_destroy;
>      pthread_barrierattr_getpshared;
> -    pthread_barrierattr_setpshared;
>      pthread_barrierattr_init;
> +    pthread_barrierattr_setpshared;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -273,6 +276,7 @@ libc {
>      pthread_rwlockattr_init;
>      pthread_rwlockattr_setkind_np;
>      pthread_rwlockattr_setpshared;
> +    pthread_setattr_default_np;
>      pthread_setspecific;
>      pthread_spin_destroy;
>      pthread_spin_init;
> @@ -299,6 +303,7 @@ libc {
>    }
>    GLIBC_PRIVATE {
>      __default_pthread_attr;
> +    __default_pthread_attr_freeres;
>      __default_pthread_attr_lock;
>      __futex_abstimed_wait64;
>      __futex_abstimed_wait_cancelable64;
> @@ -436,7 +441,6 @@ libpthread {
>  
>    GLIBC_2.18 {
>      pthread_getattr_default_np;
> -    pthread_setattr_default_np;
>    }
>  
>    # C11 thread symbols.

OK.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index d9a6137bd3..8466332248 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -203,7 +203,7 @@ libc_hidden_proto (__default_pthread_attr)
>  extern int __default_pthread_attr_lock;
>  libc_hidden_proto (__default_pthread_attr_lock)
>  /* Called from __libc_freeres to deallocate the default attribute.  */
> -extern void __default_pthread_attr_freeres (void) attribute_hidden;
> +extern void __default_pthread_attr_freeres (void);
>  
>  /* Size and alignment of static TLS block.  */
>  extern size_t __static_tls_size attribute_hidden;

Ok.

> diff --git a/nptl/pthread_setattr_default_np.c b/nptl/pthread_setattr_default_np.c
> index fcf1873d2f..bfdb93bc6e 100644
> --- a/nptl/pthread_setattr_default_np.c
> +++ b/nptl/pthread_setattr_default_np.c
> @@ -20,10 +20,10 @@
>  #include <stdlib.h>
>  #include <pthreadP.h>
>  #include <string.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -pthread_setattr_default_np (const pthread_attr_t *in)
> +__pthread_setattr_default_np (const pthread_attr_t *in)
>  {
>    const struct pthread_attr *real_in;
>    int ret;
> @@ -81,6 +81,12 @@ pthread_setattr_default_np (const pthread_attr_t *in)
>    lll_unlock (__default_pthread_attr_lock, LLL_PRIVATE);
>    return ret;
>  }
> +versioned_symbol (libc, __pthread_setattr_default_np,
> +		  pthread_setattr_default_np, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_18, GLIBC_2_34)
> +compat_symbol (libc, __pthread_setattr_default_np,
> +	       pthread_setattr_default_np, GLIBC_2_18);
> +#endif
>  
>  /* This is placed in the same file as pthread_setattr_default_np
>     because only this function can trigger allocation of attribute

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 36d760212c..caee529c98 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2179,6 +2179,7 @@ GLIBC_2.17 xprt_register F
>  GLIBC_2.17 xprt_unregister F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
>  GLIBC_2.18 _mcount F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -2364,6 +2365,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index b4f0fdd999..f09c6d434a 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -33,7 +33,6 @@ GLIBC_2.17 pthread_sigqueue F
>  GLIBC_2.17 pthread_timedjoin_np F
>  GLIBC_2.17 pthread_tryjoin_np F
>  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_join F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 8fc9b75676..7a9a6608f4 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1854,6 +1854,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _IO_adjust_wcolumn F
>  GLIBC_2.2 _IO_fgetpos F
>  GLIBC_2.2 _IO_fgetpos64 F
> @@ -2451,6 +2452,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index c2017537e2..9b2e09a2e4 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
>  GLIBC_2.2 pthread_getcpuclockid F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 8e84a695fd..6fef10b0ad 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1470,6 +1470,7 @@ GLIBC_2.32 pthread_rwlockattr_init F
>  GLIBC_2.32 pthread_rwlockattr_setkind_np F
>  GLIBC_2.32 pthread_rwlockattr_setpshared F
>  GLIBC_2.32 pthread_self F
> +GLIBC_2.32 pthread_setattr_default_np F
>  GLIBC_2.32 pthread_setcancelstate F
>  GLIBC_2.32 pthread_setcanceltype F
>  GLIBC_2.32 pthread_setschedparam F
> @@ -2123,6 +2124,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index bc072be61f..8a4bea9aa9 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -28,7 +28,6 @@ GLIBC_2.32 pthread_getcpuclockid F
>  GLIBC_2.32 pthread_getname_np F
>  GLIBC_2.32 pthread_join F
>  GLIBC_2.32 pthread_setaffinity_np F
> -GLIBC_2.32 pthread_setattr_default_np F
>  GLIBC_2.32 pthread_setconcurrency F
>  GLIBC_2.32 pthread_setname_np F
>  GLIBC_2.32 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 424d683ffe..f97aeeb047 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -253,6 +254,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 5b52c456fb..117d44ad5f 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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 thrd_create F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 15acd896df..70f5f81faf 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -250,6 +251,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 5b52c456fb..117d44ad5f 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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 thrd_create F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 61c58b1e0f..bd80fd1afd 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1527,6 +1527,7 @@ GLIBC_2.29 pthread_rwlockattr_init F
>  GLIBC_2.29 pthread_rwlockattr_setkind_np F
>  GLIBC_2.29 pthread_rwlockattr_setpshared F
>  GLIBC_2.29 pthread_self F
> +GLIBC_2.29 pthread_setattr_default_np F
>  GLIBC_2.29 pthread_setcancelstate F
>  GLIBC_2.29 pthread_setcanceltype F
>  GLIBC_2.29 pthread_setschedparam F
> @@ -2307,6 +2308,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index d55f09a9fe..8ad8fc7c7f 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -27,7 +27,6 @@ GLIBC_2.29 pthread_getcpuclockid F
>  GLIBC_2.29 pthread_getname_np F
>  GLIBC_2.29 pthread_join F
>  GLIBC_2.29 pthread_setaffinity_np F
> -GLIBC_2.29 pthread_setattr_default_np F
>  GLIBC_2.29 pthread_setconcurrency F
>  GLIBC_2.29 pthread_setname_np F
>  GLIBC_2.29 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index e89b8b935f..fb40c0292c 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -77,6 +77,7 @@ GLIBC_2.17 secure_getenv F
>  GLIBC_2.17 sys_errlist D 0x410
>  GLIBC_2.17 sys_nerr D 0x4
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 fanotify_mark F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0xa0
> @@ -2258,6 +2259,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 2c4a7041b6..7e7fdfb8cd 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
>  GLIBC_2.2 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 3c3c826952..dd243f7808 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1856,6 +1856,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _IO_adjust_wcolumn F
>  GLIBC_2.2 _IO_fgetpos F
>  GLIBC_2.2 _IO_fgetpos64 F
> @@ -2441,6 +2442,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 1cbc49b937..1f5547e80c 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
>  GLIBC_2.2 pthread_getcpuclockid F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 94a0819e08..b805382c4b 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -74,6 +74,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
>  GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
> @@ -2292,6 +2293,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 6b87a988d4..3460d95267 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
>  GLIBC_2.2 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 789189ea9d..21332b7b39 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -75,6 +75,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -254,6 +255,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 5b52c456fb..117d44ad5f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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 thrd_create F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index ae2fd168e7..5159aee942 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1812,6 +1812,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _IO_adjust_wcolumn F
>  GLIBC_2.2 _IO_fgetpos F
>  GLIBC_2.2 _IO_fgetpos64 F
> @@ -2384,6 +2385,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 1cbc49b937..1f5547e80c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
>  GLIBC_2.2 pthread_getcpuclockid F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 4a39e0d5d5..4609ade92c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1529,6 +1529,7 @@ GLIBC_2.18 pthread_rwlockattr_init F
>  GLIBC_2.18 pthread_rwlockattr_setkind_np F
>  GLIBC_2.18 pthread_rwlockattr_setpshared F
>  GLIBC_2.18 pthread_self F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.18 pthread_setcancelstate F
>  GLIBC_2.18 pthread_setcanceltype F
>  GLIBC_2.18 pthread_setschedparam F
> @@ -2358,6 +2359,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index ee29730057..c87d939959 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -27,7 +27,6 @@ GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_setaffinity_np F
> -GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.18 pthread_setconcurrency F
>  GLIBC_2.18 pthread_setname_np F
>  GLIBC_2.18 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index f0d2c10414..41db7ed508 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1529,6 +1529,7 @@ GLIBC_2.18 pthread_rwlockattr_init F
>  GLIBC_2.18 pthread_rwlockattr_setkind_np F
>  GLIBC_2.18 pthread_rwlockattr_setpshared F
>  GLIBC_2.18 pthread_self F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.18 pthread_setcancelstate F
>  GLIBC_2.18 pthread_setcanceltype F
>  GLIBC_2.18 pthread_setschedparam F
> @@ -2355,6 +2356,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index ee29730057..c87d939959 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -27,7 +27,6 @@ GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
>  GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_setaffinity_np F
> -GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.18 pthread_setconcurrency F
>  GLIBC_2.18 pthread_setname_np F
>  GLIBC_2.18 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index ece8508afc..77d3b72f2b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1421,6 +1421,7 @@ GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
>  GLIBC_2.18 __mips_fpu_getcw F
>  GLIBC_2.18 __mips_fpu_setcw F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 getrlimit64 F
>  GLIBC_2.19 setrlimit64 F
>  GLIBC_2.2 _Exit F
> @@ -2347,6 +2348,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index e523996633..fa52921d78 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getguardsize F
>  GLIBC_2.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_getstackaddr F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 0bfd7786d3..bfc6ca8d87 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1419,6 +1419,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 getrlimit64 F
>  GLIBC_2.19 setrlimit64 F
>  GLIBC_2.2 _Exit F
> @@ -2345,6 +2346,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index e523996633..fa52921d78 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getguardsize F
>  GLIBC_2.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_getstackaddr F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index ae1796b582..cdade4e56a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1419,6 +1419,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 getrlimit64 F
>  GLIBC_2.19 setrlimit64 F
>  GLIBC_2.2 _Exit F
> @@ -2353,6 +2354,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 4139762550..62184c7a10 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1417,6 +1417,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
>  GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
> @@ -2347,6 +2348,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index f442fdf645..bc230f7020 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1572,6 +1572,7 @@ GLIBC_2.21 pthread_rwlockattr_init F
>  GLIBC_2.21 pthread_rwlockattr_setkind_np F
>  GLIBC_2.21 pthread_rwlockattr_setpshared F
>  GLIBC_2.21 pthread_self F
> +GLIBC_2.21 pthread_setattr_default_np F
>  GLIBC_2.21 pthread_setcancelstate F
>  GLIBC_2.21 pthread_setcanceltype F
>  GLIBC_2.21 pthread_setschedparam F
> @@ -2397,6 +2398,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 059b21f854..502268cbd5 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -27,7 +27,6 @@ GLIBC_2.21 pthread_getcpuclockid F
>  GLIBC_2.21 pthread_getname_np F
>  GLIBC_2.21 pthread_join F
>  GLIBC_2.21 pthread_setaffinity_np F
> -GLIBC_2.21 pthread_setattr_default_np F
>  GLIBC_2.21 pthread_setconcurrency F
>  GLIBC_2.21 pthread_setname_np F
>  GLIBC_2.21 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 0e3d3a3648..0e384dd37e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1818,6 +1818,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _IO_adjust_wcolumn F
>  GLIBC_2.2 _IO_fgetpos F
>  GLIBC_2.2 _IO_fgetpos64 F
> @@ -2411,6 +2412,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 84312f522b..c2ac178742 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
>  GLIBC_2.2 pthread_getcpuclockid F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index a14c3c9531..dac4a03938 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1818,6 +1818,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 __atomic_feclearexcept F
>  GLIBC_2.19 __atomic_feholdexcept F
>  GLIBC_2.19 __atomic_feupdateenv F
> @@ -2444,6 +2445,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 513df99b4d..6a8958d5a8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -75,6 +75,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -2259,6 +2260,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 2d5583ebe8..89b4083cf4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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 thrd_create F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index e271e61128..16f4d90871 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2266,6 +2266,7 @@ GLIBC_2.17 xencrypt F
>  GLIBC_2.17 xprt_register F
>  GLIBC_2.17 xprt_unregister F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -2560,6 +2561,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index b4f0fdd999..f09c6d434a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -33,7 +33,6 @@ GLIBC_2.17 pthread_sigqueue F
>  GLIBC_2.17 pthread_timedjoin_np F
>  GLIBC_2.17 pthread_tryjoin_np F
>  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_join F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index c883de1279..876ed3d11f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1472,6 +1472,7 @@ GLIBC_2.33 pthread_rwlockattr_init F
>  GLIBC_2.33 pthread_rwlockattr_setkind_np F
>  GLIBC_2.33 pthread_rwlockattr_setpshared F
>  GLIBC_2.33 pthread_self F
> +GLIBC_2.33 pthread_setattr_default_np F
>  GLIBC_2.33 pthread_setcancelstate F
>  GLIBC_2.33 pthread_setcanceltype F
>  GLIBC_2.33 pthread_setschedparam F
> @@ -2125,6 +2126,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index cc35881f1a..d6f50be603 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -28,7 +28,6 @@ GLIBC_2.33 pthread_getcpuclockid F
>  GLIBC_2.33 pthread_getname_np F
>  GLIBC_2.33 pthread_join F
>  GLIBC_2.33 pthread_setaffinity_np F
> -GLIBC_2.33 pthread_setattr_default_np F
>  GLIBC_2.33 pthread_setconcurrency F
>  GLIBC_2.33 pthread_setname_np F
>  GLIBC_2.33 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index a8202f95cd..ec2dbc5f6c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1517,6 +1517,7 @@ GLIBC_2.27 pthread_rwlockattr_init F
>  GLIBC_2.27 pthread_rwlockattr_setkind_np F
>  GLIBC_2.27 pthread_rwlockattr_setpshared F
>  GLIBC_2.27 pthread_self F
> +GLIBC_2.27 pthread_setattr_default_np F
>  GLIBC_2.27 pthread_setcancelstate F
>  GLIBC_2.27 pthread_setcanceltype F
>  GLIBC_2.27 pthread_setschedparam F
> @@ -2325,6 +2326,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 6946ced1b9..240dfc6c9a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -27,7 +27,6 @@ GLIBC_2.27 pthread_getcpuclockid F
>  GLIBC_2.27 pthread_getname_np F
>  GLIBC_2.27 pthread_join F
>  GLIBC_2.27 pthread_setaffinity_np F
> -GLIBC_2.27 pthread_setattr_default_np F
>  GLIBC_2.27 pthread_setconcurrency F
>  GLIBC_2.27 pthread_setname_np F
>  GLIBC_2.27 pthread_setschedprio F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index d63e9a2139..d1bc174497 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1808,6 +1808,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 __longjmp_chk F
>  GLIBC_2.19 __sigsetjmp F
>  GLIBC_2.19 _longjmp F
> @@ -2409,6 +2410,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 0c6df4a437..20ee83baca 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.19 __libpthread_version_placeholder F
>  GLIBC_2.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 55cd1e75ce..3771dc652a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.19 __longjmp_chk F
>  GLIBC_2.19 __sigsetjmp F
>  GLIBC_2.19 _longjmp F
> @@ -2296,6 +2297,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index d287d8fe7a..35f0b89d66 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.19 __libpthread_version_placeholder F
>  GLIBC_2.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 39c4667cb0..6355ca1061 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0x98
>  GLIBC_2.2 _IO_2_1_stdin_ D 0x98
> @@ -2265,6 +2266,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 2c4a7041b6..7e7fdfb8cd 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
>  GLIBC_2.2 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index ae7e00cbc4..a1e3c3a93b 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -78,6 +78,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0x98
>  GLIBC_2.2 _IO_2_1_stdin_ D 0x98
> @@ -2262,6 +2263,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 2c4a7041b6..7e7fdfb8cd 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
>  GLIBC_2.2 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 8556de3265..17026a997b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1814,6 +1814,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _IO_adjust_wcolumn F
>  GLIBC_2.2 _IO_fgetpos F
>  GLIBC_2.2 _IO_fgetpos64 F
> @@ -2400,6 +2401,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index c2017537e2..9b2e09a2e4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -24,7 +24,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 pthread_attr_getstack F
>  GLIBC_2.2 pthread_attr_setstack F
>  GLIBC_2.2 pthread_getcpuclockid F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index d2f08437d1..9dc72e0556 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -83,6 +83,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2 _Exit F
>  GLIBC_2.2 _IO_2_1_stderr_ D 0xe0
>  GLIBC_2.2 _IO_2_1_stdin_ D 0xe0
> @@ -2313,6 +2314,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 6b87a988d4..3460d95267 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2 _IO_flockfile F
>  GLIBC_2.2 _IO_ftrylockfile F
>  GLIBC_2.2 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index f752981203..586aec23cb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -76,6 +76,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.2.5 _Exit F
>  GLIBC_2.2.5 _IO_2_1_stderr_ D 0xe0
>  GLIBC_2.2.5 _IO_2_1_stdin_ D 0xe0
> @@ -2274,6 +2275,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index cea092874a..fd77f8a602 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.11 pthread_sigqueue F
>  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.2.5 _IO_flockfile F
>  GLIBC_2.2.5 _IO_ftrylockfile F
>  GLIBC_2.2.5 _IO_funlockfile F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 55f133b0d5..1529b87004 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2189,6 +2189,7 @@ GLIBC_2.17 clock_nanosleep F
>  GLIBC_2.17 clock_settime F
>  GLIBC_2.17 secure_getenv F
>  GLIBC_2.18 __cxa_thread_atexit_impl F
> +GLIBC_2.18 pthread_setattr_default_np F
>  GLIBC_2.22 fmemopen F
>  GLIBC_2.23 fts64_children F
>  GLIBC_2.23 fts64_close F
> @@ -2379,6 +2380,7 @@ GLIBC_2.34 pthread_rwlockattr_getpshared F
>  GLIBC_2.34 pthread_rwlockattr_init F
>  GLIBC_2.34 pthread_rwlockattr_setkind_np F
>  GLIBC_2.34 pthread_rwlockattr_setpshared F
> +GLIBC_2.34 pthread_setattr_default_np F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.34 pthread_spin_destroy F
>  GLIBC_2.34 pthread_spin_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 394748f198..ab2ec9227a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -33,7 +33,6 @@ GLIBC_2.16 pthread_sigqueue F
>  GLIBC_2.16 pthread_timedjoin_np F
>  GLIBC_2.16 pthread_tryjoin_np F
>  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_join F
> 

Ok.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres into libc
  2021-05-10 12:37 ` [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres " Florian Weimer
@ 2021-05-10 16:45   ` Adhemerval Zanella
  2021-05-11  9:29     ` Florian Weimer
  0 siblings, 1 reply; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 16:45 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha, Carlos O'Donell



On 10/05/2021 09:37, Florian Weimer via Libc-alpha wrote:
> This replaces the FREE_P macro with the __nptl_stack_in_use inline
> function.  stack_list_del is renamed to __nptl_stack_list_del,
> stack_list_add to __nptl_stack_list_add, __deallocate_stack to
> __nptl_deallocate_stack, free_stacks to __nptl_free_stacks.
> 
> It is convenient to move __libpthread_freeres into libc at the
> same time.  This removes the temporary __default_pthread_attr_freeres
> export and restores full freeres coverage for __default_pthread_attr.

LGTM with some small nits below.  I still dislike the 'Contributed by' 
on *newer* file, so I ccing Carlos.

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

> ---
>  malloc/set-freeres.c  |  15 +++--
>  nptl/Makefile         |   3 +-
>  nptl/Versions         |   5 +-
>  nptl/allocatestack.c  | 147 ++----------------------------------------
>  nptl/descr.h          |   6 ++
>  nptl/nptl-stack.c     | 130 +++++++++++++++++++++++++++++++++++++
>  nptl/nptl-stack.h     |  50 ++++++++++++++
>  nptl/nptlfreeres.c    |   3 +-
>  nptl/pthreadP.h       |   7 +-
>  nptl/pthread_create.c |   4 +-
>  10 files changed, 212 insertions(+), 158 deletions(-)
>  create mode 100644 nptl/nptl-stack.c
>  create mode 100644 nptl/nptl-stack.h
> 
> diff --git a/malloc/set-freeres.c b/malloc/set-freeres.c
> index d404250151..5c19a2725c 100644
> --- a/malloc/set-freeres.c
> +++ b/malloc/set-freeres.c
> @@ -29,7 +29,15 @@ DEFINE_HOOK (__libc_subfreeres, (void));
>  
>  symbol_set_define (__libc_freeres_ptrs);
>  
> -extern __attribute__ ((weak)) void __libpthread_freeres (void);
> +extern void __libpthread_freeres (void)
> +#if PTHREAD_IN_LIBC && defined SHARED
> +/* It is possible to call __libpthread_freeres directly in shared
> +   builds with an integrated libpthread.  */
> +  attribute_hidden
> +#else
> +  __attribute__ ((weak))
> +#endif
> +  ;
>  
>  void __libc_freeres_fn_section
>  __libc_freeres (void)
> @@ -51,10 +59,7 @@ __libc_freeres (void)
>        /* We run the resource freeing after IO cleanup.  */
>        RUN_HOOK (__libc_subfreeres, ());
>  
> -      /* Call the libpthread list of cleanup functions
> -	 (weak-ref-and-check).  */
> -      if (&__libpthread_freeres != NULL)
> -	__libpthread_freeres ();
> +      call_function_static_weak (__libpthread_freeres);
>  
>  #ifdef SHARED
>        __libc_unwind_link_freeres ();

Ok.

> diff --git a/nptl/Makefile b/nptl/Makefile
> index 2a18eadf71..3b83817163 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -44,9 +44,11 @@ routines = \
>    libc_multiple_threads \
>    libc_pthread_init \
>    lowlevellock \
> +  nptl-stack \
>    nptl_deallocate_tsd \
>    nptl_nthreads \
>    nptl_setxid \
> +  nptlfreeres \
>    old_pthread_atfork \
>    old_pthread_cond_broadcast \
>    old_pthread_cond_destroy \
> @@ -185,7 +187,6 @@ libpthread-routines = \
>    funlockfile \
>    libpthread-compat \
>    nptl-init \
> -  nptlfreeres \
>    pt-interp \
>    pthread_attr_getaffinity \
>    pthread_attr_getguardsize \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index de025e179c..93219d2657 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -303,7 +303,6 @@ libc {
>    }
>    GLIBC_PRIVATE {
>      __default_pthread_attr;
> -    __default_pthread_attr_freeres;
>      __default_pthread_attr_lock;
>      __futex_abstimed_wait64;
>      __futex_abstimed_wait_cancelable64;
> @@ -320,9 +319,12 @@ libc {
>      __lll_trylock_elision;
>      __lll_unlock_elision;
>      __mutex_aconf;
> +    __nptl_deallocate_stack;
>      __nptl_deallocate_tsd;
>      __nptl_nthreads;
>      __nptl_setxid_sighandler;
> +    __nptl_stack_list_add;
> +    __nptl_stack_list_del;
>      __pthread_attr_copy;
>      __pthread_attr_destroy;
>      __pthread_attr_init;
> @@ -459,7 +461,6 @@ libpthread {
>    }
>  
>    GLIBC_PRIVATE {
> -    __libpthread_freeres;
>      __pthread_clock_gettime;
>      __pthread_clock_settime;
>      __pthread_get_minstack;

OK.

> diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
> index 8672e89e75..c0a5c4d96d 100644
> --- a/nptl/allocatestack.c
> +++ b/nptl/allocatestack.c
> @@ -31,7 +31,7 @@
>  #include <lowlevellock.h>
>  #include <futex-internal.h>
>  #include <kernel-features.h>
> -
> +#include <nptl-stack.h>
>  
>  #ifndef NEED_SEPARATE_REGISTER_STACK
>  
> @@ -92,56 +92,6 @@
>  # define MAP_STACK 0
>  #endif
>  
> -/* This yields the pointer that TLS support code calls the thread pointer.  */
> -#if TLS_TCB_AT_TP
> -# define TLS_TPADJ(pd) (pd)
> -#elif TLS_DTV_AT_TP
> -# define TLS_TPADJ(pd) ((struct pthread *)((char *) (pd) + TLS_PRE_TCB_SIZE))
> -#endif
> -
> -/* Cache handling for not-yet free stacks.  */
> -
> -/* Maximum size in kB of cache.  */
> -static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default.  */
> -
> -/* Check whether the stack is still used or not.  */
> -#define FREE_P(descr) ((descr)->tid <= 0)
> -
> -
> -static void
> -stack_list_del (list_t *elem)
> -{
> -  GL (dl_in_flight_stack) = (uintptr_t) elem;
> -
> -  atomic_write_barrier ();
> -
> -  list_del (elem);
> -
> -  atomic_write_barrier ();
> -
> -  GL (dl_in_flight_stack) = 0;
> -}
> -
> -
> -static void
> -stack_list_add (list_t *elem, list_t *list)
> -{
> -  GL (dl_in_flight_stack) = (uintptr_t) elem | 1;
> -
> -  atomic_write_barrier ();
> -
> -  list_add (elem, list);
> -
> -  atomic_write_barrier ();
> -
> -  GL (dl_in_flight_stack) = 0;
> -}
> -
> -
> -/* We create a double linked list of all cache entries.  Double linked
> -   because this allows removing entries from the end.  */
> -
> -
>  /* Get a stack frame from the cache.  We have to match by size since
>     some blocks might be too small or far too large.  */
>  static struct pthread *

Ok.

> @@ -164,7 +114,7 @@ get_cached_stack (size_t *sizep, void **memp)
>        struct pthread *curr;
>  
>        curr = list_entry (entry, struct pthread, list);
> -      if (FREE_P (curr) && curr->stackblock_size >= size)
> +      if (__nptl_stack_in_use (curr) && curr->stackblock_size >= size)
>  	{
>  	  if (curr->stackblock_size == size)
>  	    {

Ok.

> @@ -193,10 +143,10 @@ get_cached_stack (size_t *sizep, void **memp)
>    result->setxid_futex = -1;
>  
>    /* Dequeue the entry.  */
> -  stack_list_del (&result->list);
> +  __nptl_stack_list_del (&result->list);
>  
>    /* And add to the list of stacks in use.  */
> -  stack_list_add (&result->list, &GL (dl_stack_used));
> +  __nptl_stack_list_add (&result->list, &GL (dl_stack_used));
>  
>    /* And decrease the cache size.  */
>    GL (dl_stack_cache_actsize) -= result->stackblock_size;

Ok.

> @@ -229,68 +179,6 @@ get_cached_stack (size_t *sizep, void **memp)
>    return result;
>  }
>  
> -
> -/* Free stacks until cache size is lower than LIMIT.  */
> -static void
> -free_stacks (size_t limit)
> -{
> -  /* We reduce the size of the cache.  Remove the last entries until
> -     the size is below the limit.  */
> -  list_t *entry;
> -  list_t *prev;
> -
> -  /* Search from the end of the list.  */
> -  list_for_each_prev_safe (entry, prev, &GL (dl_stack_cache))
> -    {
> -      struct pthread *curr;
> -
> -      curr = list_entry (entry, struct pthread, list);
> -      if (FREE_P (curr))
> -	{
> -	  /* Unlink the block.  */
> -	  stack_list_del (entry);
> -
> -	  /* Account for the freed memory.  */
> -	  GL (dl_stack_cache_actsize) -= curr->stackblock_size;
> -
> -	  /* Free the memory associated with the ELF TLS.  */
> -	  _dl_deallocate_tls (TLS_TPADJ (curr), false);
> -
> -	  /* Remove this block.  This should never fail.  If it does
> -	     something is really wrong.  */
> -	  if (__munmap (curr->stackblock, curr->stackblock_size) != 0)
> -	    abort ();
> -
> -	  /* Maybe we have freed enough.  */
> -	  if (GL (dl_stack_cache_actsize) <= limit)
> -	    break;
> -	}
> -    }
> -}
> -
> -/* Free all the stacks on cleanup.  */
> -void
> -__nptl_stacks_freeres (void)
> -{
> -  free_stacks (0);
> -}
> -
> -/* Add a stack frame which is not used anymore to the stack.  Must be
> -   called with the cache lock held.  */
> -static inline void
> -__attribute ((always_inline))
> -queue_stack (struct pthread *stack)
> -{
> -  /* We unconditionally add the stack to the list.  The memory may
> -     still be in use but it will not be reused until the kernel marks
> -     the stack as not used anymore.  */
> -  stack_list_add (&stack->list, &GL (dl_stack_cache));
> -
> -  GL (dl_stack_cache_actsize) += stack->stackblock_size;
> -  if (__glibc_unlikely (GL (dl_stack_cache_actsize) > stack_cache_maxsize))
> -    free_stacks (stack_cache_maxsize);
> -}
> -
>  /* Return the guard page position on allocated stack.  */
>  static inline char *
>  __attribute ((always_inline))

Ok.

> @@ -588,7 +476,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
>  	  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
>  
>  	  /* And add to the list of stacks in use.  */
> -	  stack_list_add (&pd->list, &GL (dl_stack_used));
> +	  __nptl_stack_list_add (&pd->list, &GL (dl_stack_used));
>  
>  	  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
>  
> @@ -630,7 +518,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
>  	      lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
>  
>  	      /* Remove the thread from the list.  */
> -	      stack_list_del (&pd->list);
> +	      __nptl_stack_list_del (&pd->list);
>  
>  	      lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
>  

Ok.

> @@ -731,26 +619,3 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
>  
>    return 0;
>  }
> -
> -
> -void
> -__deallocate_stack (struct pthread *pd)
> -{
> -  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> -
> -  /* Remove the thread from the list of threads with user defined
> -     stacks.  */
> -  stack_list_del (&pd->list);
> -
> -  /* Not much to do.  Just free the mmap()ed memory.  Note that we do
> -     not reset the 'used' flag in the 'tid' field.  This is done by
> -     the kernel.  If no thread has been created yet this field is
> -     still zero.  */
> -  if (__glibc_likely (! pd->user_stack))
> -    (void) queue_stack (pd);
> -  else
> -    /* Free the memory associated with the ELF TLS.  */
> -    _dl_deallocate_tls (TLS_TPADJ (pd), false);
> -
> -  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> -}

Ok.

> diff --git a/nptl/descr.h b/nptl/descr.h
> index d423a53bbf..3de9535449 100644
> --- a/nptl/descr.h
> +++ b/nptl/descr.h
> @@ -416,5 +416,11 @@ struct pthread
>    (sizeof (struct pthread) - offsetof (struct pthread, end_padding))
>  } __attribute ((aligned (TCB_ALIGNMENT)));
>  
> +/* This yields the pointer that TLS support code calls the thread pointer.  */
> +#if TLS_TCB_AT_TP
> +# define TLS_TPADJ(pd) (pd)
> +#elif TLS_DTV_AT_TP
> +# define TLS_TPADJ(pd) ((struct pthread *)((char *) (pd) + TLS_PRE_TCB_SIZE))
> +#endif
>  
>  #endif	/* descr.h */

Ok.

> diff --git a/nptl/nptl-stack.c b/nptl/nptl-stack.c
> new file mode 100644
> index 0000000000..5ead9db198
> --- /dev/null
> +++ b/nptl/nptl-stack.c
> @@ -0,0 +1,130 @@
> +/* Stack cache management for NPTL.
> +   Copyright (C) 2002-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.

I am aware about your reservation about removing the 'Contributed by' removal,
but I think for *newer* files it should *not* be included.

> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <nptl-stack.h>
> +#include <ldsodefs.h>
> +
> +/* Maximum size in kB of cache.  */
> +static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default.  */

This line seems to be too long.

> +
> +void
> +__nptl_stack_list_del (list_t *elem)
> +{
> +  GL (dl_in_flight_stack) = (uintptr_t) elem;
> +
> +  atomic_write_barrier ();
> +
> +  list_del (elem);
> +
> +  atomic_write_barrier ();
> +
> +  GL (dl_in_flight_stack) = 0;
> +}
> +libc_hidden_def (__nptl_stack_list_del)
> +
> +void
> +__nptl_stack_list_add (list_t *elem, list_t *list)
> +{
> +  GL (dl_in_flight_stack) = (uintptr_t) elem | 1;
> +
> +  atomic_write_barrier ();
> +
> +  list_add (elem, list);
> +
> +  atomic_write_barrier ();
> +
> +  GL (dl_in_flight_stack) = 0;
> +}
> +libc_hidden_def (__nptl_stack_list_add)
> +
> +void
> +__nptl_free_stacks (size_t limit)
> +{
> +  /* We reduce the size of the cache.  Remove the last entries until
> +     the size is below the limit.  */
> +  list_t *entry;
> +  list_t *prev;
> +
> +  /* Search from the end of the list.  */
> +  list_for_each_prev_safe (entry, prev, &GL (dl_stack_cache))
> +    {
> +      struct pthread *curr;
> +
> +      curr = list_entry (entry, struct pthread, list);
> +      if (__nptl_stack_in_use (curr))
> +	{
> +	  /* Unlink the block.  */
> +	  __nptl_stack_list_del (entry);
> +
> +	  /* Account for the freed memory.  */
> +	  GL (dl_stack_cache_actsize) -= curr->stackblock_size;
> +
> +	  /* Free the memory associated with the ELF TLS.  */
> +	  _dl_deallocate_tls (TLS_TPADJ (curr), false);
> +
> +	  /* Remove this block.  This should never fail.  If it does
> +	     something is really wrong.  */
> +	  if (__munmap (curr->stackblock, curr->stackblock_size) != 0)
> +	    abort ();
> +
> +	  /* Maybe we have freed enough.  */
> +	  if (GL (dl_stack_cache_actsize) <= limit)
> +	    break;
> +	}
> +    }
> +}
> +
> +/* Add a stack frame which is not used anymore to the stack.  Must be
> +   called with the cache lock held.  */
> +static inline void
> +__attribute ((always_inline))
> +queue_stack (struct pthread *stack)
> +{
> +  /* We unconditionally add the stack to the list.  The memory may
> +     still be in use but it will not be reused until the kernel marks
> +     the stack as not used anymore.  */
> +  __nptl_stack_list_add (&stack->list, &GL (dl_stack_cache));
> +
> +  GL (dl_stack_cache_actsize) += stack->stackblock_size;
> +  if (__glibc_unlikely (GL (dl_stack_cache_actsize) > stack_cache_maxsize))
> +    __nptl_free_stacks (stack_cache_maxsize);
> +}
> +
> +void
> +__nptl_deallocate_stack (struct pthread *pd)
> +{
> +  lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> +
> +  /* Remove the thread from the list of threads with user defined
> +     stacks.  */
> +  __nptl_stack_list_del (&pd->list);
> +
> +  /* Not much to do.  Just free the mmap()ed memory.  Note that we do
> +     not reset the 'used' flag in the 'tid' field.  This is done by
> +     the kernel.  If no thread has been created yet this field is
> +     still zero.  */
> +  if (__glibc_likely (! pd->user_stack))
> +    (void) queue_stack (pd);
> +  else
> +    /* Free the memory associated with the ELF TLS.  */
> +    _dl_deallocate_tls (TLS_TPADJ (pd), false);
> +
> +  lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE);
> +}
> +libc_hidden_def (__nptl_deallocate_stack)

Ok.

> diff --git a/nptl/nptl-stack.h b/nptl/nptl-stack.h
> new file mode 100644
> index 0000000000..8631b61816
> --- /dev/null
> +++ b/nptl/nptl-stack.h
> @@ -0,0 +1,50 @@
> +/* Stack cache management for NPTL.
> +   Copyright (C) 2002-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.

Same as before.

> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _NPTL_STACK_H
> +#define _NPTL_STACK_H
> +
> +#include <descr.h>
> +#include <list.h>
> +#include <stdbool.h>
> +
> +/* Check whether the stack is still used or not.  */
> +static inline bool
> +__nptl_stack_in_use (struct pthread *pd)
> +{
> +  return pd->tid <= 0;
> +}
> +
> +/* Remove the stack ELEM from its list.  */
> +void __nptl_stack_list_del (list_t *elem);
> +libc_hidden_proto (__nptl_stack_list_del)
> +
> +/* Add ELEM to a stack list.  LIST can be either &GL (dl_stack_used)
> +   or &GL (dl_stack_cache).  */
> +void __nptl_stack_list_add (list_t *elem, list_t *list);
> +libc_hidden_proto (__nptl_stack_list_add)
> +
> +/* Free allocated stack.  */
> +extern void __nptl_deallocate_stack (struct pthread *pd);
> +libc_hidden_proto (__nptl_deallocate_stack)
> +
> +/* Free stacks until cache size is lower than LIMIT.  */
> +void __nptl_free_stacks (size_t limit) attribute_hidden;
> +
> +#endif /* _NPTL_STACK_H */

Ok.

> diff --git a/nptl/nptlfreeres.c b/nptl/nptlfreeres.c
> index 4833f04714..527b5ee103 100644
> --- a/nptl/nptlfreeres.c
> +++ b/nptl/nptlfreeres.c
> @@ -19,6 +19,7 @@
>  #include <set-hooks.h>
>  #include <libc-symbols.h>
>  #include <pthreadP.h>
> +#include <nptl-stack.h>
>  
>  /* Free libpthread.so resources.
>     Note: Caller ensures we are called only once.  */
> @@ -26,5 +27,5 @@ void
>  __libpthread_freeres (void)
>  {
>    call_function_static_weak (__default_pthread_attr_freeres);
> -  call_function_static_weak (__nptl_stacks_freeres);
> +  __nptl_free_stacks (0);
>  }

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 8466332248..505d0f00ff 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -203,7 +203,7 @@ libc_hidden_proto (__default_pthread_attr)
>  extern int __default_pthread_attr_lock;
>  libc_hidden_proto (__default_pthread_attr_lock)
>  /* Called from __libc_freeres to deallocate the default attribute.  */
> -extern void __default_pthread_attr_freeres (void);
> +extern void __default_pthread_attr_freeres (void) attribute_hidden;
>  
>  /* Size and alignment of static TLS block.  */
>  extern size_t __static_tls_size attribute_hidden;
> @@ -314,9 +314,6 @@ __do_cancel (void)
>     descriptor is still valid.  */
>  extern void __free_tcb (struct pthread *pd) attribute_hidden;
>  
> -/* Free allocated stack.  */
> -extern void __deallocate_stack (struct pthread *pd) attribute_hidden;
> -
>  /* Change the permissions of a thread stack.  Called from
>     _dl_make_stacks_executable and pthread_create.  */
>  int
> @@ -679,8 +676,6 @@ void __nptl_setxid_sighandler (int sig, siginfo_t *si, void *ctx);
>  libc_hidden_proto (__nptl_setxid_sighandler)
>  extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden;
>  
> -extern void __nptl_stacks_freeres (void) attribute_hidden;
> -
>  extern void __wait_lookup_done (void) attribute_hidden;
>  
>  /* Allocates the extension space for ATTR.  Returns an error code on

Ok.

> diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
> index d19456d48b..fcaf440bb5 100644
> --- a/nptl/pthread_create.c
> +++ b/nptl/pthread_create.c
> @@ -228,7 +228,7 @@ __free_tcb (struct pthread *pd)
>        /* Queue the stack memory block for reuse and exit the process.  The
>  	 kernel will signal via writing to the address returned by
>  	 QUEUE-STACK when the stack is available.  */
> -      __deallocate_stack (pd);
> +      __nptl_deallocate_stack (pd);
>      }
>  }
>  
> @@ -711,7 +711,7 @@ __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr,
>  	    futex_wake (&pd->setxid_futex, 1, FUTEX_PRIVATE);
>  
>  	  /* Free the resources.  */
> -	  __deallocate_stack (pd);
> +	  __nptl_deallocate_stack (pd);
>  	}
>  
>        /* We have to translate error codes.  */
> 

OK.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 6/8] nptl: Move __free_tcb into libc
  2021-05-10 12:38 ` [PATCH 6/8] nptl: Move __free_tcb " Florian Weimer
@ 2021-05-10 16:49   ` Adhemerval Zanella
  2021-05-11  9:30     ` Florian Weimer
  0 siblings, 1 reply; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 16:49 UTC (permalink / raw)
  To: libc-alpha, Florian Weimer



On 10/05/2021 09:38, Florian Weimer via Libc-alpha wrote:
> Under the name __nptl_free_tcb.

LGTM (the 'Contribute-by' is not a blocker, so we can follow up on the
previous patch).

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

> ---
>  nptl/Makefile              |  1 +
>  nptl/Versions              |  1 +
>  nptl/nptl_free_tcb.c       | 46 ++++++++++++++++++++++++++++++++++++++
>  nptl/pthreadP.h            |  3 ++-
>  nptl/pthread_create.c      | 27 +---------------------
>  nptl/pthread_detach.c      |  2 +-
>  nptl/pthread_join_common.c |  2 +-
>  7 files changed, 53 insertions(+), 29 deletions(-)
>  create mode 100644 nptl/nptl_free_tcb.c
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 3b83817163..82dc6f466d 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -46,6 +46,7 @@ routines = \
>    lowlevellock \
>    nptl-stack \
>    nptl_deallocate_tsd \
> +  nptl_free_tcb \
>    nptl_nthreads \
>    nptl_setxid \
>    nptlfreeres \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 93219d2657..da610a4803 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -321,6 +321,7 @@ libc {
>      __mutex_aconf;
>      __nptl_deallocate_stack;
>      __nptl_deallocate_tsd;
> +    __nptl_free_tcb;
>      __nptl_nthreads;
>      __nptl_setxid_sighandler;
>      __nptl_stack_list_add;

Ok.

> diff --git a/nptl/nptl_free_tcb.c b/nptl/nptl_free_tcb.c
> new file mode 100644
> index 0000000000..65c4d3bfa7
> --- /dev/null
> +++ b/nptl/nptl_free_tcb.c
> @@ -0,0 +1,46 @@
> +/* TCB deallocation for NPTL.
> +   Copyright (C) 2002-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <nptl-stack.h>
> +#include <pthreadP.h>
> +#include <stdlib.h>
> +
> +void
> +__nptl_free_tcb (struct pthread *pd)
> +{
> +  /* The thread is exiting now.  */
> +  if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
> +                                             TERMINATED_BIT) == 0, 1))

Maybe use __glibc_likely here or just remove it, since it does not make
to use in this short function.

> +    {
> +      /* Free TPP data.  */
> +      if (__glibc_unlikely (pd->tpp != NULL))

Same here, the loop is short enough that it should not matter.

> +        {
> +          struct priority_protection_data *tpp = pd->tpp;
> +
> +          pd->tpp = NULL;
> +          free (tpp);
> +        }
> +
> +      /* Queue the stack memory block for reuse and exit the process.  The
> +         kernel will signal via writing to the address returned by
> +         QUEUE-STACK when the stack is available.  */
> +      __nptl_deallocate_stack (pd);
> +    }
> +}
> +libc_hidden_def (__nptl_free_tcb)
> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 505d0f00ff..d580f71a38 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -312,7 +312,8 @@ __do_cancel (void)
>  
>  /* Deallocate a thread's stack after optionally making sure the thread
>     descriptor is still valid.  */
> -extern void __free_tcb (struct pthread *pd) attribute_hidden;
> +extern void __nptl_free_tcb (struct pthread *pd);
> +libc_hidden_proto (__nptl_free_tcb)
>  
>  /* Change the permissions of a thread stack.  Called from
>     _dl_make_stacks_executable and pthread_create.  */

Ok.

> diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
> index fcaf440bb5..770656453d 100644
> --- a/nptl/pthread_create.c
> +++ b/nptl/pthread_create.c
> @@ -207,31 +207,6 @@ static int create_thread (struct pthread *pd, const struct pthread_attr *attr,
>  
>  #include <createthread.c>
>  
> -/* Deallocate a thread's stack after optionally making sure the thread
> -   descriptor is still valid.  */
> -void
> -__free_tcb (struct pthread *pd)
> -{
> -  /* The thread is exiting now.  */
> -  if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
> -					     TERMINATED_BIT) == 0, 1))
> -    {
> -      /* Free TPP data.  */
> -      if (__glibc_unlikely (pd->tpp != NULL))
> -	{
> -	  struct priority_protection_data *tpp = pd->tpp;
> -
> -	  pd->tpp = NULL;
> -	  free (tpp);
> -	}
> -
> -      /* Queue the stack memory block for reuse and exit the process.  The
> -	 kernel will signal via writing to the address returned by
> -	 QUEUE-STACK when the stack is available.  */
> -      __nptl_deallocate_stack (pd);
> -    }
> -}
> -
>  /* Local function to start thread and handle cleanup.
>     createthread.c defines the macro START_THREAD_DEFN to the
>     declaration that its create_thread function will refer to, and

Ok.

> @@ -444,7 +419,7 @@ START_THREAD_DEFN
>    /* If the thread is detached free the TCB.  */
>    if (IS_DETACHED (pd))
>      /* Free the TCB.  */
> -    __free_tcb (pd);
> +    __nptl_free_tcb (pd);
>  
>    /* We cannot call '_exit' here.  '_exit' will terminate the process.
>  

Ok.

> diff --git a/nptl/pthread_detach.c b/nptl/pthread_detach.c
> index 57293ec950..410255bbe1 100644
> --- a/nptl/pthread_detach.c
> +++ b/nptl/pthread_detach.c
> @@ -49,7 +49,7 @@ __pthread_detach (pthread_t th)
>      if ((pd->cancelhandling & EXITING_BITMASK) != 0)
>        /* Note that the code in __free_tcb makes sure each thread
>  	 control block is freed only once.  */
> -      __free_tcb (pd);
> +      __nptl_free_tcb (pd);
>  
>    return result;
>  }

Ok.

> diff --git a/nptl/pthread_join_common.c b/nptl/pthread_join_common.c
> index a99c26e27e..e87801b5a3 100644
> --- a/nptl/pthread_join_common.c
> +++ b/nptl/pthread_join_common.c
> @@ -122,7 +122,7 @@ __pthread_clockjoin_ex (pthread_t threadid, void **thread_return,
>  	*thread_return = pd_result;
>  
>        /* Free the TCB.  */
> -      __free_tcb (pd);
> +      __nptl_free_tcb (pd);
>      }
>    else
>      pd->joinid = NULL;
> 

Ok.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 7/8] nptl: Move pthread_detach, thrd_detach into libc
  2021-05-10 12:38 ` [PATCH 7/8] nptl: Move pthread_detach, thrd_detach " Florian Weimer
@ 2021-05-10 16:56   ` Adhemerval Zanella
  0 siblings, 0 replies; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 16:56 UTC (permalink / raw)
  To: libc-alpha



On 10/05/2021 09:38, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM.

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

> ---
>  nptl/Makefile                                      |  2 +-
>  nptl/Versions                                      |  6 ++++--
>  nptl/pthreadP.h                                    |  1 +
>  nptl/pthread_detach.c                              | 14 +++++++++++---
>  sysdeps/pthread/Makefile                           |  3 ++-
>  sysdeps/pthread/thrd_detach.c                      | 11 ++++++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist       |  4 ++++
>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/arc/libc.abilist           |  4 ++++
>  sysdeps/unix/sysv/linux/arc/libpthread.abilist     |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
>  .../sysv/linux/m68k/coldfire/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  2 --
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
>  .../sysv/linux/microblaze/be/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
>  .../sysv/linux/microblaze/le/libpthread.abilist    |  2 --
>  .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/mips/mips32/libpthread.abilist |  2 --
>  .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
>  .../unix/sysv/linux/mips/mips64/libpthread.abilist |  2 --
>  .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  2 --
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
>  .../linux/powerpc/powerpc32/libpthread.abilist     |  2 --
>  .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
>  .../linux/powerpc/powerpc64/be/libpthread.abilist  |  2 --
>  .../sysv/linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
>  .../linux/powerpc/powerpc64/le/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/riscv/rv32/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/riscv/rv64/libpthread.abilist  |  2 --
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
>  .../sysv/linux/s390/s390-32/libpthread.abilist     |  2 --
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
>  .../sysv/linux/s390/s390-64/libpthread.abilist     |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
>  .../sysv/linux/sparc/sparc32/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
>  .../sysv/linux/sparc/sparc64/libpthread.abilist    |  2 --
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/x86_64/64/libpthread.abilist   |  2 --
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/x86_64/x32/libpthread.abilist  |  2 --
>  67 files changed, 157 insertions(+), 66 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 82dc6f466d..3ef4cb966b 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -95,6 +95,7 @@ routines = \
>    pthread_condattr_init \
>    pthread_condattr_setclock \
>    pthread_condattr_setpshared \
> +  pthread_detach \
>    pthread_equal \
>    pthread_exit \
>    pthread_getaffinity \
> @@ -201,7 +202,6 @@ libpthread-routines = \
>    pthread_cancel \
>    pthread_clockjoin \
>    pthread_create \
> -  pthread_detach \
>    pthread_getattr_default_np \
>    pthread_getconcurrency \
>    pthread_getcpuclockid \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index da610a4803..46ae34a1a2 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -37,6 +37,7 @@ libc {
>      pthread_cond_wait;
>      pthread_condattr_destroy;
>      pthread_condattr_init;
> +    pthread_detach;
>      pthread_equal;
>      pthread_exit;
>      pthread_getschedparam;
> @@ -186,6 +187,7 @@ libc {
>      mtx_trylock;
>      mtx_unlock;
>      thrd_current;
> +    thrd_detach;
>      thrd_equal;
>      thrd_exit;
>      thrd_sleep;
> @@ -240,6 +242,7 @@ libc {
>      pthread_condattr_getpshared;
>      pthread_condattr_setclock;
>      pthread_condattr_setpshared;
> +    pthread_detach;
>      pthread_getspecific;
>      pthread_key_create;
>      pthread_key_delete;
> @@ -295,6 +298,7 @@ libc {
>      sem_trywait;
>      sem_unlink;
>      sem_wait;
> +    thrd_detach;
>      thrd_exit;
>      tss_create;
>      tss_delete;
> @@ -365,7 +369,6 @@ libpthread {
>      funlockfile;
>      pthread_cancel;
>      pthread_create;
> -    pthread_detach;
>      pthread_join;
>      pthread_sigmask;
>    }
> @@ -449,7 +452,6 @@ libpthread {
>    # C11 thread symbols.
>    GLIBC_2.28 {
>      thrd_create;
> -    thrd_detach;
>      thrd_join;
>    }
>  

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index d580f71a38..34d133b187 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -529,6 +529,7 @@ extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
>  extern pthread_t __pthread_self (void);
>  extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
>  extern int __pthread_detach (pthread_t th);
> +libc_hidden_proto (__pthread_detach)
>  extern int __pthread_cancel (pthread_t th);
>  extern int __pthread_kill (pthread_t threadid, int signo);
>  extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));

Ok.

> diff --git a/nptl/pthread_detach.c b/nptl/pthread_detach.c
> index 410255bbe1..ac50db9b0e 100644
> --- a/nptl/pthread_detach.c
> +++ b/nptl/pthread_detach.c
> @@ -19,10 +19,10 @@
>  #include <errno.h>
>  #include "pthreadP.h"
>  #include <atomic.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -__pthread_detach (pthread_t th)
> +___pthread_detach (pthread_t th)
>  {
>    struct pthread *pd = (struct pthread *) th;
>  
> @@ -53,4 +53,12 @@ __pthread_detach (pthread_t th)
>  
>    return result;
>  }
> -weak_alias (__pthread_detach, pthread_detach)
> +versioned_symbol (libc, ___pthread_detach, pthread_detach, GLIBC_2_34);
> +libc_hidden_ver (___pthread_detach, __pthread_detach)
> +#ifndef SHARED
> +strong_alias (___pthread_detach, __pthread_detach)
> +#endif
> +
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libc, ___pthread_detach, pthread_detach, GLIBC_2_0);
> +#endif

Ok.

> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 54bb11bab9..ec8e3af577 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_join
> +libpthread-routines += thrd_create thrd_join
>  
>  $(libpthread-routines-var) += \
>    call_once \
> @@ -47,6 +47,7 @@ $(libpthread-routines-var) += \
>    mtx_timedlock \
>    mtx_trylock \
>    mtx_unlock \
> +  thrd_detach \
>    thrd_exit \
>    tss_create \
>    tss_delete \

Ok.

> diff --git a/sysdeps/pthread/thrd_detach.c b/sysdeps/pthread/thrd_detach.c
> index cbc63f57a2..29ac011d5b 100644
> --- a/sysdeps/pthread/thrd_detach.c
> +++ b/sysdeps/pthread/thrd_detach.c
> @@ -17,12 +17,21 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include "thrd_priv.h"
> +#include <shlib-compat.h>
>  
>  int
> -thrd_detach (thrd_t thr)
> +__thrd_detach (thrd_t thr)
>  {
>    int err_code;
>  
>    err_code = __pthread_detach (thr);
>    return thrd_err_map (err_code);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__thrd_detach, thrd_detach)
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index caee529c98..b5b0b44697 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1474,6 +1474,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
>  GLIBC_2.17 pthread_condattr_init F
>  GLIBC_2.17 pthread_condattr_setclock F
>  GLIBC_2.17 pthread_condattr_setpshared F
> +GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_equal F
>  GLIBC_2.17 pthread_exit F
>  GLIBC_2.17 pthread_getaffinity_np F
> @@ -2251,6 +2252,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2325,6 +2327,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2384,6 +2387,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index f09c6d434a..71627a5cc8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.17 pthread_attr_setstackaddr F
>  GLIBC_2.17 pthread_attr_setstacksize F
>  GLIBC_2.17 pthread_cancel F
>  GLIBC_2.17 pthread_create F
> -GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_getconcurrency F
>  GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
> @@ -34,7 +33,6 @@ GLIBC_2.17 pthread_timedjoin_np F
>  GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 7a9a6608f4..20d4855e90 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -897,6 +897,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2149,6 +2150,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2412,6 +2414,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2471,6 +2474,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 9b2e09a2e4..b4ea31102a 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 6fef10b0ad..19eb517f28 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1414,6 +1414,7 @@ GLIBC_2.32 pthread_condattr_getpshared F
>  GLIBC_2.32 pthread_condattr_init F
>  GLIBC_2.32 pthread_condattr_setclock F
>  GLIBC_2.32 pthread_condattr_setpshared F
> +GLIBC_2.32 pthread_detach F
>  GLIBC_2.32 pthread_equal F
>  GLIBC_2.32 pthread_exit F
>  GLIBC_2.32 pthread_getaffinity_np F
> @@ -1862,6 +1863,7 @@ GLIBC_2.32 textdomain F
>  GLIBC_2.32 tfind F
>  GLIBC_2.32 tgkill F
>  GLIBC_2.32 thrd_current F
> +GLIBC_2.32 thrd_detach F
>  GLIBC_2.32 thrd_equal F
>  GLIBC_2.32 thrd_exit F
>  GLIBC_2.32 thrd_sleep F
> @@ -2084,6 +2086,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2143,6 +2146,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 8a4bea9aa9..8ac0cde1ee 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.32 pthread_attr_setstacksize F
>  GLIBC_2.32 pthread_cancel F
>  GLIBC_2.32 pthread_clockjoin_np F
>  GLIBC_2.32 pthread_create F
> -GLIBC_2.32 pthread_detach F
>  GLIBC_2.32 pthread_getattr_default_np F
>  GLIBC_2.32 pthread_getconcurrency F
>  GLIBC_2.32 pthread_getcpuclockid F
> @@ -35,5 +34,4 @@ GLIBC_2.32 pthread_sigqueue F
>  GLIBC_2.32 pthread_timedjoin_np F
>  GLIBC_2.32 pthread_tryjoin_np F
>  GLIBC_2.32 thrd_create F
> -GLIBC_2.32 thrd_detach F
>  GLIBC_2.32 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index f97aeeb047..9ba6a30214 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 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -214,6 +215,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -273,6 +275,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -1688,6 +1691,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 117d44ad5f..b74a43658d 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.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> @@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
>  GLIBC_2.4 pthread_attr_setstacksize F
>  GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
> -GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 70f5f81faf..9a79a6622e 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 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -211,6 +212,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -270,6 +272,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -1685,6 +1688,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 117d44ad5f..b74a43658d 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.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> @@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
>  GLIBC_2.4 pthread_attr_setstacksize F
>  GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
> -GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index bd80fd1afd..b21ff2de89 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1474,6 +1474,7 @@ GLIBC_2.29 pthread_condattr_getpshared F
>  GLIBC_2.29 pthread_condattr_init F
>  GLIBC_2.29 pthread_condattr_setclock F
>  GLIBC_2.29 pthread_condattr_setpshared F
> +GLIBC_2.29 pthread_detach F
>  GLIBC_2.29 pthread_equal F
>  GLIBC_2.29 pthread_exit F
>  GLIBC_2.29 pthread_getaffinity_np F
> @@ -1953,6 +1954,7 @@ GLIBC_2.29 tempnam F
>  GLIBC_2.29 textdomain F
>  GLIBC_2.29 tfind F
>  GLIBC_2.29 thrd_current F
> +GLIBC_2.29 thrd_detach F
>  GLIBC_2.29 thrd_equal F
>  GLIBC_2.29 thrd_exit F
>  GLIBC_2.29 thrd_sleep F
> @@ -2268,6 +2270,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2327,6 +2330,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 8ad8fc7c7f..665cc7bc38 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.29 pthread_attr_setstackaddr F
>  GLIBC_2.29 pthread_attr_setstacksize F
>  GLIBC_2.29 pthread_cancel F
>  GLIBC_2.29 pthread_create F
> -GLIBC_2.29 pthread_detach F
>  GLIBC_2.29 pthread_getattr_default_np F
>  GLIBC_2.29 pthread_getconcurrency F
>  GLIBC_2.29 pthread_getcpuclockid F
> @@ -34,7 +33,6 @@ GLIBC_2.29 pthread_sigqueue F
>  GLIBC_2.29 pthread_timedjoin_np F
>  GLIBC_2.29 pthread_tryjoin_np F
>  GLIBC_2.29 thrd_create F
> -GLIBC_2.29 thrd_detach F
>  GLIBC_2.29 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index fb40c0292c..3e893dfcaa 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1299,6 +1299,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -1982,6 +1983,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2219,6 +2221,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2278,6 +2281,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 7e7fdfb8cd..cc1ca55754 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index dd243f7808..f0af406ec5 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -874,6 +874,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2162,6 +2163,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2402,6 +2404,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2461,6 +2464,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 1f5547e80c..0854a21e65 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index b805382c4b..83985b06e0 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1320,6 +1320,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -2017,6 +2018,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2253,6 +2255,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2312,6 +2315,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 3460d95267..c377a13e65 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 21332b7b39..7d38f2fe55 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 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -215,6 +216,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -274,6 +276,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -1668,6 +1671,7 @@ GLIBC_2.4 pthread_condattr_getpshared F
>  GLIBC_2.4 pthread_condattr_init F
>  GLIBC_2.4 pthread_condattr_setclock F
>  GLIBC_2.4 pthread_condattr_setpshared F
> +GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_equal F
>  GLIBC_2.4 pthread_exit F
>  GLIBC_2.4 pthread_getaffinity_np F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 117d44ad5f..b74a43658d 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.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> @@ -30,7 +29,6 @@ GLIBC_2.4 pthread_attr_setstackaddr F
>  GLIBC_2.4 pthread_attr_setstacksize F
>  GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
> -GLIBC_2.4 pthread_detach F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
>  GLIBC_2.4 pthread_join F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 5159aee942..99ad04d858 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -873,6 +873,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2105,6 +2106,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2345,6 +2347,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2404,6 +2407,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 1f5547e80c..0854a21e65 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 4609ade92c..5eebad0468 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1476,6 +1476,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
>  GLIBC_2.18 pthread_condattr_init F
>  GLIBC_2.18 pthread_condattr_setclock F
>  GLIBC_2.18 pthread_condattr_setpshared F
> +GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_equal F
>  GLIBC_2.18 pthread_exit F
>  GLIBC_2.18 pthread_getaffinity_np F
> @@ -2242,6 +2243,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2319,6 +2321,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2378,6 +2381,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index c87d939959..f50eb41a1a 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.18 pthread_attr_setstackaddr F
>  GLIBC_2.18 pthread_attr_setstacksize F
>  GLIBC_2.18 pthread_cancel F
>  GLIBC_2.18 pthread_create F
> -GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_getconcurrency F
>  GLIBC_2.18 pthread_getcpuclockid F
> @@ -34,7 +33,6 @@ GLIBC_2.18 pthread_sigqueue F
>  GLIBC_2.18 pthread_timedjoin_np F
>  GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 41db7ed508..9c54e2d42c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1476,6 +1476,7 @@ GLIBC_2.18 pthread_condattr_getpshared F
>  GLIBC_2.18 pthread_condattr_init F
>  GLIBC_2.18 pthread_condattr_setclock F
>  GLIBC_2.18 pthread_condattr_setpshared F
> +GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_equal F
>  GLIBC_2.18 pthread_exit F
>  GLIBC_2.18 pthread_getaffinity_np F
> @@ -2242,6 +2243,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2316,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2375,6 +2378,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index c87d939959..f50eb41a1a 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.18 pthread_attr_setstackaddr F
>  GLIBC_2.18 pthread_attr_setstacksize F
>  GLIBC_2.18 pthread_cancel F
>  GLIBC_2.18 pthread_create F
> -GLIBC_2.18 pthread_detach F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_getconcurrency F
>  GLIBC_2.18 pthread_getcpuclockid F
> @@ -34,7 +33,6 @@ GLIBC_2.18 pthread_sigqueue F
>  GLIBC_2.18 pthread_timedjoin_np F
>  GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 77d3b72f2b..34e77850a1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2075,6 +2076,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2308,6 +2310,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2367,6 +2370,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index fa52921d78..a1ba1503a5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.11 pthread_sigqueue F
>  GLIBC_2.12 pthread_getname_np F
> @@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index bfc6ca8d87..d01dc8462b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2073,6 +2074,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2306,6 +2308,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2365,6 +2368,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index fa52921d78..a1ba1503a5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.11 pthread_sigqueue F
>  GLIBC_2.12 pthread_getname_np F
> @@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index cdade4e56a..a906bb949a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -870,6 +870,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2081,6 +2082,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2314,6 +2316,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2373,6 +2376,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 62184c7a10..89dd91a0a4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -868,6 +868,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2076,6 +2077,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2308,6 +2310,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2367,6 +2370,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index bc230f7020..8b2b19d09b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1519,6 +1519,7 @@ GLIBC_2.21 pthread_condattr_getpshared F
>  GLIBC_2.21 pthread_condattr_init F
>  GLIBC_2.21 pthread_condattr_setclock F
>  GLIBC_2.21 pthread_condattr_setpshared F
> +GLIBC_2.21 pthread_detach F
>  GLIBC_2.21 pthread_equal F
>  GLIBC_2.21 pthread_exit F
>  GLIBC_2.21 pthread_getaffinity_np F
> @@ -2284,6 +2285,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2358,6 +2360,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2417,6 +2420,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 502268cbd5..27fb415228 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.21 pthread_attr_setstackaddr F
>  GLIBC_2.21 pthread_attr_setstacksize F
>  GLIBC_2.21 pthread_cancel F
>  GLIBC_2.21 pthread_create F
> -GLIBC_2.21 pthread_detach F
>  GLIBC_2.21 pthread_getattr_default_np F
>  GLIBC_2.21 pthread_getconcurrency F
>  GLIBC_2.21 pthread_getcpuclockid F
> @@ -34,7 +33,6 @@ GLIBC_2.21 pthread_sigqueue F
>  GLIBC_2.21 pthread_timedjoin_np F
>  GLIBC_2.21 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 0e384dd37e..84aab42aaa 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -881,6 +881,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2109,6 +2110,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2372,6 +2374,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2431,6 +2434,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index c2ac178742..831b66ee72 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index dac4a03938..00201c5544 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -881,6 +881,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2113,6 +2114,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2405,6 +2407,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2464,6 +2467,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 6a8958d5a8..8725f4a851 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 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -1422,6 +1423,7 @@ GLIBC_2.3 pthread_condattr_destroy F
>  GLIBC_2.3 pthread_condattr_getpshared F
>  GLIBC_2.3 pthread_condattr_init F
>  GLIBC_2.3 pthread_condattr_setpshared F
> +GLIBC_2.3 pthread_detach F
>  GLIBC_2.3 pthread_equal F
>  GLIBC_2.3 pthread_exit F
>  GLIBC_2.3 pthread_getattr_np F
> @@ -2220,6 +2222,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2279,6 +2282,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 89b4083cf4..91a5618412 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.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3 _IO_flockfile F
>  GLIBC_2.3 _IO_ftrylockfile F
> @@ -22,7 +21,6 @@ GLIBC_2.3 pthread_attr_setstackaddr F
>  GLIBC_2.3 pthread_attr_setstacksize F
>  GLIBC_2.3 pthread_cancel F
>  GLIBC_2.3 pthread_create F
> -GLIBC_2.3 pthread_detach F
>  GLIBC_2.3 pthread_getconcurrency F
>  GLIBC_2.3 pthread_getcpuclockid F
>  GLIBC_2.3 pthread_join F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 16f4d90871..89ab60dc38 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1562,6 +1562,7 @@ GLIBC_2.17 pthread_condattr_getpshared F
>  GLIBC_2.17 pthread_condattr_init F
>  GLIBC_2.17 pthread_condattr_setclock F
>  GLIBC_2.17 pthread_condattr_setpshared F
> +GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_equal F
>  GLIBC_2.17 pthread_exit F
>  GLIBC_2.17 pthread_getaffinity_np F
> @@ -2341,6 +2342,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2521,6 +2523,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2580,6 +2583,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index f09c6d434a..71627a5cc8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.17 pthread_attr_setstackaddr F
>  GLIBC_2.17 pthread_attr_setstacksize F
>  GLIBC_2.17 pthread_cancel F
>  GLIBC_2.17 pthread_create F
> -GLIBC_2.17 pthread_detach F
>  GLIBC_2.17 pthread_getconcurrency F
>  GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
> @@ -34,7 +33,6 @@ GLIBC_2.17 pthread_timedjoin_np F
>  GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 876ed3d11f..e201491852 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1416,6 +1416,7 @@ GLIBC_2.33 pthread_condattr_getpshared F
>  GLIBC_2.33 pthread_condattr_init F
>  GLIBC_2.33 pthread_condattr_setclock F
>  GLIBC_2.33 pthread_condattr_setpshared F
> +GLIBC_2.33 pthread_detach F
>  GLIBC_2.33 pthread_equal F
>  GLIBC_2.33 pthread_exit F
>  GLIBC_2.33 pthread_getaffinity_np F
> @@ -1872,6 +1873,7 @@ GLIBC_2.33 textdomain F
>  GLIBC_2.33 tfind F
>  GLIBC_2.33 tgkill F
>  GLIBC_2.33 thrd_current F
> +GLIBC_2.33 thrd_detach F
>  GLIBC_2.33 thrd_equal F
>  GLIBC_2.33 thrd_exit F
>  GLIBC_2.33 thrd_sleep F
> @@ -2086,6 +2088,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2145,6 +2148,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index d6f50be603..0ad1f57b44 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -21,7 +21,6 @@ GLIBC_2.33 pthread_attr_setstacksize F
>  GLIBC_2.33 pthread_cancel F
>  GLIBC_2.33 pthread_clockjoin_np F
>  GLIBC_2.33 pthread_create F
> -GLIBC_2.33 pthread_detach F
>  GLIBC_2.33 pthread_getattr_default_np F
>  GLIBC_2.33 pthread_getconcurrency F
>  GLIBC_2.33 pthread_getcpuclockid F
> @@ -35,5 +34,4 @@ GLIBC_2.33 pthread_sigqueue F
>  GLIBC_2.33 pthread_timedjoin_np F
>  GLIBC_2.33 pthread_tryjoin_np F
>  GLIBC_2.33 thrd_create F
> -GLIBC_2.33 thrd_detach F
>  GLIBC_2.33 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index ec2dbc5f6c..8f5d8490a7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1464,6 +1464,7 @@ GLIBC_2.27 pthread_condattr_getpshared F
>  GLIBC_2.27 pthread_condattr_init F
>  GLIBC_2.27 pthread_condattr_setclock F
>  GLIBC_2.27 pthread_condattr_setpshared F
> +GLIBC_2.27 pthread_detach F
>  GLIBC_2.27 pthread_equal F
>  GLIBC_2.27 pthread_exit F
>  GLIBC_2.27 pthread_getaffinity_np F
> @@ -2212,6 +2213,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2286,6 +2288,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2345,6 +2348,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 240dfc6c9a..74b4bdce74 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.27 pthread_attr_setstackaddr F
>  GLIBC_2.27 pthread_attr_setstacksize F
>  GLIBC_2.27 pthread_cancel F
>  GLIBC_2.27 pthread_create F
> -GLIBC_2.27 pthread_detach F
>  GLIBC_2.27 pthread_getattr_default_np F
>  GLIBC_2.27 pthread_getconcurrency F
>  GLIBC_2.27 pthread_getcpuclockid F
> @@ -34,7 +33,6 @@ GLIBC_2.27 pthread_sigqueue F
>  GLIBC_2.27 pthread_timedjoin_np F
>  GLIBC_2.27 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index d1bc174497..686a10ee24 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -872,6 +872,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2118,6 +2119,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2370,6 +2372,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2429,6 +2432,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 20ee83baca..87db062308 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -31,7 +30,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 3771dc652a..8ff9d69dca 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1317,6 +1317,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -2009,6 +2010,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2257,6 +2259,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2316,6 +2319,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 35f0b89d66..3bf0bc9538 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -28,7 +27,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 6355ca1061..9ecce30901 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1303,6 +1303,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -1986,6 +1987,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2226,6 +2228,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2285,6 +2288,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 7e7fdfb8cd..cc1ca55754 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index a1e3c3a93b..a6faf4e2d6 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1303,6 +1303,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -1986,6 +1987,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2223,6 +2225,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2282,6 +2285,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 7e7fdfb8cd..cc1ca55754 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 17026a997b..4d08e96ffa 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -875,6 +875,7 @@ GLIBC_2.0 pthread_cond_timedwait F
>  GLIBC_2.0 pthread_cond_wait F
>  GLIBC_2.0 pthread_condattr_destroy F
>  GLIBC_2.0 pthread_condattr_init F
> +GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
> @@ -2112,6 +2113,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2361,6 +2363,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2420,6 +2423,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 9b2e09a2e4..b4ea31102a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_detach F
>  GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 9dc72e0556..bc9ddd71a6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1346,6 +1346,7 @@ GLIBC_2.2 pthread_condattr_destroy F
>  GLIBC_2.2 pthread_condattr_getpshared F
>  GLIBC_2.2 pthread_condattr_init F
>  GLIBC_2.2 pthread_condattr_setpshared F
> +GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
> @@ -2039,6 +2040,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2274,6 +2276,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2333,6 +2336,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 3460d95267..c377a13e65 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -19,7 +19,6 @@ GLIBC_2.2 pthread_attr_setstackaddr F
>  GLIBC_2.2 pthread_attr_setstacksize F
>  GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
> -GLIBC_2.2 pthread_detach F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2 pthread_join F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 586aec23cb..a893315017 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1313,6 +1313,7 @@ GLIBC_2.2.5 pthread_condattr_destroy F
>  GLIBC_2.2.5 pthread_condattr_getpshared F
>  GLIBC_2.2.5 pthread_condattr_init F
>  GLIBC_2.2.5 pthread_condattr_setpshared F
> +GLIBC_2.2.5 pthread_detach F
>  GLIBC_2.2.5 pthread_equal F
>  GLIBC_2.2.5 pthread_exit F
>  GLIBC_2.2.5 pthread_getattr_np F
> @@ -1998,6 +1999,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2235,6 +2237,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2294,6 +2297,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index fd77f8a602..dac904b6e9 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -19,14 +19,12 @@ GLIBC_2.2.5 pthread_attr_setstackaddr F
>  GLIBC_2.2.5 pthread_attr_setstacksize F
>  GLIBC_2.2.5 pthread_cancel F
>  GLIBC_2.2.5 pthread_create F
> -GLIBC_2.2.5 pthread_detach F
>  GLIBC_2.2.5 pthread_getconcurrency F
>  GLIBC_2.2.5 pthread_getcpuclockid F
>  GLIBC_2.2.5 pthread_join F
>  GLIBC_2.2.5 pthread_setconcurrency 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_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 1529b87004..fa9319c610 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1481,6 +1481,7 @@ GLIBC_2.16 pthread_condattr_getpshared F
>  GLIBC_2.16 pthread_condattr_init F
>  GLIBC_2.16 pthread_condattr_setclock F
>  GLIBC_2.16 pthread_condattr_setpshared F
> +GLIBC_2.16 pthread_detach F
>  GLIBC_2.16 pthread_equal F
>  GLIBC_2.16 pthread_exit F
>  GLIBC_2.16 pthread_getaffinity_np F
> @@ -2264,6 +2265,7 @@ GLIBC_2.28 mtx_unlock F
>  GLIBC_2.28 renameat2 F
>  GLIBC_2.28 statx F
>  GLIBC_2.28 thrd_current F
> +GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
>  GLIBC_2.28 thrd_sleep F
> @@ -2340,6 +2342,7 @@ GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
>  GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
> +GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
> @@ -2399,6 +2402,7 @@ GLIBC_2.34 sem_timedwait F
>  GLIBC_2.34 sem_trywait F
>  GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
> +GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index ab2ec9227a..b8bbe71c59 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -20,7 +20,6 @@ GLIBC_2.16 pthread_attr_setstackaddr F
>  GLIBC_2.16 pthread_attr_setstacksize F
>  GLIBC_2.16 pthread_cancel F
>  GLIBC_2.16 pthread_create F
> -GLIBC_2.16 pthread_detach F
>  GLIBC_2.16 pthread_getconcurrency F
>  GLIBC_2.16 pthread_getcpuclockid F
>  GLIBC_2.16 pthread_getname_np F
> @@ -34,7 +33,6 @@ GLIBC_2.16 pthread_timedjoin_np F
>  GLIBC_2.16 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
>  GLIBC_2.31 pthread_clockjoin_np F
> 

Ok.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 8/8] nptl: Move thread join functions into libc
  2021-05-10 12:42 ` [PATCH 8/8] nptl: Move thread join functions " Florian Weimer
@ 2021-05-10 16:58   ` Adhemerval Zanella
  0 siblings, 0 replies; 20+ messages in thread
From: Adhemerval Zanella @ 2021-05-10 16:58 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 10/05/2021 09:42, Florian Weimer via Libc-alpha wrote:
> The symbols pthread_clockjoin_np, pthread_join, pthread_timedjoin_np,
> pthread_tryjoin_np, thrd_join were moved using
> scripts/move-symbol-to-libc.py.
> 
> Moving the symbols at the same time avoids the need for temporary
> exports.

LGTM, thanks.

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

> ---
>  nptl/Makefile                                 | 10 +++----
>  nptl/Versions                                 | 18 +++++++++----
>  nptl/libpthread-compat.c                      |  5 ++++
>  nptl/pthreadP.h                               |  5 ++--
>  nptl/pthread_clockjoin.c                      | 27 ++++++++++++-------
>  nptl/pthread_join.c                           | 13 +++++++--
>  nptl/pthread_timedjoin.c                      | 22 ++++++++++-----
>  nptl/pthread_tryjoin.c                        |  8 +++++-
>  sysdeps/pthread/Makefile                      |  3 ++-
>  sysdeps/pthread/thrd_join.c                   | 11 +++++++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  | 10 +++++++
>  .../sysv/linux/aarch64/libpthread.abilist     |  6 +----
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    | 10 +++++++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  6 +----
>  sysdeps/unix/sysv/linux/arc/libc.abilist      | 10 +++++++
>  .../unix/sysv/linux/arc/libpthread.abilist    |  5 ----
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   | 10 +++++++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  6 +----
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   | 10 +++++++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  6 +----
>  sysdeps/unix/sysv/linux/csky/libc.abilist     | 10 +++++++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  6 +----
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     | 10 +++++++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  6 +----
>  sysdeps/unix/sysv/linux/i386/libc.abilist     | 10 +++++++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  6 +----
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     | 10 +++++++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  6 +----
>  .../sysv/linux/m68k/coldfire/libc.abilist     | 10 +++++++
>  .../linux/m68k/coldfire/libpthread.abilist    |  6 +----
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  | 10 +++++++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  6 +----
>  .../sysv/linux/microblaze/be/libc.abilist     | 10 +++++++
>  .../linux/microblaze/be/libpthread.abilist    |  6 +----
>  .../sysv/linux/microblaze/le/libc.abilist     | 10 +++++++
>  .../linux/microblaze/le/libpthread.abilist    |  6 +----
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   | 10 +++++++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  6 +----
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist | 10 +++++++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  6 +----
>  .../sysv/linux/mips/mips64/n32/libc.abilist   | 10 +++++++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   | 10 +++++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    | 10 +++++++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  6 +----
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  | 10 +++++++
>  .../powerpc/powerpc32/libpthread.abilist      |  6 +----
>  .../powerpc/powerpc32/nofpu/libc.abilist      | 10 +++++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   | 10 +++++++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  6 +----
>  .../linux/powerpc/powerpc64/le/libc.abilist   | 10 +++++++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  6 +----
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   | 10 +++++++
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  5 ----
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   | 10 +++++++
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  6 +----
>  .../unix/sysv/linux/s390/s390-32/libc.abilist | 10 +++++++
>  .../linux/s390/s390-32/libpthread.abilist     |  6 +----
>  .../unix/sysv/linux/s390/s390-64/libc.abilist | 10 +++++++
>  .../linux/s390/s390-64/libpthread.abilist     |  6 +----
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    | 10 +++++++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  6 +----
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    | 10 +++++++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  6 +----
>  .../sysv/linux/sparc/sparc32/libc.abilist     | 10 +++++++
>  .../linux/sparc/sparc32/libpthread.abilist    |  6 +----
>  .../sysv/linux/sparc/sparc64/libc.abilist     | 10 +++++++
>  .../linux/sparc/sparc64/libpthread.abilist    |  6 +----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    | 10 +++++++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  6 +----
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   | 10 +++++++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  6 +----
>  71 files changed, 436 insertions(+), 178 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 3ef4cb966b..e8aa11b13d 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -84,6 +84,7 @@ routines = \
>    pthread_barrierattr_init \
>    pthread_barrierattr_setpshared \
>    pthread_cleanup_upto \
> +  pthread_clockjoin \
>    pthread_cond_broadcast \
>    pthread_cond_destroy \
>    pthread_cond_init \
> @@ -102,6 +103,8 @@ routines = \
>    pthread_getattr_np \
>    pthread_getschedparam \
>    pthread_getspecific \
> +  pthread_join \
> +  pthread_join_common \
>    pthread_key_create \
>    pthread_key_delete \
>    pthread_keys \
> @@ -161,6 +164,8 @@ routines = \
>    pthread_spin_trylock \
>    pthread_spin_unlock \
>    pthread_testcancel \
> +  pthread_timedjoin \
> +  pthread_tryjoin \
>    pthread_yield \
>    sem_clockwait \
>    sem_close \
> @@ -200,21 +205,16 @@ libpthread-routines = \
>    pthread_attr_setstackaddr \
>    pthread_attr_setstacksize \
>    pthread_cancel \
> -  pthread_clockjoin \
>    pthread_create \
>    pthread_getattr_default_np \
>    pthread_getconcurrency \
>    pthread_getcpuclockid \
>    pthread_getname \
> -  pthread_join \
> -  pthread_join_common \
>    pthread_setaffinity \
>    pthread_setconcurrency \
>    pthread_setname \
>    pthread_setschedprio \
>    pthread_sigqueue \
> -  pthread_timedjoin \
> -  pthread_tryjoin \
>    version \
>  
>  libpthread-shared-only-routines = \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 46ae34a1a2..8c3e825083 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -42,6 +42,7 @@ libc {
>      pthread_exit;
>      pthread_getschedparam;
>      pthread_getspecific;
> +    pthread_join;
>      pthread_key_create;
>      pthread_key_delete;
>      pthread_kill;
> @@ -148,6 +149,8 @@ libc {
>      pthread_condattr_getclock;
>      pthread_condattr_setclock;
>      pthread_getaffinity_np;
> +    pthread_timedjoin_np;
> +    pthread_tryjoin_np;
>    }
>    GLIBC_2.3.4 {
>      pthread_attr_setaffinity_np;
> @@ -190,6 +193,7 @@ libc {
>      thrd_detach;
>      thrd_equal;
>      thrd_exit;
> +    thrd_join;
>      thrd_sleep;
>      thrd_yield;
>      tss_create;
> @@ -204,6 +208,9 @@ libc {
>      pthread_rwlock_clockwrlock;
>      sem_clockwait;
>    }
> +  GLIBC_2.31 {
> +    pthread_clockjoin_np;
> +  }
>    GLIBC_2.32 {
>      pthread_attr_getsigmask_np;
>      pthread_attr_setaffinity_np;
> @@ -237,6 +244,7 @@ libc {
>      pthread_barrierattr_getpshared;
>      pthread_barrierattr_init;
>      pthread_barrierattr_setpshared;
> +    pthread_clockjoin_np;
>      pthread_cond_clockwait;
>      pthread_condattr_getclock;
>      pthread_condattr_getpshared;
> @@ -244,6 +252,7 @@ libc {
>      pthread_condattr_setpshared;
>      pthread_detach;
>      pthread_getspecific;
> +    pthread_join;
>      pthread_key_create;
>      pthread_key_delete;
>      pthread_kill;
> @@ -287,6 +296,8 @@ libc {
>      pthread_spin_trylock;
>      pthread_spin_unlock;
>      pthread_testcancel;
> +    pthread_timedjoin_np;
> +    pthread_tryjoin_np;
>      sem_clockwait;
>      sem_close;
>      sem_destroy;
> @@ -300,6 +311,7 @@ libc {
>      sem_wait;
>      thrd_detach;
>      thrd_exit;
> +    thrd_join;
>      tss_create;
>      tss_delete;
>      tss_get;
> @@ -369,7 +381,6 @@ libpthread {
>      funlockfile;
>      pthread_cancel;
>      pthread_create;
> -    pthread_join;
>      pthread_sigmask;
>    }
>  
> @@ -421,8 +432,6 @@ libpthread {
>      __pthread_unregister_cancel_restore;
>      pthread_attr_getaffinity_np;
>      pthread_setaffinity_np;
> -    pthread_timedjoin_np;
> -    pthread_tryjoin_np;
>    }
>  
>    GLIBC_2.3.4 {
> @@ -452,7 +461,6 @@ libpthread {
>    # C11 thread symbols.
>    GLIBC_2.28 {
>      thrd_create;
> -    thrd_join;
>    }
>  
>    GLIBC_2.30 {
> @@ -460,7 +468,7 @@ libpthread {
>    }
>  
>    GLIBC_2.31 {
> -    pthread_clockjoin_np;
> +    __libpthread_version_placeholder;
>    }
>  
>    GLIBC_PRIVATE {

Ok.

> diff --git a/nptl/libpthread-compat.c b/nptl/libpthread-compat.c
> index 401fa6ad34..bc9ee36df0 100644
> --- a/nptl/libpthread-compat.c
> +++ b/nptl/libpthread-compat.c
> @@ -69,3 +69,8 @@ compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  compat_symbol (libpthread, __libpthread_version_placeholder_1,
>  	       __libpthread_version_placeholder, GLIBC_2_30);
>  #endif
> +
> +#if (SHLIB_COMPAT (libpthread, GLIBC_2_31, GLIBC_2_32))
> +compat_symbol (libpthread, __libpthread_version_placeholder_1,
> +	       __libpthread_version_placeholder, GLIBC_2_31);
> +#endif

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 34d133b187..7e3cef4709 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -456,10 +456,10 @@ libc_hidden_proto (__pthread_cond_wait)
>  extern int __pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
>                                       clockid_t clockid,
>                                       const struct __timespec64 *abstime);
> -libpthread_hidden_proto (__pthread_clockjoin_np64)
> +libc_hidden_proto (__pthread_clockjoin_np64)
>  extern int __pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
>                                       const struct __timespec64 *abstime);
> -libpthread_hidden_proto (__pthread_timedjoin_np64)
> +libc_hidden_proto (__pthread_timedjoin_np64)
>  extern int __pthread_cond_timedwait64 (pthread_cond_t *cond,
>                                         pthread_mutex_t *mutex,
>                                         const struct __timespec64 *abstime);
> @@ -535,6 +535,7 @@ extern int __pthread_kill (pthread_t threadid, int signo);
>  extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
>  libc_hidden_proto (__pthread_exit)
>  extern int __pthread_join (pthread_t threadid, void **thread_return);
> +libc_hidden_proto (__pthread_join)
>  extern int __pthread_setcanceltype (int type, int *oldtype);
>  libc_hidden_proto (__pthread_setcanceltype)
>  extern void __pthread_testcancel (void);

Ok.

> diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c
> index 7457c187fe..f5007d7831 100644
> --- a/nptl/pthread_clockjoin.c
> +++ b/nptl/pthread_clockjoin.c
> @@ -19,10 +19,12 @@
>  #include <time.h>
>  #include <futex-internal.h>
>  #include "pthreadP.h"
> +#include <shlib-compat.h>
>  
>  int
> -__pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
> -                          clockid_t clockid, const struct __timespec64 *abstime)
> +___pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
> +			   clockid_t clockid,
> +			   const struct __timespec64 *abstime)
>  {
>    if (!futex_abstimed_supported_clockid (clockid))
>      return EINVAL;
> @@ -31,12 +33,14 @@ __pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
>                                   clockid, abstime, true);
>  }
>  
> -#if __TIMESIZE != 64
> -libpthread_hidden_def (__pthread_clockjoin_np64)
> +#if __TIMESIZE == 64
> +strong_alias (___pthread_clockjoin_np64, ___pthread_clockjoin_np)
> +#else /* __TIMESPEC64 != 64 */
> +libc_hidden_ver (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
>  
>  int
> -__pthread_clockjoin_np (pthread_t threadid, void **thread_return,
> -                        clockid_t clockid, const struct timespec *abstime)
> +___pthread_clockjoin_np (pthread_t threadid, void **thread_return,
> +			 clockid_t clockid, const struct timespec *abstime)
>  {
>    if (abstime != NULL)
>      {
> @@ -45,8 +49,13 @@ __pthread_clockjoin_np (pthread_t threadid, void **thread_return,
>  				       &ts64);
>      }
>    else
> -      return __pthread_clockjoin_np64 (threadid, thread_return, clockid,
> -				       NULL);
> +    return __pthread_clockjoin_np64 (threadid, thread_return, clockid,
> +				     NULL);
>  }
> +#endif /* __TIMESPEC64 != 64 */
> +versioned_symbol (libc, ___pthread_clockjoin_np, pthread_clockjoin_np,
> +		  GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_31, GLIBC_2_34)
> +compat_symbol (libpthread, ___pthread_clockjoin_np, pthread_clockjoin_np,
> +	       GLIBC_2_31);
>  #endif
> -weak_alias (__pthread_clockjoin_np, pthread_clockjoin_np)

Ok.

> diff --git a/nptl/pthread_join.c b/nptl/pthread_join.c
> index 4ad718e606..d2b33de73d 100644
> --- a/nptl/pthread_join.c
> +++ b/nptl/pthread_join.c
> @@ -17,11 +17,20 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include "pthreadP.h"
> +#include <shlib-compat.h>
>  
>  int
> -__pthread_join (pthread_t threadid, void **thread_return)
> +___pthread_join (pthread_t threadid, void **thread_return)
>  {
>    return __pthread_clockjoin_ex (threadid, thread_return, 0 /* Ignored */,
>  				 NULL, true);
>  }
> -weak_alias (__pthread_join, pthread_join)
> +versioned_symbol (libc, ___pthread_join, pthread_join, GLIBC_2_34);
> +libc_hidden_ver (___pthread_join, __pthread_join)
> +#ifndef SHARED
> +strong_alias (___pthread_join, __pthread_join)
> +#endif
> +
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libc, ___pthread_join, pthread_join, GLIBC_2_0);
> +#endif


Ok.

> diff --git a/nptl/pthread_timedjoin.c b/nptl/pthread_timedjoin.c
> index f5d0d3d6ce..ebc31f935a 100644
> --- a/nptl/pthread_timedjoin.c
> +++ b/nptl/pthread_timedjoin.c
> @@ -18,21 +18,24 @@
>  
>  #include <time.h>
>  #include "pthreadP.h"
> +#include <shlib-compat.h>
>  
>  int
> -__pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
> -                          const struct __timespec64 *abstime)
> +___pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
> +                           const struct __timespec64 *abstime)
>  {
>    return __pthread_clockjoin_ex (threadid, thread_return,
>                                   CLOCK_REALTIME, abstime, true);
>  }
>  
> -#if __TIMESIZE != 64
> -libpthread_hidden_def (__pthread_timedjoin_np64)
> +#if __TIMESIZE == 64
> +strong_alias (___pthread_timedjoin_np64, ___pthread_timedjoin_np)
> +#else /* __TIMESPEC64 != 64 */
> +libc_hidden_ver (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
>  
>  int
> -__pthread_timedjoin_np (pthread_t threadid, void **thread_return,
> -                        const struct timespec *abstime)
> +  ___pthread_timedjoin_np (pthread_t threadid, void **thread_return,
> +                           const struct timespec *abstime)
>  {
>    if (abstime != NULL)
>      {
> @@ -42,5 +45,10 @@ __pthread_timedjoin_np (pthread_t threadid, void **thread_return,
>    else
>      return __pthread_timedjoin_np64 (threadid, thread_return, NULL);
>  }
> +#endif /* __TIMESPEC64 != 64 */
> +versioned_symbol (libc, ___pthread_timedjoin_np, pthread_timedjoin_np,
> +                  GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (libpthread, ___pthread_timedjoin_np, pthread_timedjoin_np,
> +               GLIBC_2_3_3);
>  #endif
> -weak_alias (__pthread_timedjoin_np, pthread_timedjoin_np)


Ok.

> diff --git a/nptl/pthread_tryjoin.c b/nptl/pthread_tryjoin.c
> index 62c9469258..fd938e8780 100644
> --- a/nptl/pthread_tryjoin.c
> +++ b/nptl/pthread_tryjoin.c
> @@ -17,9 +17,10 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include "pthreadP.h"
> +#include <shlib-compat.h>
>  
>  int
> -pthread_tryjoin_np (pthread_t threadid, void **thread_return)
> +__pthread_tryjoin_np (pthread_t threadid, void **thread_return)
>  {
>    /* Return right away if the thread hasn't terminated yet.  */
>    struct pthread *pd = (struct pthread *) threadid;
> @@ -31,3 +32,8 @@ pthread_tryjoin_np (pthread_t threadid, void **thread_return)
>    return __pthread_clockjoin_ex (threadid, thread_return, 0 /* Ignored */,
>  				 NULL, false);
>  }
> +versioned_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_34);
> +
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_3_3);
> +#endif


Ok.

> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index ec8e3af577..b15d085f51 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_join
> +libpthread-routines += thrd_create
>  
>  $(libpthread-routines-var) += \
>    call_once \
> @@ -49,6 +49,7 @@ $(libpthread-routines-var) += \
>    mtx_unlock \
>    thrd_detach \
>    thrd_exit \
> +  thrd_join \
>    tss_create \
>    tss_delete \
>    tss_get \

Ok.

> diff --git a/sysdeps/pthread/thrd_join.c b/sysdeps/pthread/thrd_join.c
> index 8b53092c12..8db96ce4a5 100644
> --- a/sysdeps/pthread/thrd_join.c
> +++ b/sysdeps/pthread/thrd_join.c
> @@ -17,9 +17,10 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include "thrd_priv.h"
> +#include <shlib-compat.h>
>  
>  int
> -thrd_join (thrd_t thr, int *res)
> +__thrd_join (thrd_t thr, int *res)
>  {
>    void *pthread_res;
>    int err_code = __pthread_join (thr, &pthread_res);
> @@ -28,3 +29,11 @@ thrd_join (thrd_t thr, int *res)
>  
>    return thrd_err_map (err_code);
>  }
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __thrd_join, thrd_join, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34)
> +compat_symbol (libc, __thrd_join, thrd_join, GLIBC_2_28);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__thrd_join, thrd_join)
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index b5b0b44697..2d06bfef34 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1481,6 +1481,7 @@ GLIBC_2.17 pthread_getaffinity_np F
>  GLIBC_2.17 pthread_getattr_np F
>  GLIBC_2.17 pthread_getschedparam F
>  GLIBC_2.17 pthread_getspecific F
> +GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_key_delete F
>  GLIBC_2.17 pthread_kill F
> @@ -1539,6 +1540,8 @@ GLIBC_2.17 pthread_spin_lock F
>  GLIBC_2.17 pthread_spin_trylock F
>  GLIBC_2.17 pthread_spin_unlock F
>  GLIBC_2.17 pthread_testcancel F
> +GLIBC_2.17 pthread_timedjoin_np F
> +GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.17 pthread_yield F
>  GLIBC_2.17 ptrace F
>  GLIBC_2.17 ptsname F
> @@ -2255,6 +2258,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2273,6 +2277,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2322,6 +2327,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2329,6 +2335,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2376,6 +2383,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2389,6 +2398,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 71627a5cc8..fd8f0f7d1c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -23,16 +23,12 @@ GLIBC_2.17 pthread_create F
>  GLIBC_2.17 pthread_getconcurrency F
>  GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
> -GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_setaffinity_np F
>  GLIBC_2.17 pthread_setconcurrency F
>  GLIBC_2.17 pthread_setname_np F
>  GLIBC_2.17 pthread_setschedprio F
>  GLIBC_2.17 pthread_sigqueue F
> -GLIBC_2.17 pthread_timedjoin_np F
> -GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 20d4855e90..8f1c1368ad 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -902,6 +902,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2153,6 +2154,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2284,6 +2286,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2360,6 +2364,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2409,6 +2414,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2416,6 +2422,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2463,6 +2470,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2476,6 +2485,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index b4ea31102a..16fa6ec4ee 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -39,11 +37,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 19eb517f28..ae902ecdd0 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1401,6 +1401,7 @@ GLIBC_2.32 pthread_barrierattr_destroy F
>  GLIBC_2.32 pthread_barrierattr_getpshared F
>  GLIBC_2.32 pthread_barrierattr_init F
>  GLIBC_2.32 pthread_barrierattr_setpshared F
> +GLIBC_2.32 pthread_clockjoin_np F
>  GLIBC_2.32 pthread_cond_broadcast F
>  GLIBC_2.32 pthread_cond_clockwait F
>  GLIBC_2.32 pthread_cond_destroy F
> @@ -1421,6 +1422,7 @@ GLIBC_2.32 pthread_getaffinity_np F
>  GLIBC_2.32 pthread_getattr_np F
>  GLIBC_2.32 pthread_getschedparam F
>  GLIBC_2.32 pthread_getspecific F
> +GLIBC_2.32 pthread_join F
>  GLIBC_2.32 pthread_key_create F
>  GLIBC_2.32 pthread_key_delete F
>  GLIBC_2.32 pthread_kill F
> @@ -1483,6 +1485,8 @@ GLIBC_2.32 pthread_spin_lock F
>  GLIBC_2.32 pthread_spin_trylock F
>  GLIBC_2.32 pthread_spin_unlock F
>  GLIBC_2.32 pthread_testcancel F
> +GLIBC_2.32 pthread_timedjoin_np F
> +GLIBC_2.32 pthread_tryjoin_np F
>  GLIBC_2.32 pthread_yield F
>  GLIBC_2.32 ptrace F
>  GLIBC_2.32 ptsname F
> @@ -1866,6 +1870,7 @@ GLIBC_2.32 thrd_current F
>  GLIBC_2.32 thrd_detach F
>  GLIBC_2.32 thrd_equal F
>  GLIBC_2.32 thrd_exit F
> +GLIBC_2.32 thrd_join F
>  GLIBC_2.32 thrd_sleep F
>  GLIBC_2.32 thrd_yield F
>  GLIBC_2.32 time F
> @@ -2081,6 +2086,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2088,6 +2094,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2135,6 +2142,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2148,6 +2157,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 8ac0cde1ee..4c8b8ee724 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -19,19 +19,14 @@ GLIBC_2.32 pthread_attr_setstack F
>  GLIBC_2.32 pthread_attr_setstackaddr F
>  GLIBC_2.32 pthread_attr_setstacksize F
>  GLIBC_2.32 pthread_cancel F
> -GLIBC_2.32 pthread_clockjoin_np F
>  GLIBC_2.32 pthread_create F
>  GLIBC_2.32 pthread_getattr_default_np F
>  GLIBC_2.32 pthread_getconcurrency F
>  GLIBC_2.32 pthread_getcpuclockid F
>  GLIBC_2.32 pthread_getname_np F
> -GLIBC_2.32 pthread_join F
>  GLIBC_2.32 pthread_setaffinity_np F
>  GLIBC_2.32 pthread_setconcurrency F
>  GLIBC_2.32 pthread_setname_np F
>  GLIBC_2.32 pthread_setschedprio F
>  GLIBC_2.32 pthread_sigqueue F
> -GLIBC_2.32 pthread_timedjoin_np F
> -GLIBC_2.32 pthread_tryjoin_np F
>  GLIBC_2.32 thrd_create F
> -GLIBC_2.32 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 9ba6a30214..acc620643f 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -159,6 +160,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -210,6 +212,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -217,6 +220,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -264,6 +268,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -277,6 +283,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> @@ -1698,6 +1705,7 @@ GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
>  GLIBC_2.4 pthread_getspecific F
> +GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
> @@ -1753,6 +1761,8 @@ GLIBC_2.4 pthread_spin_lock F
>  GLIBC_2.4 pthread_spin_trylock F
>  GLIBC_2.4 pthread_spin_unlock F
>  GLIBC_2.4 pthread_testcancel F
> +GLIBC_2.4 pthread_timedjoin_np F
> +GLIBC_2.4 pthread_tryjoin_np F
>  GLIBC_2.4 pthread_yield F
>  GLIBC_2.4 ptrace F
>  GLIBC_2.4 ptsname F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index b74a43658d..072b9a30f1 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F
> @@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
> -GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_setaffinity_np F
>  GLIBC_2.4 pthread_setconcurrency F
>  GLIBC_2.4 pthread_setschedprio F
> -GLIBC_2.4 pthread_timedjoin_np F
> -GLIBC_2.4 pthread_tryjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 9a79a6622e..fd33a2317f 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -158,6 +159,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -207,6 +209,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -214,6 +217,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -261,6 +265,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -274,6 +280,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> @@ -1695,6 +1702,7 @@ GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
>  GLIBC_2.4 pthread_getspecific F
> +GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
> @@ -1750,6 +1758,8 @@ GLIBC_2.4 pthread_spin_lock F
>  GLIBC_2.4 pthread_spin_trylock F
>  GLIBC_2.4 pthread_spin_unlock F
>  GLIBC_2.4 pthread_testcancel F
> +GLIBC_2.4 pthread_timedjoin_np F
> +GLIBC_2.4 pthread_tryjoin_np F
>  GLIBC_2.4 pthread_yield F
>  GLIBC_2.4 ptrace F
>  GLIBC_2.4 ptsname F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index b74a43658d..072b9a30f1 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F
> @@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
> -GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_setaffinity_np F
>  GLIBC_2.4 pthread_setconcurrency F
>  GLIBC_2.4 pthread_setschedprio F
> -GLIBC_2.4 pthread_timedjoin_np F
> -GLIBC_2.4 pthread_tryjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index b21ff2de89..c1ac24c3a2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1481,6 +1481,7 @@ GLIBC_2.29 pthread_getaffinity_np F
>  GLIBC_2.29 pthread_getattr_np F
>  GLIBC_2.29 pthread_getschedparam F
>  GLIBC_2.29 pthread_getspecific F
> +GLIBC_2.29 pthread_join F
>  GLIBC_2.29 pthread_key_create F
>  GLIBC_2.29 pthread_key_delete F
>  GLIBC_2.29 pthread_kill F
> @@ -1540,6 +1541,8 @@ GLIBC_2.29 pthread_spin_lock F
>  GLIBC_2.29 pthread_spin_trylock F
>  GLIBC_2.29 pthread_spin_unlock F
>  GLIBC_2.29 pthread_testcancel F
> +GLIBC_2.29 pthread_timedjoin_np F
> +GLIBC_2.29 pthread_tryjoin_np F
>  GLIBC_2.29 pthread_yield F
>  GLIBC_2.29 ptrace F
>  GLIBC_2.29 ptsname F
> @@ -1957,6 +1960,7 @@ GLIBC_2.29 thrd_current F
>  GLIBC_2.29 thrd_detach F
>  GLIBC_2.29 thrd_equal F
>  GLIBC_2.29 thrd_exit F
> +GLIBC_2.29 thrd_join F
>  GLIBC_2.29 thrd_sleep F
>  GLIBC_2.29 thrd_yield F
>  GLIBC_2.29 time F
> @@ -2216,6 +2220,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2265,6 +2270,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2272,6 +2278,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2319,6 +2326,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2332,6 +2341,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 665cc7bc38..678865fb8c 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -24,15 +24,11 @@ GLIBC_2.29 pthread_getattr_default_np F
>  GLIBC_2.29 pthread_getconcurrency F
>  GLIBC_2.29 pthread_getcpuclockid F
>  GLIBC_2.29 pthread_getname_np F
> -GLIBC_2.29 pthread_join F
>  GLIBC_2.29 pthread_setaffinity_np F
>  GLIBC_2.29 pthread_setconcurrency F
>  GLIBC_2.29 pthread_setname_np F
>  GLIBC_2.29 pthread_setschedprio F
>  GLIBC_2.29 pthread_sigqueue F
> -GLIBC_2.29 pthread_timedjoin_np F
> -GLIBC_2.29 pthread_tryjoin_np F
>  GLIBC_2.29 thrd_create F
> -GLIBC_2.29 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 3e893dfcaa..29225ac912 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1304,6 +1304,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -1986,6 +1987,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2121,6 +2123,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2167,6 +2171,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2216,6 +2221,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2223,6 +2229,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2270,6 +2277,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2283,6 +2292,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index cc1ca55754..59585f6763 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index f0af406ec5..b5026ba906 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -879,6 +879,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2166,6 +2167,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2301,6 +2303,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2348,6 +2352,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2399,6 +2404,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2406,6 +2412,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2453,6 +2460,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2466,6 +2475,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 0854a21e65..c7397f889d 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -37,11 +35,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 83985b06e0..f6fc393a21 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1325,6 +1325,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -2021,6 +2022,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2152,6 +2154,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2200,6 +2204,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2250,6 +2255,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2257,6 +2263,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2304,6 +2311,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2317,6 +2326,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index c377a13e65..1b0a061014 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -36,11 +34,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 7d38f2fe55..dfb73924b9 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -141,6 +141,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -160,6 +161,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -211,6 +213,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -218,6 +221,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -265,6 +269,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -278,6 +284,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> @@ -1678,6 +1685,7 @@ GLIBC_2.4 pthread_getaffinity_np F
>  GLIBC_2.4 pthread_getattr_np F
>  GLIBC_2.4 pthread_getschedparam F
>  GLIBC_2.4 pthread_getspecific F
> +GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_key_create F
>  GLIBC_2.4 pthread_key_delete F
>  GLIBC_2.4 pthread_kill F
> @@ -1733,6 +1741,8 @@ GLIBC_2.4 pthread_spin_lock F
>  GLIBC_2.4 pthread_spin_trylock F
>  GLIBC_2.4 pthread_spin_unlock F
>  GLIBC_2.4 pthread_testcancel F
> +GLIBC_2.4 pthread_timedjoin_np F
> +GLIBC_2.4 pthread_tryjoin_np F
>  GLIBC_2.4 pthread_yield F
>  GLIBC_2.4 ptrace F
>  GLIBC_2.4 ptsname F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index b74a43658d..072b9a30f1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -3,9 +3,8 @@ GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F
> @@ -31,9 +30,6 @@ GLIBC_2.4 pthread_cancel F
>  GLIBC_2.4 pthread_create F
>  GLIBC_2.4 pthread_getconcurrency F
>  GLIBC_2.4 pthread_getcpuclockid F
> -GLIBC_2.4 pthread_join F
>  GLIBC_2.4 pthread_setaffinity_np F
>  GLIBC_2.4 pthread_setconcurrency F
>  GLIBC_2.4 pthread_setschedprio F
> -GLIBC_2.4 pthread_timedjoin_np F
> -GLIBC_2.4 pthread_tryjoin_np F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 99ad04d858..1a88ecbca4 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -878,6 +878,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2109,6 +2110,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2244,6 +2246,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2291,6 +2295,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -2342,6 +2347,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2349,6 +2355,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2396,6 +2403,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2409,6 +2418,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 0854a21e65..c7397f889d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -37,11 +35,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 5eebad0468..f07dba5ef0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1483,6 +1483,7 @@ GLIBC_2.18 pthread_getaffinity_np F
>  GLIBC_2.18 pthread_getattr_np F
>  GLIBC_2.18 pthread_getschedparam F
>  GLIBC_2.18 pthread_getspecific F
> +GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_key_delete F
>  GLIBC_2.18 pthread_kill F
> @@ -1542,6 +1543,8 @@ GLIBC_2.18 pthread_spin_lock F
>  GLIBC_2.18 pthread_spin_trylock F
>  GLIBC_2.18 pthread_spin_unlock F
>  GLIBC_2.18 pthread_testcancel F
> +GLIBC_2.18 pthread_timedjoin_np F
> +GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_yield F
>  GLIBC_2.18 ptrace F
>  GLIBC_2.18 ptsname F
> @@ -2246,6 +2249,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2265,6 +2269,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -2316,6 +2321,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2323,6 +2329,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2370,6 +2377,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2383,6 +2392,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index f50eb41a1a..2e35824ff0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -24,15 +24,11 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_getconcurrency F
>  GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
> -GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_setaffinity_np F
>  GLIBC_2.18 pthread_setconcurrency F
>  GLIBC_2.18 pthread_setname_np F
>  GLIBC_2.18 pthread_setschedprio F
>  GLIBC_2.18 pthread_sigqueue F
> -GLIBC_2.18 pthread_timedjoin_np F
> -GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 9c54e2d42c..688de4ee35 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1483,6 +1483,7 @@ GLIBC_2.18 pthread_getaffinity_np F
>  GLIBC_2.18 pthread_getattr_np F
>  GLIBC_2.18 pthread_getschedparam F
>  GLIBC_2.18 pthread_getspecific F
> +GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_key_create F
>  GLIBC_2.18 pthread_key_delete F
>  GLIBC_2.18 pthread_kill F
> @@ -1542,6 +1543,8 @@ GLIBC_2.18 pthread_spin_lock F
>  GLIBC_2.18 pthread_spin_trylock F
>  GLIBC_2.18 pthread_spin_unlock F
>  GLIBC_2.18 pthread_testcancel F
> +GLIBC_2.18 pthread_timedjoin_np F
> +GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_yield F
>  GLIBC_2.18 ptrace F
>  GLIBC_2.18 ptsname F
> @@ -2246,6 +2249,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2264,6 +2268,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2313,6 +2318,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2320,6 +2326,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2367,6 +2374,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2380,6 +2389,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index f50eb41a1a..2e35824ff0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -24,15 +24,11 @@ GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.18 pthread_getconcurrency F
>  GLIBC_2.18 pthread_getcpuclockid F
>  GLIBC_2.18 pthread_getname_np F
> -GLIBC_2.18 pthread_join F
>  GLIBC_2.18 pthread_setaffinity_np F
>  GLIBC_2.18 pthread_setconcurrency F
>  GLIBC_2.18 pthread_setname_np F
>  GLIBC_2.18 pthread_setschedprio F
>  GLIBC_2.18 pthread_sigqueue F
> -GLIBC_2.18 pthread_timedjoin_np F
> -GLIBC_2.18 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 34e77850a1..7e82eadb1d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2079,6 +2080,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2210,6 +2212,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2256,6 +2260,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2305,6 +2310,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2312,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2359,6 +2366,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2372,6 +2381,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index a1ba1503a5..2a70d89cd8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.11 pthread_sigqueue F
>  GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -37,11 +35,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index d01dc8462b..5891b9b563 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2077,6 +2078,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2208,6 +2210,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2254,6 +2258,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2303,6 +2308,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2310,6 +2316,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2357,6 +2364,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2370,6 +2379,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index a1ba1503a5..2a70d89cd8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.11 pthread_sigqueue F
>  GLIBC_2.12 pthread_getname_np F
>  GLIBC_2.12 pthread_setname_np F
> @@ -27,7 +26,6 @@ GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -37,11 +35,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index a906bb949a..dbf9dcf588 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -875,6 +875,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2085,6 +2086,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2216,6 +2218,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2262,6 +2266,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2311,6 +2316,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2318,6 +2324,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2365,6 +2372,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2378,6 +2387,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 89dd91a0a4..ed31156fe5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -873,6 +873,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2080,6 +2081,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2208,6 +2210,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2256,6 +2260,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2305,6 +2310,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2312,6 +2318,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2359,6 +2366,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2372,6 +2381,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 8b2b19d09b..bca4034be2 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1526,6 +1526,7 @@ GLIBC_2.21 pthread_getaffinity_np F
>  GLIBC_2.21 pthread_getattr_np F
>  GLIBC_2.21 pthread_getschedparam F
>  GLIBC_2.21 pthread_getspecific F
> +GLIBC_2.21 pthread_join F
>  GLIBC_2.21 pthread_key_create F
>  GLIBC_2.21 pthread_key_delete F
>  GLIBC_2.21 pthread_kill F
> @@ -1585,6 +1586,8 @@ GLIBC_2.21 pthread_spin_lock F
>  GLIBC_2.21 pthread_spin_trylock F
>  GLIBC_2.21 pthread_spin_unlock F
>  GLIBC_2.21 pthread_testcancel F
> +GLIBC_2.21 pthread_timedjoin_np F
> +GLIBC_2.21 pthread_tryjoin_np F
>  GLIBC_2.21 pthread_yield F
>  GLIBC_2.21 ptrace F
>  GLIBC_2.21 ptsname F
> @@ -2288,6 +2291,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2306,6 +2310,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2355,6 +2360,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2362,6 +2368,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2409,6 +2416,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2422,6 +2431,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 27fb415228..220d80ea95 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -24,15 +24,11 @@ GLIBC_2.21 pthread_getattr_default_np F
>  GLIBC_2.21 pthread_getconcurrency F
>  GLIBC_2.21 pthread_getcpuclockid F
>  GLIBC_2.21 pthread_getname_np F
> -GLIBC_2.21 pthread_join F
>  GLIBC_2.21 pthread_setaffinity_np F
>  GLIBC_2.21 pthread_setconcurrency F
>  GLIBC_2.21 pthread_setname_np F
>  GLIBC_2.21 pthread_setschedprio F
>  GLIBC_2.21 pthread_sigqueue F
> -GLIBC_2.21 pthread_timedjoin_np F
> -GLIBC_2.21 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 84aab42aaa..5de9636022 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -886,6 +886,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2113,6 +2114,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2250,6 +2252,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2320,6 +2324,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2369,6 +2374,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2376,6 +2382,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2423,6 +2430,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2436,6 +2445,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 831b66ee72..1286f68dad 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -37,13 +35,11 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
>  GLIBC_2.6 pthread_attr_setstack F
>  GLIBC_2.6 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 00201c5544..10cb492163 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -886,6 +886,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2117,6 +2118,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2283,6 +2285,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2353,6 +2357,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2402,6 +2407,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2409,6 +2415,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2456,6 +2463,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2469,6 +2478,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 8725f4a851..4d72e24c22 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -140,6 +140,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -1429,6 +1430,7 @@ GLIBC_2.3 pthread_exit F
>  GLIBC_2.3 pthread_getattr_np F
>  GLIBC_2.3 pthread_getschedparam F
>  GLIBC_2.3 pthread_getspecific F
> +GLIBC_2.3 pthread_join F
>  GLIBC_2.3 pthread_key_create F
>  GLIBC_2.3 pthread_key_delete F
>  GLIBC_2.3 pthread_kill F
> @@ -2099,6 +2101,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2168,6 +2172,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2217,6 +2222,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2224,6 +2230,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2271,6 +2278,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2284,6 +2293,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 91a5618412..496c83d9df 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.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3 _IO_flockfile F
>  GLIBC_2.3 _IO_ftrylockfile F
>  GLIBC_2.3 _IO_funlockfile F
> @@ -23,7 +22,6 @@ GLIBC_2.3 pthread_cancel F
>  GLIBC_2.3 pthread_create F
>  GLIBC_2.3 pthread_getconcurrency F
>  GLIBC_2.3 pthread_getcpuclockid F
> -GLIBC_2.3 pthread_join F
>  GLIBC_2.3 pthread_setconcurrency F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
> @@ -32,13 +30,11 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
>  GLIBC_2.6 pthread_attr_setstack F
>  GLIBC_2.6 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 89ab60dc38..d3ac4aeefc 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1569,6 +1569,7 @@ GLIBC_2.17 pthread_getaffinity_np F
>  GLIBC_2.17 pthread_getattr_np F
>  GLIBC_2.17 pthread_getschedparam F
>  GLIBC_2.17 pthread_getspecific F
> +GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_key_create F
>  GLIBC_2.17 pthread_key_delete F
>  GLIBC_2.17 pthread_kill F
> @@ -1627,6 +1628,8 @@ GLIBC_2.17 pthread_spin_lock F
>  GLIBC_2.17 pthread_spin_trylock F
>  GLIBC_2.17 pthread_spin_unlock F
>  GLIBC_2.17 pthread_testcancel F
> +GLIBC_2.17 pthread_timedjoin_np F
> +GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.17 pthread_yield F
>  GLIBC_2.17 ptrace F
>  GLIBC_2.17 ptsname F
> @@ -2345,6 +2348,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2375,6 +2379,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __argp_errorieee128 F
>  GLIBC_2.32 __argp_failureieee128 F
>  GLIBC_2.32 __asprintf_chkieee128 F
> @@ -2518,6 +2523,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2525,6 +2531,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2572,6 +2579,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2585,6 +2594,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 71627a5cc8..fd8f0f7d1c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -23,16 +23,12 @@ GLIBC_2.17 pthread_create F
>  GLIBC_2.17 pthread_getconcurrency F
>  GLIBC_2.17 pthread_getcpuclockid F
>  GLIBC_2.17 pthread_getname_np F
> -GLIBC_2.17 pthread_join F
>  GLIBC_2.17 pthread_setaffinity_np F
>  GLIBC_2.17 pthread_setconcurrency F
>  GLIBC_2.17 pthread_setname_np F
>  GLIBC_2.17 pthread_setschedprio F
>  GLIBC_2.17 pthread_sigqueue F
> -GLIBC_2.17 pthread_timedjoin_np F
> -GLIBC_2.17 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index e201491852..dcef189dcc 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1403,6 +1403,7 @@ GLIBC_2.33 pthread_barrierattr_destroy F
>  GLIBC_2.33 pthread_barrierattr_getpshared F
>  GLIBC_2.33 pthread_barrierattr_init F
>  GLIBC_2.33 pthread_barrierattr_setpshared F
> +GLIBC_2.33 pthread_clockjoin_np F
>  GLIBC_2.33 pthread_cond_broadcast F
>  GLIBC_2.33 pthread_cond_clockwait F
>  GLIBC_2.33 pthread_cond_destroy F
> @@ -1423,6 +1424,7 @@ GLIBC_2.33 pthread_getaffinity_np F
>  GLIBC_2.33 pthread_getattr_np F
>  GLIBC_2.33 pthread_getschedparam F
>  GLIBC_2.33 pthread_getspecific F
> +GLIBC_2.33 pthread_join F
>  GLIBC_2.33 pthread_key_create F
>  GLIBC_2.33 pthread_key_delete F
>  GLIBC_2.33 pthread_kill F
> @@ -1485,6 +1487,8 @@ GLIBC_2.33 pthread_spin_lock F
>  GLIBC_2.33 pthread_spin_trylock F
>  GLIBC_2.33 pthread_spin_unlock F
>  GLIBC_2.33 pthread_testcancel F
> +GLIBC_2.33 pthread_timedjoin_np F
> +GLIBC_2.33 pthread_tryjoin_np F
>  GLIBC_2.33 pthread_yield F
>  GLIBC_2.33 ptrace F
>  GLIBC_2.33 ptsname F
> @@ -1876,6 +1880,7 @@ GLIBC_2.33 thrd_current F
>  GLIBC_2.33 thrd_detach F
>  GLIBC_2.33 thrd_equal F
>  GLIBC_2.33 thrd_exit F
> +GLIBC_2.33 thrd_join F
>  GLIBC_2.33 thrd_sleep F
>  GLIBC_2.33 thrd_yield F
>  GLIBC_2.33 time F
> @@ -2083,6 +2088,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2090,6 +2096,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2137,6 +2144,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2150,6 +2159,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 0ad1f57b44..0979096ed7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -19,19 +19,14 @@ GLIBC_2.33 pthread_attr_setstack F
>  GLIBC_2.33 pthread_attr_setstackaddr F
>  GLIBC_2.33 pthread_attr_setstacksize F
>  GLIBC_2.33 pthread_cancel F
> -GLIBC_2.33 pthread_clockjoin_np F
>  GLIBC_2.33 pthread_create F
>  GLIBC_2.33 pthread_getattr_default_np F
>  GLIBC_2.33 pthread_getconcurrency F
>  GLIBC_2.33 pthread_getcpuclockid F
>  GLIBC_2.33 pthread_getname_np F
> -GLIBC_2.33 pthread_join F
>  GLIBC_2.33 pthread_setaffinity_np F
>  GLIBC_2.33 pthread_setconcurrency F
>  GLIBC_2.33 pthread_setname_np F
>  GLIBC_2.33 pthread_setschedprio F
>  GLIBC_2.33 pthread_sigqueue F
> -GLIBC_2.33 pthread_timedjoin_np F
> -GLIBC_2.33 pthread_tryjoin_np F
>  GLIBC_2.33 thrd_create F
> -GLIBC_2.33 thrd_join F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 8f5d8490a7..806d787b3f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1471,6 +1471,7 @@ GLIBC_2.27 pthread_getaffinity_np F
>  GLIBC_2.27 pthread_getattr_np F
>  GLIBC_2.27 pthread_getschedparam F
>  GLIBC_2.27 pthread_getspecific F
> +GLIBC_2.27 pthread_join F
>  GLIBC_2.27 pthread_key_create F
>  GLIBC_2.27 pthread_key_delete F
>  GLIBC_2.27 pthread_kill F
> @@ -1530,6 +1531,8 @@ GLIBC_2.27 pthread_spin_lock F
>  GLIBC_2.27 pthread_spin_trylock F
>  GLIBC_2.27 pthread_spin_unlock F
>  GLIBC_2.27 pthread_testcancel F
> +GLIBC_2.27 pthread_timedjoin_np F
> +GLIBC_2.27 pthread_tryjoin_np F
>  GLIBC_2.27 pthread_yield F
>  GLIBC_2.27 ptrace F
>  GLIBC_2.27 ptsname F
> @@ -2216,6 +2219,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2234,6 +2238,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2283,6 +2288,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2290,6 +2296,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2337,6 +2344,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2350,6 +2359,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 74b4bdce74..98d64de740 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -24,15 +24,11 @@ GLIBC_2.27 pthread_getattr_default_np F
>  GLIBC_2.27 pthread_getconcurrency F
>  GLIBC_2.27 pthread_getcpuclockid F
>  GLIBC_2.27 pthread_getname_np F
> -GLIBC_2.27 pthread_join F
>  GLIBC_2.27 pthread_setaffinity_np F
>  GLIBC_2.27 pthread_setconcurrency F
>  GLIBC_2.27 pthread_setname_np F
>  GLIBC_2.27 pthread_setschedprio F
>  GLIBC_2.27 pthread_sigqueue F
> -GLIBC_2.27 pthread_timedjoin_np F
> -GLIBC_2.27 pthread_tryjoin_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 686a10ee24..52f3cc5a97 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -877,6 +877,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2122,6 +2123,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2257,6 +2259,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2316,6 +2320,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -2367,6 +2372,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2374,6 +2380,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2421,6 +2428,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2434,6 +2443,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 87db062308..df9de2e5ed 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -30,7 +29,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -38,11 +36,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 8ff9d69dca..96dcf91860 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1322,6 +1322,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -2013,6 +2014,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2145,6 +2147,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2205,6 +2209,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2254,6 +2259,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2261,6 +2267,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2308,6 +2315,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2321,6 +2330,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 3bf0bc9538..5754138e46 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -22,12 +22,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -35,11 +33,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 9ecce30901..0360f65963 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1308,6 +1308,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -1990,6 +1991,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2125,6 +2127,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2172,6 +2176,7 @@ GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
>  GLIBC_2.31 msgctl F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.31 semctl F
>  GLIBC_2.31 shmctl F
>  GLIBC_2.32 __libc_single_threaded D 0x1
> @@ -2223,6 +2228,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2230,6 +2236,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2277,6 +2284,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2290,6 +2299,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index cc1ca55754..59585f6763 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index a6faf4e2d6..c99300d9fc 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1308,6 +1308,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -1990,6 +1991,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2125,6 +2127,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2171,6 +2175,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2220,6 +2225,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2227,6 +2233,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2274,6 +2281,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2287,6 +2296,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index cc1ca55754..59585f6763 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -34,11 +32,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 4d08e96ffa..1d3f00ec04 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -880,6 +880,7 @@ GLIBC_2.0 pthread_equal F
>  GLIBC_2.0 pthread_exit F
>  GLIBC_2.0 pthread_getschedparam F
>  GLIBC_2.0 pthread_getspecific F
> +GLIBC_2.0 pthread_join F
>  GLIBC_2.0 pthread_key_create F
>  GLIBC_2.0 pthread_key_delete F
>  GLIBC_2.0 pthread_kill F
> @@ -2116,6 +2117,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2251,6 +2253,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2309,6 +2313,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2358,6 +2363,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2365,6 +2371,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2412,6 +2419,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2425,6 +2434,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index b4ea31102a..16fa6ec4ee 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.0 ftrylockfile F
>  GLIBC_2.0 funlockfile F
>  GLIBC_2.0 pthread_cancel F
>  GLIBC_2.0 pthread_create F
> -GLIBC_2.0 pthread_join F
>  GLIBC_2.1 pthread_attr_getguardsize F
>  GLIBC_2.1 pthread_attr_getstackaddr F
>  GLIBC_2.1 pthread_attr_getstacksize F
> @@ -29,7 +28,6 @@ GLIBC_2.2 pthread_getcpuclockid F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -39,11 +37,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index bc9ddd71a6..eb222daa74 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1351,6 +1351,7 @@ GLIBC_2.2 pthread_equal F
>  GLIBC_2.2 pthread_exit F
>  GLIBC_2.2 pthread_getschedparam F
>  GLIBC_2.2 pthread_getspecific F
> +GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_key_create F
>  GLIBC_2.2 pthread_key_delete F
>  GLIBC_2.2 pthread_kill F
> @@ -2043,6 +2044,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2174,6 +2176,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2222,6 +2226,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2271,6 +2276,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2278,6 +2284,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2325,6 +2332,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2338,6 +2347,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index c377a13e65..1b0a061014 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -21,12 +21,10 @@ GLIBC_2.2 pthread_cancel F
>  GLIBC_2.2 pthread_create F
>  GLIBC_2.2 pthread_getconcurrency F
>  GLIBC_2.2 pthread_getcpuclockid F
> -GLIBC_2.2 pthread_join F
>  GLIBC_2.2 pthread_setconcurrency F
>  GLIBC_2.2.3 __libpthread_version_placeholder F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -36,11 +34,9 @@ GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index a893315017..c34f50d673 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1319,6 +1319,7 @@ GLIBC_2.2.5 pthread_exit F
>  GLIBC_2.2.5 pthread_getattr_np F
>  GLIBC_2.2.5 pthread_getschedparam F
>  GLIBC_2.2.5 pthread_getspecific F
> +GLIBC_2.2.5 pthread_join F
>  GLIBC_2.2.5 pthread_key_create F
>  GLIBC_2.2.5 pthread_key_delete F
>  GLIBC_2.2.5 pthread_kill F
> @@ -2002,6 +2003,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2133,6 +2135,8 @@ GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
>  GLIBC_2.3.3 pthread_condattr_setclock F
>  GLIBC_2.3.3 pthread_getaffinity_np F
> +GLIBC_2.3.3 pthread_timedjoin_np F
> +GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.3 remap_file_pages F
>  GLIBC_2.3.3 sched_getaffinity F
>  GLIBC_2.3.3 sched_setaffinity F
> @@ -2181,6 +2185,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2232,6 +2237,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2239,6 +2245,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2286,6 +2293,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2299,6 +2308,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index dac904b6e9..df961f49ba 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -21,11 +21,9 @@ GLIBC_2.2.5 pthread_cancel F
>  GLIBC_2.2.5 pthread_create F
>  GLIBC_2.2.5 pthread_getconcurrency F
>  GLIBC_2.2.5 pthread_getcpuclockid F
> -GLIBC_2.2.5 pthread_join F
>  GLIBC_2.2.5 pthread_setconcurrency F
>  GLIBC_2.2.6 __libpthread_version_placeholder F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.3.2 __libpthread_version_placeholder F
>  GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
> @@ -33,11 +31,9 @@ GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_setaffinity_np F
> -GLIBC_2.3.3 pthread_timedjoin_np F
> -GLIBC_2.3.3 pthread_tryjoin_np F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_setaffinity_np F
>  GLIBC_2.3.4 pthread_setschedprio F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
>  GLIBC_2.4 __libpthread_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index fa9319c610..4fae69daff 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1488,6 +1488,7 @@ GLIBC_2.16 pthread_getaffinity_np F
>  GLIBC_2.16 pthread_getattr_np F
>  GLIBC_2.16 pthread_getschedparam F
>  GLIBC_2.16 pthread_getspecific F
> +GLIBC_2.16 pthread_join F
>  GLIBC_2.16 pthread_key_create F
>  GLIBC_2.16 pthread_key_delete F
>  GLIBC_2.16 pthread_kill F
> @@ -1546,6 +1547,8 @@ GLIBC_2.16 pthread_spin_lock F
>  GLIBC_2.16 pthread_spin_trylock F
>  GLIBC_2.16 pthread_spin_unlock F
>  GLIBC_2.16 pthread_testcancel F
> +GLIBC_2.16 pthread_timedjoin_np F
> +GLIBC_2.16 pthread_tryjoin_np F
>  GLIBC_2.16 pthread_yield F
>  GLIBC_2.16 ptrace F
>  GLIBC_2.16 ptsname F
> @@ -2268,6 +2271,7 @@ GLIBC_2.28 thrd_current F
>  GLIBC_2.28 thrd_detach F
>  GLIBC_2.28 thrd_equal F
>  GLIBC_2.28 thrd_exit F
> +GLIBC_2.28 thrd_join F
>  GLIBC_2.28 thrd_sleep F
>  GLIBC_2.28 thrd_yield F
>  GLIBC_2.28 tss_create F
> @@ -2286,6 +2290,7 @@ GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
>  GLIBC_2.30 tgkill F
>  GLIBC_2.30 twalk_r F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.32 __libc_single_threaded D 0x1
>  GLIBC_2.32 pthread_attr_getsigmask_np F
>  GLIBC_2.32 pthread_attr_setaffinity_np F
> @@ -2337,6 +2342,7 @@ GLIBC_2.34 pthread_barrierattr_destroy F
>  GLIBC_2.34 pthread_barrierattr_getpshared F
>  GLIBC_2.34 pthread_barrierattr_init F
>  GLIBC_2.34 pthread_barrierattr_setpshared F
> +GLIBC_2.34 pthread_clockjoin_np F
>  GLIBC_2.34 pthread_cond_clockwait F
>  GLIBC_2.34 pthread_condattr_getclock F
>  GLIBC_2.34 pthread_condattr_getpshared F
> @@ -2344,6 +2350,7 @@ GLIBC_2.34 pthread_condattr_setclock F
>  GLIBC_2.34 pthread_condattr_setpshared F
>  GLIBC_2.34 pthread_detach F
>  GLIBC_2.34 pthread_getspecific F
> +GLIBC_2.34 pthread_join F
>  GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_kill F
> @@ -2391,6 +2398,8 @@ GLIBC_2.34 pthread_spin_lock F
>  GLIBC_2.34 pthread_spin_trylock F
>  GLIBC_2.34 pthread_spin_unlock F
>  GLIBC_2.34 pthread_testcancel F
> +GLIBC_2.34 pthread_timedjoin_np F
> +GLIBC_2.34 pthread_tryjoin_np F
>  GLIBC_2.34 sem_clockwait F
>  GLIBC_2.34 sem_close F
>  GLIBC_2.34 sem_destroy F
> @@ -2404,6 +2413,7 @@ GLIBC_2.34 sem_unlink F
>  GLIBC_2.34 sem_wait F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
> +GLIBC_2.34 thrd_join F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
>  GLIBC_2.34 tss_get F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index b8bbe71c59..25d7f53b0b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -23,16 +23,12 @@ GLIBC_2.16 pthread_create F
>  GLIBC_2.16 pthread_getconcurrency F
>  GLIBC_2.16 pthread_getcpuclockid F
>  GLIBC_2.16 pthread_getname_np F
> -GLIBC_2.16 pthread_join F
>  GLIBC_2.16 pthread_setaffinity_np F
>  GLIBC_2.16 pthread_setconcurrency F
>  GLIBC_2.16 pthread_setname_np F
>  GLIBC_2.16 pthread_setschedprio F
>  GLIBC_2.16 pthread_sigqueue F
> -GLIBC_2.16 pthread_timedjoin_np F
> -GLIBC_2.16 pthread_tryjoin_np F
>  GLIBC_2.18 pthread_getattr_default_np F
>  GLIBC_2.28 thrd_create F
> -GLIBC_2.28 thrd_join F
>  GLIBC_2.30 __libpthread_version_placeholder F
> -GLIBC_2.31 pthread_clockjoin_np F
> +GLIBC_2.31 __libpthread_version_placeholder F
> 

Ok.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory
  2021-05-10 13:25   ` Adhemerval Zanella
@ 2021-05-11  9:09     ` Florian Weimer
  0 siblings, 0 replies; 20+ messages in thread
From: Florian Weimer @ 2021-05-11  9:09 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

> LGTM, thanks.  Maybe combine with the patch that removes the stub
> version.
>
> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

Okay, I've squashed the two commits.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres into libc
  2021-05-10 16:45   ` Adhemerval Zanella
@ 2021-05-11  9:29     ` Florian Weimer
  0 siblings, 0 replies; 20+ messages in thread
From: Florian Weimer @ 2021-05-11  9:29 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Carlos O'Donell

* Adhemerval Zanella:

>> +/* Maximum size in kB of cache.  */
>> +static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default.  */
>
> This line seems to be too long.

It's exactly 79 characters long.  I've changed it so that it's shorter.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 6/8] nptl: Move __free_tcb into libc
  2021-05-10 16:49   ` Adhemerval Zanella
@ 2021-05-11  9:30     ` Florian Weimer
  0 siblings, 0 replies; 20+ messages in thread
From: Florian Weimer @ 2021-05-11  9:30 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> +void
>> +__nptl_free_tcb (struct pthread *pd)
>> +{
>> +  /* The thread is exiting now.  */
>> +  if (__builtin_expect (atomic_bit_test_set (&pd->cancelhandling,
>> +                                             TERMINATED_BIT) == 0, 1))
>
> Maybe use __glibc_likely here or just remove it, since it does not make
> to use in this short function.
>
>> +    {
>> +      /* Free TPP data.  */
>> +      if (__glibc_unlikely (pd->tpp != NULL))
>
> Same here, the loop is short enough that it should not matter.

I've removed both.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2021-05-11  9:29 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-10 12:37 [PATCH 0/8] nptl: Move pthread_detach and pthread_join into libc Florian Weimer
2021-05-10 12:37 ` [PATCH 1/8] nptl: Remove unused nptl/pthread_sigqueue.c stub implementation Florian Weimer
2021-05-10 13:21   ` Adhemerval Zanella
2021-05-10 12:37 ` [PATCH 2/8] nptl: Move pthread_sigqueue implementation into main nptl directory Florian Weimer
2021-05-10 13:25   ` Adhemerval Zanella
2021-05-11  9:09     ` Florian Weimer
2021-05-10 12:37 ` [PATCH 3/8] nptl: Remove always-disabled debugging support Florian Weimer
2021-05-10 13:47   ` Adhemerval Zanella
2021-05-10 12:37 ` [PATCH 4/8] nptl: Move pthread_setattr_default_np into libc Florian Weimer
2021-05-10 16:28   ` Adhemerval Zanella
2021-05-10 12:37 ` [PATCH 5/8] nptl: Move stack cache management, __libpthread_freeres " Florian Weimer
2021-05-10 16:45   ` Adhemerval Zanella
2021-05-11  9:29     ` Florian Weimer
2021-05-10 12:38 ` [PATCH 6/8] nptl: Move __free_tcb " Florian Weimer
2021-05-10 16:49   ` Adhemerval Zanella
2021-05-11  9:30     ` Florian Weimer
2021-05-10 12:38 ` [PATCH 7/8] nptl: Move pthread_detach, thrd_detach " Florian Weimer
2021-05-10 16:56   ` Adhemerval Zanella
2021-05-10 12:42 ` [PATCH 8/8] nptl: Move thread join functions " Florian Weimer
2021-05-10 16:58   ` Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).