* [PATCH 00/18] Repost of pending libpthread removal patches
@ 2021-03-12 17:48 Florian Weimer
2021-03-12 17:48 ` [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc Florian Weimer
` (17 more replies)
0 siblings, 18 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:48 UTC (permalink / raw)
To: libc-alpha
This series is a repost of:
<https://sourceware.org/pipermail/libc-alpha/2021-March/123202.html>
I've made some minor cleanups (removal of weak declarations of symbols
moved to libc from sysdeps/nptl/libc-lockP.h; this should help with
static linking of libpthread without crashes eventually). I had to move
pthread_once before __pthread_unwind_next because of its _Unwind_Resume
dependency. The patches after __pthread_unwind_next are new and remove
forwarder functionality, and also move pthread_exit.
As discussed on the GDB list, the nptl_db support for pthread_key_create
is unused by GDB, so I could not write a test for this.
Tested on i686-linux-gnu x86_64-linux-gnu. Built with
build-many-glibcs.py.
Thanks,
Florian
Florian Weimer (18):
nptl: Move pthread_mutex_consistent into libc
nptl: Move __pthread_cleanup_routine into libc
nptl: Move legacy unwinding implementation into libc
nptl: Move legacy cancelation handling into libc as compat symbols
nptl: Remove longjmp, siglongjmp from libpthread
Legacy unwinder: Remove definition of _Unwind_GetCFA
nptl: Move __pthread_cleanup_upto into libc
nptl: Move pthread_once and __pthread_once into libc
nptl: Move __pthread_unwind_next into libc
csu: Move calling main out of __libc_start_main_impl
nptl: Move internal __nptl_nthreads variable into libc
nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE
nptl: Move __pthread_keys global variable into libc
nptl: Move __nptl_deallocate_tsd into libc
nptl: Move pthread_exit into libc
nptl: Move pthread_setcancelstate into libc
nptl: Move pthread_setcanceltype into libc
nptl: Invoke the set_robust_list system call directly in fork
NEWS | 4 +-
csu/libc-start.c | 74 +-----------
elf/Makefile | 2 +
include/setjmp.h | 4 +-
libio/iopopen.c | 5 +-
misc/error.c | 19 +--
nptl/Makefile | 48 +++++---
nptl/Versions | 48 +++++---
nptl/cleanup_compat.c | 16 ++-
nptl/cleanup_defer_compat.c | 72 +++--------
nptl/cleanup_routine.c | 12 +-
nptl/forward.c | 28 -----
nptl/libc-cleanup.c | 64 +++++++++-
nptl/libc_pthread_init.c | 9 +-
nptl/nptl-init.c | 34 +-----
nptl/nptl_deallocate_tsd.c | 112 ++++++++++++++++++
.../nptl_nthreads.c | 19 +--
nptl/pt-longjmp.c | 49 --------
nptl/pthreadP.h | 48 ++++----
nptl/pthread_cancel.c | 10 +-
nptl/{pt-cleanup.c => pthread_cleanup_upto.c} | 2 +-
nptl/pthread_create.c | 98 ---------------
nptl/pthread_exit.c | 16 ++-
nptl/pthread_keys.c | 24 ++++
nptl/pthread_mutex_consistent.c | 22 +++-
nptl/pthread_once.c | 22 +++-
nptl/pthread_setcancelstate.c | 6 +-
nptl/pthread_setcanceltype.c | 3 +-
nptl/tst-cleanup4.c | 5 +
nptl/tst-cleanup4aux.c | 5 +
nptl/tst-pthread_exit-nothreads-static.c | 19 +++
nptl/tst-pthread_exit-nothreads.c | 28 +++++
nptl/unwind.c | 14 ++-
nptl/vars.c | 5 -
nptl_db/db-symbols.awk | 1 +
nptl_db/structs.def | 9 +-
setjmp/Versions | 4 -
stdlib/fmtmsg.c | 9 +-
sysdeps/arm/Makefile | 5 -
sysdeps/arm/nptl/unwind-forcedunwind.c | 25 ----
sysdeps/generic/libc_start_call_main.h | 24 ++++
sysdeps/generic/unwind-dw2.c | 8 --
sysdeps/generic/unwind-resume.c | 14 +++
.../unwind-resume.c} | 5 +-
sysdeps/nptl/fork.c | 14 +--
sysdeps/nptl/fork.h | 3 -
sysdeps/nptl/jmp-unwind.c | 8 +-
sysdeps/nptl/libc-lock.h | 59 ++++-----
sysdeps/nptl/libc-lockP.h | 45 +------
sysdeps/nptl/libc_start_call_main.h | 74 ++++++++++++
sysdeps/nptl/pthread-functions.h | 15 ---
sysdeps/nptl/pthread.h | 5 +-
sysdeps/nptl/unwind-forcedunwind.c | 64 ----------
sysdeps/posix/system.c | 5 +-
sysdeps/pthread/Makefile | 2 +-
sysdeps/pthread/tst-robust1.c | 4 +-
sysdeps/pthread/tst-robust8.c | 2 +-
sysdeps/pthread/tst-robust9.c | 4 +-
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 15 +++
.../sysv/linux/aarch64/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/alpha/libc.abilist | 15 +++
.../unix/sysv/linux/alpha/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/arc/libc.abilist | 15 +++
.../unix/sysv/linux/arc/libpthread.abilist | 13 --
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 15 +++
.../unix/sysv/linux/arm/be/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 15 +++
.../unix/sysv/linux/arm/le/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/csky/libc.abilist | 15 +++
.../unix/sysv/linux/csky/libpthread.abilist | 13 --
sysdeps/unix/sysv/linux/fatal-prepare.h | 4 +-
sysdeps/unix/sysv/linux/hppa/libc.abilist | 15 +++
.../unix/sysv/linux/hppa/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/i386/libc.abilist | 15 +++
.../unix/sysv/linux/i386/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/ia64/Makefile | 2 +-
sysdeps/unix/sysv/linux/ia64/libc.abilist | 15 +++
.../unix/sysv/linux/ia64/libpthread.abilist | 15 ---
.../sysv/linux/m68k/coldfire/libc.abilist | 15 +++
.../linux/m68k/coldfire/libpthread.abilist | 15 ---
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 15 +++
.../sysv/linux/m68k/m680x0/libpthread.abilist | 15 ---
.../sysv/linux/microblaze/be/libc.abilist | 15 +++
.../linux/microblaze/be/libpthread.abilist | 15 ---
.../sysv/linux/microblaze/le/libc.abilist | 15 +++
.../linux/microblaze/le/libpthread.abilist | 15 ---
.../sysv/linux/mips/mips32/fpu/libc.abilist | 15 +++
.../sysv/linux/mips/mips32/libpthread.abilist | 15 ---
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 15 +++
.../sysv/linux/mips/mips64/libpthread.abilist | 15 ---
.../sysv/linux/mips/mips64/n32/libc.abilist | 15 +++
.../sysv/linux/mips/mips64/n64/libc.abilist | 15 +++
sysdeps/unix/sysv/linux/nios2/libc.abilist | 15 +++
.../unix/sysv/linux/nios2/libpthread.abilist | 15 ---
.../linux/powerpc/powerpc32/fpu/libc.abilist | 15 +++
.../powerpc/powerpc32/libpthread.abilist | 17 ---
.../powerpc/powerpc32/nofpu/libc.abilist | 15 +++
.../linux/powerpc/powerpc64/be/libc.abilist | 15 +++
.../powerpc/powerpc64/be/libpthread.abilist | 17 ---
.../linux/powerpc/powerpc64/le/libc.abilist | 15 +++
.../powerpc/powerpc64/le/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c | 61 ----------
.../unix/sysv/linux/riscv/rv32/libc.abilist | 15 +++
.../sysv/linux/riscv/rv32/libpthread.abilist | 13 --
.../unix/sysv/linux/riscv/rv64/libc.abilist | 15 +++
.../sysv/linux/riscv/rv64/libpthread.abilist | 13 --
sysdeps/unix/sysv/linux/s390/Versions | 2 +-
sysdeps/unix/sysv/linux/s390/jmp-unwind.c | 7 +-
.../unix/sysv/linux/s390/libpthread-compat.c | 25 ++++
sysdeps/unix/sysv/linux/s390/pt-longjmp.c | 33 ------
.../unix/sysv/linux/s390/s390-32/libc.abilist | 15 +++
.../linux/s390/s390-32/libpthread.abilist | 18 +--
.../unix/sysv/linux/s390/s390-64/libc.abilist | 15 +++
.../linux/s390/s390-64/libpthread.abilist | 18 +--
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 15 +++
.../unix/sysv/linux/sh/be/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 15 +++
.../unix/sysv/linux/sh/le/libpthread.abilist | 15 ---
.../sysv/linux/sparc/sparc32/libc.abilist | 15 +++
.../linux/sparc/sparc32/libpthread.abilist | 15 ---
.../sysv/linux/sparc/sparc64/libc.abilist | 15 +++
.../linux/sparc/sparc64/libpthread.abilist | 15 ---
sysdeps/unix/sysv/linux/spawni.c | 5 +-
.../unix/sysv/linux/x86_64/64/libc.abilist | 15 +++
.../sysv/linux/x86_64/64/libpthread.abilist | 15 ---
.../unix/sysv/linux/x86_64/x32/libc.abilist | 15 +++
.../sysv/linux/x86_64/x32/libpthread.abilist | 15 ---
sysdeps/x86/nptl/pt-longjmp.c | 71 -----------
128 files changed, 1169 insertions(+), 1312 deletions(-)
create mode 100644 nptl/nptl_deallocate_tsd.c
rename sysdeps/arm/pt-arm-unwind-resume.S => nptl/nptl_nthreads.c (51%)
delete mode 100644 nptl/pt-longjmp.c
rename nptl/{pt-cleanup.c => pthread_cleanup_upto.c} (98%)
create mode 100644 nptl/pthread_keys.c
create mode 100644 nptl/tst-pthread_exit-nothreads-static.c
create mode 100644 nptl/tst-pthread_exit-nothreads.c
delete mode 100644 sysdeps/arm/nptl/unwind-forcedunwind.c
create mode 100644 sysdeps/generic/libc_start_call_main.h
rename sysdeps/{unix/sysv/linux/ia64/unwind-forcedunwind.c => ia64/unwind-resume.c} (87%)
create mode 100644 sysdeps/nptl/libc_start_call_main.h
delete mode 100644 sysdeps/nptl/unwind-forcedunwind.c
delete mode 100644 sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
create mode 100644 sysdeps/unix/sysv/linux/s390/libpthread-compat.c
delete mode 100644 sysdeps/unix/sysv/linux/s390/pt-longjmp.c
delete mode 100644 sysdeps/x86/nptl/pt-longjmp.c
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
@ 2021-03-12 17:48 ` Florian Weimer
2021-03-15 19:30 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 02/18] nptl: Move __pthread_cleanup_routine " Florian Weimer
` (16 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:48 UTC (permalink / raw)
To: libc-alpha
And deprecated pthread_mutex_consistent_np, its old name.
---
NEWS | 4 +++-
nptl/Makefile | 2 +-
nptl/Versions | 11 ++++++++--
nptl/pthread_mutex_consistent.c | 22 ++++++++++++++++---
sysdeps/nptl/pthread.h | 5 +++--
sysdeps/pthread/tst-robust1.c | 4 ++--
sysdeps/pthread/tst-robust8.c | 2 +-
sysdeps/pthread/tst-robust9.c | 4 ++--
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 3 +++
.../sysv/linux/aarch64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/alpha/libc.abilist | 3 +++
.../unix/sysv/linux/alpha/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arc/libc.abilist | 3 +++
.../unix/sysv/linux/arc/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 3 +++
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 3 +++
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/csky/libc.abilist | 3 +++
.../unix/sysv/linux/csky/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/hppa/libc.abilist | 3 +++
.../unix/sysv/linux/hppa/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/i386/libc.abilist | 3 +++
.../unix/sysv/linux/i386/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/ia64/libc.abilist | 3 +++
.../unix/sysv/linux/ia64/libpthread.abilist | 2 --
.../sysv/linux/m68k/coldfire/libc.abilist | 3 +++
.../linux/m68k/coldfire/libpthread.abilist | 2 --
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 3 +++
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
.../sysv/linux/microblaze/be/libc.abilist | 3 +++
.../linux/microblaze/be/libpthread.abilist | 2 --
.../sysv/linux/microblaze/le/libc.abilist | 3 +++
.../linux/microblaze/le/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/fpu/libc.abilist | 3 +++
.../sysv/linux/mips/mips32/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 3 +++
.../sysv/linux/mips/mips64/libpthread.abilist | 2 --
.../sysv/linux/mips/mips64/n32/libc.abilist | 3 +++
.../sysv/linux/mips/mips64/n64/libc.abilist | 3 +++
sysdeps/unix/sysv/linux/nios2/libc.abilist | 3 +++
.../unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../linux/powerpc/powerpc32/fpu/libc.abilist | 3 +++
.../powerpc/powerpc32/libpthread.abilist | 2 --
.../powerpc/powerpc32/nofpu/libc.abilist | 3 +++
.../linux/powerpc/powerpc64/be/libc.abilist | 3 +++
.../powerpc/powerpc64/be/libpthread.abilist | 2 --
.../linux/powerpc/powerpc64/le/libc.abilist | 3 +++
.../powerpc/powerpc64/le/libpthread.abilist | 2 --
.../unix/sysv/linux/riscv/rv32/libc.abilist | 3 +++
.../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
.../unix/sysv/linux/riscv/rv64/libc.abilist | 3 +++
.../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
.../unix/sysv/linux/s390/s390-32/libc.abilist | 3 +++
.../linux/s390/s390-32/libpthread.abilist | 2 --
.../unix/sysv/linux/s390/s390-64/libc.abilist | 3 +++
.../linux/s390/s390-64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 3 +++
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 3 +++
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
.../sysv/linux/sparc/sparc32/libc.abilist | 3 +++
.../linux/sparc/sparc32/libpthread.abilist | 2 --
.../sysv/linux/sparc/sparc64/libc.abilist | 3 +++
.../linux/sparc/sparc64/libpthread.abilist | 2 --
.../unix/sysv/linux/x86_64/64/libc.abilist | 3 +++
.../sysv/linux/x86_64/64/libpthread.abilist | 2 --
.../unix/sysv/linux/x86_64/x32/libc.abilist | 3 +++
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
69 files changed, 136 insertions(+), 72 deletions(-)
diff --git a/NEWS b/NEWS
index aa0f10a891..f9d15952f8 100644
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,9 @@ Major new features:
Deprecated and removed features, and other changes affecting compatibility:
- [Add deprecations, removals and changes affecting compatibility here]
+* The function pthread_mutex_consistent_np has been deprecated; programs
+ should use the equivalent standard function pthread_mutex_consistent
+ instead.
Changes to build and runtime requirements:
diff --git a/nptl/Makefile b/nptl/Makefile
index b51deff6a3..96bb47e152 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -71,6 +71,7 @@ routines = \
pthread_getaffinity \
pthread_getattr_np \
pthread_getschedparam \
+ pthread_mutex_consistent \
pthread_self \
pthread_setschedparam \
pthread_sigmask \
@@ -159,7 +160,6 @@ libpthread-routines = \
pthread_kill_other_threads \
pthread_mutex_cond_lock \
pthread_mutex_conf \
- pthread_mutex_consistent \
pthread_mutex_destroy \
pthread_mutex_getprioceiling \
pthread_mutex_init \
diff --git a/nptl/Versions b/nptl/Versions
index 039cff38aa..e38d98709d 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -55,6 +55,12 @@ libc {
GLIBC_2.3.4 {
pthread_attr_setaffinity_np;
}
+ GLIBC_2.4 {
+ pthread_mutex_consistent_np;
+ }
+ GLIBC_2.12 {
+ pthread_mutex_consistent;
+ }
# C11 thread symbols.
GLIBC_2.28 {
thrd_current;
@@ -70,6 +76,9 @@ libc {
pthread_getattr_np;
pthread_sigmask;
}
+ GLIBC_2.34 {
+ pthread_mutex_consistent;
+ }
GLIBC_PRIVATE {
__futex_abstimed_wait64;
__futex_abstimed_wait_cancelable64;
@@ -326,7 +335,6 @@ libpthread {
}
GLIBC_2.4 {
- pthread_mutex_consistent_np;
pthread_mutex_getprioceiling;
pthread_mutex_setprioceiling;
pthread_mutexattr_getprioceiling;
@@ -343,7 +351,6 @@ libpthread {
GLIBC_2.12 {
pthread_getname_np;
- pthread_mutex_consistent;
pthread_mutexattr_getrobust;
pthread_mutexattr_setrobust;
pthread_setname_np;
diff --git a/nptl/pthread_mutex_consistent.c b/nptl/pthread_mutex_consistent.c
index 937c7c4640..0a84063a2b 100644
--- a/nptl/pthread_mutex_consistent.c
+++ b/nptl/pthread_mutex_consistent.c
@@ -18,10 +18,10 @@
#include <errno.h>
#include <pthreadP.h>
-
+#include <shlib-compat.h>
int
-pthread_mutex_consistent (pthread_mutex_t *mutex)
+__pthread_mutex_consistent (pthread_mutex_t *mutex)
{
/* Test whether this is a robust mutex with a dead owner.
See concurrency notes regarding __kind in struct __pthread_mutex_s
@@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
return 0;
}
-weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
+versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
+ GLIBC_2_34);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
+/* Compat symbol with the old libc version, _np alias. */
+# undef pthread_mutex_consistent_np
+strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_1)
+compat_symbol (libc, __pthread_mutex_consistent_1,
+ pthread_mutex_consistent_np, GLIBC_2_4);
+#endif
+
+#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_34)
+/* Compat symbol with the old libc version. */
+strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_2)
+compat_symbol (libc, __pthread_mutex_consistent_2,
+ pthread_mutex_consistent, GLIBC_2_12);
+#endif
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..2ec2caec98 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -809,8 +809,9 @@ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
__THROW __nonnull ((1));
# ifdef __USE_GNU
-extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
- __THROW __nonnull ((1));
+# define pthread_mutex_consistent_np __glibc_macro_warning ("\
+pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent") \
+ pthread_mutex_consistent
# endif
#endif
diff --git a/sysdeps/pthread/tst-robust1.c b/sysdeps/pthread/tst-robust1.c
index d4b1d88a68..6342fcbbf7 100644
--- a/sysdeps/pthread/tst-robust1.c
+++ b/sysdeps/pthread/tst-robust1.c
@@ -241,14 +241,14 @@ do_test (void)
#endif
#ifndef NOT_CONSISTENT
- e = pthread_mutex_consistent_np (&m1);
+ e = pthread_mutex_consistent (&m1);
if (e != 0)
{
printf ("%ld: mutex_consistent m1 failed with error %d\n", round, e);
return 1;
}
- e = pthread_mutex_consistent_np (&m2);
+ e = pthread_mutex_consistent (&m2);
if (e != 0)
{
printf ("%ld: mutex_consistent m2 failed with error %d\n", round, e);
diff --git a/sysdeps/pthread/tst-robust8.c b/sysdeps/pthread/tst-robust8.c
index 27dd53d2c3..8f135cb516 100644
--- a/sysdeps/pthread/tst-robust8.c
+++ b/sysdeps/pthread/tst-robust8.c
@@ -92,7 +92,7 @@ mutex_timedlock of %d in thread %ld failed with %d\n",
}
if (e == EOWNERDEAD)
- pthread_mutex_consistent_np (&map[r]);
+ pthread_mutex_consistent (&map[r]);
if (e == 0 || e == EOWNERDEAD)
state[r] = 1;
diff --git a/sysdeps/pthread/tst-robust9.c b/sysdeps/pthread/tst-robust9.c
index befc14f2d8..532aebc4e9 100644
--- a/sysdeps/pthread/tst-robust9.c
+++ b/sysdeps/pthread/tst-robust9.c
@@ -14,10 +14,10 @@ tf (void *data)
int err = pthread_mutex_lock (&m);
if (err == EOWNERDEAD)
{
- err = pthread_mutex_consistent_np (&m);
+ err = pthread_mutex_consistent (&m);
if (err)
{
- puts ("pthread_mutex_consistent_np");
+ puts ("pthread_mutex_consistent");
exit (1);
}
}
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index bac795262d..231330e591 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1442,6 +1442,8 @@ GLIBC_2.17 pthread_exit F
GLIBC_2.17 pthread_getaffinity_np F
GLIBC_2.17 pthread_getattr_np F
GLIBC_2.17 pthread_getschedparam F
+GLIBC_2.17 pthread_mutex_consistent F
+GLIBC_2.17 pthread_mutex_consistent_np F
GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_init F
GLIBC_2.17 pthread_mutex_lock F
@@ -2172,3 +2174,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 336ee51e7e..1d4fffb5a6 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -102,8 +102,6 @@ GLIBC_2.17 pthread_key_create F
GLIBC_2.17 pthread_key_delete F
GLIBC_2.17 pthread_kill F
GLIBC_2.17 pthread_kill_other_threads_np F
-GLIBC_2.17 pthread_mutex_consistent F
-GLIBC_2.17 pthread_mutex_consistent_np F
GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_getprioceiling F
GLIBC_2.17 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 897f70db22..72c1c3ae6a 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1749,6 +1749,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x458
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x458
GLIBC_2.12 sys_nerr D 0x4
@@ -2254,6 +2255,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2437,6 +2439,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 5c87b9baa0..e97e4d4dd5 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 604d259ad6..180b1e6244 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1369,6 +1369,8 @@ GLIBC_2.32 pthread_exit F
GLIBC_2.32 pthread_getaffinity_np F
GLIBC_2.32 pthread_getattr_np F
GLIBC_2.32 pthread_getschedparam F
+GLIBC_2.32 pthread_mutex_consistent F
+GLIBC_2.32 pthread_mutex_consistent_np F
GLIBC_2.32 pthread_mutex_destroy F
GLIBC_2.32 pthread_mutex_init F
GLIBC_2.32 pthread_mutex_lock F
@@ -1932,3 +1934,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 1adcbecc2e..2f76de6bfc 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -116,8 +116,6 @@ GLIBC_2.32 pthread_key_delete F
GLIBC_2.32 pthread_kill F
GLIBC_2.32 pthread_kill_other_threads_np F
GLIBC_2.32 pthread_mutex_clocklock F
-GLIBC_2.32 pthread_mutex_consistent F
-GLIBC_2.32 pthread_mutex_consistent_np F
GLIBC_2.32 pthread_mutex_destroy F
GLIBC_2.32 pthread_mutex_getprioceiling F
GLIBC_2.32 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 094236f713..e3781f0e83 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -156,6 +157,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -1535,6 +1537,7 @@ GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getaffinity_np F
GLIBC_2.4 pthread_getattr_np F
GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b0bb1d0e01..a3516931d6 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
GLIBC_2.4 pthread_key_delete F
GLIBC_2.4 pthread_kill F
GLIBC_2.4 pthread_kill_other_threads_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 2bb4d31e81..0cd363cc2d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -153,6 +154,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -1532,6 +1534,7 @@ GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getaffinity_np F
GLIBC_2.4 pthread_getattr_np F
GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b0bb1d0e01..a3516931d6 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
GLIBC_2.4 pthread_key_delete F
GLIBC_2.4 pthread_kill F
GLIBC_2.4 pthread_kill_other_threads_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index d4291fecfb..c1e62a6df3 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1430,6 +1430,8 @@ GLIBC_2.29 pthread_exit F
GLIBC_2.29 pthread_getaffinity_np F
GLIBC_2.29 pthread_getattr_np F
GLIBC_2.29 pthread_getschedparam F
+GLIBC_2.29 pthread_mutex_consistent F
+GLIBC_2.29 pthread_mutex_consistent_np F
GLIBC_2.29 pthread_mutex_destroy F
GLIBC_2.29 pthread_mutex_init F
GLIBC_2.29 pthread_mutex_lock F
@@ -2116,3 +2118,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..f05530eb2a 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -113,8 +113,6 @@ GLIBC_2.29 pthread_key_create F
GLIBC_2.29 pthread_key_delete F
GLIBC_2.29 pthread_kill F
GLIBC_2.29 pthread_kill_other_threads_np F
-GLIBC_2.29 pthread_mutex_consistent F
-GLIBC_2.29 pthread_mutex_consistent_np F
GLIBC_2.29 pthread_mutex_destroy F
GLIBC_2.29 pthread_mutex_getprioceiling F
GLIBC_2.29 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 1fd2a862f6..50d9080eb6 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x404
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x404
GLIBC_2.12 sys_nerr D 0x4
@@ -2075,6 +2076,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2144,6 +2146,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index a7bb15be58..02dca5bd52 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 943331f01e..d172849c32 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1754,6 +1754,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2242,6 +2243,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2311,6 +2313,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 017a9d9a86..92acdbc721 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -224,7 +223,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index f530151bde..e9e82e5ec8 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
@@ -2107,6 +2108,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2176,6 +2178,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 6fb2e05072..1f9d0edbc9 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 6e76b6dcaa..b0c0d7208d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -34,6 +34,7 @@ GLIBC_2.12 __m68k_read_tp F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -157,6 +158,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0x98
GLIBC_2.4 _IO_2_1_stdin_ D 0x98
@@ -1515,6 +1517,7 @@ GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getaffinity_np F
GLIBC_2.4 pthread_getattr_np F
GLIBC_2.4 pthread_getschedparam F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b0bb1d0e01..a3516931d6 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
GLIBC_2.4 pthread_key_delete F
GLIBC_2.4 pthread_kill F
GLIBC_2.4 pthread_kill_other_threads_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 7541b8289f..c312a9e726 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1711,6 +1711,7 @@ GLIBC_2.12 __m68k_read_tp F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2187,6 +2188,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2256,6 +2258,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 017a9d9a86..92acdbc721 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -224,7 +223,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6cf1936c42..4e5f7336c3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1445,6 +1445,8 @@ GLIBC_2.18 pthread_exit F
GLIBC_2.18 pthread_getaffinity_np F
GLIBC_2.18 pthread_getattr_np F
GLIBC_2.18 pthread_getschedparam F
+GLIBC_2.18 pthread_mutex_consistent F
+GLIBC_2.18 pthread_mutex_consistent_np F
GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_init F
GLIBC_2.18 pthread_mutex_lock F
@@ -2167,3 +2169,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 9356f6183a..4849b99385 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -103,8 +103,6 @@ GLIBC_2.18 pthread_key_create F
GLIBC_2.18 pthread_key_delete F
GLIBC_2.18 pthread_kill F
GLIBC_2.18 pthread_kill_other_threads_np F
-GLIBC_2.18 pthread_mutex_consistent F
-GLIBC_2.18 pthread_mutex_consistent_np F
GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_getprioceiling F
GLIBC_2.18 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 98730ebcda..374e48889a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1445,6 +1445,8 @@ GLIBC_2.18 pthread_exit F
GLIBC_2.18 pthread_getaffinity_np F
GLIBC_2.18 pthread_getattr_np F
GLIBC_2.18 pthread_getschedparam F
+GLIBC_2.18 pthread_mutex_consistent F
+GLIBC_2.18 pthread_mutex_consistent_np F
GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_init F
GLIBC_2.18 pthread_mutex_lock F
@@ -2164,3 +2166,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 9356f6183a..4849b99385 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -103,8 +103,6 @@ GLIBC_2.18 pthread_key_create F
GLIBC_2.18 pthread_key_delete F
GLIBC_2.18 pthread_kill F
GLIBC_2.18 pthread_kill_other_threads_np F
-GLIBC_2.18 pthread_mutex_consistent F
-GLIBC_2.18 pthread_mutex_consistent_np F
GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_getprioceiling F
GLIBC_2.18 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 92fa6cbc73..f4c9a0e288 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
@@ -2158,6 +2159,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2225,6 +2227,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 7aff4d018b..23f58b6459 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -92,7 +92,6 @@ GLIBC_2.0 tcdrain F
GLIBC_2.0 write F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -225,7 +224,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 265a49e74e..1935dd7207 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
@@ -2156,6 +2157,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2223,6 +2225,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 7aff4d018b..23f58b6459 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -92,7 +92,6 @@ GLIBC_2.0 tcdrain F
GLIBC_2.0 write F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -225,7 +224,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index cfa5e1111b..130dd19d46 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
@@ -2164,6 +2165,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2231,6 +2233,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 8c03ac52cd..a8728b1a57 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1342,6 +1342,7 @@ GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
@@ -2158,6 +2159,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2225,6 +2227,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 17f5609e06..040ee6c0b6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1487,6 +1487,8 @@ GLIBC_2.21 pthread_exit F
GLIBC_2.21 pthread_getaffinity_np F
GLIBC_2.21 pthread_getattr_np F
GLIBC_2.21 pthread_getschedparam F
+GLIBC_2.21 pthread_mutex_consistent F
+GLIBC_2.21 pthread_mutex_consistent_np F
GLIBC_2.21 pthread_mutex_destroy F
GLIBC_2.21 pthread_mutex_init F
GLIBC_2.21 pthread_mutex_lock F
@@ -2205,3 +2207,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 73b4dfbd8e..0c7fe737a0 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -103,8 +103,6 @@ GLIBC_2.21 pthread_key_create F
GLIBC_2.21 pthread_key_delete F
GLIBC_2.21 pthread_kill F
GLIBC_2.21 pthread_kill_other_threads_np F
-GLIBC_2.21 pthread_mutex_consistent F
-GLIBC_2.21 pthread_mutex_consistent_np F
GLIBC_2.21 pthread_mutex_destroy F
GLIBC_2.21 pthread_mutex_getprioceiling F
GLIBC_2.21 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 76a16e2a6d..d51a3a1b32 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1715,6 +1715,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2214,6 +2215,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2397,6 +2399,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 0c68fb1b7c..7bdd5c1a03 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 697f072fd4..6b0a6ef07e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1715,6 +1715,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2247,6 +2248,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2442,6 +2444,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 2647bb51f1..d4fcc5479a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
@@ -2077,6 +2078,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2260,6 +2262,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index c7f6167250..335cda5763 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -215,7 +214,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 036b1c8345..bbe387fe61 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1531,6 +1531,8 @@ GLIBC_2.17 pthread_exit F
GLIBC_2.17 pthread_getaffinity_np F
GLIBC_2.17 pthread_getattr_np F
GLIBC_2.17 pthread_getschedparam F
+GLIBC_2.17 pthread_mutex_consistent F
+GLIBC_2.17 pthread_mutex_consistent_np F
GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_init F
GLIBC_2.17 pthread_mutex_lock F
@@ -2367,3 +2369,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 336ee51e7e..1d4fffb5a6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -102,8 +102,6 @@ GLIBC_2.17 pthread_key_create F
GLIBC_2.17 pthread_key_delete F
GLIBC_2.17 pthread_kill F
GLIBC_2.17 pthread_kill_other_threads_np F
-GLIBC_2.17 pthread_mutex_consistent F
-GLIBC_2.17 pthread_mutex_consistent_np F
GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_getprioceiling F
GLIBC_2.17 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index ff3225e16f..684acb6795 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1371,6 +1371,8 @@ GLIBC_2.33 pthread_exit F
GLIBC_2.33 pthread_getaffinity_np F
GLIBC_2.33 pthread_getattr_np F
GLIBC_2.33 pthread_getschedparam F
+GLIBC_2.33 pthread_mutex_consistent F
+GLIBC_2.33 pthread_mutex_consistent_np F
GLIBC_2.33 pthread_mutex_destroy F
GLIBC_2.33 pthread_mutex_init F
GLIBC_2.33 pthread_mutex_lock F
@@ -1934,3 +1936,4 @@ GLIBC_2.33 write F
GLIBC_2.33 writev F
GLIBC_2.33 wscanf F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 61b3c4ff7a..33b755ed10 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -116,8 +116,6 @@ GLIBC_2.33 pthread_key_delete F
GLIBC_2.33 pthread_kill F
GLIBC_2.33 pthread_kill_other_threads_np F
GLIBC_2.33 pthread_mutex_clocklock F
-GLIBC_2.33 pthread_mutex_consistent F
-GLIBC_2.33 pthread_mutex_consistent_np F
GLIBC_2.33 pthread_mutex_destroy F
GLIBC_2.33 pthread_mutex_getprioceiling F
GLIBC_2.33 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index fb5ad9909f..6f8afeb03e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1433,6 +1433,8 @@ GLIBC_2.27 pthread_exit F
GLIBC_2.27 pthread_getaffinity_np F
GLIBC_2.27 pthread_getattr_np F
GLIBC_2.27 pthread_getschedparam F
+GLIBC_2.27 pthread_mutex_consistent F
+GLIBC_2.27 pthread_mutex_consistent_np F
GLIBC_2.27 pthread_mutex_destroy F
GLIBC_2.27 pthread_mutex_init F
GLIBC_2.27 pthread_mutex_lock F
@@ -2134,3 +2136,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 894c474fcb..4be8886aed 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -102,8 +102,6 @@ GLIBC_2.27 pthread_key_create F
GLIBC_2.27 pthread_key_delete F
GLIBC_2.27 pthread_kill F
GLIBC_2.27 pthread_kill_other_threads_np F
-GLIBC_2.27 pthread_mutex_consistent F
-GLIBC_2.27 pthread_mutex_consistent_np F
GLIBC_2.27 pthread_mutex_destroy F
GLIBC_2.27 pthread_mutex_getprioceiling F
GLIBC_2.27 pthread_mutex_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index cead75acc5..a4b1c00c78 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1707,6 +1707,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2212,6 +2213,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2395,6 +2397,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index a198e22445..c3c66c7f6a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 31366dd7e6..c05c18c2bb 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
@@ -2113,6 +2114,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2296,6 +2298,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 6d166d5f97..fa4b4cf747 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index a3a8be8910..635a05bf2f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2082,6 +2083,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2151,6 +2153,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index a7bb15be58..02dca5bd52 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 8f505c5045..5b09a03eef 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2079,6 +2080,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2148,6 +2150,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index a7bb15be58..02dca5bd52 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 53ef6304f1..7019d97b8d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1708,6 +1708,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
@@ -2203,6 +2204,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2412,6 +2414,7 @@ GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
GLIBC_2.4 printf F
GLIBC_2.4 printf_size F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 qecvt F
GLIBC_2.4 qecvt_r F
GLIBC_2.4 qfcvt F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 5c87b9baa0..e97e4d4dd5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
GLIBC_2.1.2 __libpthread_version_placeholder F
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index eba0cb156d..deb4735664 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
@@ -2130,6 +2131,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2199,6 +2201,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 6fb2e05072..1f9d0edbc9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 17ce5dfd58..779b06605b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
+GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
@@ -2089,6 +2090,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2158,6 +2160,7 @@ GLIBC_2.4 open_wmemstream F
GLIBC_2.4 openat F
GLIBC_2.4 openat64 F
GLIBC_2.4 ppoll F
+GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 readlinkat F
GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index f85ab1d3cd..01d330cad7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -1,6 +1,5 @@
GLIBC_2.11 pthread_sigqueue F
GLIBC_2.12 pthread_getname_np F
-GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
@@ -215,7 +214,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
GLIBC_2.30 pthread_rwlock_clockwrlock F
GLIBC_2.30 sem_clockwait F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
GLIBC_2.4 pthread_mutexattr_getprioceiling F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 17a1c83903..a85d2af101 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1450,6 +1450,8 @@ GLIBC_2.16 pthread_exit F
GLIBC_2.16 pthread_getaffinity_np F
GLIBC_2.16 pthread_getattr_np F
GLIBC_2.16 pthread_getschedparam F
+GLIBC_2.16 pthread_mutex_consistent F
+GLIBC_2.16 pthread_mutex_consistent_np F
GLIBC_2.16 pthread_mutex_destroy F
GLIBC_2.16 pthread_mutex_init F
GLIBC_2.16 pthread_mutex_lock F
@@ -2186,3 +2188,4 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 0e24fcd6bf..b470f2eed5 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -102,8 +102,6 @@ GLIBC_2.16 pthread_key_create F
GLIBC_2.16 pthread_key_delete F
GLIBC_2.16 pthread_kill F
GLIBC_2.16 pthread_kill_other_threads_np F
-GLIBC_2.16 pthread_mutex_consistent F
-GLIBC_2.16 pthread_mutex_consistent_np F
GLIBC_2.16 pthread_mutex_destroy F
GLIBC_2.16 pthread_mutex_getprioceiling F
GLIBC_2.16 pthread_mutex_init F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 02/18] nptl: Move __pthread_cleanup_routine into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
2021-03-12 17:48 ` [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-15 19:53 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 03/18] nptl: Move legacy unwinding implementation " Florian Weimer
` (15 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
---
nptl/Makefile | 2 +-
nptl/Versions | 3 ++-
nptl/cleanup_routine.c | 12 ++++++++++--
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arc/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/arc/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/arm/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/arm/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/csky/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/csky/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/i386/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/i386/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 2 ++
.../unix/sysv/linux/m68k/coldfire/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 2 ++
.../unix/sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 2 ++
.../unix/sysv/linux/microblaze/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 2 ++
.../unix/sysv/linux/microblaze/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 2 ++
.../unix/sysv/linux/mips/mips32/libpthread.abilist | 1 -
.../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 2 ++
.../unix/sysv/linux/mips/mips64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 ++
sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 1 -
.../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 2 ++
.../sysv/linux/powerpc/powerpc32/libpthread.abilist | 1 -
.../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 2 ++
.../sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
.../linux/powerpc/powerpc64/be/libpthread.abilist | 1 -
.../sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
.../linux/powerpc/powerpc64/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 2 ++
.../unix/sysv/linux/riscv/rv32/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 2 ++
.../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 ++
.../unix/sysv/linux/x86_64/x32/libpthread.abilist | 1 -
64 files changed, 77 insertions(+), 33 deletions(-)
diff --git a/nptl/Makefile b/nptl/Makefile
index 96bb47e152..b951fcb77e 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -30,6 +30,7 @@ extra-libs-others := $(extra-libs)
routines = \
alloca_cutoff \
+ cleanup_routine \
elision-conf \
elision-lock \
elision-timed \
@@ -98,7 +99,6 @@ libpthread-routines = \
cleanup_compat \
cleanup_defer \
cleanup_defer_compat \
- cleanup_routine \
events \
flockfile \
ftrylockfile \
diff --git a/nptl/Versions b/nptl/Versions
index e38d98709d..f2db649f9d 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -49,6 +49,7 @@ libc {
pthread_cond_wait;
}
GLIBC_2.3.3 {
+ __pthread_cleanup_routine;
pthread_attr_setaffinity_np;
pthread_getaffinity_np;
}
@@ -77,6 +78,7 @@ libc {
pthread_sigmask;
}
GLIBC_2.34 {
+ __pthread_cleanup_routine;
pthread_mutex_consistent;
}
GLIBC_PRIVATE {
@@ -312,7 +314,6 @@ libpthread {
}
GLIBC_2.3.3 {
- __pthread_cleanup_routine;
__pthread_register_cancel;
__pthread_register_cancel_defer;
__pthread_unregister_cancel;
diff --git a/nptl/cleanup_routine.c b/nptl/cleanup_routine.c
index 973f088be7..9710bf58ec 100644
--- a/nptl/cleanup_routine.c
+++ b/nptl/cleanup_routine.c
@@ -17,11 +17,19 @@
<https://www.gnu.org/licenses/>. */
#include <pthread.h>
-
+#include <shlib-compat.h>
void
-__pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
+___pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
{
if (f->__do_it)
f->__cancel_routine (f->__cancel_arg);
}
+versioned_symbol (libc, ___pthread_cleanup_routine, __pthread_cleanup_routine,
+ GLIBC_2_34);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
+strong_alias (___pthread_cleanup_routine, __pthread_cleanup_routine_alias)
+compat_symbol (libc, __pthread_cleanup_routine_alias,
+ __pthread_cleanup_routine, GLIBC_2_3_3);
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 231330e591..a55f3d9667 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -338,6 +338,7 @@ GLIBC_2.17 __printf_fp F
GLIBC_2.17 __profile_frequency F
GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
+GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -2174,4 +2175,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 1d4fffb5a6..ad2492cb4c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.17 __lseek F
GLIBC_2.17 __open F
GLIBC_2.17 __open64 F
GLIBC_2.17 __pread64 F
-GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __pthread_getspecific F
GLIBC_2.17 __pthread_key_create F
GLIBC_2.17 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 72c1c3ae6a..54a11b7e76 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2147,6 +2147,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2255,6 +2256,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index e97e4d4dd5..1eff0da935 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 180b1e6244..a229125212 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -327,6 +327,7 @@ GLIBC_2.32 __printf_fp F
GLIBC_2.32 __profile_frequency F
GLIBC_2.32 __progname D 0x4
GLIBC_2.32 __progname_full D 0x4
+GLIBC_2.32 __pthread_cleanup_routine F
GLIBC_2.32 __ptsname_r_chk F
GLIBC_2.32 __pwrite64 F
GLIBC_2.32 __rawmemchr F
@@ -1934,4 +1935,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 2f76de6bfc..c635f1dac9 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -12,7 +12,6 @@ GLIBC_2.32 __lseek F
GLIBC_2.32 __open F
GLIBC_2.32 __open64 F
GLIBC_2.32 __pread64 F
-GLIBC_2.32 __pthread_cleanup_routine F
GLIBC_2.32 __pthread_getspecific F
GLIBC_2.32 __pthread_key_create F
GLIBC_2.32 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index e3781f0e83..cfc58ca510 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -157,6 +157,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
@@ -485,6 +486,7 @@ GLIBC_2.4 __printf_fp F
GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
+GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index a3516931d6..79c5f66cff 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
-GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_getspecific F
GLIBC_2.4 __pthread_key_create F
GLIBC_2.4 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 0cd363cc2d..e725ee6217 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -154,6 +154,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
@@ -482,6 +483,7 @@ GLIBC_2.4 __printf_fp F
GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
+GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index a3516931d6..79c5f66cff 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
-GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_getspecific F
GLIBC_2.4 __pthread_key_create F
GLIBC_2.4 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index c1e62a6df3..51d9d33b13 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -331,6 +331,7 @@ GLIBC_2.29 __printf_fp F
GLIBC_2.29 __profile_frequency F
GLIBC_2.29 __progname D 0x4
GLIBC_2.29 __progname_full D 0x4
+GLIBC_2.29 __pthread_cleanup_routine F
GLIBC_2.29 __ptsname_r_chk F
GLIBC_2.29 __pwrite64 F
GLIBC_2.29 __rawmemchr F
@@ -2118,4 +2119,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index f05530eb2a..e242edb9c3 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -12,7 +12,6 @@ GLIBC_2.29 __lseek F
GLIBC_2.29 __open F
GLIBC_2.29 __open64 F
GLIBC_2.29 __pread64 F
-GLIBC_2.29 __pthread_cleanup_routine F
GLIBC_2.29 __pthread_getspecific F
GLIBC_2.29 __pthread_key_create F
GLIBC_2.29 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 50d9080eb6..914aef5f35 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1996,6 +1996,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2076,6 +2077,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 02dca5bd52..8ce3580478 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index d172849c32..f7ca08f695 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2161,6 +2161,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2243,6 +2244,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 92acdbc721..d3fc0f2d70 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index e9e82e5ec8..a77ab9816b 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2028,6 +2028,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2108,6 +2109,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 1f9d0edbc9..d7000f415e 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index b0c0d7208d..49a3997d83 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -158,6 +158,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0x98
@@ -471,6 +472,7 @@ GLIBC_2.4 __printf_fp F
GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
+GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index a3516931d6..79c5f66cff 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
-GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_getspecific F
GLIBC_2.4 __pthread_key_create F
GLIBC_2.4 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index c312a9e726..9969b02829 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2105,6 +2105,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2188,6 +2189,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 92acdbc721..d3fc0f2d70 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 4e5f7336c3..eb6d753ae8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -339,6 +339,7 @@ GLIBC_2.18 __printf_fp F
GLIBC_2.18 __profile_frequency F
GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
+GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -2169,4 +2170,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 4849b99385..c096915557 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.18 __lseek F
GLIBC_2.18 __open F
GLIBC_2.18 __open64 F
GLIBC_2.18 __pread64 F
-GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __pthread_getspecific F
GLIBC_2.18 __pthread_key_create F
GLIBC_2.18 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 374e48889a..7c3d154267 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -339,6 +339,7 @@ GLIBC_2.18 __printf_fp F
GLIBC_2.18 __profile_frequency F
GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
+GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -2166,4 +2167,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 4849b99385..c096915557 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.18 __lseek F
GLIBC_2.18 __open F
GLIBC_2.18 __open64 F
GLIBC_2.18 __pread64 F
-GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __pthread_getspecific F
GLIBC_2.18 __pthread_key_create F
GLIBC_2.18 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f4c9a0e288..bb2c61d8b4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2079,6 +2079,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2159,6 +2160,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 23f58b6459..358a13524a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -200,7 +200,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 1935dd7207..7a418b2e12 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2077,6 +2077,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2157,6 +2158,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 23f58b6459..358a13524a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -200,7 +200,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 130dd19d46..29d9e4045a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2085,6 +2085,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2165,6 +2166,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index a8728b1a57..404789db07 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2078,6 +2078,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x400
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2159,6 +2160,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 040ee6c0b6..468444aa86 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -376,6 +376,7 @@ GLIBC_2.21 __printf_fp F
GLIBC_2.21 __profile_frequency F
GLIBC_2.21 __progname D 0x4
GLIBC_2.21 __progname_full D 0x4
+GLIBC_2.21 __pthread_cleanup_routine F
GLIBC_2.21 __ptsname_r_chk F
GLIBC_2.21 __pwrite64 F
GLIBC_2.21 __rawmemchr F
@@ -2207,4 +2208,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 0c7fe737a0..6379c1f86c 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.21 __lseek F
GLIBC_2.21 __open F
GLIBC_2.21 __open64 F
GLIBC_2.21 __pread64 F
-GLIBC_2.21 __pthread_cleanup_routine F
GLIBC_2.21 __pthread_getspecific F
GLIBC_2.21 __pthread_key_create F
GLIBC_2.21 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index d51a3a1b32..41ba4fdb29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2109,6 +2109,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2215,6 +2216,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 7bdd5c1a03..7c6e78f6ce 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 6b0a6ef07e..1d030db5f7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2142,6 +2142,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2248,6 +2249,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index d4fcc5479a..9f86b81d65 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1977,6 +1977,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2078,6 +2079,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 335cda5763..773d873bd1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -190,7 +190,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index bbe387fe61..599d06d56f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -424,6 +424,7 @@ GLIBC_2.17 __printf_fp F
GLIBC_2.17 __profile_frequency F
GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
+GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -2369,4 +2370,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 1d4fffb5a6..ad2492cb4c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.17 __lseek F
GLIBC_2.17 __open F
GLIBC_2.17 __open64 F
GLIBC_2.17 __pread64 F
-GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __pthread_getspecific F
GLIBC_2.17 __pthread_key_create F
GLIBC_2.17 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 684acb6795..9f0068ba1c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -324,6 +324,7 @@ GLIBC_2.33 __printf_fp F
GLIBC_2.33 __profile_frequency F
GLIBC_2.33 __progname D 0x4
GLIBC_2.33 __progname_full D 0x4
+GLIBC_2.33 __pthread_cleanup_routine F
GLIBC_2.33 __ptsname_r_chk F
GLIBC_2.33 __pwrite64 F
GLIBC_2.33 __rawmemchr F
@@ -1936,4 +1937,5 @@ GLIBC_2.33 write F
GLIBC_2.33 writev F
GLIBC_2.33 wscanf F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 33b755ed10..76484b8073 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -12,7 +12,6 @@ GLIBC_2.33 __lseek F
GLIBC_2.33 __open F
GLIBC_2.33 __open64 F
GLIBC_2.33 __pread64 F
-GLIBC_2.33 __pthread_cleanup_routine F
GLIBC_2.33 __pthread_getspecific F
GLIBC_2.33 __pthread_key_create F
GLIBC_2.33 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 6f8afeb03e..833d6f11d6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -335,6 +335,7 @@ GLIBC_2.27 __printf_fp F
GLIBC_2.27 __profile_frequency F
GLIBC_2.27 __progname D 0x8
GLIBC_2.27 __progname_full D 0x8
+GLIBC_2.27 __pthread_cleanup_routine F
GLIBC_2.27 __ptsname_r_chk F
GLIBC_2.27 __pwrite64 F
GLIBC_2.27 __rawmemchr F
@@ -2136,4 +2137,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 4be8886aed..2332ba5927 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.27 __lseek F
GLIBC_2.27 __open F
GLIBC_2.27 __open64 F
GLIBC_2.27 __pread64 F
-GLIBC_2.27 __pthread_cleanup_routine F
GLIBC_2.27 __pthread_getspecific F
GLIBC_2.27 __pthread_key_create F
GLIBC_2.27 __pthread_mutex_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a4b1c00c78..a3e732e82f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2118,6 +2118,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2213,6 +2214,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index c3c66c7f6a..28cf9cfcee 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -203,7 +203,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 c05c18c2bb..4443545ed0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2022,6 +2022,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2114,6 +2115,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index fa4b4cf747..5baa0fdd6f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -195,7 +195,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 635a05bf2f..f9cb4195cd 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2000,6 +2000,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2083,6 +2084,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 02dca5bd52..8ce3580478 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 5b09a03eef..e1ae67a464 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2000,6 +2000,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2080,6 +2081,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 02dca5bd52..8ce3580478 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 7019d97b8d..9ca458b1c5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2112,6 +2112,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2204,6 +2205,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index e97e4d4dd5..1eff0da935 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index deb4735664..6af3cc116b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2051,6 +2051,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2131,6 +2132,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 1f9d0edbc9..d7000f415e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 779b06605b..e267cc2a23 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2009,6 +2009,7 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
+GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2090,6 +2091,7 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 01d330cad7..f0271930eb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -192,7 +192,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_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 a85d2af101..50e860fe40 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -339,6 +339,7 @@ GLIBC_2.16 __printf_fp F
GLIBC_2.16 __profile_frequency F
GLIBC_2.16 __progname D 0x4
GLIBC_2.16 __progname_full D 0x4
+GLIBC_2.16 __pthread_cleanup_routine F
GLIBC_2.16 __ptsname_r_chk F
GLIBC_2.16 __pwrite64 F
GLIBC_2.16 __rawmemchr F
@@ -2188,4 +2189,5 @@ GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 pthread_mutex_consistent F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index b470f2eed5..aa9e127bad 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -13,7 +13,6 @@ GLIBC_2.16 __lseek F
GLIBC_2.16 __open F
GLIBC_2.16 __open64 F
GLIBC_2.16 __pread64 F
-GLIBC_2.16 __pthread_cleanup_routine F
GLIBC_2.16 __pthread_getspecific F
GLIBC_2.16 __pthread_key_create F
GLIBC_2.16 __pthread_mutex_destroy F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 03/18] nptl: Move legacy unwinding implementation into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
2021-03-12 17:48 ` [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc Florian Weimer
2021-03-12 17:49 ` [PATCH 02/18] nptl: Move __pthread_cleanup_routine " Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-15 20:02 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols Florian Weimer
` (14 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
It is still used internally. Since unwinding is now available
unconditionally, avoid indirect calls through function pointers loaded
from the stack by inlining the non-cancellation cleanup code. This
avoids a regression in security hardening.
The out-of-line __libc_cleanup_routine implementation is no longer
needed because the inline definition is now static __always_inline.
---
nptl/Versions | 2 +
nptl/cleanup_defer_compat.c | 56 ++--------------------------
nptl/libc-cleanup.c | 64 ++++++++++++++++++++++++++++++--
nptl/nptl-init.c | 2 -
sysdeps/nptl/libc-lock.h | 59 ++++++++++++++---------------
sysdeps/nptl/libc-lockP.h | 26 +------------
sysdeps/nptl/pthread-functions.h | 4 --
7 files changed, 97 insertions(+), 116 deletions(-)
diff --git a/nptl/Versions b/nptl/Versions
index f2db649f9d..e3eb686a04 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -86,6 +86,8 @@ libc {
__futex_abstimed_wait_cancelable64;
__libc_alloca_cutoff;
__libc_allocate_rtsig_private;
+ __libc_cleanup_pop_restore;
+ __libc_cleanup_push_defer;
__libc_current_sigrtmax_private;
__libc_current_sigrtmin_private;
__libc_dl_error_tsd;
diff --git a/nptl/cleanup_defer_compat.c b/nptl/cleanup_defer_compat.c
index 49ef53ea60..1957318208 100644
--- a/nptl/cleanup_defer_compat.c
+++ b/nptl/cleanup_defer_compat.c
@@ -17,41 +17,15 @@
<https://www.gnu.org/licenses/>. */
#include "pthreadP.h"
-
+#include <libc-lock.h>
void
_pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
void (*routine) (void *), void *arg)
{
- struct pthread *self = THREAD_SELF;
-
buffer->__routine = routine;
buffer->__arg = arg;
- buffer->__prev = THREAD_GETMEM (self, cleanup);
-
- int cancelhandling = THREAD_GETMEM (self, cancelhandling);
-
- /* Disable asynchronous cancellation for now. */
- if (__glibc_unlikely (cancelhandling & CANCELTYPE_BITMASK))
- while (1)
- {
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
- cancelhandling
- & ~CANCELTYPE_BITMASK,
- cancelhandling);
- if (__glibc_likely (curval == cancelhandling))
- /* Successfully replaced the value. */
- break;
-
- /* Prepare for the next round. */
- cancelhandling = curval;
- }
-
- buffer->__canceltype = (cancelhandling & CANCELTYPE_BITMASK
- ? PTHREAD_CANCEL_ASYNCHRONOUS
- : PTHREAD_CANCEL_DEFERRED);
-
- THREAD_SETMEM (self, cleanup, buffer);
+ __libc_cleanup_push_defer (buffer);
}
strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
@@ -60,31 +34,7 @@ void
_pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
int execute)
{
- struct pthread *self = THREAD_SELF;
-
- THREAD_SETMEM (self, cleanup, buffer->__prev);
-
- int cancelhandling;
- if (__builtin_expect (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED, 0)
- && ((cancelhandling = THREAD_GETMEM (self, cancelhandling))
- & CANCELTYPE_BITMASK) == 0)
- {
- while (1)
- {
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
- cancelhandling
- | CANCELTYPE_BITMASK,
- cancelhandling);
- if (__glibc_likely (curval == cancelhandling))
- /* Successfully replaced the value. */
- break;
-
- /* Prepare for the next round. */
- cancelhandling = curval;
- }
-
- CANCELLATION_P (self);
- }
+ __libc_cleanup_pop_restore (buffer);
/* If necessary call the cleanup routine after we removed the
current cleanup block from the list. */
diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c
index 61f97eceda..14ccfe9285 100644
--- a/nptl/libc-cleanup.c
+++ b/nptl/libc-cleanup.c
@@ -17,11 +17,69 @@
<https://www.gnu.org/licenses/>. */
#include "pthreadP.h"
+#include <tls.h>
+#include <libc-lock.h>
+void
+__libc_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer)
+{
+ struct pthread *self = THREAD_SELF;
+
+ buffer->__prev = THREAD_GETMEM (self, cleanup);
+
+ int cancelhandling = THREAD_GETMEM (self, cancelhandling);
+
+ /* Disable asynchronous cancellation for now. */
+ if (__glibc_unlikely (cancelhandling & CANCELTYPE_BITMASK))
+ while (1)
+ {
+ int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
+ cancelhandling
+ & ~CANCELTYPE_BITMASK,
+ cancelhandling);
+ if (__glibc_likely (curval == cancelhandling))
+ /* Successfully replaced the value. */
+ break;
+
+ /* Prepare for the next round. */
+ cancelhandling = curval;
+ }
+
+ buffer->__canceltype = (cancelhandling & CANCELTYPE_BITMASK
+ ? PTHREAD_CANCEL_ASYNCHRONOUS
+ : PTHREAD_CANCEL_DEFERRED);
+
+ THREAD_SETMEM (self, cleanup, buffer);
+}
+libc_hidden_def (__libc_cleanup_push_defer)
void
-__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
+__libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer)
{
- if (f->__do_it)
- f->__cancel_routine (f->__cancel_arg);
+ struct pthread *self = THREAD_SELF;
+
+ THREAD_SETMEM (self, cleanup, buffer->__prev);
+
+ int cancelhandling;
+ if (__builtin_expect (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED, 0)
+ && ((cancelhandling = THREAD_GETMEM (self, cancelhandling))
+ & CANCELTYPE_BITMASK) == 0)
+ {
+ while (1)
+ {
+ int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
+ cancelhandling
+ | CANCELTYPE_BITMASK,
+ cancelhandling);
+ if (__glibc_likely (curval == cancelhandling))
+ /* Successfully replaced the value. */
+ break;
+
+ /* Prepare for the next round. */
+ cancelhandling = curval;
+ }
+
+ CANCELLATION_P (self);
+ }
}
+libc_hidden_def (__libc_cleanup_pop_restore)
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 865ee8db29..c2b563cc68 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -96,8 +96,6 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_key_create = __pthread_key_create,
.ptr___pthread_getspecific = __pthread_getspecific,
.ptr___pthread_setspecific = __pthread_setspecific,
- .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
- .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
.ptr_nthreads = &__nptl_nthreads,
.ptr___pthread_unwind = &__pthread_unwind,
.ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
diff --git a/sysdeps/nptl/libc-lock.h b/sysdeps/nptl/libc-lock.h
index dea96121b3..56fe83f69f 100644
--- a/sysdeps/nptl/libc-lock.h
+++ b/sysdeps/nptl/libc-lock.h
@@ -143,39 +143,40 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
__libc_maybe_call (__pthread_mutex_unlock, (&(NAME).mutex), 0)
#endif
-/* Note that for I/O cleanup handling we are using the old-style
- cancel handling. It does not have to be integrated with C++ since
- no C++ code is called in the middle. The old-style handling is
- faster and the support is not going away. */
-extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
- void (*routine) (void *), void *arg);
-extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
- int execute);
+/* Put the unwind buffer BUFFER on the per-thread callback stack. The
+ caller must fill BUFFER->__routine and BUFFER->__arg before calling
+ this function. */
+void __libc_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer);
+libc_hidden_proto (__libc_cleanup_push_defer)
+/* Remove BUFFER from the unwind callback stack. The caller must invoke
+ the callback if desired. */
+void __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer);
+libc_hidden_proto (__libc_cleanup_pop_restore)
/* Start critical region with cleanup. */
-#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
- { struct _pthread_cleanup_buffer _buffer; \
- int _avail; \
- if (DOIT) { \
- _avail = PTFAVAIL (_pthread_cleanup_push_defer); \
- if (_avail) { \
- __libc_ptf_call_always (_pthread_cleanup_push_defer, (&_buffer, FCT, \
- ARG)); \
- } else { \
- _buffer.__routine = (FCT); \
- _buffer.__arg = (ARG); \
- } \
- } else { \
- _avail = 0; \
- }
+#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
+ { bool _cleanup_start_doit; \
+ struct _pthread_cleanup_buffer _buffer; \
+ /* Non-addresable copy of FCT, so that we avoid indirect calls on \
+ the non-unwinding path. */ \
+ void (*_cleanup_routine) (void *) = (FCT); \
+ _buffer.__arg = (ARG); \
+ if (DOIT) \
+ { \
+ _cleanup_start_doit = true; \
+ _buffer.__routine = _cleanup_routine; \
+ __libc_cleanup_push_defer (&_buffer); \
+ } \
+ else \
+ _cleanup_start_doit = false;
/* End critical region with cleanup. */
-#define __libc_cleanup_region_end(DOIT) \
- if (_avail) { \
- __libc_ptf_call_always (_pthread_cleanup_pop_restore, (&_buffer, DOIT));\
- } else if (DOIT) \
- _buffer.__routine (_buffer.__arg); \
- }
+#define __libc_cleanup_region_end(DOIT) \
+ if (_cleanup_start_doit) \
+ __libc_cleanup_pop_restore (&_buffer); \
+ if (DOIT) \
+ _cleanup_routine (_buffer.__arg); \
+ } /* matches __libc_cleanup_region_start */
/* Hide the definitions which are only supposed to be used inside libc in
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index 4a0b96e6d9..1a861b0d3f 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -251,32 +251,12 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
/* Get once control variable. */
#define __libc_once_get(ONCE_CONTROL) ((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
-/* Note that for I/O cleanup handling we are using the old-style
- cancel handling. It does not have to be integrated with C++ snce
- no C++ code is called in the middle. The old-style handling is
- faster and the support is not going away. */
-extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
- void (*routine) (void *), void *arg);
-extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer,
- int execute);
-extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
- void (*routine) (void *), void *arg);
-extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
- int execute);
-
-/* Sometimes we have to exit the block in the middle. */
-#define __libc_cleanup_end(DOIT) \
- if (_avail) { \
- __libc_ptf_call_always (_pthread_cleanup_pop_restore, (&_buffer, DOIT));\
- } else if (DOIT) \
- _buffer.__routine (_buffer.__arg)
-
/* __libc_cleanup_push and __libc_cleanup_pop depend on exception
handling and stack unwinding. */
#ifdef __EXCEPTIONS
/* Normal cleanup handling, based on C cleanup attribute. */
-__extern_inline void
+static __always_inline void
__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
{
if (f->__do_it)
@@ -396,8 +376,6 @@ weak_extern (__pthread_once)
weak_extern (__pthread_initialize)
weak_extern (__pthread_atfork)
weak_extern (__pthread_setcancelstate)
-weak_extern (_pthread_cleanup_push_defer)
-weak_extern (_pthread_cleanup_pop_restore)
# else
# pragma weak __pthread_mutex_init
# pragma weak __pthread_mutex_destroy
@@ -420,8 +398,6 @@ weak_extern (_pthread_cleanup_pop_restore)
# pragma weak __pthread_initialize
# pragma weak __pthread_atfork
# pragma weak __pthread_setcancelstate
-# pragma weak _pthread_cleanup_push_defer
-# pragma weak _pthread_cleanup_pop_restore
# endif
#endif
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 97a5c48939..4268084b66 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -57,10 +57,6 @@ struct pthread_functions
int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
void *(*ptr___pthread_getspecific) (pthread_key_t);
int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
- void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer *,
- void (*) (void *), void *);
- void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer *,
- int);
#define HAVE_PTR_NTHREADS
unsigned int *ptr_nthreads;
void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (2 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 03/18] nptl: Move legacy unwinding implementation " Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-16 14:09 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread Florian Weimer
` (13 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
This affects _pthread_cleanup_pop, _pthread_cleanup_pop_restore,
_pthread_cleanup_push, _pthread_cleanup_push_defer. The symbols
have been moved using scripts/move-symbol-to-libc.py.
No new symbol versions are added because the symbols are turned into
compatibility symbols at the same time.
---
nptl/Makefile | 15 ++++++++++----
nptl/Versions | 10 ++++++----
nptl/cleanup_compat.c | 16 +++++++++------
nptl/cleanup_defer_compat.c | 20 ++++++++++++-------
nptl/pthreadP.h | 17 ++++++++--------
nptl/tst-cleanup4.c | 5 +++++
nptl/tst-cleanup4aux.c | 5 +++++
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 4 ++++
.../sysv/linux/aarch64/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/alpha/libc.abilist | 4 ++++
.../unix/sysv/linux/alpha/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/arc/libc.abilist | 4 ++++
.../unix/sysv/linux/arc/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 4 ++++
.../unix/sysv/linux/arm/be/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 4 ++++
.../unix/sysv/linux/arm/le/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/csky/libc.abilist | 4 ++++
.../unix/sysv/linux/csky/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/hppa/libc.abilist | 4 ++++
.../unix/sysv/linux/hppa/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/i386/libc.abilist | 4 ++++
.../unix/sysv/linux/i386/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/ia64/libc.abilist | 4 ++++
.../unix/sysv/linux/ia64/libpthread.abilist | 4 ----
.../sysv/linux/m68k/coldfire/libc.abilist | 4 ++++
.../linux/m68k/coldfire/libpthread.abilist | 4 ----
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 4 ++++
.../sysv/linux/m68k/m680x0/libpthread.abilist | 4 ----
.../sysv/linux/microblaze/be/libc.abilist | 4 ++++
.../linux/microblaze/be/libpthread.abilist | 4 ----
.../sysv/linux/microblaze/le/libc.abilist | 4 ++++
.../linux/microblaze/le/libpthread.abilist | 4 ----
.../sysv/linux/mips/mips32/fpu/libc.abilist | 4 ++++
.../sysv/linux/mips/mips32/libpthread.abilist | 4 ----
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 4 ++++
.../sysv/linux/mips/mips64/libpthread.abilist | 4 ----
.../sysv/linux/mips/mips64/n32/libc.abilist | 4 ++++
.../sysv/linux/mips/mips64/n64/libc.abilist | 4 ++++
sysdeps/unix/sysv/linux/nios2/libc.abilist | 4 ++++
.../unix/sysv/linux/nios2/libpthread.abilist | 4 ----
.../linux/powerpc/powerpc32/fpu/libc.abilist | 4 ++++
.../powerpc/powerpc32/libpthread.abilist | 4 ----
.../powerpc/powerpc32/nofpu/libc.abilist | 4 ++++
.../linux/powerpc/powerpc64/be/libc.abilist | 4 ++++
.../powerpc/powerpc64/be/libpthread.abilist | 4 ----
.../linux/powerpc/powerpc64/le/libc.abilist | 4 ++++
.../powerpc/powerpc64/le/libpthread.abilist | 4 ----
.../unix/sysv/linux/riscv/rv32/libc.abilist | 4 ++++
.../sysv/linux/riscv/rv32/libpthread.abilist | 4 ----
.../unix/sysv/linux/riscv/rv64/libc.abilist | 4 ++++
.../sysv/linux/riscv/rv64/libpthread.abilist | 4 ----
.../unix/sysv/linux/s390/s390-32/libc.abilist | 4 ++++
.../linux/s390/s390-32/libpthread.abilist | 4 ----
.../unix/sysv/linux/s390/s390-64/libc.abilist | 4 ++++
.../linux/s390/s390-64/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 4 ++++
.../unix/sysv/linux/sh/be/libpthread.abilist | 4 ----
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 4 ++++
.../unix/sysv/linux/sh/le/libpthread.abilist | 4 ----
.../sysv/linux/sparc/sparc32/libc.abilist | 4 ++++
.../linux/sparc/sparc32/libpthread.abilist | 4 ----
.../sysv/linux/sparc/sparc64/libc.abilist | 4 ++++
.../linux/sparc/sparc64/libpthread.abilist | 4 ----
.../unix/sysv/linux/x86_64/64/libc.abilist | 4 ++++
.../sysv/linux/x86_64/64/libpthread.abilist | 4 ----
.../unix/sysv/linux/x86_64/x32/libc.abilist | 4 ++++
.../sysv/linux/x86_64/x32/libpthread.abilist | 4 ----
68 files changed, 186 insertions(+), 146 deletions(-)
diff --git a/nptl/Makefile b/nptl/Makefile
index b951fcb77e..147a8d3d59 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -30,6 +30,8 @@ extra-libs-others := $(extra-libs)
routines = \
alloca_cutoff \
+ cleanup_compat \
+ cleanup_defer_compat \
cleanup_routine \
elision-conf \
elision-lock \
@@ -96,9 +98,7 @@ libpthread-routines = \
$(pthread-compat-wrappers) \
cancellation \
cleanup \
- cleanup_compat \
cleanup_defer \
- cleanup_defer_compat \
events \
flockfile \
ftrylockfile \
@@ -344,7 +344,6 @@ tests = tst-attr2 tst-attr3 tst-default-attr \
tst-tsd3 tst-tsd4 \
tst-cancel4_1 tst-cancel4_2 \
tst-cancel7 tst-cancel17 tst-cancel24 \
- tst-cleanup4 \
tst-signal3 \
tst-exec4 tst-exec5 \
tst-stack2 tst-stack3 tst-stack4 \
@@ -418,7 +417,7 @@ endif
LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst
-tests += tst-cancelx7 tst-cancelx17 tst-cleanupx4
+tests += tst-cancelx7 tst-cancelx17
ifeq ($(build-shared),yes)
tests += tst-compat-forwarder tst-audit-threads
@@ -438,6 +437,14 @@ extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) \
tst-cleanup4aux.o tst-cleanupx4aux.o
test-extras += tst-cleanup4aux tst-cleanupx4aux
+# This test exercises compat symbols removed in glibc 2.34.
+ifdef have-GLIBC_2.33
+tests += tst-cleanup4
+ifeq ($(build-shared),yes)
+tests += tst-cleanupx4
+endif
+endif
+
tst-tls3mod.so-no-z-defs = yes
tst-tls5mod.so-no-z-defs = yes
tst-tls5moda.so-no-z-defs = yes
diff --git a/nptl/Versions b/nptl/Versions
index e3eb686a04..ff6eae2566 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -1,5 +1,9 @@
libc {
GLIBC_2.0 {
+ _pthread_cleanup_pop;
+ _pthread_cleanup_pop_restore;
+ _pthread_cleanup_push;
+ _pthread_cleanup_push_defer;
pthread_attr_destroy;
pthread_attr_getdetachstate;
pthread_attr_getinheritsched;
@@ -103,6 +107,8 @@ libc {
__pthread_attr_init;
__pthread_attr_setaffinity_np;
__pthread_attr_setsigmask_internal;
+ __pthread_cleanup_pop;
+ __pthread_cleanup_push;
__pthread_cond_destroy; # Used by the C11 threads.
__pthread_cond_init; # Used by the C11 threads.
__pthread_force_elision;
@@ -141,10 +147,6 @@ libpthread {
__sigaction;
__write;
_exit;
- _pthread_cleanup_pop;
- _pthread_cleanup_pop_restore;
- _pthread_cleanup_push;
- _pthread_cleanup_push_defer;
accept;
close;
connect;
diff --git a/nptl/cleanup_compat.c b/nptl/cleanup_compat.c
index fec88c2f86..b5fd657c38 100644
--- a/nptl/cleanup_compat.c
+++ b/nptl/cleanup_compat.c
@@ -16,12 +16,12 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
+#include <shlib-compat.h>
#include <stdlib.h>
#include "pthreadP.h"
-
void
-_pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
+__pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
void (*routine) (void *), void *arg)
{
struct pthread *self = THREAD_SELF;
@@ -32,11 +32,10 @@ _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
THREAD_SETMEM (self, cleanup, buffer);
}
-strong_alias (_pthread_cleanup_push, __pthread_cleanup_push)
-
+libc_hidden_def (__pthread_cleanup_push)
void
-_pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
+__pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
{
struct pthread *self __attribute ((unused)) = THREAD_SELF;
@@ -47,4 +46,9 @@ _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
if (execute)
buffer->__routine (buffer->__arg);
}
-strong_alias (_pthread_cleanup_pop, __pthread_cleanup_pop)
+libc_hidden_def (__pthread_cleanup_pop)
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libc, __pthread_cleanup_push, _pthread_cleanup_push, GLIBC_2_0);
+compat_symbol (libc, __pthread_cleanup_pop, _pthread_cleanup_pop, GLIBC_2_0);
+#endif /* SHLIB_COMPAT */
diff --git a/nptl/cleanup_defer_compat.c b/nptl/cleanup_defer_compat.c
index 1957318208..a172218b42 100644
--- a/nptl/cleanup_defer_compat.c
+++ b/nptl/cleanup_defer_compat.c
@@ -16,10 +16,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include "pthreadP.h"
-#include <libc-lock.h>
+#include <shlib-compat.h>
-void
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
+# include "pthreadP.h"
+# include <libc-lock.h>
+
+void attribute_compat_text_section
_pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
void (*routine) (void *), void *arg)
{
@@ -27,10 +30,10 @@ _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
buffer->__arg = arg;
__libc_cleanup_push_defer (buffer);
}
-strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
-
+compat_symbol (libc, _pthread_cleanup_push_defer,
+ _pthread_cleanup_push_defer, GLIBC_2_0);
-void
+void attribute_compat_text_section
_pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
int execute)
{
@@ -41,4 +44,7 @@ _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
if (execute)
buffer->__routine (buffer->__arg);
}
-strong_alias (_pthread_cleanup_pop_restore, __pthread_cleanup_pop_restore)
+compat_symbol (libc, _pthread_cleanup_pop_restore,
+ _pthread_cleanup_pop_restore, GLIBC_2_0);
+
+#endif /* SHLIB_COMPAT */
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index c8538de44f..781bc65c1c 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -585,11 +585,10 @@ libc_hidden_proto (__pthread_attr_setsigmask_internal)
extern __typeof (pthread_attr_getsigmask_np) __pthread_attr_getsigmask_np;
libc_hidden_proto (__pthread_attr_getsigmask_np)
-#if IS_IN (libpthread)
/* Special versions which use non-exported functions. */
extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
- void (*routine) (void *), void *arg)
- attribute_hidden;
+ void (*routine) (void *), void *arg);
+libc_hidden_proto (__pthread_cleanup_push)
/* Replace cleanup macros defined in <pthread.h> with internal
versions that don't depend on unwind info and better support
@@ -600,12 +599,13 @@ extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
__pthread_cleanup_push (&_buffer, (routine), (arg));
extern void __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer,
- int execute) attribute_hidden;
+ int execute);
+libc_hidden_proto (__pthread_cleanup_pop)
# undef pthread_cleanup_pop
# define pthread_cleanup_pop(execute) \
__pthread_cleanup_pop (&_buffer, (execute)); }
-# if defined __EXCEPTIONS && !defined __cplusplus
+#if defined __EXCEPTIONS && !defined __cplusplus
/* Structure to hold the cleanup handler information. */
struct __pthread_cleanup_combined_frame
{
@@ -646,7 +646,7 @@ __pthread_cleanup_combined_routine_voidptr (void *__arg)
}
}
-# define pthread_cleanup_combined_push(routine, arg) \
+# define pthread_cleanup_combined_push(routine, arg) \
do { \
void (*__cancel_routine) (void *) = (routine); \
struct __pthread_cleanup_combined_frame __clframe \
@@ -657,15 +657,14 @@ __pthread_cleanup_combined_routine_voidptr (void *__arg)
__pthread_cleanup_combined_routine_voidptr, \
&__clframe);
-# define pthread_cleanup_combined_pop(execute) \
+# define pthread_cleanup_combined_pop(execute) \
__pthread_cleanup_pop (&__clframe.__buffer, 0); \
__clframe.__do_it = 0; \
if (execute) \
__cancel_routine (__clframe.__cancel_arg); \
} while (0)
-# endif
-#endif
+#endif /* __EXCEPTIONS && !defined __cplusplus */
extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
void (*routine) (void *), void *arg);
diff --git a/nptl/tst-cleanup4.c b/nptl/tst-cleanup4.c
index 24c062db1a..4eb51580bc 100644
--- a/nptl/tst-cleanup4.c
+++ b/nptl/tst-cleanup4.c
@@ -17,6 +17,7 @@
<https://www.gnu.org/licenses/>. */
#include <pthread.h>
+#include <shlib-compat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -25,8 +26,12 @@
extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
void (*__routine) (void *),
void *__arg);
+compat_symbol_reference (libc, _pthread_cleanup_push,
+ _pthread_cleanup_push, GLIBC_2_0);
extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
int __execute);
+compat_symbol_reference (libc, _pthread_cleanup_pop,
+ _pthread_cleanup_pop, GLIBC_2_0);
static int fds[2];
static pthread_barrier_t b2;
diff --git a/nptl/tst-cleanup4aux.c b/nptl/tst-cleanup4aux.c
index d20730ddf2..7713f9c612 100644
--- a/nptl/tst-cleanup4aux.c
+++ b/nptl/tst-cleanup4aux.c
@@ -17,6 +17,7 @@
<https://www.gnu.org/licenses/>. */
#include <pthread.h>
+#include <shlib-compat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -24,8 +25,12 @@
extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
void (*__routine) (void *),
void *__arg);
+compat_symbol_reference (libc, _pthread_cleanup_push,
+ _pthread_cleanup_push, GLIBC_2_0);
extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
int __execute);
+compat_symbol_reference (libc, _pthread_cleanup_pop,
+ _pthread_cleanup_pop, GLIBC_2_0);
extern void clh (void *arg);
extern void fn0 (void);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index a55f3d9667..a585f7d30d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -538,6 +538,10 @@ GLIBC_2.17 _obstack_begin_1 F
GLIBC_2.17 _obstack_free F
GLIBC_2.17 _obstack_memory_used F
GLIBC_2.17 _obstack_newchunk F
+GLIBC_2.17 _pthread_cleanup_pop F
+GLIBC_2.17 _pthread_cleanup_pop_restore F
+GLIBC_2.17 _pthread_cleanup_push F
+GLIBC_2.17 _pthread_cleanup_push_defer F
GLIBC_2.17 _res D 0x238
GLIBC_2.17 _res_hconf D 0x48
GLIBC_2.17 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index ad2492cb4c..6047fa274f 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.17 __res_state F
GLIBC_2.17 __send F
GLIBC_2.17 __sigaction F
GLIBC_2.17 __write F
-GLIBC_2.17 _pthread_cleanup_pop F
-GLIBC_2.17 _pthread_cleanup_pop_restore F
-GLIBC_2.17 _pthread_cleanup_push F
-GLIBC_2.17 _pthread_cleanup_push_defer F
GLIBC_2.17 accept F
GLIBC_2.17 close F
GLIBC_2.17 connect F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 54a11b7e76..c9ac935ccf 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -277,6 +277,10 @@ GLIBC_2.0 _obstack_newchunk F
GLIBC_2.0 _outb F
GLIBC_2.0 _outl F
GLIBC_2.0 _outw F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x238
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 1eff0da935..5f8c13bb69 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index a229125212..27fecc5c8a 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -506,6 +506,10 @@ GLIBC_2.32 _obstack_begin_1 F
GLIBC_2.32 _obstack_free F
GLIBC_2.32 _obstack_memory_used F
GLIBC_2.32 _obstack_newchunk F
+GLIBC_2.32 _pthread_cleanup_pop F
+GLIBC_2.32 _pthread_cleanup_pop_restore F
+GLIBC_2.32 _pthread_cleanup_push F
+GLIBC_2.32 _pthread_cleanup_push_defer F
GLIBC_2.32 _res D 0x200
GLIBC_2.32 _res_hconf D 0x30
GLIBC_2.32 _setjmp F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index c635f1dac9..9713a20071 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -42,10 +42,6 @@ GLIBC_2.32 __res_state F
GLIBC_2.32 __send F
GLIBC_2.32 __sigaction F
GLIBC_2.32 __write F
-GLIBC_2.32 _pthread_cleanup_pop F
-GLIBC_2.32 _pthread_cleanup_pop_restore F
-GLIBC_2.32 _pthread_cleanup_push F
-GLIBC_2.32 _pthread_cleanup_push_defer F
GLIBC_2.32 accept F
GLIBC_2.32 call_once F
GLIBC_2.32 close F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index cfc58ca510..2383d95094 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -683,6 +683,10 @@ GLIBC_2.4 _obstack_begin_1 F
GLIBC_2.4 _obstack_free F
GLIBC_2.4 _obstack_memory_used F
GLIBC_2.4 _obstack_newchunk F
+GLIBC_2.4 _pthread_cleanup_pop F
+GLIBC_2.4 _pthread_cleanup_pop_restore F
+GLIBC_2.4 _pthread_cleanup_push F
+GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 _res D 0x200
GLIBC_2.4 _res_hconf D 0x30
GLIBC_2.4 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 79c5f66cff..c2e78416b8 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
GLIBC_2.4 __send F
GLIBC_2.4 __sigaction F
GLIBC_2.4 __write F
-GLIBC_2.4 _pthread_cleanup_pop F
-GLIBC_2.4 _pthread_cleanup_pop_restore F
-GLIBC_2.4 _pthread_cleanup_push F
-GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 accept F
GLIBC_2.4 close F
GLIBC_2.4 connect F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index e725ee6217..bb46b8b5e3 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -680,6 +680,10 @@ GLIBC_2.4 _obstack_begin_1 F
GLIBC_2.4 _obstack_free F
GLIBC_2.4 _obstack_memory_used F
GLIBC_2.4 _obstack_newchunk F
+GLIBC_2.4 _pthread_cleanup_pop F
+GLIBC_2.4 _pthread_cleanup_pop_restore F
+GLIBC_2.4 _pthread_cleanup_push F
+GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 _res D 0x200
GLIBC_2.4 _res_hconf D 0x30
GLIBC_2.4 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 79c5f66cff..c2e78416b8 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
GLIBC_2.4 __send F
GLIBC_2.4 __sigaction F
GLIBC_2.4 __write F
-GLIBC_2.4 _pthread_cleanup_pop F
-GLIBC_2.4 _pthread_cleanup_pop_restore F
-GLIBC_2.4 _pthread_cleanup_push F
-GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 accept F
GLIBC_2.4 close F
GLIBC_2.4 connect F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 51d9d33b13..684e451f83 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -515,6 +515,10 @@ GLIBC_2.29 _obstack_begin_1 F
GLIBC_2.29 _obstack_free F
GLIBC_2.29 _obstack_memory_used F
GLIBC_2.29 _obstack_newchunk F
+GLIBC_2.29 _pthread_cleanup_pop F
+GLIBC_2.29 _pthread_cleanup_pop_restore F
+GLIBC_2.29 _pthread_cleanup_push F
+GLIBC_2.29 _pthread_cleanup_push_defer F
GLIBC_2.29 _res D 0x200
GLIBC_2.29 _res_hconf D 0x30
GLIBC_2.29 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index e242edb9c3..bb8a51a51d 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -42,10 +42,6 @@ GLIBC_2.29 __res_state F
GLIBC_2.29 __send F
GLIBC_2.29 __sigaction F
GLIBC_2.29 __write F
-GLIBC_2.29 _pthread_cleanup_pop F
-GLIBC_2.29 _pthread_cleanup_pop_restore F
-GLIBC_2.29 _pthread_cleanup_push F
-GLIBC_2.29 _pthread_cleanup_push_defer F
GLIBC_2.29 accept F
GLIBC_2.29 call_once F
GLIBC_2.29 close F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 914aef5f35..8dde237f8b 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -502,6 +502,10 @@ GLIBC_2.2 _obstack_begin_1 F
GLIBC_2.2 _obstack_free F
GLIBC_2.2 _obstack_memory_used F
GLIBC_2.2 _obstack_newchunk F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x200
GLIBC_2.2 _res_hconf D 0x30
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 8ce3580478..8d7aa63a02 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index f7ca08f695..cc2226be23 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index d3fc0f2d70..ee156d6f49 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index a77ab9816b..438f3bd131 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -514,6 +514,10 @@ GLIBC_2.2 _obstack_newchunk F
GLIBC_2.2 _outb F
GLIBC_2.2 _outl F
GLIBC_2.2 _outw F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x238
GLIBC_2.2 _res_hconf D 0x48
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index d7000f415e..ab6a5cfb78 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 49a3997d83..5add3e607a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -671,6 +671,10 @@ GLIBC_2.4 _obstack_begin_1 F
GLIBC_2.4 _obstack_free F
GLIBC_2.4 _obstack_memory_used F
GLIBC_2.4 _obstack_newchunk F
+GLIBC_2.4 _pthread_cleanup_pop F
+GLIBC_2.4 _pthread_cleanup_pop_restore F
+GLIBC_2.4 _pthread_cleanup_push F
+GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 _res D 0x1fe
GLIBC_2.4 _res_hconf D 0x30
GLIBC_2.4 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 79c5f66cff..c2e78416b8 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
GLIBC_2.4 __send F
GLIBC_2.4 __sigaction F
GLIBC_2.4 __write F
-GLIBC_2.4 _pthread_cleanup_pop F
-GLIBC_2.4 _pthread_cleanup_pop_restore F
-GLIBC_2.4 _pthread_cleanup_push F
-GLIBC_2.4 _pthread_cleanup_push_defer F
GLIBC_2.4 accept F
GLIBC_2.4 close F
GLIBC_2.4 connect F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 9969b02829..2e7c9f9b47 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x1fe
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index d3fc0f2d70..ee156d6f49 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index eb6d753ae8..493f7ddaa0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -541,6 +541,10 @@ GLIBC_2.18 _obstack_begin_1 F
GLIBC_2.18 _obstack_free F
GLIBC_2.18 _obstack_memory_used F
GLIBC_2.18 _obstack_newchunk F
+GLIBC_2.18 _pthread_cleanup_pop F
+GLIBC_2.18 _pthread_cleanup_pop_restore F
+GLIBC_2.18 _pthread_cleanup_push F
+GLIBC_2.18 _pthread_cleanup_push_defer F
GLIBC_2.18 _res D 0x200
GLIBC_2.18 _res_hconf D 0x30
GLIBC_2.18 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index c096915557..1f516569ba 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.18 __res_state F
GLIBC_2.18 __send F
GLIBC_2.18 __sigaction F
GLIBC_2.18 __write F
-GLIBC_2.18 _pthread_cleanup_pop F
-GLIBC_2.18 _pthread_cleanup_pop_restore F
-GLIBC_2.18 _pthread_cleanup_push F
-GLIBC_2.18 _pthread_cleanup_push_defer F
GLIBC_2.18 accept F
GLIBC_2.18 close F
GLIBC_2.18 connect F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 7c3d154267..ec83b89aa3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -541,6 +541,10 @@ GLIBC_2.18 _obstack_begin_1 F
GLIBC_2.18 _obstack_free F
GLIBC_2.18 _obstack_memory_used F
GLIBC_2.18 _obstack_newchunk F
+GLIBC_2.18 _pthread_cleanup_pop F
+GLIBC_2.18 _pthread_cleanup_pop_restore F
+GLIBC_2.18 _pthread_cleanup_push F
+GLIBC_2.18 _pthread_cleanup_push_defer F
GLIBC_2.18 _res D 0x200
GLIBC_2.18 _res_hconf D 0x30
GLIBC_2.18 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index c096915557..1f516569ba 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.18 __res_state F
GLIBC_2.18 __send F
GLIBC_2.18 __sigaction F
GLIBC_2.18 __write F
-GLIBC_2.18 _pthread_cleanup_pop F
-GLIBC_2.18 _pthread_cleanup_pop_restore F
-GLIBC_2.18 _pthread_cleanup_push F
-GLIBC_2.18 _pthread_cleanup_push_defer F
GLIBC_2.18 accept F
GLIBC_2.18 close F
GLIBC_2.18 connect F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index bb2c61d8b4..cb0ab4bc19 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 358a13524a..903f49957f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 7a418b2e12..2be2623e99 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 358a13524a..903f49957f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 29d9e4045a..09147861b5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 404789db07..4a0208c8c8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -260,6 +260,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x238
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 468444aa86..078025a7d6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -582,6 +582,10 @@ GLIBC_2.21 _obstack_begin_1 F
GLIBC_2.21 _obstack_free F
GLIBC_2.21 _obstack_memory_used F
GLIBC_2.21 _obstack_newchunk F
+GLIBC_2.21 _pthread_cleanup_pop F
+GLIBC_2.21 _pthread_cleanup_pop_restore F
+GLIBC_2.21 _pthread_cleanup_push F
+GLIBC_2.21 _pthread_cleanup_push_defer F
GLIBC_2.21 _res D 0x200
GLIBC_2.21 _res_hconf D 0x30
GLIBC_2.21 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 6379c1f86c..cd41c7d42b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.21 __res_state F
GLIBC_2.21 __send F
GLIBC_2.21 __sigaction F
GLIBC_2.21 __write F
-GLIBC_2.21 _pthread_cleanup_pop F
-GLIBC_2.21 _pthread_cleanup_pop_restore F
-GLIBC_2.21 _pthread_cleanup_push F
-GLIBC_2.21 _pthread_cleanup_push_defer F
GLIBC_2.21 accept F
GLIBC_2.21 close F
GLIBC_2.21 connect F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 41ba4fdb29..bc79b844a5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -275,6 +275,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 7c6e78f6ce..589a865796 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 1d030db5f7..63c05472ed 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -275,6 +275,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 9f86b81d65..37e4ee564d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -561,6 +561,10 @@ GLIBC_2.3 _obstack_begin_1 F
GLIBC_2.3 _obstack_free F
GLIBC_2.3 _obstack_memory_used F
GLIBC_2.3 _obstack_newchunk F
+GLIBC_2.3 _pthread_cleanup_pop F
+GLIBC_2.3 _pthread_cleanup_pop_restore F
+GLIBC_2.3 _pthread_cleanup_push F
+GLIBC_2.3 _pthread_cleanup_push_defer F
GLIBC_2.3 _res D 0x238
GLIBC_2.3 _res_hconf D 0x48
GLIBC_2.3 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 773d873bd1..7c1553be29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -66,10 +66,6 @@ GLIBC_2.3 __res_state F
GLIBC_2.3 __send F
GLIBC_2.3 __sigaction F
GLIBC_2.3 __write F
-GLIBC_2.3 _pthread_cleanup_pop F
-GLIBC_2.3 _pthread_cleanup_pop_restore F
-GLIBC_2.3 _pthread_cleanup_push F
-GLIBC_2.3 _pthread_cleanup_push_defer F
GLIBC_2.3 accept F
GLIBC_2.3 close F
GLIBC_2.3 connect F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 599d06d56f..1888ec6e86 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -627,6 +627,10 @@ GLIBC_2.17 _obstack_begin_1 F
GLIBC_2.17 _obstack_free F
GLIBC_2.17 _obstack_memory_used F
GLIBC_2.17 _obstack_newchunk F
+GLIBC_2.17 _pthread_cleanup_pop F
+GLIBC_2.17 _pthread_cleanup_pop_restore F
+GLIBC_2.17 _pthread_cleanup_push F
+GLIBC_2.17 _pthread_cleanup_push_defer F
GLIBC_2.17 _res D 0x238
GLIBC_2.17 _res_hconf D 0x48
GLIBC_2.17 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index ad2492cb4c..6047fa274f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.17 __res_state F
GLIBC_2.17 __send F
GLIBC_2.17 __sigaction F
GLIBC_2.17 __write F
-GLIBC_2.17 _pthread_cleanup_pop F
-GLIBC_2.17 _pthread_cleanup_pop_restore F
-GLIBC_2.17 _pthread_cleanup_push F
-GLIBC_2.17 _pthread_cleanup_push_defer F
GLIBC_2.17 accept F
GLIBC_2.17 close F
GLIBC_2.17 connect F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 9f0068ba1c..8cd92b1abe 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -500,6 +500,10 @@ GLIBC_2.33 _obstack_begin_1 F
GLIBC_2.33 _obstack_free F
GLIBC_2.33 _obstack_memory_used F
GLIBC_2.33 _obstack_newchunk F
+GLIBC_2.33 _pthread_cleanup_pop F
+GLIBC_2.33 _pthread_cleanup_pop_restore F
+GLIBC_2.33 _pthread_cleanup_push F
+GLIBC_2.33 _pthread_cleanup_push_defer F
GLIBC_2.33 _res D 0x200
GLIBC_2.33 _res_hconf D 0x30
GLIBC_2.33 _setjmp F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 76484b8073..71e8f38003 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -42,10 +42,6 @@ GLIBC_2.33 __res_state F
GLIBC_2.33 __send F
GLIBC_2.33 __sigaction F
GLIBC_2.33 __write F
-GLIBC_2.33 _pthread_cleanup_pop F
-GLIBC_2.33 _pthread_cleanup_pop_restore F
-GLIBC_2.33 _pthread_cleanup_push F
-GLIBC_2.33 _pthread_cleanup_push_defer F
GLIBC_2.33 accept F
GLIBC_2.33 call_once F
GLIBC_2.33 close F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 833d6f11d6..894f01282f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -521,6 +521,10 @@ GLIBC_2.27 _obstack_begin_1 F
GLIBC_2.27 _obstack_free F
GLIBC_2.27 _obstack_memory_used F
GLIBC_2.27 _obstack_newchunk F
+GLIBC_2.27 _pthread_cleanup_pop F
+GLIBC_2.27 _pthread_cleanup_pop_restore F
+GLIBC_2.27 _pthread_cleanup_push F
+GLIBC_2.27 _pthread_cleanup_push_defer F
GLIBC_2.27 _res D 0x238
GLIBC_2.27 _res_hconf D 0x48
GLIBC_2.27 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 2332ba5927..f5f9baefb9 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.27 __res_state F
GLIBC_2.27 __send F
GLIBC_2.27 __sigaction F
GLIBC_2.27 __write F
-GLIBC_2.27 _pthread_cleanup_pop F
-GLIBC_2.27 _pthread_cleanup_pop_restore F
-GLIBC_2.27 _pthread_cleanup_push F
-GLIBC_2.27 _pthread_cleanup_push_defer F
GLIBC_2.27 accept F
GLIBC_2.27 close F
GLIBC_2.27 connect F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a3e732e82f..8788493ce0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 28cf9cfcee..7aa725ccae 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 4443545ed0..4596ab72b0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -519,6 +519,10 @@ GLIBC_2.2 _obstack_begin_1 F
GLIBC_2.2 _obstack_free F
GLIBC_2.2 _obstack_memory_used F
GLIBC_2.2 _obstack_newchunk F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x238
GLIBC_2.2 _res_hconf D 0x48
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 5baa0fdd6f..25da7ea8dc 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -47,10 +47,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index f9cb4195cd..ae16394e8a 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -505,6 +505,10 @@ GLIBC_2.2 _obstack_begin_1 F
GLIBC_2.2 _obstack_free F
GLIBC_2.2 _obstack_memory_used F
GLIBC_2.2 _obstack_newchunk F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x200
GLIBC_2.2 _res_hconf D 0x30
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 8ce3580478..8d7aa63a02 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index e1ae67a464..6e45427e90 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -505,6 +505,10 @@ GLIBC_2.2 _obstack_begin_1 F
GLIBC_2.2 _obstack_free F
GLIBC_2.2 _obstack_memory_used F
GLIBC_2.2 _obstack_newchunk F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x200
GLIBC_2.2 _res_hconf D 0x30
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 8ce3580478..8d7aa63a02 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 9ca458b1c5..080a036590 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -267,6 +267,10 @@ GLIBC_2.0 _obstack_begin_1 F
GLIBC_2.0 _obstack_free F
GLIBC_2.0 _obstack_memory_used F
GLIBC_2.0 _obstack_newchunk F
+GLIBC_2.0 _pthread_cleanup_pop F
+GLIBC_2.0 _pthread_cleanup_pop_restore F
+GLIBC_2.0 _pthread_cleanup_push F
+GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 _res D 0x200
GLIBC_2.0 _rpc_dtablesize F
GLIBC_2.0 _seterr_reply F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 1eff0da935..5f8c13bb69 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -24,10 +24,6 @@ GLIBC_2.0 __read F
GLIBC_2.0 __send F
GLIBC_2.0 __sigaction F
GLIBC_2.0 __write F
-GLIBC_2.0 _pthread_cleanup_pop F
-GLIBC_2.0 _pthread_cleanup_pop_restore F
-GLIBC_2.0 _pthread_cleanup_push F
-GLIBC_2.0 _pthread_cleanup_push_defer F
GLIBC_2.0 accept F
GLIBC_2.0 close F
GLIBC_2.0 connect F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 6af3cc116b..c8fb7da49f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -547,6 +547,10 @@ GLIBC_2.2 _obstack_begin_1 F
GLIBC_2.2 _obstack_free F
GLIBC_2.2 _obstack_memory_used F
GLIBC_2.2 _obstack_newchunk F
+GLIBC_2.2 _pthread_cleanup_pop F
+GLIBC_2.2 _pthread_cleanup_pop_restore F
+GLIBC_2.2 _pthread_cleanup_push F
+GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 _res D 0x238
GLIBC_2.2 _res_hconf D 0x48
GLIBC_2.2 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index d7000f415e..ab6a5cfb78 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
GLIBC_2.2 __send F
GLIBC_2.2 __sigaction F
GLIBC_2.2 __write F
-GLIBC_2.2 _pthread_cleanup_pop F
-GLIBC_2.2 _pthread_cleanup_pop_restore F
-GLIBC_2.2 _pthread_cleanup_push F
-GLIBC_2.2 _pthread_cleanup_push_defer F
GLIBC_2.2 accept F
GLIBC_2.2 close F
GLIBC_2.2 connect F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index e267cc2a23..cde6fdb49d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -508,6 +508,10 @@ GLIBC_2.2.5 _obstack_begin_1 F
GLIBC_2.2.5 _obstack_free F
GLIBC_2.2.5 _obstack_memory_used F
GLIBC_2.2.5 _obstack_newchunk F
+GLIBC_2.2.5 _pthread_cleanup_pop F
+GLIBC_2.2.5 _pthread_cleanup_pop_restore F
+GLIBC_2.2.5 _pthread_cleanup_push F
+GLIBC_2.2.5 _pthread_cleanup_push_defer F
GLIBC_2.2.5 _res D 0x238
GLIBC_2.2.5 _res_hconf D 0x48
GLIBC_2.2.5 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index f0271930eb..301c0817b8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -45,10 +45,6 @@ GLIBC_2.2.5 __res_state F
GLIBC_2.2.5 __send F
GLIBC_2.2.5 __sigaction F
GLIBC_2.2.5 __write F
-GLIBC_2.2.5 _pthread_cleanup_pop F
-GLIBC_2.2.5 _pthread_cleanup_pop_restore F
-GLIBC_2.2.5 _pthread_cleanup_push F
-GLIBC_2.2.5 _pthread_cleanup_push_defer F
GLIBC_2.2.5 accept F
GLIBC_2.2.5 close F
GLIBC_2.2.5 connect F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 50e860fe40..e772da1ec4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -542,6 +542,10 @@ GLIBC_2.16 _obstack_begin_1 F
GLIBC_2.16 _obstack_free F
GLIBC_2.16 _obstack_memory_used F
GLIBC_2.16 _obstack_newchunk F
+GLIBC_2.16 _pthread_cleanup_pop F
+GLIBC_2.16 _pthread_cleanup_pop_restore F
+GLIBC_2.16 _pthread_cleanup_push F
+GLIBC_2.16 _pthread_cleanup_push_defer F
GLIBC_2.16 _res D 0x200
GLIBC_2.16 _res_hconf D 0x30
GLIBC_2.16 _rpc_dtablesize F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index aa9e127bad..31322dfabb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -43,10 +43,6 @@ GLIBC_2.16 __res_state F
GLIBC_2.16 __send F
GLIBC_2.16 __sigaction F
GLIBC_2.16 __write F
-GLIBC_2.16 _pthread_cleanup_pop F
-GLIBC_2.16 _pthread_cleanup_pop_restore F
-GLIBC_2.16 _pthread_cleanup_push F
-GLIBC_2.16 _pthread_cleanup_push_defer F
GLIBC_2.16 accept F
GLIBC_2.16 close F
GLIBC_2.16 connect F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (3 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-16 14:13 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA Florian Weimer
` (12 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
The definitions in libc are sufficient, the forwarders are no longer
needed.
The symbols have been moved using scripts/move-symbol-to-libc.py.
s390-linux-gnu and s390x-linux-gnu need a new version placeholder
to keep the GLIBC_2.19 symbol version in libpthread.
Tested on i386-linux-gnu, powerpc64le-linux-gnu, s390x-linux-gnu,
x86_64-linux-gnu. Built with build-many-glibcs.py.
---
nptl/Makefile | 1 -
nptl/Versions | 2 -
nptl/pt-longjmp.c | 49 -------------
.../sysv/linux/aarch64/libpthread.abilist | 2 -
.../unix/sysv/linux/alpha/libpthread.abilist | 2 -
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 -
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 -
.../unix/sysv/linux/hppa/libpthread.abilist | 2 -
.../unix/sysv/linux/i386/libpthread.abilist | 2 -
.../unix/sysv/linux/ia64/libpthread.abilist | 2 -
.../linux/m68k/coldfire/libpthread.abilist | 2 -
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 -
.../linux/microblaze/be/libpthread.abilist | 2 -
.../linux/microblaze/le/libpthread.abilist | 2 -
.../sysv/linux/mips/mips32/libpthread.abilist | 2 -
.../sysv/linux/mips/mips64/libpthread.abilist | 2 -
.../unix/sysv/linux/nios2/libpthread.abilist | 2 -
.../powerpc/powerpc32/libpthread.abilist | 4 --
.../powerpc/powerpc64/be/libpthread.abilist | 4 --
.../powerpc/powerpc64/le/libpthread.abilist | 2 -
sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c | 61 ----------------
sysdeps/unix/sysv/linux/s390/Versions | 2 +-
.../unix/sysv/linux/s390/libpthread-compat.c | 25 +++++++
sysdeps/unix/sysv/linux/s390/pt-longjmp.c | 33 ---------
.../linux/s390/s390-32/libpthread.abilist | 5 +-
.../linux/s390/s390-64/libpthread.abilist | 5 +-
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 -
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 -
.../linux/sparc/sparc32/libpthread.abilist | 2 -
.../linux/sparc/sparc64/libpthread.abilist | 2 -
.../sysv/linux/x86_64/64/libpthread.abilist | 2 -
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 -
sysdeps/x86/nptl/pt-longjmp.c | 71 -------------------
33 files changed, 28 insertions(+), 276 deletions(-)
delete mode 100644 nptl/pt-longjmp.c
delete mode 100644 sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
create mode 100644 sysdeps/unix/sysv/linux/s390/libpthread-compat.c
delete mode 100644 sysdeps/unix/sysv/linux/s390/pt-longjmp.c
delete mode 100644 sysdeps/x86/nptl/pt-longjmp.c
diff --git a/nptl/Makefile b/nptl/Makefile
index 147a8d3d59..7e566675f2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -116,7 +116,6 @@ libpthread-routines = \
pt-cleanup \
pt-fcntl \
pt-interp \
- pt-longjmp \
pt-raise \
pt-system \
pthread_attr_getaffinity \
diff --git a/nptl/Versions b/nptl/Versions
index ff6eae2566..cf4d5b677d 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -155,7 +155,6 @@ libpthread {
fsync;
ftrylockfile;
funlockfile;
- longjmp;
lseek;
msync;
open;
@@ -205,7 +204,6 @@ libpthread {
sendmsg;
sendto;
sigaction;
- siglongjmp;
sigwait;
system;
tcdrain;
diff --git a/nptl/pt-longjmp.c b/nptl/pt-longjmp.c
deleted file mode 100644
index 3f903495dc..0000000000
--- a/nptl/pt-longjmp.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ABI compatibility for 'longjmp' and 'siglongjmp' symbols in libpthread ABI.
- 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 <setjmp.h>
-#include <shlib-compat.h>
-
-/* libpthread once had its own longjmp (and siglongjmp alias), though there
- was no apparent reason for it. There is no use in having a separate
- symbol in libpthread, but the historical ABI requires it. For static
- linking, there is no need to provide anything here--the libc version
- will be linked in. For shared library ABI compatibility, there must be
- longjmp and siglongjmp symbols in libpthread.so.
-
- With an IFUNC resolver, it would be possible to avoid the indirection,
- but the IFUNC resolver might run before the __libc_longjmp symbol has
- been relocated, in which case the IFUNC resolver would not be able to
- provide the correct address. */
-
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
-
-static void __attribute__ ((noreturn, used))
-longjmp_compat (jmp_buf env, int val)
-{
- __libc_longjmp (env, val);
-}
-
-strong_alias (longjmp_compat, longjmp_alias)
-compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0);
-
-strong_alias (longjmp_alias, siglongjmp_alias)
-compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0);
-
-#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 6047fa274f..884d97efca 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.17 flockfile F
GLIBC_2.17 fsync F
GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
-GLIBC_2.17 longjmp F
GLIBC_2.17 lseek F
GLIBC_2.17 lseek64 F
GLIBC_2.17 msync F
@@ -175,7 +174,6 @@ GLIBC_2.17 send F
GLIBC_2.17 sendmsg F
GLIBC_2.17 sendto F
GLIBC_2.17 sigaction F
-GLIBC_2.17 siglongjmp F
GLIBC_2.17 sigwait F
GLIBC_2.17 system F
GLIBC_2.17 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 5f8c13bb69..e17b5183ef 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index c2e78416b8..e75c83d47f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
GLIBC_2.4 fsync F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
-GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
@@ -204,7 +203,6 @@ GLIBC_2.4 send F
GLIBC_2.4 sendmsg F
GLIBC_2.4 sendto F
GLIBC_2.4 sigaction F
-GLIBC_2.4 siglongjmp F
GLIBC_2.4 sigwait F
GLIBC_2.4 system F
GLIBC_2.4 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index c2e78416b8..e75c83d47f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
GLIBC_2.4 fsync F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
-GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
@@ -204,7 +203,6 @@ GLIBC_2.4 send F
GLIBC_2.4 sendmsg F
GLIBC_2.4 sendto F
GLIBC_2.4 sigaction F
-GLIBC_2.4 siglongjmp F
GLIBC_2.4 sigwait F
GLIBC_2.4 system F
GLIBC_2.4 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 8d7aa63a02..740570ef37 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index ee156d6f49..0b8c5b9104 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index ab6a5cfb78..0565c43c10 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index c2e78416b8..e75c83d47f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
GLIBC_2.4 fsync F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
-GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
@@ -204,7 +203,6 @@ GLIBC_2.4 send F
GLIBC_2.4 sendmsg F
GLIBC_2.4 sendto F
GLIBC_2.4 sigaction F
-GLIBC_2.4 siglongjmp F
GLIBC_2.4 sigwait F
GLIBC_2.4 system F
GLIBC_2.4 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index ee156d6f49..0b8c5b9104 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 1f516569ba..3798ae24be 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.18 flockfile F
GLIBC_2.18 fsync F
GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
-GLIBC_2.18 longjmp F
GLIBC_2.18 lseek F
GLIBC_2.18 lseek64 F
GLIBC_2.18 msync F
@@ -177,7 +176,6 @@ GLIBC_2.18 send F
GLIBC_2.18 sendmsg F
GLIBC_2.18 sendto F
GLIBC_2.18 sigaction F
-GLIBC_2.18 siglongjmp F
GLIBC_2.18 sigwait F
GLIBC_2.18 system F
GLIBC_2.18 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 1f516569ba..3798ae24be 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.18 flockfile F
GLIBC_2.18 fsync F
GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
-GLIBC_2.18 longjmp F
GLIBC_2.18 lseek F
GLIBC_2.18 lseek64 F
GLIBC_2.18 msync F
@@ -177,7 +176,6 @@ GLIBC_2.18 send F
GLIBC_2.18 sendmsg F
GLIBC_2.18 sendto F
GLIBC_2.18 sigaction F
-GLIBC_2.18 siglongjmp F
GLIBC_2.18 sigwait F
GLIBC_2.18 system F
GLIBC_2.18 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 903f49957f..79da59eb81 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 903f49957f..79da59eb81 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index cd41c7d42b..9dadbc85cc 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.21 flockfile F
GLIBC_2.21 fsync F
GLIBC_2.21 ftrylockfile F
GLIBC_2.21 funlockfile F
-GLIBC_2.21 longjmp F
GLIBC_2.21 lseek F
GLIBC_2.21 lseek64 F
GLIBC_2.21 msync F
@@ -177,7 +176,6 @@ GLIBC_2.21 send F
GLIBC_2.21 sendmsg F
GLIBC_2.21 sendto F
GLIBC_2.21 sigaction F
-GLIBC_2.21 siglongjmp F
GLIBC_2.21 sigwait F
GLIBC_2.21 system F
GLIBC_2.21 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 589a865796..c852fcc147 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
@@ -209,11 +207,9 @@ GLIBC_2.3.3 pthread_condattr_setclock 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 longjmp 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.3.4 siglongjmp F
GLIBC_2.30 pthread_cond_clockwait F
GLIBC_2.30 pthread_mutex_clocklock F
GLIBC_2.30 pthread_rwlock_clockrdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 7c1553be29..b7d0c8b743 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -74,7 +74,6 @@ GLIBC_2.3 flockfile F
GLIBC_2.3 fsync F
GLIBC_2.3 ftrylockfile F
GLIBC_2.3 funlockfile F
-GLIBC_2.3 longjmp F
GLIBC_2.3 lseek F
GLIBC_2.3 lseek64 F
GLIBC_2.3 msync F
@@ -177,7 +176,6 @@ GLIBC_2.3 send F
GLIBC_2.3 sendmsg F
GLIBC_2.3 sendto F
GLIBC_2.3 sigaction F
-GLIBC_2.3 siglongjmp F
GLIBC_2.3 sigwait F
GLIBC_2.3 system F
GLIBC_2.3 tcdrain F
@@ -198,11 +196,9 @@ GLIBC_2.3.3 pthread_condattr_setclock 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 longjmp 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.3.4 siglongjmp F
GLIBC_2.30 pthread_cond_clockwait F
GLIBC_2.30 pthread_mutex_clocklock F
GLIBC_2.30 pthread_rwlock_clockrdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 6047fa274f..884d97efca 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.17 flockfile F
GLIBC_2.17 fsync F
GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
-GLIBC_2.17 longjmp F
GLIBC_2.17 lseek F
GLIBC_2.17 lseek64 F
GLIBC_2.17 msync F
@@ -175,7 +174,6 @@ GLIBC_2.17 send F
GLIBC_2.17 sendmsg F
GLIBC_2.17 sendto F
GLIBC_2.17 sigaction F
-GLIBC_2.17 siglongjmp F
GLIBC_2.17 sigwait F
GLIBC_2.17 system F
GLIBC_2.17 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c b/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
deleted file mode 100644
index ed6b2a5db1..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* 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 <setjmp.h>
-#include <stdlib.h>
-#include <bits/wordsize.h>
-#include "pthreadP.h"
-#include <shlib-compat.h>
-#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3_4)
-
-/* These functions are not declared anywhere since they shouldn't be
- used at another place but here. */
-extern void __novmx__libc_siglongjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
-extern void __novmx__libc_longjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
-
-
-void __novmx_siglongjmp (sigjmp_buf env, int val)
-{
- __novmx__libc_siglongjmp (env, val);
-}
-
-void __novmx_longjmp (jmp_buf env, int val)
-{
- __novmx__libc_longjmp (env, val);
-}
-
-compat_symbol (libpthread, __novmx_longjmp, longjmp, GLIBC_2_0);
-compat_symbol (libpthread, __novmx_siglongjmp, siglongjmp, GLIBC_2_0);
-#endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)) */
-
-void
-__vmx_longjmp (jmp_buf env, int val)
-{
- __libc_longjmp (env, val);
-}
-
-void
-__vmx_siglongjmp (jmp_buf env, int val)
-{
- __libc_siglongjmp (env, val);
-}
-
-versioned_symbol (libpthread, __vmx_longjmp, longjmp, GLIBC_2_3_4);
-versioned_symbol (libpthread, __vmx_siglongjmp, siglongjmp, GLIBC_2_3_4);
diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/Versions
index 55518a7e5f..548397fcff 100644
--- a/sysdeps/unix/sysv/linux/s390/Versions
+++ b/sysdeps/unix/sysv/linux/s390/Versions
@@ -11,6 +11,6 @@ libc {
libpthread {
GLIBC_2.19 {
- longjmp; siglongjmp;
+ __libpthread_version_placeholder;
}
}
diff --git a/sysdeps/unix/sysv/linux/s390/libpthread-compat.c b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c
new file mode 100644
index 0000000000..e8a7b6db5e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c
@@ -0,0 +1,25 @@
+/* Placeholder definitions to pull in removed symbol versions. s390 version.
+ Copyright (C) 2019-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 <nptl/libpthread-compat.c>
+
+/* GLIBC_2.19 was used by a longjmp compatibility symbol. */
+#if (SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20))
+compat_symbol_unique (libpthread,
+ __libpthread_version_placeholder, GLIBC_2_19);
+#endif
diff --git a/sysdeps/unix/sysv/linux/s390/pt-longjmp.c b/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
deleted file mode 100644
index 6e97ed538b..0000000000
--- a/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* 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/>.
-
- Versioned copy of nptl/pt-longjmp.c modified for versioning
- the reverted jmpbuf extension. */
-
-#include <shlib-compat.h>
-
-#include <nptl/pt-longjmp.c>
-
-#if SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
-/* In glibc release 2.19 new versions of longjmp-functions were introduced,
- but were reverted before 2.20. Thus both versions are the same function. */
-
-strong_alias (longjmp_alias, __v2longjmp)
-compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19);
-strong_alias (siglongjmp_alias, __v2siglongjmp)
-compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19);
-#endif /* SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 7aa725ccae..518a08ad1e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
@@ -130,8 +128,7 @@ GLIBC_2.12 pthread_mutexattr_setrobust 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 longjmp F
-GLIBC_2.19 siglongjmp F
+GLIBC_2.19 __libpthread_version_placeholder F
GLIBC_2.2 __open64 F
GLIBC_2.2 __pread64 F
GLIBC_2.2 __pthread_rwlock_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 25da7ea8dc..c21f7cfea6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -5,8 +5,7 @@ GLIBC_2.12 pthread_mutexattr_setrobust 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 longjmp F
-GLIBC_2.19 siglongjmp F
+GLIBC_2.19 __libpthread_version_placeholder F
GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
@@ -55,7 +54,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -159,7 +157,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 8d7aa63a02..740570ef37 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 8d7aa63a02..740570ef37 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 5f8c13bb69..e17b5183ef 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
GLIBC_2.0 fsync F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
-GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
GLIBC_2.0 open F
@@ -81,7 +80,6 @@ GLIBC_2.0 send F
GLIBC_2.0 sendmsg F
GLIBC_2.0 sendto F
GLIBC_2.0 sigaction F
-GLIBC_2.0 siglongjmp F
GLIBC_2.0 sigwait F
GLIBC_2.0 system F
GLIBC_2.0 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index ab6a5cfb78..0565c43c10 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
GLIBC_2.2 fsync F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
-GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2 send F
GLIBC_2.2 sendmsg F
GLIBC_2.2 sendto F
GLIBC_2.2 sigaction F
-GLIBC_2.2 siglongjmp F
GLIBC_2.2 sigwait F
GLIBC_2.2 system F
GLIBC_2.2 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 301c0817b8..f1255816b1 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -53,7 +53,6 @@ GLIBC_2.2.5 flockfile F
GLIBC_2.2.5 fsync F
GLIBC_2.2.5 ftrylockfile F
GLIBC_2.2.5 funlockfile F
-GLIBC_2.2.5 longjmp F
GLIBC_2.2.5 lseek F
GLIBC_2.2.5 lseek64 F
GLIBC_2.2.5 msync F
@@ -157,7 +156,6 @@ GLIBC_2.2.5 send F
GLIBC_2.2.5 sendmsg F
GLIBC_2.2.5 sendto F
GLIBC_2.2.5 sigaction F
-GLIBC_2.2.5 siglongjmp F
GLIBC_2.2.5 sigwait F
GLIBC_2.2.5 system F
GLIBC_2.2.5 tcdrain F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 31322dfabb..fdaff69ea6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.16 flockfile F
GLIBC_2.16 fsync F
GLIBC_2.16 ftrylockfile F
GLIBC_2.16 funlockfile F
-GLIBC_2.16 longjmp F
GLIBC_2.16 lseek F
GLIBC_2.16 lseek64 F
GLIBC_2.16 msync F
@@ -175,7 +174,6 @@ GLIBC_2.16 send F
GLIBC_2.16 sendmsg F
GLIBC_2.16 sendto F
GLIBC_2.16 sigaction F
-GLIBC_2.16 siglongjmp F
GLIBC_2.16 sigwait F
GLIBC_2.16 system F
GLIBC_2.16 tcdrain F
diff --git a/sysdeps/x86/nptl/pt-longjmp.c b/sysdeps/x86/nptl/pt-longjmp.c
deleted file mode 100644
index 77b32667ee..0000000000
--- a/sysdeps/x86/nptl/pt-longjmp.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* ABI compatibility for 'longjmp' and 'siglongjmp' symbols in libpthread ABI.
- X86 version.
- Copyright (C) 1918-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 <pthreadP.h>
-#include <jmp_buf-ssp.h>
-
-#ifdef __x86_64__
-# define SHADOW_STACK_POINTER_SIZE 8
-#else
-# define SHADOW_STACK_POINTER_SIZE 4
-#endif
-
-/* Assert that the priv field in struct pthread_unwind_buf has space
- to store shadow stack pointer. */
-_Static_assert ((offsetof (struct pthread_unwind_buf, priv)
- <= SHADOW_STACK_POINTER_OFFSET)
- && ((offsetof (struct pthread_unwind_buf, priv)
- + sizeof (((struct pthread_unwind_buf *) 0)->priv))
- >= (SHADOW_STACK_POINTER_OFFSET
- + SHADOW_STACK_POINTER_SIZE)),
- "Shadow stack pointer is not within private storage "
- "of pthread_unwind_buf.");
-
-#include <shlib-compat.h>
-
-/* libpthread once had its own longjmp (and siglongjmp alias), though there
- was no apparent reason for it. There is no use in having a separate
- symbol in libpthread, but the historical ABI requires it. For static
- linking, there is no need to provide anything here--the libc version
- will be linked in. For shared library ABI compatibility, there must be
- longjmp and siglongjmp symbols in libpthread.so.
-
- With an IFUNC resolver, it would be possible to avoid the indirection,
- but the IFUNC resolver might run before the __libc_longjmp symbol has
- been relocated, in which case the IFUNC resolver would not be able to
- provide the correct address. */
-
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
-
-static void __attribute__ ((noreturn, used))
-longjmp_compat (jmp_buf env, int val)
-{
- /* NB: We call __libc_siglongjmp, instead of __libc_longjmp, since
- __libc_longjmp is a private interface for cancellation which
- doesn't restore shadow stack register. */
- __libc_siglongjmp (env, val);
-}
-
-strong_alias (longjmp_compat, longjmp_alias)
-compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0);
-
-strong_alias (longjmp_alias, siglongjmp_alias)
-compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0);
-
-#endif
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (4 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-16 14:14 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc Florian Weimer
` (11 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
It is not actually used by the legacy unwinder linked into
libc.so, and it conflicts with the unwind-link functionality
in libpthread.
---
sysdeps/generic/unwind-dw2.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c
index 618fa8885f..da971279be 100644
--- a/sysdeps/generic/unwind-dw2.c
+++ b/sysdeps/generic/unwind-dw2.c
@@ -177,14 +177,6 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
return * (_Unwind_Word *) context->reg[index];
}
-/* Get the value of the CFA as saved in CONTEXT. */
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
- return (_Unwind_Ptr) context->cfa;
-}
-
/* Overwrite the saved value for register REG in CONTEXT with VAL. */
inline void
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (5 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-16 14:35 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 08/18] nptl: Move pthread_once and __pthread_once " Florian Weimer
` (10 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
This internal symbol is used as part of the longjmp implementation.
Rename the file from nptl/pt-cleanup.c to nptl/pthread_cleanup_upto.c
so that the pt-* files remain restricted to libpthread.
---
nptl/Makefile | 2 +-
nptl/Versions | 1 +
nptl/nptl-init.c | 1 -
nptl/pthreadP.h | 4 +---
nptl/{pt-cleanup.c => pthread_cleanup_upto.c} | 2 +-
sysdeps/nptl/jmp-unwind.c | 8 ++------
sysdeps/nptl/pthread-functions.h | 1 -
sysdeps/unix/sysv/linux/s390/jmp-unwind.c | 7 ++-----
8 files changed, 8 insertions(+), 18 deletions(-)
rename nptl/{pt-cleanup.c => pthread_cleanup_upto.c} (98%)
diff --git a/nptl/Makefile b/nptl/Makefile
index 7e566675f2..8847c4dd49 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -66,6 +66,7 @@ routines = \
pthread_attr_setscope \
pthread_attr_setsigmask \
pthread_attr_setsigmask_internal \
+ pthread_cleanup_upto \
pthread_cond_destroy \
pthread_cond_init \
pthread_condattr_destroy \
@@ -113,7 +114,6 @@ libpthread-routines = \
old_pthread_cond_timedwait \
old_pthread_cond_wait \
pt-allocrtsig \
- pt-cleanup \
pt-fcntl \
pt-interp \
pt-raise \
diff --git a/nptl/Versions b/nptl/Versions
index cf4d5b677d..8fa0d178db 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -109,6 +109,7 @@ libc {
__pthread_attr_setsigmask_internal;
__pthread_cleanup_pop;
__pthread_cleanup_push;
+ __pthread_cleanup_upto;
__pthread_cond_destroy; # Used by the C11 threads.
__pthread_cond_init; # Used by the C11 threads.
__pthread_force_elision;
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index c2b563cc68..41527dcad1 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -88,7 +88,6 @@ static const struct pthread_functions pthread_functions =
.ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
.ptr___pthread_setcancelstate = __pthread_setcancelstate,
.ptr_pthread_setcanceltype = __pthread_setcanceltype,
- .ptr___pthread_cleanup_upto = __pthread_cleanup_upto,
.ptr___pthread_once = __pthread_once,
.ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
.ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 781bc65c1c..8f3d2cc8c9 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -332,9 +332,7 @@ extern int __make_stacks_executable (void **stack_endp) attribute_hidden;
/* longjmp handling. */
extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe);
-#if IS_IN (libpthread)
-hidden_proto (__pthread_cleanup_upto)
-#endif
+libc_hidden_proto (__pthread_cleanup_upto)
/* Functions with versioned interfaces. */
diff --git a/nptl/pt-cleanup.c b/nptl/pthread_cleanup_upto.c
similarity index 98%
rename from nptl/pt-cleanup.c
rename to nptl/pthread_cleanup_upto.c
index 541533230d..89da3e5229 100644
--- a/nptl/pt-cleanup.c
+++ b/nptl/pthread_cleanup_upto.c
@@ -59,4 +59,4 @@ __pthread_cleanup_upto (__jmp_buf target, char *targetframe)
THREAD_SETMEM (self, cleanup, cbuf);
}
-hidden_def (__pthread_cleanup_upto)
+libc_hidden_def (__pthread_cleanup_upto)
diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
index a79c792e82..96c4862c74 100644
--- a/sysdeps/nptl/jmp-unwind.c
+++ b/sysdeps/nptl/jmp-unwind.c
@@ -19,14 +19,10 @@
#include <setjmp.h>
#include <stddef.h>
#include <libc-lock.h>
-
-extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
-#pragma weak __pthread_cleanup_upto
-
+#include <nptl/pthreadP.h>
void
_longjmp_unwind (jmp_buf env, int val)
{
- __libc_ptf_call (__pthread_cleanup_upto, (env->__jmpbuf,
- CURRENT_STACK_FRAME), 0);
+ __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME);
}
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 4268084b66..1bbe609598 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -49,7 +49,6 @@ struct pthread_functions
int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
int (*ptr___pthread_setcancelstate) (int, int *);
int (*ptr_pthread_setcanceltype) (int, int *);
- void (*ptr___pthread_cleanup_upto) (__jmp_buf, char *);
int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
diff --git a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
index 2bdde57ec7..8e0399a3e9 100644
--- a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
+++ b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
@@ -19,15 +19,12 @@
#include <setjmp.h>
#include <stddef.h>
#include <libc-lock.h>
-
-extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
-#pragma weak __pthread_cleanup_upto
-
+#include <nptl/pthreadP.h>
void
_longjmp_unwind (jmp_buf env, int val)
{
char local_var;
- __libc_ptf_call (__pthread_cleanup_upto, (env->__jmpbuf, &local_var), 0);
+ __pthread_cleanup_upto (env->__jmpbuf, &local_var);
}
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 08/18] nptl: Move pthread_once and __pthread_once into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (6 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-15 19:24 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 09/18] nptl: Move __pthread_unwind_next " Florian Weimer
` (9 subsequent siblings)
17 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
And also the fork generation counter, __fork_generation. This
eliminates the need for __fork_generation_pointer.
To simplify symbol management, call pthread_once under the name
___libc_once. (Creating a hidden proto and setting the symbol
version at the same time is difficult.)
call_once remains in libpthread and calls the exported __pthread_once
symbol.
pthread_once and __pthread_once have been moved using
scripts/move-symbol-to-libc.py.
---
nptl/Makefile | 2 +-
nptl/Versions | 7 ++++--
nptl/libc_pthread_init.c | 8 +------
nptl/nptl-init.c | 4 +---
nptl/pthreadP.h | 7 ++----
nptl/pthread_once.c | 22 +++++++++++++++----
sysdeps/nptl/fork.c | 3 +--
sysdeps/nptl/fork.h | 3 ---
sysdeps/nptl/libc-lockP.h | 15 ++++---------
sysdeps/nptl/pthread-functions.h | 1 -
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 4 ++++
.../sysv/linux/aarch64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/alpha/libc.abilist | 4 ++++
.../unix/sysv/linux/alpha/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arc/libc.abilist | 4 ++++
.../unix/sysv/linux/arc/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 4 ++++
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 4 ++++
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/csky/libc.abilist | 4 ++++
.../unix/sysv/linux/csky/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/hppa/libc.abilist | 4 ++++
.../unix/sysv/linux/hppa/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/i386/libc.abilist | 4 ++++
.../unix/sysv/linux/i386/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/ia64/libc.abilist | 4 ++++
.../unix/sysv/linux/ia64/libpthread.abilist | 2 --
.../sysv/linux/m68k/coldfire/libc.abilist | 4 ++++
.../linux/m68k/coldfire/libpthread.abilist | 2 --
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 4 ++++
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
.../sysv/linux/microblaze/be/libc.abilist | 4 ++++
.../linux/microblaze/be/libpthread.abilist | 2 --
.../sysv/linux/microblaze/le/libc.abilist | 4 ++++
.../linux/microblaze/le/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/fpu/libc.abilist | 4 ++++
.../sysv/linux/mips/mips32/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 4 ++++
.../sysv/linux/mips/mips64/libpthread.abilist | 2 --
.../sysv/linux/mips/mips64/n32/libc.abilist | 4 ++++
.../sysv/linux/mips/mips64/n64/libc.abilist | 4 ++++
sysdeps/unix/sysv/linux/nios2/libc.abilist | 4 ++++
.../unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../linux/powerpc/powerpc32/fpu/libc.abilist | 4 ++++
.../powerpc/powerpc32/libpthread.abilist | 2 --
.../powerpc/powerpc32/nofpu/libc.abilist | 4 ++++
.../linux/powerpc/powerpc64/be/libc.abilist | 4 ++++
.../powerpc/powerpc64/be/libpthread.abilist | 2 --
.../linux/powerpc/powerpc64/le/libc.abilist | 4 ++++
.../powerpc/powerpc64/le/libpthread.abilist | 2 --
.../unix/sysv/linux/riscv/rv32/libc.abilist | 4 ++++
.../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
.../unix/sysv/linux/riscv/rv64/libc.abilist | 4 ++++
.../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
.../unix/sysv/linux/s390/s390-32/libc.abilist | 4 ++++
.../linux/s390/s390-32/libpthread.abilist | 2 --
.../unix/sysv/linux/s390/s390-64/libc.abilist | 4 ++++
.../linux/s390/s390-64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 4 ++++
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 4 ++++
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
.../sysv/linux/sparc/sparc32/libc.abilist | 4 ++++
.../linux/sparc/sparc32/libpthread.abilist | 2 --
.../sysv/linux/sparc/sparc64/libc.abilist | 4 ++++
.../linux/sparc/sparc64/libpthread.abilist | 2 --
.../unix/sysv/linux/x86_64/64/libc.abilist | 4 ++++
.../sysv/linux/x86_64/64/libpthread.abilist | 2 --
.../unix/sysv/linux/x86_64/x32/libc.abilist | 4 ++++
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
71 files changed, 161 insertions(+), 97 deletions(-)
diff --git a/nptl/Makefile b/nptl/Makefile
index 8847c4dd49..910d8c7ebf 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -76,6 +76,7 @@ routines = \
pthread_getattr_np \
pthread_getschedparam \
pthread_mutex_consistent \
+ pthread_once \
pthread_self \
pthread_setschedparam \
pthread_sigmask \
@@ -179,7 +180,6 @@ libpthread-routines = \
pthread_mutexattr_setpshared \
pthread_mutexattr_setrobust \
pthread_mutexattr_settype \
- pthread_once \
pthread_rwlock_clockrdlock \
pthread_rwlock_clockwrlock \
pthread_rwlock_destroy \
diff --git a/nptl/Versions b/nptl/Versions
index 8fa0d178db..74b311d4eb 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -1,5 +1,6 @@
libc {
GLIBC_2.0 {
+ __pthread_once;
_pthread_cleanup_pop;
_pthread_cleanup_pop_restore;
_pthread_cleanup_push;
@@ -31,6 +32,7 @@ libc {
pthread_mutex_init;
pthread_mutex_lock;
pthread_mutex_unlock;
+ pthread_once;
pthread_self;
pthread_setcancelstate;
pthread_setcanceltype;
@@ -83,9 +85,12 @@ libc {
}
GLIBC_2.34 {
__pthread_cleanup_routine;
+ __pthread_once;
pthread_mutex_consistent;
+ pthread_once;
}
GLIBC_PRIVATE {
+ ___libc_once;
__futex_abstimed_wait64;
__futex_abstimed_wait_cancelable64;
__libc_alloca_cutoff;
@@ -141,7 +146,6 @@ libpthread {
__pthread_mutexattr_destroy;
__pthread_mutexattr_init;
__pthread_mutexattr_settype;
- __pthread_once;
__pthread_setspecific;
__read;
__send;
@@ -184,7 +188,6 @@ libpthread {
pthread_mutexattr_getkind_np;
pthread_mutexattr_init;
pthread_mutexattr_setkind_np;
- pthread_once;
pthread_setcancelstate;
pthread_setcanceltype;
pthread_setspecific;
diff --git a/nptl/libc_pthread_init.c b/nptl/libc_pthread_init.c
index 0757f92cd2..3ac54aae13 100644
--- a/nptl/libc_pthread_init.c
+++ b/nptl/libc_pthread_init.c
@@ -28,9 +28,6 @@
#include <ldsodefs.h>
-unsigned long int *__fork_generation_pointer;
-
-
#ifdef TLS_MULTIPLE_THREADS_IN_TCB
void
#else
@@ -38,12 +35,9 @@ extern int __libc_multiple_threads attribute_hidden;
int *
#endif
-__libc_pthread_init (unsigned long int *ptr, void (*reclaim) (void),
+__libc_pthread_init (void (*reclaim) (void),
const struct pthread_functions *functions)
{
- /* Remember the pointer to the generation counter in libpthread. */
- __fork_generation_pointer = ptr;
-
/* Called by a child after fork. */
__register_atfork (NULL, NULL, reclaim, NULL);
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 41527dcad1..c2e02b1bf2 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -88,7 +88,6 @@ static const struct pthread_functions pthread_functions =
.ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
.ptr___pthread_setcancelstate = __pthread_setcancelstate,
.ptr_pthread_setcanceltype = __pthread_setcanceltype,
- .ptr___pthread_once = __pthread_once,
.ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
.ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
.ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
@@ -334,8 +333,7 @@ __pthread_initialize_minimal_internal (void)
#ifndef TLS_MULTIPLE_THREADS_IN_TCB
__libc_multiple_threads_ptr =
#endif
- __libc_pthread_init (&__fork_generation, __reclaim_stacks,
- ptr_pthread_functions);
+ __libc_pthread_init (__reclaim_stacks, ptr_pthread_functions);
#if HAVE_TUNABLES
__pthread_tunables_init ();
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 8f3d2cc8c9..d385deae1a 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -355,12 +355,10 @@ hidden_proto (__nptl_death_event)
/* Register the generation counter in the libpthread with the libc. */
#ifdef TLS_MULTIPLE_THREADS_IN_TCB
-extern void __libc_pthread_init (unsigned long int *ptr,
- void (*reclaim) (void),
+extern void __libc_pthread_init (void (*reclaim) (void),
const struct pthread_functions *functions);
#else
-extern int *__libc_pthread_init (unsigned long int *ptr,
- void (*reclaim) (void),
+extern int *__libc_pthread_init (void (*reclaim) (void),
const struct pthread_functions *functions);
/* Variable set to a nonzero value either if more than one thread runs or ran,
@@ -551,7 +549,6 @@ hidden_proto (__pthread_rwlock_unlock)
hidden_proto (__pthread_key_create)
hidden_proto (__pthread_getspecific)
hidden_proto (__pthread_setspecific)
-hidden_proto (__pthread_once)
hidden_proto (__pthread_setcancelstate)
hidden_proto (__pthread_testcancel)
hidden_proto (__pthread_mutexattr_init)
diff --git a/nptl/pthread_once.c b/nptl/pthread_once.c
index 7645da222a..64eeaed5f4 100644
--- a/nptl/pthread_once.c
+++ b/nptl/pthread_once.c
@@ -19,7 +19,9 @@
#include "pthreadP.h"
#include <futex-internal.h>
#include <atomic.h>
-
+#include <libc-lockP.h>
+#include <fork.h>
+#include <shlib-compat.h>
unsigned long int __fork_generation attribute_hidden;
@@ -132,7 +134,7 @@ __pthread_once_slow (pthread_once_t *once_control, void (*init_routine) (void))
}
int
-__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
+___libc_once (pthread_once_t *once_control, void (*init_routine) (void))
{
/* Fast path. See __pthread_once_slow. */
int val;
@@ -142,5 +144,17 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
else
return __pthread_once_slow (once_control, init_routine);
}
-weak_alias (__pthread_once, pthread_once)
-hidden_def (__pthread_once)
+libc_hidden_def (___libc_once)
+
+/* Several aliases for setting different symbol versions. */
+strong_alias (___libc_once, ___libc_once_1)
+strong_alias (___libc_once, ___libc_once_2)
+strong_alias (___libc_once, ___libc_once_3)
+strong_alias (___libc_once, ___libc_once_4)
+
+versioned_symbol (libc, ___libc_once_1, __pthread_once, GLIBC_2_34);
+versioned_symbol (libc, ___libc_once_2, pthread_once, GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libc, ___libc_once_3, __pthread_once, GLIBC_2_0);
+compat_symbol (libc, ___libc_once_4, pthread_once, GLIBC_2_0);
+#endif
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index f78267b68c..ffc8f9d041 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -88,8 +88,7 @@ __libc_fork (void)
struct pthread *self = THREAD_SELF;
/* See __pthread_once. */
- if (__fork_generation_pointer != NULL)
- *__fork_generation_pointer += __PTHREAD_ONCE_FORK_GEN_INCR;
+ __fork_generation += __PTHREAD_ONCE_FORK_GEN_INCR;
/* Initialize the robust mutex list setting in the kernel which has
been reset during the fork. We do not check for errors because if
diff --git a/sysdeps/nptl/fork.h b/sysdeps/nptl/fork.h
index 5246754290..a2a1ad8265 100644
--- a/sysdeps/nptl/fork.h
+++ b/sysdeps/nptl/fork.h
@@ -21,6 +21,3 @@
/* The fork generation counter, defined in libpthread. */
extern unsigned long int __fork_generation attribute_hidden;
-
-/* Pointer to the fork generation counter in the thread library. */
-extern unsigned long int *__fork_generation_pointer attribute_hidden;
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index 1a861b0d3f..f9f279525d 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -236,17 +236,12 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT
#endif
+int ___libc_once (pthread_once_t *once_control, void (*init_routine) (void));
+libc_hidden_proto (___libc_once)
+
/* Call handler iff the first call. */
#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
- do { \
- if (PTFAVAIL (__pthread_once)) \
- __libc_ptf_call_always (__pthread_once, (&(ONCE_CONTROL), \
- INIT_FUNCTION)); \
- else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) { \
- INIT_FUNCTION (); \
- (ONCE_CONTROL) |= 2; \
- } \
- } while (0)
+ ___libc_once (&(ONCE_CONTROL), INIT_FUNCTION)
/* Get once control variable. */
#define __libc_once_get(ONCE_CONTROL) ((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
@@ -372,7 +367,6 @@ weak_extern (__pthread_rwlock_unlock)
weak_extern (__pthread_key_create)
weak_extern (__pthread_setspecific)
weak_extern (__pthread_getspecific)
-weak_extern (__pthread_once)
weak_extern (__pthread_initialize)
weak_extern (__pthread_atfork)
weak_extern (__pthread_setcancelstate)
@@ -394,7 +388,6 @@ weak_extern (__pthread_setcancelstate)
# pragma weak __pthread_key_create
# pragma weak __pthread_setspecific
# pragma weak __pthread_getspecific
-# pragma weak __pthread_once
# pragma weak __pthread_initialize
# pragma weak __pthread_atfork
# pragma weak __pthread_setcancelstate
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 1bbe609598..6ef7602cb9 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -49,7 +49,6 @@ struct pthread_functions
int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
int (*ptr___pthread_setcancelstate) (int, int *);
int (*ptr_pthread_setcanceltype) (int, int *);
- int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index a585f7d30d..8a11066f9e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -339,6 +339,7 @@ GLIBC_2.17 __profile_frequency F
GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
GLIBC_2.17 __pthread_cleanup_routine F
+GLIBC_2.17 __pthread_once F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -1453,6 +1454,7 @@ GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_init F
GLIBC_2.17 pthread_mutex_lock F
GLIBC_2.17 pthread_mutex_unlock F
+GLIBC_2.17 pthread_once F
GLIBC_2.17 pthread_self F
GLIBC_2.17 pthread_setcancelstate F
GLIBC_2.17 pthread_setcanceltype F
@@ -2180,4 +2182,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 884d97efca..a57e807cd0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.17 __pthread_mutex_unlock F
GLIBC_2.17 __pthread_mutexattr_destroy F
GLIBC_2.17 __pthread_mutexattr_init F
GLIBC_2.17 __pthread_mutexattr_settype F
-GLIBC_2.17 __pthread_once F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_rwlock_destroy F
@@ -120,7 +119,6 @@ GLIBC_2.17 pthread_mutexattr_setpshared F
GLIBC_2.17 pthread_mutexattr_setrobust F
GLIBC_2.17 pthread_mutexattr_setrobust_np F
GLIBC_2.17 pthread_mutexattr_settype F
-GLIBC_2.17 pthread_once F
GLIBC_2.17 pthread_rwlock_destroy F
GLIBC_2.17 pthread_rwlock_init F
GLIBC_2.17 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c9ac935ccf..b62c855163 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -188,6 +188,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x8
GLIBC_2.0 __progname_full D 0x8
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x8
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x8
@@ -891,6 +892,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2261,7 +2263,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index e17b5183ef..059ae76802 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 27fecc5c8a..cd549c654b 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -328,6 +328,7 @@ GLIBC_2.32 __profile_frequency F
GLIBC_2.32 __progname D 0x4
GLIBC_2.32 __progname_full D 0x4
GLIBC_2.32 __pthread_cleanup_routine F
+GLIBC_2.32 __pthread_once F
GLIBC_2.32 __ptsname_r_chk F
GLIBC_2.32 __pwrite64 F
GLIBC_2.32 __rawmemchr F
@@ -1380,6 +1381,7 @@ GLIBC_2.32 pthread_mutex_destroy F
GLIBC_2.32 pthread_mutex_init F
GLIBC_2.32 pthread_mutex_lock F
GLIBC_2.32 pthread_mutex_unlock F
+GLIBC_2.32 pthread_once F
GLIBC_2.32 pthread_self F
GLIBC_2.32 pthread_setcancelstate F
GLIBC_2.32 pthread_setcanceltype F
@@ -1940,4 +1942,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 9713a20071..55970eb845 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -22,7 +22,6 @@ GLIBC_2.32 __pthread_mutex_unlock F
GLIBC_2.32 __pthread_mutexattr_destroy F
GLIBC_2.32 __pthread_mutexattr_init F
GLIBC_2.32 __pthread_mutexattr_settype F
-GLIBC_2.32 __pthread_once F
GLIBC_2.32 __pthread_register_cancel F
GLIBC_2.32 __pthread_register_cancel_defer F
GLIBC_2.32 __pthread_rwlock_destroy F
@@ -135,7 +134,6 @@ GLIBC_2.32 pthread_mutexattr_setpshared F
GLIBC_2.32 pthread_mutexattr_setrobust F
GLIBC_2.32 pthread_mutexattr_setrobust_np F
GLIBC_2.32 pthread_mutexattr_settype F
-GLIBC_2.32 pthread_once F
GLIBC_2.32 pthread_rwlock_clockrdlock F
GLIBC_2.32 pthread_rwlock_clockwrlock F
GLIBC_2.32 pthread_rwlock_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 2383d95094..03e5389852 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -158,7 +158,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -487,6 +489,7 @@ GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_once F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
@@ -1548,6 +1551,7 @@ GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_self F
GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index e75c83d47f..2e3d644ed9 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -57,7 +57,6 @@ GLIBC_2.4 __pthread_mutex_unlock F
GLIBC_2.4 __pthread_mutexattr_destroy F
GLIBC_2.4 __pthread_mutexattr_init F
GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_rwlock_destroy F
@@ -151,7 +150,6 @@ GLIBC_2.4 pthread_mutexattr_setprotocol F
GLIBC_2.4 pthread_mutexattr_setpshared F
GLIBC_2.4 pthread_mutexattr_setrobust_np F
GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_rwlock_destroy F
GLIBC_2.4 pthread_rwlock_init F
GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index bb46b8b5e3..ac2fcf7b14 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -155,7 +155,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -484,6 +486,7 @@ GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_once F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
@@ -1545,6 +1548,7 @@ GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_self F
GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index e75c83d47f..2e3d644ed9 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -57,7 +57,6 @@ GLIBC_2.4 __pthread_mutex_unlock F
GLIBC_2.4 __pthread_mutexattr_destroy F
GLIBC_2.4 __pthread_mutexattr_init F
GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_rwlock_destroy F
@@ -151,7 +150,6 @@ GLIBC_2.4 pthread_mutexattr_setprotocol F
GLIBC_2.4 pthread_mutexattr_setpshared F
GLIBC_2.4 pthread_mutexattr_setrobust_np F
GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_rwlock_destroy F
GLIBC_2.4 pthread_rwlock_init F
GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 684e451f83..336a59110e 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -332,6 +332,7 @@ GLIBC_2.29 __profile_frequency F
GLIBC_2.29 __progname D 0x4
GLIBC_2.29 __progname_full D 0x4
GLIBC_2.29 __pthread_cleanup_routine F
+GLIBC_2.29 __pthread_once F
GLIBC_2.29 __ptsname_r_chk F
GLIBC_2.29 __pwrite64 F
GLIBC_2.29 __rawmemchr F
@@ -1441,6 +1442,7 @@ GLIBC_2.29 pthread_mutex_destroy F
GLIBC_2.29 pthread_mutex_init F
GLIBC_2.29 pthread_mutex_lock F
GLIBC_2.29 pthread_mutex_unlock F
+GLIBC_2.29 pthread_once F
GLIBC_2.29 pthread_self F
GLIBC_2.29 pthread_setcancelstate F
GLIBC_2.29 pthread_setcanceltype F
@@ -2124,4 +2126,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index bb8a51a51d..78e69d3e06 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -22,7 +22,6 @@ GLIBC_2.29 __pthread_mutex_unlock F
GLIBC_2.29 __pthread_mutexattr_destroy F
GLIBC_2.29 __pthread_mutexattr_init F
GLIBC_2.29 __pthread_mutexattr_settype F
-GLIBC_2.29 __pthread_once F
GLIBC_2.29 __pthread_register_cancel F
GLIBC_2.29 __pthread_register_cancel_defer F
GLIBC_2.29 __pthread_rwlock_destroy F
@@ -132,7 +131,6 @@ GLIBC_2.29 pthread_mutexattr_setpshared F
GLIBC_2.29 pthread_mutexattr_setrobust F
GLIBC_2.29 pthread_mutexattr_setrobust_np F
GLIBC_2.29 pthread_mutexattr_settype F
-GLIBC_2.29 pthread_once F
GLIBC_2.29 pthread_rwlock_destroy F
GLIBC_2.29 pthread_rwlock_init F
GLIBC_2.29 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 8dde237f8b..6d40c40268 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -356,6 +356,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x4
GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1275,6 +1276,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2082,7 +2084,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 740570ef37..96c70fb45e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index cc2226be23..2022f82d81 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -868,6 +869,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2249,7 +2251,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 0b8c5b9104..f2be012ea9 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 438f3bd131..b9eeaabb01 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -360,6 +360,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x8
GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1296,6 +1297,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2114,7 +2116,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 0565c43c10..3698acd3e9 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 5add3e607a..5a099fb3d0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -159,7 +159,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0x98
GLIBC_2.4 _IO_2_1_stdin_ D 0x98
@@ -473,6 +475,7 @@ GLIBC_2.4 __profile_frequency F
GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
+GLIBC_2.4 __pthread_once F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
@@ -1528,6 +1531,7 @@ GLIBC_2.4 pthread_mutex_destroy F
GLIBC_2.4 pthread_mutex_init F
GLIBC_2.4 pthread_mutex_lock F
GLIBC_2.4 pthread_mutex_unlock F
+GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_self F
GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index e75c83d47f..2e3d644ed9 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -57,7 +57,6 @@ GLIBC_2.4 __pthread_mutex_unlock F
GLIBC_2.4 __pthread_mutexattr_destroy F
GLIBC_2.4 __pthread_mutexattr_init F
GLIBC_2.4 __pthread_mutexattr_settype F
-GLIBC_2.4 __pthread_once F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_rwlock_destroy F
@@ -151,7 +150,6 @@ GLIBC_2.4 pthread_mutexattr_setprotocol F
GLIBC_2.4 pthread_mutexattr_setpshared F
GLIBC_2.4 pthread_mutexattr_setrobust_np F
GLIBC_2.4 pthread_mutexattr_settype F
-GLIBC_2.4 pthread_once F
GLIBC_2.4 pthread_rwlock_destroy F
GLIBC_2.4 pthread_rwlock_init F
GLIBC_2.4 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 2e7c9f9b47..f81c9cc523 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -867,6 +868,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2194,7 +2196,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 0b8c5b9104..f2be012ea9 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 493f7ddaa0..ce50516bc6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -340,6 +340,7 @@ GLIBC_2.18 __profile_frequency F
GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
GLIBC_2.18 __pthread_cleanup_routine F
+GLIBC_2.18 __pthread_once F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -1456,6 +1457,7 @@ GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_init F
GLIBC_2.18 pthread_mutex_lock F
GLIBC_2.18 pthread_mutex_unlock F
+GLIBC_2.18 pthread_once F
GLIBC_2.18 pthread_self F
GLIBC_2.18 pthread_setcancelstate F
GLIBC_2.18 pthread_setcanceltype F
@@ -2175,4 +2177,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 3798ae24be..73c70d5c87 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.18 __pthread_mutex_unlock F
GLIBC_2.18 __pthread_mutexattr_destroy F
GLIBC_2.18 __pthread_mutexattr_init F
GLIBC_2.18 __pthread_mutexattr_settype F
-GLIBC_2.18 __pthread_once F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_rwlock_destroy F
@@ -121,7 +120,6 @@ GLIBC_2.18 pthread_mutexattr_setpshared F
GLIBC_2.18 pthread_mutexattr_setrobust F
GLIBC_2.18 pthread_mutexattr_setrobust_np F
GLIBC_2.18 pthread_mutexattr_settype F
-GLIBC_2.18 pthread_once F
GLIBC_2.18 pthread_rwlock_destroy F
GLIBC_2.18 pthread_rwlock_init F
GLIBC_2.18 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index ec83b89aa3..37ecc7c967 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -340,6 +340,7 @@ GLIBC_2.18 __profile_frequency F
GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
GLIBC_2.18 __pthread_cleanup_routine F
+GLIBC_2.18 __pthread_once F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -1456,6 +1457,7 @@ GLIBC_2.18 pthread_mutex_destroy F
GLIBC_2.18 pthread_mutex_init F
GLIBC_2.18 pthread_mutex_lock F
GLIBC_2.18 pthread_mutex_unlock F
+GLIBC_2.18 pthread_once F
GLIBC_2.18 pthread_self F
GLIBC_2.18 pthread_setcancelstate F
GLIBC_2.18 pthread_setcanceltype F
@@ -2172,4 +2174,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 3798ae24be..73c70d5c87 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.18 __pthread_mutex_unlock F
GLIBC_2.18 __pthread_mutexattr_destroy F
GLIBC_2.18 __pthread_mutexattr_init F
GLIBC_2.18 __pthread_mutexattr_settype F
-GLIBC_2.18 __pthread_once F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_rwlock_destroy F
@@ -121,7 +120,6 @@ GLIBC_2.18 pthread_mutexattr_setpshared F
GLIBC_2.18 pthread_mutexattr_setrobust F
GLIBC_2.18 pthread_mutexattr_setrobust_np F
GLIBC_2.18 pthread_mutexattr_settype F
-GLIBC_2.18 pthread_once F
GLIBC_2.18 pthread_rwlock_destroy F
GLIBC_2.18 pthread_rwlock_init F
GLIBC_2.18 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index cb0ab4bc19..6d50fcc64f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -864,6 +865,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2165,7 +2167,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 79da59eb81..faa1ad9d1c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 2be2623e99..b4e05e270d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -864,6 +865,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2163,7 +2165,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 79da59eb81..faa1ad9d1c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 09147861b5..71d184c2aa 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -864,6 +865,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2171,7 +2173,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4a0208c8c8..1e792c6705 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -183,6 +183,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x8
GLIBC_2.0 __progname_full D 0x8
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x8
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x8
@@ -862,6 +863,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2165,7 +2167,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 078025a7d6..5afc3e8022 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -377,6 +377,7 @@ GLIBC_2.21 __profile_frequency F
GLIBC_2.21 __progname D 0x4
GLIBC_2.21 __progname_full D 0x4
GLIBC_2.21 __pthread_cleanup_routine F
+GLIBC_2.21 __pthread_once F
GLIBC_2.21 __ptsname_r_chk F
GLIBC_2.21 __pwrite64 F
GLIBC_2.21 __rawmemchr F
@@ -1498,6 +1499,7 @@ GLIBC_2.21 pthread_mutex_destroy F
GLIBC_2.21 pthread_mutex_init F
GLIBC_2.21 pthread_mutex_lock F
GLIBC_2.21 pthread_mutex_unlock F
+GLIBC_2.21 pthread_once F
GLIBC_2.21 pthread_self F
GLIBC_2.21 pthread_setcancelstate F
GLIBC_2.21 pthread_setcanceltype F
@@ -2213,4 +2215,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 9dadbc85cc..5db41bc85b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.21 __pthread_mutex_unlock F
GLIBC_2.21 __pthread_mutexattr_destroy F
GLIBC_2.21 __pthread_mutexattr_init F
GLIBC_2.21 __pthread_mutexattr_settype F
-GLIBC_2.21 __pthread_once F
GLIBC_2.21 __pthread_register_cancel F
GLIBC_2.21 __pthread_register_cancel_defer F
GLIBC_2.21 __pthread_rwlock_destroy F
@@ -121,7 +120,6 @@ GLIBC_2.21 pthread_mutexattr_setpshared F
GLIBC_2.21 pthread_mutexattr_setrobust F
GLIBC_2.21 pthread_mutexattr_setrobust_np F
GLIBC_2.21 pthread_mutexattr_settype F
-GLIBC_2.21 pthread_once F
GLIBC_2.21 pthread_rwlock_destroy F
GLIBC_2.21 pthread_rwlock_init F
GLIBC_2.21 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index bc79b844a5..4bfae8faa6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -194,6 +194,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -875,6 +876,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2221,7 +2223,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index c852fcc147..995c88cbce 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 63c05472ed..dc102f7f29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -194,6 +194,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -875,6 +876,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2254,7 +2256,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 37e4ee564d..9f019c4eac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -409,6 +409,7 @@ GLIBC_2.3 __printf_fp F
GLIBC_2.3 __profile_frequency F
GLIBC_2.3 __progname D 0x8
GLIBC_2.3 __progname_full D 0x8
+GLIBC_2.3 __pthread_once F
GLIBC_2.3 __pwrite64 F
GLIBC_2.3 __rawmemchr F
GLIBC_2.3 __rcmd_errstr D 0x8
@@ -1382,6 +1383,7 @@ GLIBC_2.3 pthread_mutex_destroy F
GLIBC_2.3 pthread_mutex_init F
GLIBC_2.3 pthread_mutex_lock F
GLIBC_2.3 pthread_mutex_unlock F
+GLIBC_2.3 pthread_once F
GLIBC_2.3 pthread_self F
GLIBC_2.3 pthread_setcancelstate F
GLIBC_2.3 pthread_setcanceltype F
@@ -2084,7 +2086,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index b7d0c8b743..07428bd3d6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -51,7 +51,6 @@ GLIBC_2.3 __pthread_mutex_unlock F
GLIBC_2.3 __pthread_mutexattr_destroy F
GLIBC_2.3 __pthread_mutexattr_init F
GLIBC_2.3 __pthread_mutexattr_settype F
-GLIBC_2.3 __pthread_once F
GLIBC_2.3 __pthread_rwlock_destroy F
GLIBC_2.3 __pthread_rwlock_init F
GLIBC_2.3 __pthread_rwlock_rdlock F
@@ -128,7 +127,6 @@ GLIBC_2.3 pthread_mutexattr_init F
GLIBC_2.3 pthread_mutexattr_setkind_np F
GLIBC_2.3 pthread_mutexattr_setpshared F
GLIBC_2.3 pthread_mutexattr_settype F
-GLIBC_2.3 pthread_once F
GLIBC_2.3 pthread_rwlock_destroy F
GLIBC_2.3 pthread_rwlock_init F
GLIBC_2.3 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 1888ec6e86..f1217ffca5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -425,6 +425,7 @@ GLIBC_2.17 __profile_frequency F
GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
GLIBC_2.17 __pthread_cleanup_routine F
+GLIBC_2.17 __pthread_once F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -1542,6 +1543,7 @@ GLIBC_2.17 pthread_mutex_destroy F
GLIBC_2.17 pthread_mutex_init F
GLIBC_2.17 pthread_mutex_lock F
GLIBC_2.17 pthread_mutex_unlock F
+GLIBC_2.17 pthread_once F
GLIBC_2.17 pthread_self F
GLIBC_2.17 pthread_setcancelstate F
GLIBC_2.17 pthread_setcanceltype F
@@ -2375,4 +2377,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 884d97efca..a57e807cd0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.17 __pthread_mutex_unlock F
GLIBC_2.17 __pthread_mutexattr_destroy F
GLIBC_2.17 __pthread_mutexattr_init F
GLIBC_2.17 __pthread_mutexattr_settype F
-GLIBC_2.17 __pthread_once F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_rwlock_destroy F
@@ -120,7 +119,6 @@ GLIBC_2.17 pthread_mutexattr_setpshared F
GLIBC_2.17 pthread_mutexattr_setrobust F
GLIBC_2.17 pthread_mutexattr_setrobust_np F
GLIBC_2.17 pthread_mutexattr_settype F
-GLIBC_2.17 pthread_once F
GLIBC_2.17 pthread_rwlock_destroy F
GLIBC_2.17 pthread_rwlock_init F
GLIBC_2.17 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 8cd92b1abe..afaabf996e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -325,6 +325,7 @@ GLIBC_2.33 __profile_frequency F
GLIBC_2.33 __progname D 0x4
GLIBC_2.33 __progname_full D 0x4
GLIBC_2.33 __pthread_cleanup_routine F
+GLIBC_2.33 __pthread_once F
GLIBC_2.33 __ptsname_r_chk F
GLIBC_2.33 __pwrite64 F
GLIBC_2.33 __rawmemchr F
@@ -1382,6 +1383,7 @@ GLIBC_2.33 pthread_mutex_destroy F
GLIBC_2.33 pthread_mutex_init F
GLIBC_2.33 pthread_mutex_lock F
GLIBC_2.33 pthread_mutex_unlock F
+GLIBC_2.33 pthread_once F
GLIBC_2.33 pthread_self F
GLIBC_2.33 pthread_setcancelstate F
GLIBC_2.33 pthread_setcanceltype F
@@ -1942,4 +1944,6 @@ GLIBC_2.33 writev F
GLIBC_2.33 wscanf F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 71e8f38003..ddf52b427a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -22,7 +22,6 @@ GLIBC_2.33 __pthread_mutex_unlock F
GLIBC_2.33 __pthread_mutexattr_destroy F
GLIBC_2.33 __pthread_mutexattr_init F
GLIBC_2.33 __pthread_mutexattr_settype F
-GLIBC_2.33 __pthread_once F
GLIBC_2.33 __pthread_register_cancel F
GLIBC_2.33 __pthread_register_cancel_defer F
GLIBC_2.33 __pthread_rwlock_destroy F
@@ -135,7 +134,6 @@ GLIBC_2.33 pthread_mutexattr_setpshared F
GLIBC_2.33 pthread_mutexattr_setrobust F
GLIBC_2.33 pthread_mutexattr_setrobust_np F
GLIBC_2.33 pthread_mutexattr_settype F
-GLIBC_2.33 pthread_once F
GLIBC_2.33 pthread_rwlock_clockrdlock F
GLIBC_2.33 pthread_rwlock_clockwrlock F
GLIBC_2.33 pthread_rwlock_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 894f01282f..28563980d5 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -336,6 +336,7 @@ GLIBC_2.27 __profile_frequency F
GLIBC_2.27 __progname D 0x8
GLIBC_2.27 __progname_full D 0x8
GLIBC_2.27 __pthread_cleanup_routine F
+GLIBC_2.27 __pthread_once F
GLIBC_2.27 __ptsname_r_chk F
GLIBC_2.27 __pwrite64 F
GLIBC_2.27 __rawmemchr F
@@ -1444,6 +1445,7 @@ GLIBC_2.27 pthread_mutex_destroy F
GLIBC_2.27 pthread_mutex_init F
GLIBC_2.27 pthread_mutex_lock F
GLIBC_2.27 pthread_mutex_unlock F
+GLIBC_2.27 pthread_once F
GLIBC_2.27 pthread_self F
GLIBC_2.27 pthread_setcancelstate F
GLIBC_2.27 pthread_setcanceltype F
@@ -2142,4 +2144,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index f5f9baefb9..b12ec34091 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.27 __pthread_mutex_unlock F
GLIBC_2.27 __pthread_mutexattr_destroy F
GLIBC_2.27 __pthread_mutexattr_init F
GLIBC_2.27 __pthread_mutexattr_settype F
-GLIBC_2.27 __pthread_once F
GLIBC_2.27 __pthread_register_cancel F
GLIBC_2.27 __pthread_register_cancel_defer F
GLIBC_2.27 __pthread_rwlock_destroy F
@@ -121,7 +120,6 @@ GLIBC_2.27 pthread_mutexattr_setpshared F
GLIBC_2.27 pthread_mutexattr_setrobust F
GLIBC_2.27 pthread_mutexattr_setrobust_np F
GLIBC_2.27 pthread_mutexattr_settype F
-GLIBC_2.27 pthread_once F
GLIBC_2.27 pthread_rwlock_destroy F
GLIBC_2.27 pthread_rwlock_init F
GLIBC_2.27 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 8788493ce0..6cfde17d64 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -185,6 +185,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -866,6 +867,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2219,7 +2221,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 518a08ad1e..738e9ab535 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 4596ab72b0..16b2483535 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -370,6 +370,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x8
GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1293,6 +1294,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2120,7 +2122,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index c21f7cfea6..13a2e8ef91 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -31,7 +31,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -109,7 +108,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index ae16394e8a..a6fd6eb894 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -359,6 +359,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x4
GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1279,6 +1280,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2089,7 +2091,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 740570ef37..96c70fb45e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 6e45427e90..f4ba7b4ee8 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -359,6 +359,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x4
GLIBC_2.2 __progname_full D 0x4
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x4
@@ -1279,6 +1280,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2086,7 +2088,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 740570ef37..96c70fb45e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 080a036590..70c2a92dfc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -189,6 +189,7 @@ GLIBC_2.0 __printf_fp F
GLIBC_2.0 __profile_frequency F
GLIBC_2.0 __progname D 0x4
GLIBC_2.0 __progname_full D 0x4
+GLIBC_2.0 __pthread_once F
GLIBC_2.0 __rcmd_errstr D 0x4
GLIBC_2.0 __read F
GLIBC_2.0 __realloc_hook D 0x4
@@ -869,6 +870,7 @@ GLIBC_2.0 pthread_mutex_destroy F
GLIBC_2.0 pthread_mutex_init F
GLIBC_2.0 pthread_mutex_lock F
GLIBC_2.0 pthread_mutex_unlock F
+GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_self F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
@@ -2210,7 +2212,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index e17b5183ef..059ae76802 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -18,7 +18,6 @@ GLIBC_2.0 __pthread_mutex_unlock F
GLIBC_2.0 __pthread_mutexattr_destroy F
GLIBC_2.0 __pthread_mutexattr_init F
GLIBC_2.0 __pthread_mutexattr_settype F
-GLIBC_2.0 __pthread_once F
GLIBC_2.0 __pthread_setspecific F
GLIBC_2.0 __read F
GLIBC_2.0 __send F
@@ -60,7 +59,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_once F
GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index c8fb7da49f..6f323b3705 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.2 __printf_fp F
GLIBC_2.2 __profile_frequency F
GLIBC_2.2 __progname D 0x8
GLIBC_2.2 __progname_full D 0x8
+GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pwrite64 F
GLIBC_2.2 __rawmemchr F
GLIBC_2.2 __rcmd_errstr D 0x8
@@ -1322,6 +1323,7 @@ GLIBC_2.2 pthread_mutex_destroy F
GLIBC_2.2 pthread_mutex_init F
GLIBC_2.2 pthread_mutex_lock F
GLIBC_2.2 pthread_mutex_unlock F
+GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_self F
GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
@@ -2137,7 +2139,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 0565c43c10..3698acd3e9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2 __pthread_mutex_unlock F
GLIBC_2.2 __pthread_mutexattr_destroy F
GLIBC_2.2 __pthread_mutexattr_init F
GLIBC_2.2 __pthread_mutexattr_settype F
-GLIBC_2.2 __pthread_once F
GLIBC_2.2 __pthread_rwlock_destroy F
GLIBC_2.2 __pthread_rwlock_init F
GLIBC_2.2 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2 pthread_mutexattr_init F
GLIBC_2.2 pthread_mutexattr_setkind_np F
GLIBC_2.2 pthread_mutexattr_setpshared F
GLIBC_2.2 pthread_mutexattr_settype F
-GLIBC_2.2 pthread_once F
GLIBC_2.2 pthread_rwlock_destroy F
GLIBC_2.2 pthread_rwlock_init F
GLIBC_2.2 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index cde6fdb49d..35503c7361 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -358,6 +358,7 @@ GLIBC_2.2.5 __printf_fp F
GLIBC_2.2.5 __profile_frequency F
GLIBC_2.2.5 __progname D 0x8
GLIBC_2.2.5 __progname_full D 0x8
+GLIBC_2.2.5 __pthread_once F
GLIBC_2.2.5 __pwrite64 F
GLIBC_2.2.5 __rawmemchr F
GLIBC_2.2.5 __rcmd_errstr D 0x8
@@ -1290,6 +1291,7 @@ GLIBC_2.2.5 pthread_mutex_destroy F
GLIBC_2.2.5 pthread_mutex_init F
GLIBC_2.2.5 pthread_mutex_lock F
GLIBC_2.2.5 pthread_mutex_unlock F
+GLIBC_2.2.5 pthread_once F
GLIBC_2.2.5 pthread_self F
GLIBC_2.2.5 pthread_setcancelstate F
GLIBC_2.2.5 pthread_setcanceltype F
@@ -2096,7 +2098,9 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index f1255816b1..7636fde610 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -30,7 +30,6 @@ GLIBC_2.2.5 __pthread_mutex_unlock F
GLIBC_2.2.5 __pthread_mutexattr_destroy F
GLIBC_2.2.5 __pthread_mutexattr_init F
GLIBC_2.2.5 __pthread_mutexattr_settype F
-GLIBC_2.2.5 __pthread_once F
GLIBC_2.2.5 __pthread_rwlock_destroy F
GLIBC_2.2.5 __pthread_rwlock_init F
GLIBC_2.2.5 __pthread_rwlock_rdlock F
@@ -108,7 +107,6 @@ GLIBC_2.2.5 pthread_mutexattr_init F
GLIBC_2.2.5 pthread_mutexattr_setkind_np F
GLIBC_2.2.5 pthread_mutexattr_setpshared F
GLIBC_2.2.5 pthread_mutexattr_settype F
-GLIBC_2.2.5 pthread_once F
GLIBC_2.2.5 pthread_rwlock_destroy F
GLIBC_2.2.5 pthread_rwlock_init F
GLIBC_2.2.5 pthread_rwlock_rdlock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index e772da1ec4..3af0b4def9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -340,6 +340,7 @@ GLIBC_2.16 __profile_frequency F
GLIBC_2.16 __progname D 0x4
GLIBC_2.16 __progname_full D 0x4
GLIBC_2.16 __pthread_cleanup_routine F
+GLIBC_2.16 __pthread_once F
GLIBC_2.16 __ptsname_r_chk F
GLIBC_2.16 __pwrite64 F
GLIBC_2.16 __rawmemchr F
@@ -1461,6 +1462,7 @@ GLIBC_2.16 pthread_mutex_destroy F
GLIBC_2.16 pthread_mutex_init F
GLIBC_2.16 pthread_mutex_lock F
GLIBC_2.16 pthread_mutex_unlock F
+GLIBC_2.16 pthread_once F
GLIBC_2.16 pthread_self F
GLIBC_2.16 pthread_setcancelstate F
GLIBC_2.16 pthread_setcanceltype F
@@ -2194,4 +2196,6 @@ GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_once F
GLIBC_2.34 pthread_mutex_consistent F
+GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index fdaff69ea6..d15de68e7e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -23,7 +23,6 @@ GLIBC_2.16 __pthread_mutex_unlock F
GLIBC_2.16 __pthread_mutexattr_destroy F
GLIBC_2.16 __pthread_mutexattr_init F
GLIBC_2.16 __pthread_mutexattr_settype F
-GLIBC_2.16 __pthread_once F
GLIBC_2.16 __pthread_register_cancel F
GLIBC_2.16 __pthread_register_cancel_defer F
GLIBC_2.16 __pthread_rwlock_destroy F
@@ -120,7 +119,6 @@ GLIBC_2.16 pthread_mutexattr_setpshared F
GLIBC_2.16 pthread_mutexattr_setrobust F
GLIBC_2.16 pthread_mutexattr_setrobust_np F
GLIBC_2.16 pthread_mutexattr_settype F
-GLIBC_2.16 pthread_once F
GLIBC_2.16 pthread_rwlock_destroy F
GLIBC_2.16 pthread_rwlock_init F
GLIBC_2.16 pthread_rwlock_rdlock F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 09/18] nptl: Move __pthread_unwind_next into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (7 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 08/18] nptl: Move pthread_once and __pthread_once " Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 10/18] csu: Move calling main out of __libc_start_main_impl Florian Weimer
` (8 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
It's necessary to stub out __libc_disable_asynccancel and
__libc_enable_asynccancel via rtld-stubbed-symbols because the new
direct references to the unwinder result in symbol conflicts when the
rtld exception handling from libc is linked in during the construction
of librtld.map.
unwind-forcedunwind.c is merged into unwind-resume.c. libc now needs
the functions that were previously only used in libpthread.
The GLIBC_PRIVATE exports of __libc_longjmp and __libc_siglongjmp are
no longer needed, so switch them to hidden symbols.
The symbol __pthread_unwind_next has been moved using
scripts/move-symbol-to-libc.py.
---
elf/Makefile | 2 +
include/setjmp.h | 4 +-
nptl/Makefile | 4 +-
nptl/Versions | 4 +-
nptl/forward.c | 6 --
nptl/nptl-init.c | 1 -
nptl/pthreadP.h | 8 ++-
nptl/pthread_cancel.c | 10 ++-
nptl/pthread_exit.c | 11 +++-
nptl/unwind.c | 14 ++--
setjmp/Versions | 4 --
sysdeps/arm/Makefile | 5 --
sysdeps/arm/nptl/unwind-forcedunwind.c | 25 --------
sysdeps/arm/pt-arm-unwind-resume.S | 20 ------
sysdeps/generic/unwind-resume.c | 14 ++++
.../unwind-resume.c} | 5 +-
sysdeps/nptl/pthread-functions.h | 2 -
sysdeps/nptl/unwind-forcedunwind.c | 64 -------------------
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 +
.../sysv/linux/aarch64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 +
.../unix/sysv/linux/alpha/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arc/libc.abilist | 2 +
.../unix/sysv/linux/arc/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 +
.../unix/sysv/linux/arm/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 +
.../unix/sysv/linux/arm/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/csky/libc.abilist | 2 +
.../unix/sysv/linux/csky/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 +
.../unix/sysv/linux/hppa/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/i386/libc.abilist | 2 +
.../unix/sysv/linux/i386/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/ia64/Makefile | 2 +-
sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 +
.../unix/sysv/linux/ia64/libpthread.abilist | 1 -
.../sysv/linux/m68k/coldfire/libc.abilist | 2 +
.../linux/m68k/coldfire/libpthread.abilist | 1 -
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 +
.../sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
.../sysv/linux/microblaze/be/libc.abilist | 2 +
.../linux/microblaze/be/libpthread.abilist | 1 -
.../sysv/linux/microblaze/le/libc.abilist | 2 +
.../linux/microblaze/le/libpthread.abilist | 1 -
.../sysv/linux/mips/mips32/fpu/libc.abilist | 2 +
.../sysv/linux/mips/mips32/libpthread.abilist | 1 -
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 +
.../sysv/linux/mips/mips64/libpthread.abilist | 1 -
.../sysv/linux/mips/mips64/n32/libc.abilist | 2 +
.../sysv/linux/mips/mips64/n64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 +
.../unix/sysv/linux/nios2/libpthread.abilist | 1 -
.../linux/powerpc/powerpc32/fpu/libc.abilist | 2 +
.../powerpc/powerpc32/libpthread.abilist | 1 -
.../powerpc/powerpc32/nofpu/libc.abilist | 2 +
.../linux/powerpc/powerpc64/be/libc.abilist | 2 +
.../powerpc/powerpc64/be/libpthread.abilist | 1 -
.../linux/powerpc/powerpc64/le/libc.abilist | 2 +
.../powerpc/powerpc64/le/libpthread.abilist | 1 -
.../unix/sysv/linux/riscv/rv32/libc.abilist | 2 +
.../sysv/linux/riscv/rv32/libpthread.abilist | 1 -
.../unix/sysv/linux/riscv/rv64/libc.abilist | 2 +
.../sysv/linux/riscv/rv64/libpthread.abilist | 1 -
.../unix/sysv/linux/s390/s390-32/libc.abilist | 2 +
.../linux/s390/s390-32/libpthread.abilist | 1 -
.../unix/sysv/linux/s390/s390-64/libc.abilist | 2 +
.../linux/s390/s390-64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 +
.../unix/sysv/linux/sh/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 +
.../unix/sysv/linux/sh/le/libpthread.abilist | 1 -
.../sysv/linux/sparc/sparc32/libc.abilist | 2 +
.../linux/sparc/sparc32/libpthread.abilist | 1 -
.../sysv/linux/sparc/sparc64/libc.abilist | 2 +
.../linux/sparc/sparc64/libpthread.abilist | 1 -
.../unix/sysv/linux/x86_64/64/libc.abilist | 2 +
.../sysv/linux/x86_64/64/libpthread.abilist | 1 -
.../unix/sysv/linux/x86_64/x32/libc.abilist | 2 +
.../sysv/linux/x86_64/x32/libpthread.abilist | 1 -
80 files changed, 122 insertions(+), 176 deletions(-)
delete mode 100644 sysdeps/arm/nptl/unwind-forcedunwind.c
delete mode 100644 sysdeps/arm/pt-arm-unwind-resume.S
rename sysdeps/{unix/sysv/linux/ia64/unwind-forcedunwind.c => ia64/unwind-resume.c} (87%)
delete mode 100644 sysdeps/nptl/unwind-forcedunwind.c
diff --git a/elf/Makefile b/elf/Makefile
index 4c9e63dac9..05efa239d8 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -522,6 +522,8 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
# discovery mechanism is not compatible with the libc implementation
# when compiled for libc.
rtld-stubbed-symbols = \
+ __libc_disable_asynccancel \
+ __libc_enable_asynccancel \
calloc \
free \
malloc \
diff --git a/include/setjmp.h b/include/setjmp.h
index 0a8e4d2eaf..a3936e611d 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -20,9 +20,9 @@ extern int __sigjmp_save (jmp_buf __env, int __savemask);
extern void _longjmp_unwind (jmp_buf env, int val);
extern void __libc_siglongjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
+ __attribute__ ((noreturn)) attribute_hidden;
extern void __libc_longjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
+ __attribute__ ((noreturn)) attribute_hidden;
libc_hidden_proto (_setjmp)
libc_hidden_proto (__sigsetjmp)
diff --git a/nptl/Makefile b/nptl/Makefile
index 910d8c7ebf..c1ade91a0b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -80,6 +80,7 @@ routines = \
pthread_self \
pthread_setschedparam \
pthread_sigmask \
+ unwind \
shared-only-routines = forward
static-only-routines = pthread_atfork
@@ -229,15 +230,12 @@ libpthread-routines = \
sem_wait \
sigaction \
tpp \
- unwind \
- unwind-forcedunwind \
vars \
version \
libpthread-shared-only-routines = \
pt-allocrtsig \
pt-interp \
- unwind-forcedunwind \
version \
# Since cancellation handling is in large parts handled using exceptions
diff --git a/nptl/Versions b/nptl/Versions
index 74b311d4eb..c241763c13 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -56,6 +56,7 @@ libc {
}
GLIBC_2.3.3 {
__pthread_cleanup_routine;
+ __pthread_unwind_next;
pthread_attr_setaffinity_np;
pthread_getaffinity_np;
}
@@ -119,6 +120,7 @@ libc {
__pthread_cond_init; # Used by the C11 threads.
__pthread_force_elision;
__pthread_getattr_default_np;
+ __pthread_unwind;
}
}
@@ -324,7 +326,6 @@ libpthread {
__pthread_register_cancel_defer;
__pthread_unregister_cancel;
__pthread_unregister_cancel_restore;
- __pthread_unwind_next;
pthread_attr_getaffinity_np;
pthread_barrierattr_getpshared;
pthread_condattr_getclock;
@@ -413,6 +414,5 @@ libpthread {
__pthread_clock_settime;
__pthread_get_minstack;
__pthread_initialize_minimal;
- __pthread_unwind;
}
}
diff --git a/nptl/forward.c b/nptl/forward.c
index 0b607436d4..7a7f54f9d9 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -123,9 +123,3 @@ FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
strong_alias (__pthread_setcancelstate, pthread_setcancelstate)
FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
-
-FORWARD_NORETURN (__pthread_unwind,
- void attribute_hidden __attribute ((noreturn))
- __cleanup_fct_attribute attribute_compat_text_section,
- (__pthread_unwind_buf_t *buf), (buf),
- __safe_fatal ())
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index c2e02b1bf2..d30e8a9bdf 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -95,7 +95,6 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_getspecific = __pthread_getspecific,
.ptr___pthread_setspecific = __pthread_setspecific,
.ptr_nthreads = &__nptl_nthreads,
- .ptr___pthread_unwind = &__pthread_unwind,
.ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
.ptr__nptl_setxid = __nptl_setxid,
.ptr_set_robust = __nptl_set_robust
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index d385deae1a..1a264ab929 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -271,19 +271,21 @@ extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
weak_function
#endif
;
+libc_hidden_proto (__pthread_unwind)
extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
__cleanup_fct_attribute __attribute ((__noreturn__))
#ifndef SHARED
weak_function
#endif
;
+/* NB: No hidden proto for __pthread_unwind_next: inside glibc, the
+ legacy unwinding mechanism is used. */
+
+#if IS_IN (libpthread)
extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
__cleanup_fct_attribute;
extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
__cleanup_fct_attribute;
-#if IS_IN (libpthread)
-hidden_proto (__pthread_unwind)
-hidden_proto (__pthread_unwind_next)
hidden_proto (__pthread_register_cancel)
hidden_proto (__pthread_unregister_cancel)
# ifdef SHARED
diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
index a011d72fa1..060484cdc8 100644
--- a/nptl/pthread_cancel.c
+++ b/nptl/pthread_cancel.c
@@ -23,6 +23,9 @@
#include <atomic.h>
#include <sysdep.h>
#include <unistd.h>
+#include <unwind-link.h>
+#include <stdio.h>
+#include <gnu/lib-names.h>
int
__pthread_cancel (pthread_t th)
@@ -36,7 +39,12 @@ __pthread_cancel (pthread_t th)
#ifdef SHARED
/* Trigger an error if libgcc_s cannot be loaded. */
- __pthread_unwind_link_get ();
+ {
+ struct unwind_link *unwind_link = __libc_unwind_link_get ();
+ if (unwind_link == NULL)
+ __libc_fatal (LIBGCC_S_SO
+ " must be installed for pthread_cancel to work\n");
+ }
#endif
int result = 0;
int oldval;
diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c
index 4afc406268..aed8c12e17 100644
--- a/nptl/pthread_exit.c
+++ b/nptl/pthread_exit.c
@@ -18,11 +18,20 @@
#include <stdlib.h>
#include "pthreadP.h"
-
+#include <unwind-link.h>
+#include <stdio.h>
+#include <gnu/lib-names.h>
void
__pthread_exit (void *value)
{
+ {
+ struct unwind_link *unwind_link = __libc_unwind_link_get ();
+ if (unwind_link == NULL)
+ __libc_fatal (LIBGCC_S_SO
+ " must be installed for pthread_exit to work\n");
+ }
+
THREAD_SETMEM (THREAD_SELF, result, value);
__do_cancel ();
diff --git a/nptl/unwind.c b/nptl/unwind.c
index 9c7ed7d7ca..25a2ca32e6 100644
--- a/nptl/unwind.c
+++ b/nptl/unwind.c
@@ -25,6 +25,7 @@
#include "pthreadP.h"
#include <libc-diag.h>
#include <jmpbuf-unwind.h>
+#include <shlib-compat.h>
#ifdef _STACK_GROWS_DOWN
# define FRAME_LEFT(frame, other, adj) \
@@ -134,15 +135,20 @@ __pthread_unwind (__pthread_unwind_buf_t *buf)
/* We better do not get here. */
abort ();
}
-hidden_def (__pthread_unwind)
-
+libc_hidden_def (__pthread_unwind)
void
__cleanup_fct_attribute __attribute ((noreturn))
-__pthread_unwind_next (__pthread_unwind_buf_t *buf)
+___pthread_unwind_next (__pthread_unwind_buf_t *buf)
{
struct pthread_unwind_buf *ibuf = (struct pthread_unwind_buf *) buf;
__pthread_unwind ((__pthread_unwind_buf_t *) ibuf->priv.data.prev);
}
-hidden_def (__pthread_unwind_next)
+versioned_symbol (libc, ___pthread_unwind_next, __pthread_unwind_next,
+ GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
+strong_alias (___pthread_unwind_next, __pthread_unwind_next_alias)
+compat_symbol (libc, __pthread_unwind_next_alias, __pthread_unwind_next,
+ GLIBC_2_3_3);
+#endif
diff --git a/setjmp/Versions b/setjmp/Versions
index 2baa49ae8a..3c7cf87780 100644
--- a/setjmp/Versions
+++ b/setjmp/Versions
@@ -9,8 +9,4 @@ libc {
# s*
setjmp;
}
- GLIBC_PRIVATE {
- # helper functions
- __libc_longjmp; __libc_siglongjmp;
- }
}
diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
index ad2042b93a..fb4164f0d9 100644
--- a/sysdeps/arm/Makefile
+++ b/sysdeps/arm/Makefile
@@ -63,8 +63,3 @@ ifeq ($(subdir),rt)
librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += pt-arm-unwind-resume
-libpthread-shared-only-routines += pt-arm-unwind-resume
-endif
diff --git a/sysdeps/arm/nptl/unwind-forcedunwind.c b/sysdeps/arm/nptl/unwind-forcedunwind.c
deleted file mode 100644
index 61db34c0b5..0000000000
--- a/sysdeps/arm/nptl/unwind-forcedunwind.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Unwinder function forwarders for libpthread. Arm version.
- Copyright (C) 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; see the file COPYING.LIB. If
- not, see <https://www.gnu.org/licenses/>. */
-
-#include <sysdeps/nptl/unwind-forcedunwind.c>
-
-void *
-__unwind_link_get_resume (void)
-{
- return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume);
-}
diff --git a/sysdeps/arm/pt-arm-unwind-resume.S b/sysdeps/arm/pt-arm-unwind-resume.S
deleted file mode 100644
index c056eb38d0..0000000000
--- a/sysdeps/arm/pt-arm-unwind-resume.S
+++ /dev/null
@@ -1,20 +0,0 @@
-/* _Unwind_Resume wrapper for ARM EABI.
- Copyright (C) 2015-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/>. */
-
-/* The implementation in libpthread is identical to the one in libc. */
-#include <sysdeps/arm/arm-unwind-resume.S>
diff --git a/sysdeps/generic/unwind-resume.c b/sysdeps/generic/unwind-resume.c
index 9e63762bf1..66dbb67e81 100644
--- a/sysdeps/generic/unwind-resume.c
+++ b/sysdeps/generic/unwind-resume.c
@@ -44,3 +44,17 @@ __gcc_personality_v0 PERSONALITY_PROTO
{
return UNWIND_LINK_PTR (link (), personality) PERSONALITY_ARGS;
}
+
+_Unwind_Reason_Code
+_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
+ void *stop_argument)
+{
+ return UNWIND_LINK_PTR (link (), _Unwind_ForcedUnwind)
+ (exc, stop, stop_argument);
+}
+
+_Unwind_Word
+_Unwind_GetCFA (struct _Unwind_Context *context)
+{
+ return UNWIND_LINK_PTR (link (), _Unwind_GetCFA) (context);
+}
diff --git a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c b/sysdeps/ia64/unwind-resume.c
similarity index 87%
rename from sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
rename to sysdeps/ia64/unwind-resume.c
index eaed6cf2ef..f8cf447162 100644
--- a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
+++ b/sysdeps/ia64/unwind-resume.c
@@ -16,11 +16,10 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <sysdeps/nptl/unwind-forcedunwind.c>
+#include <sysdeps/generic/unwind-resume.c>
_Unwind_Word
_Unwind_GetBSP (struct _Unwind_Context *context)
{
- return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetBSP)
- (context);
+ return UNWIND_LINK_PTR (link (), _Unwind_GetBSP) (context);
}
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 6ef7602cb9..280655fe40 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -57,8 +57,6 @@ struct pthread_functions
int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
#define HAVE_PTR_NTHREADS
unsigned int *ptr_nthreads;
- void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
- __attribute ((noreturn)) __cleanup_fct_attribute;
void (*ptr__nptl_deallocate_tsd) (void);
int (*ptr__nptl_setxid) (struct xid_command *);
void (*ptr_set_robust) (struct pthread *);
diff --git a/sysdeps/nptl/unwind-forcedunwind.c b/sysdeps/nptl/unwind-forcedunwind.c
deleted file mode 100644
index c0234670cf..0000000000
--- a/sysdeps/nptl/unwind-forcedunwind.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>.
-
- 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; see the file COPYING.LIB. If
- not, see <https://www.gnu.org/licenses/>. */
-
-#include <stdio.h>
-#include <unwind-link.h>
-#include <pthreadP.h>
-#include <sysdep.h>
-#include <gnu/lib-names.h>
-#include <unwind-resume.h>
-
-struct unwind_link *
-__pthread_unwind_link_get (void)
-{
- struct unwind_link *unwind_link = __libc_unwind_link_get ();
- if (unwind_link == NULL)
- __libc_fatal (LIBGCC_S_SO
- " must be installed for pthread_cancel to work\n");
- return unwind_link;
-}
-
-#if !HAVE_ARCH_UNWIND_RESUME
-void
-_Unwind_Resume (struct _Unwind_Exception *exc)
-{
- UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume) (exc);
-}
-#endif
-
-_Unwind_Reason_Code
-__gcc_personality_v0 PERSONALITY_PROTO
-{
- return UNWIND_LINK_PTR (__pthread_unwind_link_get (), personality)
- PERSONALITY_ARGS;
-}
-
-_Unwind_Reason_Code
-_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
- void *stop_argument)
-{
- return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_ForcedUnwind)
- (exc, stop, stop_argument);
-}
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
- return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetCFA)
- (context);
-}
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 8a11066f9e..a4eec97fd0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -340,6 +340,7 @@ GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_unwind_next F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -2183,5 +2184,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index a57e807cd0..03f9309528 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.17 __pthread_rwlock_wrlock F
GLIBC_2.17 __pthread_setspecific F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 __pthread_unwind_next F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __read F
GLIBC_2.17 __res_state F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index b62c855163..cfd43859bc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2154,6 +2154,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2264,6 +2265,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 059ae76802..62c3734ee1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index cd549c654b..f4a38131a0 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -329,6 +329,7 @@ GLIBC_2.32 __progname D 0x4
GLIBC_2.32 __progname_full D 0x4
GLIBC_2.32 __pthread_cleanup_routine F
GLIBC_2.32 __pthread_once F
+GLIBC_2.32 __pthread_unwind_next F
GLIBC_2.32 __ptsname_r_chk F
GLIBC_2.32 __pwrite64 F
GLIBC_2.32 __rawmemchr F
@@ -1943,5 +1944,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 55970eb845..43c2308c10 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -34,7 +34,6 @@ GLIBC_2.32 __pthread_rwlock_wrlock F
GLIBC_2.32 __pthread_setspecific F
GLIBC_2.32 __pthread_unregister_cancel F
GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 __pthread_unwind_next F
GLIBC_2.32 __pwrite64 F
GLIBC_2.32 __read F
GLIBC_2.32 __res_state F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 03e5389852..9e6b989de2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -159,6 +159,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
@@ -490,6 +491,7 @@ GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
GLIBC_2.4 __pthread_setspecific F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __read F
GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index ac2fcf7b14..319cf8474a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -156,6 +156,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
@@ -487,6 +488,7 @@ GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
GLIBC_2.4 __pthread_setspecific F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __read F
GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 336a59110e..a9094c6575 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -333,6 +333,7 @@ GLIBC_2.29 __progname D 0x4
GLIBC_2.29 __progname_full D 0x4
GLIBC_2.29 __pthread_cleanup_routine F
GLIBC_2.29 __pthread_once F
+GLIBC_2.29 __pthread_unwind_next F
GLIBC_2.29 __ptsname_r_chk F
GLIBC_2.29 __pwrite64 F
GLIBC_2.29 __rawmemchr F
@@ -2127,5 +2128,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 78e69d3e06..02ecea2de5 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -34,7 +34,6 @@ GLIBC_2.29 __pthread_rwlock_wrlock F
GLIBC_2.29 __pthread_setspecific F
GLIBC_2.29 __pthread_unregister_cancel F
GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 __pthread_unwind_next F
GLIBC_2.29 __pwrite64 F
GLIBC_2.29 __read F
GLIBC_2.29 __res_state F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 6d40c40268..63e458dc99 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2003,6 +2003,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2085,6 +2086,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 2022f82d81..428ff25c25 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2168,6 +2168,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2252,6 +2253,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index f2be012ea9..13df0ccca6 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile
index 97fc7df0b1..f6a08d15d0 100644
--- a/sysdeps/unix/sysv/linux/ia64/Makefile
+++ b/sysdeps/unix/sysv/linux/ia64/Makefile
@@ -23,7 +23,7 @@ librt-shared-only-routines += rt-sysdep
endif
ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
+sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
endif
ifeq ($(subdir),conform)
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b9eeaabb01..3556b0eac4 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2035,6 +2035,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2117,6 +2118,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 3698acd3e9..78c683810a 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 5a099fb3d0..245ae8da1f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -160,6 +160,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _Exit F
@@ -476,6 +477,7 @@ GLIBC_2.4 __progname D 0x4
GLIBC_2.4 __progname_full D 0x4
GLIBC_2.4 __pthread_cleanup_routine F
GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __ptsname_r_chk F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
GLIBC_2.4 __pthread_setspecific F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
GLIBC_2.4 __pwrite64 F
GLIBC_2.4 __read F
GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index f81c9cc523..fba3ac0138 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2112,6 +2112,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2197,6 +2198,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index f2be012ea9..13df0ccca6 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index ce50516bc6..6a6d813b2c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -341,6 +341,7 @@ GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_unwind_next F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -2178,5 +2179,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 73c70d5c87..51975cabbb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.18 __pthread_rwlock_wrlock F
GLIBC_2.18 __pthread_setspecific F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 __pthread_unwind_next F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __read F
GLIBC_2.18 __res_state F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 37ecc7c967..7138bb3fe7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -341,6 +341,7 @@ GLIBC_2.18 __progname D 0x4
GLIBC_2.18 __progname_full D 0x4
GLIBC_2.18 __pthread_cleanup_routine F
GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_unwind_next F
GLIBC_2.18 __ptsname_r_chk F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __rawmemchr F
@@ -2175,5 +2176,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 73c70d5c87..51975cabbb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.18 __pthread_rwlock_wrlock F
GLIBC_2.18 __pthread_setspecific F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 __pthread_unwind_next F
GLIBC_2.18 __pwrite64 F
GLIBC_2.18 __read F
GLIBC_2.18 __res_state F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 6d50fcc64f..d070746259 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2086,6 +2086,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2168,6 +2169,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index faa1ad9d1c..8829753707 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -196,7 +196,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b4e05e270d..d40d0079fc 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2084,6 +2084,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2166,6 +2167,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index faa1ad9d1c..8829753707 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -196,7 +196,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 71d184c2aa..d56b5a25cb 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2092,6 +2092,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x200
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2174,6 +2175,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 1e792c6705..d334efb37c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2085,6 +2085,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x400
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2168,6 +2169,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 5afc3e8022..4422b5ca92 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -378,6 +378,7 @@ GLIBC_2.21 __progname D 0x4
GLIBC_2.21 __progname_full D 0x4
GLIBC_2.21 __pthread_cleanup_routine F
GLIBC_2.21 __pthread_once F
+GLIBC_2.21 __pthread_unwind_next F
GLIBC_2.21 __ptsname_r_chk F
GLIBC_2.21 __pwrite64 F
GLIBC_2.21 __rawmemchr F
@@ -2216,5 +2217,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 5db41bc85b..f370adca8d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.21 __pthread_rwlock_wrlock F
GLIBC_2.21 __pthread_setspecific F
GLIBC_2.21 __pthread_unregister_cancel F
GLIBC_2.21 __pthread_unregister_cancel_restore F
-GLIBC_2.21 __pthread_unwind_next F
GLIBC_2.21 __pwrite64 F
GLIBC_2.21 __read F
GLIBC_2.21 __res_state F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4bfae8faa6..8bd6dd5b48 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2116,6 +2116,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2224,6 +2225,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 995c88cbce..e354162563 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index dc102f7f29..6bf7342f4c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2149,6 +2149,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2257,6 +2258,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 9f019c4eac..2d616e24cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1984,6 +1984,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2087,6 +2088,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 07428bd3d6..3bedf42d7a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -186,7 +186,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index f1217ffca5..247c8f77cf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -426,6 +426,7 @@ GLIBC_2.17 __progname D 0x8
GLIBC_2.17 __progname_full D 0x8
GLIBC_2.17 __pthread_cleanup_routine F
GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_unwind_next F
GLIBC_2.17 __ptsname_r_chk F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __rawmemchr F
@@ -2378,5 +2379,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index a57e807cd0..03f9309528 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.17 __pthread_rwlock_wrlock F
GLIBC_2.17 __pthread_setspecific F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 __pthread_unwind_next F
GLIBC_2.17 __pwrite64 F
GLIBC_2.17 __read F
GLIBC_2.17 __res_state F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index afaabf996e..1af16292a7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -326,6 +326,7 @@ GLIBC_2.33 __progname D 0x4
GLIBC_2.33 __progname_full D 0x4
GLIBC_2.33 __pthread_cleanup_routine F
GLIBC_2.33 __pthread_once F
+GLIBC_2.33 __pthread_unwind_next F
GLIBC_2.33 __ptsname_r_chk F
GLIBC_2.33 __pwrite64 F
GLIBC_2.33 __rawmemchr F
@@ -1945,5 +1946,6 @@ GLIBC_2.33 wscanf F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index ddf52b427a..a9958f0b67 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -34,7 +34,6 @@ GLIBC_2.33 __pthread_rwlock_wrlock F
GLIBC_2.33 __pthread_setspecific F
GLIBC_2.33 __pthread_unregister_cancel F
GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 __pthread_unwind_next F
GLIBC_2.33 __pwrite64 F
GLIBC_2.33 __read F
GLIBC_2.33 __res_state F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 28563980d5..54038ac5ba 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -337,6 +337,7 @@ GLIBC_2.27 __progname D 0x8
GLIBC_2.27 __progname_full D 0x8
GLIBC_2.27 __pthread_cleanup_routine F
GLIBC_2.27 __pthread_once F
+GLIBC_2.27 __pthread_unwind_next F
GLIBC_2.27 __ptsname_r_chk F
GLIBC_2.27 __pwrite64 F
GLIBC_2.27 __rawmemchr F
@@ -2145,5 +2146,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index b12ec34091..0c6ae5b20c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.27 __pthread_rwlock_wrlock F
GLIBC_2.27 __pthread_setspecific F
GLIBC_2.27 __pthread_unregister_cancel F
GLIBC_2.27 __pthread_unregister_cancel_restore F
-GLIBC_2.27 __pthread_unwind_next F
GLIBC_2.27 __pwrite64 F
GLIBC_2.27 __read F
GLIBC_2.27 __res_state F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 6cfde17d64..1e896254ef 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2125,6 +2125,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2222,6 +2223,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 738e9ab535..d72648c9dd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -198,7 +198,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 16b2483535..3cf10b2ab2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2029,6 +2029,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2123,6 +2124,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 13a2e8ef91..09c03d66b8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -190,7 +190,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index a6fd6eb894..f7bded858a 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2007,6 +2007,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2092,6 +2093,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index f4ba7b4ee8..c8ec299eac 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2007,6 +2007,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2089,6 +2090,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 70c2a92dfc..64529443e9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2119,6 +2119,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2213,6 +2214,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 059ae76802..62c3734ee1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 6f323b3705..5c5ad0af63 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2058,6 +2058,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2140,6 +2141,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 3698acd3e9..78c683810a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
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
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 35503c7361..1805cd6b9b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2016,6 +2016,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -2099,6 +2100,7 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 7636fde610..31bb6837f9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -188,7 +188,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
GLIBC_2.3.3 __pthread_unregister_cancel F
GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
GLIBC_2.3.3 pthread_attr_getaffinity_np F
GLIBC_2.3.3 pthread_barrierattr_getpshared F
GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 3af0b4def9..780679cb52 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -341,6 +341,7 @@ GLIBC_2.16 __progname D 0x4
GLIBC_2.16 __progname_full D 0x4
GLIBC_2.16 __pthread_cleanup_routine F
GLIBC_2.16 __pthread_once F
+GLIBC_2.16 __pthread_unwind_next F
GLIBC_2.16 __ptsname_r_chk F
GLIBC_2.16 __pwrite64 F
GLIBC_2.16 __rawmemchr F
@@ -2197,5 +2198,6 @@ GLIBC_2.33 stat64 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 __pthread_cleanup_routine F
GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
GLIBC_2.34 pthread_mutex_consistent F
GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index d15de68e7e..73719e6d11 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -35,7 +35,6 @@ GLIBC_2.16 __pthread_rwlock_wrlock F
GLIBC_2.16 __pthread_setspecific F
GLIBC_2.16 __pthread_unregister_cancel F
GLIBC_2.16 __pthread_unregister_cancel_restore F
-GLIBC_2.16 __pthread_unwind_next F
GLIBC_2.16 __pwrite64 F
GLIBC_2.16 __read F
GLIBC_2.16 __res_state F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 10/18] csu: Move calling main out of __libc_start_main_impl
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (8 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 09/18] nptl: Move __pthread_unwind_next " Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 11/18] nptl: Move internal __nptl_nthreads variable into libc Florian Weimer
` (7 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
This code depends on whether glibc has unwinding support for
a particular port.
---
csu/libc-start.c | 74 ++--------------------
sysdeps/generic/libc_start_call_main.h | 24 +++++++
sysdeps/nptl/libc_start_call_main.h | 88 ++++++++++++++++++++++++++
3 files changed, 116 insertions(+), 70 deletions(-)
create mode 100644 sysdeps/generic/libc_start_call_main.h
create mode 100644 sysdeps/nptl/libc_start_call_main.h
diff --git a/csu/libc-start.c b/csu/libc-start.c
index 05ff7afddf..8688cba76d 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -58,12 +58,6 @@ uintptr_t __pointer_chk_guard_local
# endif
#endif
-#ifdef HAVE_PTR_NTHREADS
-/* We need atomic operations. */
-# include <atomic.h>
-#endif
-
-
#ifndef SHARED
# include <link.h>
# include <dl-irel.h>
@@ -123,6 +117,9 @@ apply_irel (void)
# define ARCH_INIT_CPU_FEATURES()
#endif
+/* Obtain the definition of __libc_start_call_main. */
+#include <libc_start_call_main.h>
+
#ifdef SHARED
/* Initialization for dynamic executables. Find the main executable
link map and run its init functions. */
@@ -245,9 +242,6 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
void (*fini) (void),
void (*rtld_fini) (void), void *stack_end)
{
- /* Result of the 'main' function. */
- int result;
-
#ifndef SHARED
char **ev = &argv[argc + 1];
@@ -413,68 +407,8 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
#ifndef SHARED
_dl_debug_initialize (0, LM_ID_BASE);
#endif
-#ifdef HAVE_CLEANUP_JMP_BUF
- /* Memory for the cancellation buffer. */
- struct pthread_unwind_buf unwind_buf;
-
- int not_first_call;
- DIAG_PUSH_NEEDS_COMMENT;
-#if __GNUC_PREREQ (7, 0)
- /* This call results in a -Wstringop-overflow warning because struct
- pthread_unwind_buf is smaller than jmp_buf. setjmp and longjmp
- do not use anything beyond the common prefix (they never access
- the saved signal mask), so that is a false positive. */
- DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overflow=");
-#endif
- not_first_call = setjmp ((struct __jmp_buf_tag *) unwind_buf.cancel_jmp_buf);
- DIAG_POP_NEEDS_COMMENT;
- if (__glibc_likely (! not_first_call))
- {
- struct pthread *self = THREAD_SELF;
-
- /* Store old info. */
- unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf);
- unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup);
-
- /* Store the new cleanup handler info. */
- THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf);
-
- /* Run the program. */
- result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
- }
- else
- {
- /* Remove the thread-local data. */
-# ifdef SHARED
- PTHFCT_CALL (ptr__nptl_deallocate_tsd, ());
-# else
- extern void __nptl_deallocate_tsd (void) __attribute ((weak));
- __nptl_deallocate_tsd ();
-# endif
-
- /* One less thread. Decrement the counter. If it is zero we
- terminate the entire process. */
- result = 0;
-# ifdef SHARED
- unsigned int *ptr = __libc_pthread_functions.ptr_nthreads;
-# ifdef PTR_DEMANGLE
- PTR_DEMANGLE (ptr);
-# endif
-# else
- extern unsigned int __nptl_nthreads __attribute ((weak));
- unsigned int *const ptr = &__nptl_nthreads;
-# endif
-
- if (! atomic_decrement_and_test (ptr))
- /* Not much left to do but to exit the thread, not the process. */
- __exit_thread ();
- }
-#else
- /* Nothing fancy, just call the function. */
- result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
-#endif
- exit (result);
+ __libc_start_call_main (main, argc, argv MAIN_AUXVEC_PARAM);
}
/* Starting with glibc 2.34, the init parameter is always NULL. Older
diff --git a/sysdeps/generic/libc_start_call_main.h b/sysdeps/generic/libc_start_call_main.h
new file mode 100644
index 0000000000..8a06eec4a3
--- /dev/null
+++ b/sysdeps/generic/libc_start_call_main.h
@@ -0,0 +1,24 @@
+/* Invoking main from __libc_start. Generic version without unwinding.
+ Copyright (C) 1998-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/>. */
+
+_Noreturn static __always_inline void
+__libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
+ int argc, char **argv MAIN_AUXVEC_DECL)
+{
+ exit (main (argc, argv, __environ MAIN_AUXVEC_PARAM));
+}
diff --git a/sysdeps/nptl/libc_start_call_main.h b/sysdeps/nptl/libc_start_call_main.h
new file mode 100644
index 0000000000..5218e7ab1e
--- /dev/null
+++ b/sysdeps/nptl/libc_start_call_main.h
@@ -0,0 +1,88 @@
+/* Invoking main from __libc_start_main. nptl version.
+ Copyright (C) 1998-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 <atomic.h>
+
+_Noreturn static void
+__libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
+ int argc, char **argv
+#ifdef LIBC_START_MAIN_AUXVEC_ARG
+ , ElfW(auxv_t) *auxvec
+#endif
+ )
+{
+ int result;
+
+ /* Memory for the cancellation buffer. */
+ struct pthread_unwind_buf unwind_buf;
+
+ int not_first_call;
+ DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+ /* This call results in a -Wstringop-overflow warning because struct
+ pthread_unwind_buf is smaller than jmp_buf. setjmp and longjmp
+ do not use anything beyond the common prefix (they never access
+ the saved signal mask), so that is a false positive. */
+ DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overflow=");
+#endif
+ not_first_call = setjmp ((struct __jmp_buf_tag *) unwind_buf.cancel_jmp_buf);
+ DIAG_POP_NEEDS_COMMENT;
+ if (__glibc_likely (! not_first_call))
+ {
+ struct pthread *self = THREAD_SELF;
+
+ /* Store old info. */
+ unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf);
+ unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup);
+
+ /* Store the new cleanup handler info. */
+ THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf);
+
+ /* Run the program. */
+ result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
+ }
+ else
+ {
+ /* Remove the thread-local data. */
+# ifdef SHARED
+ PTHFCT_CALL (ptr__nptl_deallocate_tsd, ());
+# else
+ extern void __nptl_deallocate_tsd (void) __attribute ((weak));
+ __nptl_deallocate_tsd ();
+# endif
+
+ /* One less thread. Decrement the counter. If it is zero we
+ terminate the entire process. */
+ result = 0;
+# ifdef SHARED
+ unsigned int *ptr = __libc_pthread_functions.ptr_nthreads;
+# ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (ptr);
+# endif
+# else
+ extern unsigned int __nptl_nthreads __attribute ((weak));
+ unsigned int *const ptr = &__nptl_nthreads;
+# endif
+
+ if (! atomic_decrement_and_test (ptr))
+ /* Not much left to do but to exit the thread, not the process. */
+ __exit_thread ();
+ }
+
+ exit (result);
+}
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 11/18] nptl: Move internal __nptl_nthreads variable into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (9 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 10/18] csu: Move calling main out of __libc_start_main_impl Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 12/18] nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE Florian Weimer
` (6 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
---
nptl/Makefile | 1 +
nptl/Versions | 1 +
nptl/libc_pthread_init.c | 1 -
nptl/nptl-init.c | 1 -
nptl/nptl_nthreads.c | 23 +++++++++++++++++++++++
nptl/pthreadP.h | 3 ++-
nptl/pthread_create.c | 4 ----
nptl_db/structs.def | 2 +-
sysdeps/nptl/libc_start_call_main.h | 13 ++-----------
sysdeps/nptl/pthread-functions.h | 2 --
10 files changed, 30 insertions(+), 21 deletions(-)
create mode 100644 nptl/nptl_nthreads.c
diff --git a/nptl/Makefile b/nptl/Makefile
index c1ade91a0b..d7491632b8 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -45,6 +45,7 @@ routines = \
libc_multiple_threads \
libc_pthread_init \
lowlevellock \
+ nptl_nthreads \
old_pthread_cond_destroy \
old_pthread_cond_init \
pthread_atfork \
diff --git a/nptl/Versions b/nptl/Versions
index c241763c13..01a99ac99e 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -108,6 +108,7 @@ libc {
__lll_lock_wait_private;
__lll_trylock_elision;
__lll_unlock_elision;
+ __nptl_nthreads;
__pthread_attr_copy;
__pthread_attr_destroy;
__pthread_attr_init;
diff --git a/nptl/libc_pthread_init.c b/nptl/libc_pthread_init.c
index 3ac54aae13..85fceff930 100644
--- a/nptl/libc_pthread_init.c
+++ b/nptl/libc_pthread_init.c
@@ -27,7 +27,6 @@
#include <sysdep.h>
#include <ldsodefs.h>
-
#ifdef TLS_MULTIPLE_THREADS_IN_TCB
void
#else
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index d30e8a9bdf..a09d6ed306 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -94,7 +94,6 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_key_create = __pthread_key_create,
.ptr___pthread_getspecific = __pthread_getspecific,
.ptr___pthread_setspecific = __pthread_setspecific,
- .ptr_nthreads = &__nptl_nthreads,
.ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
.ptr__nptl_setxid = __nptl_setxid,
.ptr_set_robust = __nptl_set_robust
diff --git a/nptl/nptl_nthreads.c b/nptl/nptl_nthreads.c
new file mode 100644
index 0000000000..2245bb3c76
--- /dev/null
+++ b/nptl/nptl_nthreads.c
@@ -0,0 +1,23 @@
+/* Thread counter variable.
+ Copyright (C) 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 <pthreadP.h>
+
+/* Number of threads running. */
+unsigned int __nptl_nthreads = 1;
+libc_hidden_data_def (__nptl_nthreads)
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 1a264ab929..e00e21de7d 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -220,7 +220,8 @@ extern struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX];
hidden_proto (__pthread_keys)
/* Number of threads running. */
-extern unsigned int __nptl_nthreads attribute_hidden;
+extern unsigned int __nptl_nthreads;
+libc_hidden_proto (__nptl_nthreads)
#ifndef __ASSUME_SET_ROBUST_LIST
/* Negative if we do not have the system call and we can use it. */
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 6c645aff48..350bf03f5d 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -51,10 +51,6 @@ static td_thr_events_t __nptl_threads_events __attribute_used__;
/* Pointer to descriptor with the last event. */
static struct pthread *__nptl_last_event __attribute_used__;
-/* Number of threads running. */
-unsigned int __nptl_nthreads = 1;
-
-
/* Code to allocate and deallocate a stack. */
#include "allocatestack.c"
diff --git a/nptl_db/structs.def b/nptl_db/structs.def
index 999a9fc35a..d0e1cb659a 100644
--- a/nptl_db/structs.def
+++ b/nptl_db/structs.def
@@ -73,7 +73,7 @@ DB_SYMBOL (nptl_version)
DB_FUNCTION (__nptl_create_event)
DB_FUNCTION (__nptl_death_event)
DB_SYMBOL (__nptl_threads_events)
-DB_VARIABLE (__nptl_nthreads)
+DB_MAIN_VARIABLE (__nptl_nthreads)
DB_VARIABLE (__nptl_last_event)
DB_VARIABLE (__nptl_initial_report_events)
diff --git a/sysdeps/nptl/libc_start_call_main.h b/sysdeps/nptl/libc_start_call_main.h
index 5218e7ab1e..112cc20a7a 100644
--- a/sysdeps/nptl/libc_start_call_main.h
+++ b/sysdeps/nptl/libc_start_call_main.h
@@ -17,6 +17,7 @@
<https://www.gnu.org/licenses/>. */
#include <atomic.h>
+#include <nptl/pthreadP.h>
_Noreturn static void
__libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
@@ -69,17 +70,7 @@ __libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
/* One less thread. Decrement the counter. If it is zero we
terminate the entire process. */
result = 0;
-# ifdef SHARED
- unsigned int *ptr = __libc_pthread_functions.ptr_nthreads;
-# ifdef PTR_DEMANGLE
- PTR_DEMANGLE (ptr);
-# endif
-# else
- extern unsigned int __nptl_nthreads __attribute ((weak));
- unsigned int *const ptr = &__nptl_nthreads;
-# endif
-
- if (! atomic_decrement_and_test (ptr))
+ if (! atomic_decrement_and_test (&__nptl_nthreads))
/* Not much left to do but to exit the thread, not the process. */
__exit_thread ();
}
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 280655fe40..2fa698b1da 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -55,8 +55,6 @@ struct pthread_functions
int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
void *(*ptr___pthread_getspecific) (pthread_key_t);
int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
-#define HAVE_PTR_NTHREADS
- unsigned int *ptr_nthreads;
void (*ptr__nptl_deallocate_tsd) (void);
int (*ptr__nptl_setxid) (struct xid_command *);
void (*ptr_set_robust) (struct pthread *);
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 12/18] nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (10 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 11/18] nptl: Move internal __nptl_nthreads variable into libc Florian Weimer
@ 2021-03-12 17:49 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 13/18] nptl: Move __pthread_keys global variable into libc Florian Weimer
` (5 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:49 UTC (permalink / raw)
To: libc-alpha
And document the reason for DB_ARRAY_VARIABLE.
---
nptl_db/db-symbols.awk | 1 +
nptl_db/structs.def | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/nptl_db/db-symbols.awk b/nptl_db/db-symbols.awk
index eb089e188a..9e981537c8 100644
--- a/nptl_db/db-symbols.awk
+++ b/nptl_db/db-symbols.awk
@@ -4,6 +4,7 @@
BEGIN {
%define DB_RTLD_VARIABLE(name) /* Nothing. */
%define DB_MAIN_VARIABLE(name) /* Nothing. */
+%define DB_MAIN_ARRAY_VARIABLE(name) /* Nothing. */
%define DB_LOOKUP_NAME(idx, name) required[STRINGIFY (name)] = 1;
%define DB_LOOKUP_NAME_TH_UNIQUE(idx, name) th_unique[STRINGIFY (name)] = 1;
%include "db-symbols.h"
diff --git a/nptl_db/structs.def b/nptl_db/structs.def
index d0e1cb659a..1522c96f8f 100644
--- a/nptl_db/structs.def
+++ b/nptl_db/structs.def
@@ -26,9 +26,14 @@
# define DB_RTLD_VARIABLE(name) DB_VARIABLE (name)
#endif
+/* DB_MAIN_VARIABLE and DB_MAIN_ARRAY_VARIABLE are not covered by the
+ libpthread symbol check in db-symbols.awk. */
#ifndef DB_MAIN_VARIABLE
# define DB_MAIN_VARIABLE(name) DB_VARIABLE (name)
#endif
+#ifndef DB_MAIN_ARRAY_VARIABLE
+# define DB_MAIN_ARRAY_VARIABLE(name) DB_ARRAY_VARIABLE (name)
+#endif
#ifndef DB_RTLD_GLOBAL_FIELD
# if !IS_IN (libpthread)
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 13/18] nptl: Move __pthread_keys global variable into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (11 preceding siblings ...)
2021-03-12 17:49 ` [PATCH 12/18] nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 14/18] nptl: Move __nptl_deallocate_tsd " Florian Weimer
` (4 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
This prepares moving pthread_exit, and later the pthread_key_create
infrastructure.
---
nptl/Makefile | 1 +
nptl/Versions | 1 +
nptl/pthreadP.h | 2 +-
nptl/pthread_keys.c | 24 ++++++++++++++++++++++++
nptl/vars.c | 5 -----
nptl_db/structs.def | 2 +-
6 files changed, 28 insertions(+), 7 deletions(-)
create mode 100644 nptl/pthread_keys.c
diff --git a/nptl/Makefile b/nptl/Makefile
index d7491632b8..c0ae3593ef 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -76,6 +76,7 @@ routines = \
pthread_getaffinity \
pthread_getattr_np \
pthread_getschedparam \
+ pthread_keys \
pthread_mutex_consistent \
pthread_once \
pthread_self \
diff --git a/nptl/Versions b/nptl/Versions
index 01a99ac99e..87bdcd89ea 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -121,6 +121,7 @@ libc {
__pthread_cond_init; # Used by the C11 threads.
__pthread_force_elision;
__pthread_getattr_default_np;
+ __pthread_keys;
__pthread_unwind;
}
}
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index e00e21de7d..df64d4f8f1 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -217,7 +217,7 @@ extern int __concurrency_level attribute_hidden;
/* Thread-local data key handling. */
extern struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX];
-hidden_proto (__pthread_keys)
+libc_hidden_proto (__pthread_keys)
/* Number of threads running. */
extern unsigned int __nptl_nthreads;
diff --git a/nptl/pthread_keys.c b/nptl/pthread_keys.c
new file mode 100644
index 0000000000..76e4cfad34
--- /dev/null
+++ b/nptl/pthread_keys.c
@@ -0,0 +1,24 @@
+/* Table of pthread_key_create keys and their destructors.
+ Copyright (C) 2004-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 <pthreadP.h>
+
+/* Table of the key information. */
+struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX]
+ __attribute__ ((nocommon));
+libc_hidden_data_def (__pthread_keys)
diff --git a/nptl/vars.c b/nptl/vars.c
index 51de9fbd54..8de30856b8 100644
--- a/nptl/vars.c
+++ b/nptl/vars.c
@@ -33,8 +33,3 @@ int __default_pthread_attr_lock = LLL_LOCK_INITIALIZER;
nptl/descr.h for more context on the single-threaded process case. */
int __pthread_multiple_threads attribute_hidden;
#endif
-
-/* Table of the key information. */
-struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX]
- __attribute__ ((nocommon));
-hidden_data_def (__pthread_keys)
diff --git a/nptl_db/structs.def b/nptl_db/structs.def
index 1522c96f8f..33bf0f9be4 100644
--- a/nptl_db/structs.def
+++ b/nptl_db/structs.def
@@ -82,7 +82,7 @@ DB_MAIN_VARIABLE (__nptl_nthreads)
DB_VARIABLE (__nptl_last_event)
DB_VARIABLE (__nptl_initial_report_events)
-DB_ARRAY_VARIABLE (__pthread_keys)
+DB_MAIN_ARRAY_VARIABLE (__pthread_keys)
DB_STRUCT (pthread_key_struct)
DB_STRUCT_FIELD (pthread_key_struct, seq)
DB_STRUCT_FIELD (pthread_key_struct, destr)
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 14/18] nptl: Move __nptl_deallocate_tsd into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (12 preceding siblings ...)
2021-03-12 17:50 ` [PATCH 13/18] nptl: Move __pthread_keys global variable into libc Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 15/18] nptl: Move pthread_exit " Florian Weimer
` (3 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
This prepares moving pthread_exit, and later the pthread_key_create
infrastructure.
---
nptl/Makefile | 1 +
nptl/Versions | 1 +
nptl/nptl-init.c | 1 -
nptl/nptl_deallocate_tsd.c | 112 ++++++++++++++++++++++++++++
nptl/pthreadP.h | 3 +-
nptl/pthread_create.c | 94 -----------------------
sysdeps/nptl/libc_start_call_main.h | 5 --
sysdeps/nptl/pthread-functions.h | 1 -
8 files changed, 116 insertions(+), 102 deletions(-)
create mode 100644 nptl/nptl_deallocate_tsd.c
diff --git a/nptl/Makefile b/nptl/Makefile
index c0ae3593ef..e21db8b138 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -45,6 +45,7 @@ routines = \
libc_multiple_threads \
libc_pthread_init \
lowlevellock \
+ nptl_deallocate_tsd \
nptl_nthreads \
old_pthread_cond_destroy \
old_pthread_cond_init \
diff --git a/nptl/Versions b/nptl/Versions
index 87bdcd89ea..5253772e8d 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -108,6 +108,7 @@ libc {
__lll_lock_wait_private;
__lll_trylock_elision;
__lll_unlock_elision;
+ __nptl_deallocate_tsd;
__nptl_nthreads;
__pthread_attr_copy;
__pthread_attr_destroy;
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index a09d6ed306..54d9d206b2 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -94,7 +94,6 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_key_create = __pthread_key_create,
.ptr___pthread_getspecific = __pthread_getspecific,
.ptr___pthread_setspecific = __pthread_setspecific,
- .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
.ptr__nptl_setxid = __nptl_setxid,
.ptr_set_robust = __nptl_set_robust
};
diff --git a/nptl/nptl_deallocate_tsd.c b/nptl/nptl_deallocate_tsd.c
new file mode 100644
index 0000000000..c665f4a08a
--- /dev/null
+++ b/nptl/nptl_deallocate_tsd.c
@@ -0,0 +1,112 @@
+/* Deallocation thread-specific data structures related to pthread_key_create.
+ 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 <pthreadP.h>
+
+/* Deallocate POSIX thread-local-storage. */
+void
+__nptl_deallocate_tsd (void)
+{
+ struct pthread *self = THREAD_SELF;
+
+ /* Maybe no data was ever allocated. This happens often so we have
+ a flag for this. */
+ if (THREAD_GETMEM (self, specific_used))
+ {
+ size_t round;
+ size_t cnt;
+
+ round = 0;
+ do
+ {
+ size_t idx;
+
+ /* So far no new nonzero data entry. */
+ THREAD_SETMEM (self, specific_used, false);
+
+ for (cnt = idx = 0; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
+ {
+ struct pthread_key_data *level2;
+
+ level2 = THREAD_GETMEM_NC (self, specific, cnt);
+
+ if (level2 != NULL)
+ {
+ size_t inner;
+
+ for (inner = 0; inner < PTHREAD_KEY_2NDLEVEL_SIZE;
+ ++inner, ++idx)
+ {
+ void *data = level2[inner].data;
+
+ if (data != NULL)
+ {
+ /* Always clear the data. */
+ level2[inner].data = NULL;
+
+ /* Make sure the data corresponds to a valid
+ key. This test fails if the key was
+ deallocated and also if it was
+ re-allocated. It is the user's
+ responsibility to free the memory in this
+ case. */
+ if (level2[inner].seq
+ == __pthread_keys[idx].seq
+ /* It is not necessary to register a destructor
+ function. */
+ && __pthread_keys[idx].destr != NULL)
+ /* Call the user-provided destructor. */
+ __pthread_keys[idx].destr (data);
+ }
+ }
+ }
+ else
+ idx += PTHREAD_KEY_1STLEVEL_SIZE;
+ }
+
+ if (THREAD_GETMEM (self, specific_used) == 0)
+ /* No data has been modified. */
+ goto just_free;
+ }
+ /* We only repeat the process a fixed number of times. */
+ while (__builtin_expect (++round < PTHREAD_DESTRUCTOR_ITERATIONS, 0));
+
+ /* Just clear the memory of the first block for reuse. */
+ memset (&THREAD_SELF->specific_1stblock, '\0',
+ sizeof (self->specific_1stblock));
+
+ just_free:
+ /* Free the memory for the other blocks. */
+ for (cnt = 1; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
+ {
+ struct pthread_key_data *level2;
+
+ level2 = THREAD_GETMEM_NC (self, specific, cnt);
+ if (level2 != NULL)
+ {
+ /* The first block is allocated as part of the thread
+ descriptor. */
+ free (level2);
+ THREAD_SETMEM_NC (self, specific, cnt, NULL);
+ }
+ }
+
+ THREAD_SETMEM (self, specific_used, false);
+ }
+}
+libc_hidden_def (__nptl_deallocate_tsd)
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index df64d4f8f1..e11a3a1945 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -679,7 +679,8 @@ extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
int execute);
-extern void __nptl_deallocate_tsd (void) attribute_hidden;
+extern void __nptl_deallocate_tsd (void);
+libc_hidden_proto (__nptl_deallocate_tsd)
extern void __nptl_setxid_error (struct xid_command *cmdp, int error)
attribute_hidden;
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 350bf03f5d..58e10e7741 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -242,100 +242,6 @@ __find_in_stack_list (struct pthread *pd)
}
-/* Deallocate POSIX thread-local-storage. */
-void
-attribute_hidden
-__nptl_deallocate_tsd (void)
-{
- struct pthread *self = THREAD_SELF;
-
- /* Maybe no data was ever allocated. This happens often so we have
- a flag for this. */
- if (THREAD_GETMEM (self, specific_used))
- {
- size_t round;
- size_t cnt;
-
- round = 0;
- do
- {
- size_t idx;
-
- /* So far no new nonzero data entry. */
- THREAD_SETMEM (self, specific_used, false);
-
- for (cnt = idx = 0; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
- {
- struct pthread_key_data *level2;
-
- level2 = THREAD_GETMEM_NC (self, specific, cnt);
-
- if (level2 != NULL)
- {
- size_t inner;
-
- for (inner = 0; inner < PTHREAD_KEY_2NDLEVEL_SIZE;
- ++inner, ++idx)
- {
- void *data = level2[inner].data;
-
- if (data != NULL)
- {
- /* Always clear the data. */
- level2[inner].data = NULL;
-
- /* Make sure the data corresponds to a valid
- key. This test fails if the key was
- deallocated and also if it was
- re-allocated. It is the user's
- responsibility to free the memory in this
- case. */
- if (level2[inner].seq
- == __pthread_keys[idx].seq
- /* It is not necessary to register a destructor
- function. */
- && __pthread_keys[idx].destr != NULL)
- /* Call the user-provided destructor. */
- __pthread_keys[idx].destr (data);
- }
- }
- }
- else
- idx += PTHREAD_KEY_1STLEVEL_SIZE;
- }
-
- if (THREAD_GETMEM (self, specific_used) == 0)
- /* No data has been modified. */
- goto just_free;
- }
- /* We only repeat the process a fixed number of times. */
- while (__builtin_expect (++round < PTHREAD_DESTRUCTOR_ITERATIONS, 0));
-
- /* Just clear the memory of the first block for reuse. */
- memset (&THREAD_SELF->specific_1stblock, '\0',
- sizeof (self->specific_1stblock));
-
- just_free:
- /* Free the memory for the other blocks. */
- for (cnt = 1; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
- {
- struct pthread_key_data *level2;
-
- level2 = THREAD_GETMEM_NC (self, specific, cnt);
- if (level2 != NULL)
- {
- /* The first block is allocated as part of the thread
- descriptor. */
- free (level2);
- THREAD_SETMEM_NC (self, specific, cnt, NULL);
- }
- }
-
- THREAD_SETMEM (self, specific_used, false);
- }
-}
-
-
/* Deallocate a thread's stack after optionally making sure the thread
descriptor is still valid. */
void
diff --git a/sysdeps/nptl/libc_start_call_main.h b/sysdeps/nptl/libc_start_call_main.h
index 112cc20a7a..c579c65f78 100644
--- a/sysdeps/nptl/libc_start_call_main.h
+++ b/sysdeps/nptl/libc_start_call_main.h
@@ -60,12 +60,7 @@ __libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
else
{
/* Remove the thread-local data. */
-# ifdef SHARED
- PTHFCT_CALL (ptr__nptl_deallocate_tsd, ());
-# else
- extern void __nptl_deallocate_tsd (void) __attribute ((weak));
__nptl_deallocate_tsd ();
-# endif
/* One less thread. Decrement the counter. If it is zero we
terminate the entire process. */
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 2fa698b1da..b28b47ab0d 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -55,7 +55,6 @@ struct pthread_functions
int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
void *(*ptr___pthread_getspecific) (pthread_key_t);
int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
- void (*ptr__nptl_deallocate_tsd) (void);
int (*ptr__nptl_setxid) (struct xid_command *);
void (*ptr_set_robust) (struct pthread *);
};
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 15/18] nptl: Move pthread_exit into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (13 preceding siblings ...)
2021-03-12 17:50 ` [PATCH 14/18] nptl: Move __nptl_deallocate_tsd " Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 16/18] nptl: Move pthread_setcancelstate " Florian Weimer
` (2 subsequent siblings)
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
The pthread_exit symbol was moved using
scripts/move-symbol-to-libc.py. No new symbol version is needed
because there was a forwarder.
The new tests nptl/tst-pthread_exit-nothreads and
nptl/tst-pthread_exit-nothreads-static exercise the scenario
that pthread_exit is called without libpthread having been linked in.
This is not possible for the generic code, so these tests do not
live in sysdeps/pthread for now.
---
nptl/Makefile | 13 +++++++--
nptl/Versions | 2 +-
nptl/forward.c | 16 -----------
nptl/nptl-init.c | 1 -
nptl/pthreadP.h | 1 +
nptl/pthread_exit.c | 5 +---
nptl/tst-pthread_exit-nothreads-static.c | 19 +++++++++++++
nptl/tst-pthread_exit-nothreads.c | 28 +++++++++++++++++++
sysdeps/nptl/pthread-functions.h | 1 -
sysdeps/pthread/Makefile | 2 +-
.../sysv/linux/aarch64/libpthread.abilist | 1 -
.../unix/sysv/linux/alpha/libpthread.abilist | 1 -
.../unix/sysv/linux/arc/libpthread.abilist | 1 -
.../unix/sysv/linux/arm/be/libpthread.abilist | 1 -
.../unix/sysv/linux/arm/le/libpthread.abilist | 1 -
.../unix/sysv/linux/csky/libpthread.abilist | 1 -
.../unix/sysv/linux/hppa/libpthread.abilist | 1 -
.../unix/sysv/linux/i386/libpthread.abilist | 1 -
.../unix/sysv/linux/ia64/libpthread.abilist | 1 -
.../linux/m68k/coldfire/libpthread.abilist | 1 -
.../sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
.../linux/microblaze/be/libpthread.abilist | 1 -
.../linux/microblaze/le/libpthread.abilist | 1 -
.../sysv/linux/mips/mips32/libpthread.abilist | 1 -
.../sysv/linux/mips/mips64/libpthread.abilist | 1 -
.../unix/sysv/linux/nios2/libpthread.abilist | 1 -
.../powerpc/powerpc32/libpthread.abilist | 1 -
.../powerpc/powerpc64/be/libpthread.abilist | 1 -
.../powerpc/powerpc64/le/libpthread.abilist | 1 -
.../sysv/linux/riscv/rv32/libpthread.abilist | 1 -
.../sysv/linux/riscv/rv64/libpthread.abilist | 1 -
.../linux/s390/s390-32/libpthread.abilist | 1 -
.../linux/s390/s390-64/libpthread.abilist | 1 -
.../unix/sysv/linux/sh/be/libpthread.abilist | 1 -
.../unix/sysv/linux/sh/le/libpthread.abilist | 1 -
.../linux/sparc/sparc32/libpthread.abilist | 1 -
.../linux/sparc/sparc64/libpthread.abilist | 1 -
.../sysv/linux/x86_64/64/libpthread.abilist | 1 -
.../sysv/linux/x86_64/x32/libpthread.abilist | 1 -
39 files changed, 61 insertions(+), 56 deletions(-)
create mode 100644 nptl/tst-pthread_exit-nothreads-static.c
create mode 100644 nptl/tst-pthread_exit-nothreads.c
diff --git a/nptl/Makefile b/nptl/Makefile
index e21db8b138..2b184846ec 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -74,6 +74,7 @@ routines = \
pthread_condattr_destroy \
pthread_condattr_init \
pthread_equal \
+ pthread_exit \
pthread_getaffinity \
pthread_getattr_np \
pthread_getschedparam \
@@ -150,7 +151,6 @@ libpthread-routines = \
pthread_condattr_setpshared \
pthread_create \
pthread_detach \
- pthread_exit \
pthread_getattr_default_np \
pthread_getconcurrency \
pthread_getcpuclockid \
@@ -363,7 +363,13 @@ tests = tst-attr2 tst-attr3 tst-default-attr \
tst-thread-affinity-sched \
tst-pthread-defaultattr-free \
tst-pthread-attr-sigmask \
- tst-pthread-timedlock-lockloop
+ tst-pthread-timedlock-lockloop \
+ tst-pthread_exit-nothreads \
+ tst-pthread_exit-nothreads-static \
+
+tests-nolibpthread = \
+ tst-pthread_exit-nothreads \
+ tst-pthread_exit-nothreads-static \
tests-container = tst-pthread-getattr
@@ -488,7 +494,8 @@ link-libc-static := $(common-objpfx)libc.a $(static-gnulib) \
tests-static += tst-stackguard1-static \
tst-cancel24-static \
tst-mutex8-static tst-mutexpi8-static tst-sem11-static \
- tst-sem12-static tst-cond11-static
+ tst-sem12-static tst-cond11-static \
+ tst-pthread_exit-nothreads-static
tests += tst-cancel24-static
diff --git a/nptl/Versions b/nptl/Versions
index 5253772e8d..f897439613 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -120,6 +120,7 @@ libc {
__pthread_cleanup_upto;
__pthread_cond_destroy; # Used by the C11 threads.
__pthread_cond_init; # Used by the C11 threads.
+ __pthread_exit;
__pthread_force_elision;
__pthread_getattr_default_np;
__pthread_keys;
@@ -177,7 +178,6 @@ libpthread {
pthread_cond_wait;
pthread_create;
pthread_detach;
- pthread_exit;
pthread_getspecific;
pthread_join;
pthread_key_create;
diff --git a/nptl/forward.c b/nptl/forward.c
index 7a7f54f9d9..a4a377ba6a 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -41,17 +41,6 @@ name decl \
return PTHFCT_CALL (ptr_##name, params); \
}
-/* Same as FORWARD2, only without return. */
-#define FORWARD_NORETURN(name, rettype, decl, params, defaction) \
-rettype \
-name decl \
-{ \
- if (!__libc_pthread_functions_init) \
- defaction; \
- \
- PTHFCT_CALL (ptr_##name, params); \
-}
-
#define FORWARD(name, decl, params, defretval) \
FORWARD2 (name, int, decl, params, return defretval)
@@ -103,11 +92,6 @@ versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait,
GLIBC_2_3_2);
-FORWARD_NORETURN (__pthread_exit, void, (void *retval), (retval),
- exit (EXIT_SUCCESS))
-strong_alias (__pthread_exit, pthread_exit);
-
-
FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
FORWARD (pthread_mutex_init,
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 54d9d206b2..caa06f380a 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -81,7 +81,6 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_cond_wait_2_0 = __pthread_cond_wait_2_0,
.ptr___pthread_cond_timedwait_2_0 = __pthread_cond_timedwait_2_0,
# endif
- .ptr___pthread_exit = __pthread_exit,
.ptr_pthread_mutex_destroy = __pthread_mutex_destroy,
.ptr_pthread_mutex_init = __pthread_mutex_init,
.ptr_pthread_mutex_lock = __pthread_mutex_lock,
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index e11a3a1945..3c6025d2fe 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -528,6 +528,7 @@ extern int __pthread_detach (pthread_t th);
extern int __pthread_cancel (pthread_t th);
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);
extern int __pthread_setcanceltype (int type, int *oldtype);
extern int __pthread_enable_asynccancel (void) attribute_hidden;
diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c
index aed8c12e17..1a93f371a9 100644
--- a/nptl/pthread_exit.c
+++ b/nptl/pthread_exit.c
@@ -36,8 +36,5 @@ __pthread_exit (void *value)
__do_cancel ();
}
+libc_hidden_def (__pthread_exit)
weak_alias (__pthread_exit, pthread_exit)
-
-/* After a thread terminates, __libc_start_main decrements
- __nptl_nthreads defined in pthread_create.c. */
-PTHREAD_STATIC_FN_REQUIRE (__pthread_create)
diff --git a/nptl/tst-pthread_exit-nothreads-static.c b/nptl/tst-pthread_exit-nothreads-static.c
new file mode 100644
index 0000000000..e8cf19b1a4
--- /dev/null
+++ b/nptl/tst-pthread_exit-nothreads-static.c
@@ -0,0 +1,19 @@
+/* Check that pthread_exit works if there are no threads. Static version.
+ Copyright (C) 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 "tst-pthread_exit-nothreads.c"
diff --git a/nptl/tst-pthread_exit-nothreads.c b/nptl/tst-pthread_exit-nothreads.c
new file mode 100644
index 0000000000..d47455c75c
--- /dev/null
+++ b/nptl/tst-pthread_exit-nothreads.c
@@ -0,0 +1,28 @@
+/* Check that pthread_exit works if there are no threads.
+ Copyright (C) 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 <pthread.h>
+
+static int
+do_test (void)
+{
+ pthread_exit (NULL);
+ return 1; /* Not reached. */
+}
+
+#include <support/test-driver.c>
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index b28b47ab0d..8f280b9c25 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -41,7 +41,6 @@ struct pthread_functions
int (*ptr___pthread_cond_timedwait_2_0) (pthread_cond_2_0_t *,
pthread_mutex_t *,
const struct timespec *);
- void (*ptr___pthread_exit) (void *) __attribute__ ((__noreturn__));
int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
const pthread_mutexattr_t *);
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 53b65ef349..ed15c1e433 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -111,7 +111,7 @@ tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
# Files which must not be linked with libpthread.
-tests-nolibpthread = tst-unload
+tests-nolibpthread += tst-unload
# GCC-4.9 compiles 'sprintf(NULL, ...)' into UD2 on x86_64 without -fno-builtin
CFLAGS-tst-cleanup2.c += -fno-builtin
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 03f9309528..a5bc7c8357 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.17 pthread_condattr_setclock F
GLIBC_2.17 pthread_condattr_setpshared F
GLIBC_2.17 pthread_create F
GLIBC_2.17 pthread_detach F
-GLIBC_2.17 pthread_exit F
GLIBC_2.17 pthread_getconcurrency F
GLIBC_2.17 pthread_getcpuclockid F
GLIBC_2.17 pthread_getname_np F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 62c3734ee1..5fc406b7c1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 43c2308c10..e4c31d1343 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -97,7 +97,6 @@ GLIBC_2.32 pthread_condattr_setclock F
GLIBC_2.32 pthread_condattr_setpshared F
GLIBC_2.32 pthread_create F
GLIBC_2.32 pthread_detach F
-GLIBC_2.32 pthread_exit F
GLIBC_2.32 pthread_getattr_default_np F
GLIBC_2.32 pthread_getconcurrency F
GLIBC_2.32 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 9e897ccaac..b97115fe03 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -118,7 +118,6 @@ GLIBC_2.4 pthread_condattr_setclock F
GLIBC_2.4 pthread_condattr_setpshared F
GLIBC_2.4 pthread_create F
GLIBC_2.4 pthread_detach F
-GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getconcurrency F
GLIBC_2.4 pthread_getcpuclockid F
GLIBC_2.4 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 9e897ccaac..b97115fe03 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -118,7 +118,6 @@ GLIBC_2.4 pthread_condattr_setclock F
GLIBC_2.4 pthread_condattr_setpshared F
GLIBC_2.4 pthread_create F
GLIBC_2.4 pthread_detach F
-GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getconcurrency F
GLIBC_2.4 pthread_getcpuclockid F
GLIBC_2.4 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 02ecea2de5..7fb16e8387 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -95,7 +95,6 @@ GLIBC_2.29 pthread_condattr_setclock F
GLIBC_2.29 pthread_condattr_setpshared F
GLIBC_2.29 pthread_create F
GLIBC_2.29 pthread_detach F
-GLIBC_2.29 pthread_exit F
GLIBC_2.29 pthread_getattr_default_np F
GLIBC_2.29 pthread_getconcurrency F
GLIBC_2.29 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 98c5811d37..3288c7dd84 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 13df0ccca6..7ff0652b56 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 78c683810a..f42e1d4f2f 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 9e897ccaac..b97115fe03 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -118,7 +118,6 @@ GLIBC_2.4 pthread_condattr_setclock F
GLIBC_2.4 pthread_condattr_setpshared F
GLIBC_2.4 pthread_create F
GLIBC_2.4 pthread_detach F
-GLIBC_2.4 pthread_exit F
GLIBC_2.4 pthread_getconcurrency F
GLIBC_2.4 pthread_getcpuclockid F
GLIBC_2.4 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 13df0ccca6..7ff0652b56 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 51975cabbb..58dc35e926 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.18 pthread_condattr_setclock F
GLIBC_2.18 pthread_condattr_setpshared F
GLIBC_2.18 pthread_create F
GLIBC_2.18 pthread_detach F
-GLIBC_2.18 pthread_exit F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_getconcurrency F
GLIBC_2.18 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 51975cabbb..58dc35e926 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.18 pthread_condattr_setclock F
GLIBC_2.18 pthread_condattr_setpshared F
GLIBC_2.18 pthread_create F
GLIBC_2.18 pthread_detach F
-GLIBC_2.18 pthread_exit F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_getconcurrency F
GLIBC_2.18 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 8829753707..94f17b3c53 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 8829753707..94f17b3c53 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index f370adca8d..2bf7ef83c6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.21 pthread_condattr_setclock F
GLIBC_2.21 pthread_condattr_setpshared F
GLIBC_2.21 pthread_create F
GLIBC_2.21 pthread_detach F
-GLIBC_2.21 pthread_exit F
GLIBC_2.21 pthread_getattr_default_np F
GLIBC_2.21 pthread_getconcurrency F
GLIBC_2.21 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index e354162563..b642ce0420 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 3bedf42d7a..ba4b580173 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -104,7 +104,6 @@ GLIBC_2.3 pthread_condattr_getpshared F
GLIBC_2.3 pthread_condattr_setpshared F
GLIBC_2.3 pthread_create F
GLIBC_2.3 pthread_detach F
-GLIBC_2.3 pthread_exit F
GLIBC_2.3 pthread_getconcurrency F
GLIBC_2.3 pthread_getcpuclockid F
GLIBC_2.3 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 03f9309528..a5bc7c8357 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.17 pthread_condattr_setclock F
GLIBC_2.17 pthread_condattr_setpshared F
GLIBC_2.17 pthread_create F
GLIBC_2.17 pthread_detach F
-GLIBC_2.17 pthread_exit F
GLIBC_2.17 pthread_getconcurrency F
GLIBC_2.17 pthread_getcpuclockid F
GLIBC_2.17 pthread_getname_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index a9958f0b67..4c2ef9c33d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -97,7 +97,6 @@ GLIBC_2.33 pthread_condattr_setclock F
GLIBC_2.33 pthread_condattr_setpshared F
GLIBC_2.33 pthread_create F
GLIBC_2.33 pthread_detach F
-GLIBC_2.33 pthread_exit F
GLIBC_2.33 pthread_getattr_default_np F
GLIBC_2.33 pthread_getconcurrency F
GLIBC_2.33 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 0c6ae5b20c..81300bbbb4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.27 pthread_condattr_setclock F
GLIBC_2.27 pthread_condattr_setpshared F
GLIBC_2.27 pthread_create F
GLIBC_2.27 pthread_detach F
-GLIBC_2.27 pthread_exit F
GLIBC_2.27 pthread_getattr_default_np F
GLIBC_2.27 pthread_getconcurrency F
GLIBC_2.27 pthread_getcpuclockid F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index d72648c9dd..d17848f0b1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 09c03d66b8..1ae431fdf7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -85,7 +85,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 98c5811d37..3288c7dd84 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 98c5811d37..3288c7dd84 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 62c3734ee1..5fc406b7c1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -43,7 +43,6 @@ GLIBC_2.0 pthread_cond_timedwait F
GLIBC_2.0 pthread_cond_wait F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
-GLIBC_2.0 pthread_exit F
GLIBC_2.0 pthread_getspecific F
GLIBC_2.0 pthread_join F
GLIBC_2.0 pthread_key_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 78c683810a..f42e1d4f2f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2 pthread_condattr_getpshared F
GLIBC_2.2 pthread_condattr_setpshared F
GLIBC_2.2 pthread_create F
GLIBC_2.2 pthread_detach F
-GLIBC_2.2 pthread_exit F
GLIBC_2.2 pthread_getconcurrency F
GLIBC_2.2 pthread_getcpuclockid F
GLIBC_2.2 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 31bb6837f9..49fdd52a28 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.2.5 pthread_condattr_getpshared F
GLIBC_2.2.5 pthread_condattr_setpshared F
GLIBC_2.2.5 pthread_create F
GLIBC_2.2.5 pthread_detach F
-GLIBC_2.2.5 pthread_exit F
GLIBC_2.2.5 pthread_getconcurrency F
GLIBC_2.2.5 pthread_getcpuclockid F
GLIBC_2.2.5 pthread_getspecific F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 73719e6d11..0384eaa51a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -84,7 +84,6 @@ GLIBC_2.16 pthread_condattr_setclock F
GLIBC_2.16 pthread_condattr_setpshared F
GLIBC_2.16 pthread_create F
GLIBC_2.16 pthread_detach F
-GLIBC_2.16 pthread_exit F
GLIBC_2.16 pthread_getconcurrency F
GLIBC_2.16 pthread_getcpuclockid F
GLIBC_2.16 pthread_getname_np F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 16/18] nptl: Move pthread_setcancelstate into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (14 preceding siblings ...)
2021-03-12 17:50 ` [PATCH 15/18] nptl: Move pthread_exit " Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 17/18] nptl: Move pthread_setcanceltype " Florian Weimer
2021-03-12 17:50 ` [PATCH 18/18] nptl: Invoke the set_robust_list system call directly in fork Florian Weimer
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
No new symbol version is required because there was a forwarder.
The symbol has been moved using scripts/move-symbol-to-libc.py.
---
libio/iopopen.c | 5 ++---
misc/error.c | 19 ++++++-------------
nptl/Makefile | 2 +-
nptl/Versions | 2 +-
nptl/forward.c | 4 ----
nptl/nptl-init.c | 1 -
nptl/pthreadP.h | 2 --
nptl/pthread_setcancelstate.c | 6 +++---
stdlib/fmtmsg.c | 9 ++-------
sysdeps/nptl/libc-lockP.h | 4 +---
sysdeps/nptl/pthread-functions.h | 1 -
sysdeps/posix/system.c | 5 ++---
.../sysv/linux/aarch64/libpthread.abilist | 1 -
.../unix/sysv/linux/alpha/libpthread.abilist | 1 -
.../unix/sysv/linux/arc/libpthread.abilist | 1 -
.../unix/sysv/linux/arm/be/libpthread.abilist | 1 -
.../unix/sysv/linux/arm/le/libpthread.abilist | 1 -
.../unix/sysv/linux/csky/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/fatal-prepare.h | 4 +---
.../unix/sysv/linux/hppa/libpthread.abilist | 1 -
.../unix/sysv/linux/i386/libpthread.abilist | 1 -
.../unix/sysv/linux/ia64/libpthread.abilist | 1 -
.../linux/m68k/coldfire/libpthread.abilist | 1 -
.../sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
.../linux/microblaze/be/libpthread.abilist | 1 -
.../linux/microblaze/le/libpthread.abilist | 1 -
.../sysv/linux/mips/mips32/libpthread.abilist | 1 -
.../sysv/linux/mips/mips64/libpthread.abilist | 1 -
.../unix/sysv/linux/nios2/libpthread.abilist | 1 -
.../powerpc/powerpc32/libpthread.abilist | 1 -
.../powerpc/powerpc64/be/libpthread.abilist | 1 -
.../powerpc/powerpc64/le/libpthread.abilist | 1 -
.../sysv/linux/riscv/rv32/libpthread.abilist | 1 -
.../sysv/linux/riscv/rv64/libpthread.abilist | 1 -
.../linux/s390/s390-32/libpthread.abilist | 1 -
.../linux/s390/s390-64/libpthread.abilist | 1 -
.../unix/sysv/linux/sh/be/libpthread.abilist | 1 -
.../unix/sysv/linux/sh/le/libpthread.abilist | 1 -
.../linux/sparc/sparc32/libpthread.abilist | 1 -
.../linux/sparc/sparc64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/spawni.c | 5 ++---
.../sysv/linux/x86_64/64/libpthread.abilist | 1 -
.../sysv/linux/x86_64/x32/libpthread.abilist | 1 -
43 files changed, 21 insertions(+), 77 deletions(-)
diff --git a/libio/iopopen.c b/libio/iopopen.c
index 3afca7e173..6b04222c24 100644
--- a/libio/iopopen.c
+++ b/libio/iopopen.c
@@ -282,10 +282,9 @@ _IO_new_proc_close (FILE *fp)
do
{
int state;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
wait_pid = __waitpid (((_IO_proc_file *) fp)->pid, &wstatus, 0);
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ __pthread_setcancelstate (state, NULL);
}
while (wait_pid == -1 && errno == EINTR);
if (wait_pid == -1)
diff --git a/misc/error.c b/misc/error.c
index 06cc4a5028..0400c84df8 100644
--- a/misc/error.c
+++ b/misc/error.c
@@ -236,12 +236,11 @@ void
__error_internal (int status, int errnum, const char *message,
va_list args, unsigned int mode_flags)
{
-#if defined _LIBC && defined __libc_ptf_call
+#if defined _LIBC
/* We do not want this call to be cut short by a thread
cancellation. Therefore disable cancellation for now. */
int state = PTHREAD_CANCEL_ENABLE;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
#endif
flush_stdout ();
@@ -263,9 +262,7 @@ __error_internal (int status, int errnum, const char *message,
#ifdef _LIBC
_IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
-# endif
+ __pthread_setcancelstate (state, NULL);
#endif
}
@@ -305,13 +302,11 @@ __error_at_line_internal (int status, int errnum, const char *file_name,
old_line_number = line_number;
}
-#if defined _LIBC && defined __libc_ptf_call
+#if defined _LIBC
/* We do not want this call to be cut short by a thread
cancellation. Therefore disable cancellation for now. */
int state = PTHREAD_CANCEL_ENABLE;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state),
- 0);
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
#endif
flush_stdout ();
@@ -341,9 +336,7 @@ __error_at_line_internal (int status, int errnum, const char *file_name,
#ifdef _LIBC
_IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
-# endif
+ __pthread_setcancelstate (state, NULL);
#endif
}
diff --git a/nptl/Makefile b/nptl/Makefile
index 2b184846ec..fc0c5a405b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -82,6 +82,7 @@ routines = \
pthread_mutex_consistent \
pthread_once \
pthread_self \
+ pthread_setcancelstate \
pthread_setschedparam \
pthread_sigmask \
unwind \
@@ -203,7 +204,6 @@ libpthread-routines = \
pthread_rwlockattr_setpshared \
pthread_setaffinity \
pthread_setattr_default_np \
- pthread_setcancelstate \
pthread_setcanceltype \
pthread_setconcurrency \
pthread_setname \
diff --git a/nptl/Versions b/nptl/Versions
index f897439613..5018649e5d 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -124,6 +124,7 @@ libc {
__pthread_force_elision;
__pthread_getattr_default_np;
__pthread_keys;
+ __pthread_setcancelstate;
__pthread_unwind;
}
}
@@ -193,7 +194,6 @@ libpthread {
pthread_mutexattr_getkind_np;
pthread_mutexattr_init;
pthread_mutexattr_setkind_np;
- pthread_setcancelstate;
pthread_setcanceltype;
pthread_setspecific;
pthread_sigmask;
diff --git a/nptl/forward.c b/nptl/forward.c
index a4a377ba6a..ef4a17d39b 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -102,8 +102,4 @@ FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
-FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
- (state, oldstate), 0)
-strong_alias (__pthread_setcancelstate, pthread_setcancelstate)
-
FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index caa06f380a..e7615ffcb6 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -85,7 +85,6 @@ static const struct pthread_functions pthread_functions =
.ptr_pthread_mutex_init = __pthread_mutex_init,
.ptr_pthread_mutex_lock = __pthread_mutex_lock,
.ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
- .ptr___pthread_setcancelstate = __pthread_setcancelstate,
.ptr_pthread_setcanceltype = __pthread_setcanceltype,
.ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
.ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 3c6025d2fe..c01cfea4ff 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -381,7 +381,6 @@ extern int __pthread_getschedparam (pthread_t thread_id, int *policy,
struct sched_param *param);
extern int __pthread_setschedparam (pthread_t thread_id, int policy,
const struct sched_param *param);
-extern int __pthread_setcancelstate (int state, int *oldstate);
extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
const pthread_mutexattr_t *__mutexattr);
extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
@@ -553,7 +552,6 @@ hidden_proto (__pthread_rwlock_unlock)
hidden_proto (__pthread_key_create)
hidden_proto (__pthread_getspecific)
hidden_proto (__pthread_setspecific)
-hidden_proto (__pthread_setcancelstate)
hidden_proto (__pthread_testcancel)
hidden_proto (__pthread_mutexattr_init)
hidden_proto (__pthread_mutexattr_settype)
diff --git a/nptl/pthread_setcancelstate.c b/nptl/pthread_setcancelstate.c
index a0ffbd9338..e3696ca348 100644
--- a/nptl/pthread_setcancelstate.c
+++ b/nptl/pthread_setcancelstate.c
@@ -19,7 +19,7 @@
#include <errno.h>
#include "pthreadP.h"
#include <atomic.h>
-
+#include <libc-lockP.h>
int
__pthread_setcancelstate (int state, int *oldstate)
@@ -67,5 +67,5 @@ __pthread_setcancelstate (int state, int *oldstate)
return 0;
}
-strong_alias (__pthread_setcancelstate, pthread_setcancelstate)
-hidden_def (__pthread_setcancelstate)
+libc_hidden_def (__pthread_setcancelstate)
+weak_alias (__pthread_setcancelstate, pthread_setcancelstate)
diff --git a/stdlib/fmtmsg.c b/stdlib/fmtmsg.c
index 2846d34012..428dad07ff 100644
--- a/stdlib/fmtmsg.c
+++ b/stdlib/fmtmsg.c
@@ -122,13 +122,10 @@ fmtmsg (long int classification, const char *label, int severity,
return MM_NOTOK;
}
-#ifdef __libc_ptf_call
/* We do not want this call to be cut short by a thread
cancellation. Therefore disable cancellation for now. */
int state = PTHREAD_CANCEL_ENABLE;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
-#endif
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
__libc_lock_lock (lock);
@@ -197,9 +194,7 @@ fmtmsg (long int classification, const char *label, int severity,
__libc_lock_unlock (lock);
-#ifdef __libc_ptf_call
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
-#endif
+ __pthread_setcancelstate (state, NULL);
return result;
}
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index f9f279525d..a3c0f6501d 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -343,7 +343,7 @@ extern int __pthread_atfork (void (*__prepare) (void),
void (*__child) (void));
extern int __pthread_setcancelstate (int state, int *oldstate);
-
+libc_hidden_proto (__pthread_setcancelstate)
/* Make the pthread functions weak so that we can elide them from
single-threaded processes. */
@@ -369,7 +369,6 @@ weak_extern (__pthread_setspecific)
weak_extern (__pthread_getspecific)
weak_extern (__pthread_initialize)
weak_extern (__pthread_atfork)
-weak_extern (__pthread_setcancelstate)
# else
# pragma weak __pthread_mutex_init
# pragma weak __pthread_mutex_destroy
@@ -390,7 +389,6 @@ weak_extern (__pthread_setcancelstate)
# pragma weak __pthread_getspecific
# pragma weak __pthread_initialize
# pragma weak __pthread_atfork
-# pragma weak __pthread_setcancelstate
# endif
#endif
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 8f280b9c25..ca7673135d 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -46,7 +46,6 @@ struct pthread_functions
const pthread_mutexattr_t *);
int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
- int (*ptr___pthread_setcancelstate) (int, int *);
int (*ptr_pthread_setcanceltype) (int, int *);
int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
diff --git a/sysdeps/posix/system.c b/sysdeps/posix/system.c
index 13c0662f90..48668fb392 100644
--- a/sysdeps/posix/system.c
+++ b/sysdeps/posix/system.c
@@ -82,10 +82,9 @@ cancel_handler (void *arg)
__kill_noerrno (args->pid, SIGKILL);
int state;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
TEMP_FAILURE_RETRY (__waitpid (args->pid, NULL, 0));
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ __pthread_setcancelstate (state, NULL);
DO_LOCK ();
if (SUB_REF () == 0)
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index a5bc7c8357..047869a3a0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.17 pthread_rwlockattr_init F
GLIBC_2.17 pthread_rwlockattr_setkind_np F
GLIBC_2.17 pthread_rwlockattr_setpshared F
GLIBC_2.17 pthread_setaffinity_np F
-GLIBC_2.17 pthread_setcancelstate F
GLIBC_2.17 pthread_setcanceltype F
GLIBC_2.17 pthread_setconcurrency F
GLIBC_2.17 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 5fc406b7c1..5252f34efe 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index e4c31d1343..554b85d779 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -151,7 +151,6 @@ GLIBC_2.32 pthread_rwlockattr_setkind_np F
GLIBC_2.32 pthread_rwlockattr_setpshared F
GLIBC_2.32 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.32 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b97115fe03..bbe8d28583 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b97115fe03..bbe8d28583 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 7fb16e8387..c09b6cd6f4 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -146,7 +146,6 @@ GLIBC_2.29 pthread_rwlockattr_setkind_np F
GLIBC_2.29 pthread_rwlockattr_setpshared F
GLIBC_2.29 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.29 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/fatal-prepare.h b/sysdeps/unix/sysv/linux/fatal-prepare.h
index ec441bdfbc..e2591c5447 100644
--- a/sysdeps/unix/sysv/linux/fatal-prepare.h
+++ b/sysdeps/unix/sysv/linux/fatal-prepare.h
@@ -19,6 +19,4 @@
/* We have to completely disable cancellation. assert() must not be a
cancellation point but the implementation uses write() etc. */
-#define FATAL_PREPARE \
- __libc_ptf_call (__pthread_setcancelstate, \
- (PTHREAD_CANCEL_DISABLE, NULL), 0)
+#define FATAL_PREPARE __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL)
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 3288c7dd84..424e2cf068 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 7ff0652b56..e145d86e57 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index f42e1d4f2f..2c131140ba 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b97115fe03..bbe8d28583 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcancelstate F
GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 7ff0652b56..e145d86e57 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 58dc35e926..31d008004d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.18 pthread_rwlockattr_setkind_np F
GLIBC_2.18 pthread_rwlockattr_setpshared F
GLIBC_2.18 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.18 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 58dc35e926..31d008004d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.18 pthread_rwlockattr_setkind_np F
GLIBC_2.18 pthread_rwlockattr_setpshared F
GLIBC_2.18 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.18 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 94f17b3c53..d4bd5b5ce3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 94f17b3c53..d4bd5b5ce3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 2bf7ef83c6..ed8be1e44b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.21 pthread_rwlockattr_setkind_np F
GLIBC_2.21 pthread_rwlockattr_setpshared F
GLIBC_2.21 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.21 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index b642ce0420..d9e3bb5b31 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index ba4b580173..8f393575e1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -141,7 +141,6 @@ GLIBC_2.3 pthread_rwlockattr_getpshared F
GLIBC_2.3 pthread_rwlockattr_init F
GLIBC_2.3 pthread_rwlockattr_setkind_np F
GLIBC_2.3 pthread_rwlockattr_setpshared F
-GLIBC_2.3 pthread_setcancelstate F
GLIBC_2.3 pthread_setcanceltype F
GLIBC_2.3 pthread_setconcurrency F
GLIBC_2.3 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index a5bc7c8357..047869a3a0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.17 pthread_rwlockattr_init F
GLIBC_2.17 pthread_rwlockattr_setkind_np F
GLIBC_2.17 pthread_rwlockattr_setpshared F
GLIBC_2.17 pthread_setaffinity_np F
-GLIBC_2.17 pthread_setcancelstate F
GLIBC_2.17 pthread_setcanceltype F
GLIBC_2.17 pthread_setconcurrency F
GLIBC_2.17 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 4c2ef9c33d..528792a426 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -151,7 +151,6 @@ GLIBC_2.33 pthread_rwlockattr_setkind_np F
GLIBC_2.33 pthread_rwlockattr_setpshared F
GLIBC_2.33 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.33 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 81300bbbb4..66f871fb89 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.27 pthread_rwlockattr_setkind_np F
GLIBC_2.27 pthread_rwlockattr_setpshared F
GLIBC_2.27 pthread_setaffinity_np 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_setconcurrency F
GLIBC_2.27 pthread_setname_np F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index d17848f0b1..e69792eba6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 1ae431fdf7..75c5a27854 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -122,7 +122,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 3288c7dd84..424e2cf068 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 3288c7dd84..424e2cf068 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 5fc406b7c1..5252f34efe 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcancelstate F
GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index f42e1d4f2f..2c131140ba 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcancelstate F
GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
index b53b81b8fc..501f8fbccd 100644
--- a/sysdeps/unix/sysv/linux/spawni.c
+++ b/sysdeps/unix/sysv/linux/spawni.c
@@ -354,8 +354,7 @@ __spawnix (pid_t * pid, const char *file,
/* Disable asynchronous cancellation. */
int state;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
+ __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
/* Child must set args.err to something non-negative - we rely on
the parent and child sharing VM. */
@@ -413,7 +412,7 @@ __spawnix (pid_t * pid, const char *file,
__libc_signal_restore_set (&args.oldmask);
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ __pthread_setcancelstate (state, NULL);
return ec;
}
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 49fdd52a28..afa8bb1dd8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2.5 pthread_rwlockattr_getpshared F
GLIBC_2.2.5 pthread_rwlockattr_init F
GLIBC_2.2.5 pthread_rwlockattr_setkind_np F
GLIBC_2.2.5 pthread_rwlockattr_setpshared F
-GLIBC_2.2.5 pthread_setcancelstate F
GLIBC_2.2.5 pthread_setcanceltype F
GLIBC_2.2.5 pthread_setconcurrency F
GLIBC_2.2.5 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 0384eaa51a..b8c545b9c0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.16 pthread_rwlockattr_init F
GLIBC_2.16 pthread_rwlockattr_setkind_np F
GLIBC_2.16 pthread_rwlockattr_setpshared F
GLIBC_2.16 pthread_setaffinity_np F
-GLIBC_2.16 pthread_setcancelstate F
GLIBC_2.16 pthread_setcanceltype F
GLIBC_2.16 pthread_setconcurrency F
GLIBC_2.16 pthread_setname_np F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 17/18] nptl: Move pthread_setcanceltype into libc
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (15 preceding siblings ...)
2021-03-12 17:50 ` [PATCH 16/18] nptl: Move pthread_setcancelstate " Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
2021-03-12 17:50 ` [PATCH 18/18] nptl: Invoke the set_robust_list system call directly in fork Florian Weimer
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
No new symbol version is required because there was a forwarder.
The symbol has been moved using scripts/move-symbol-to-libc.py.
---
nptl/Makefile | 2 +-
nptl/Versions | 1 -
nptl/forward.c | 2 --
nptl/nptl-init.c | 1 -
nptl/pthreadP.h | 1 +
nptl/pthread_setcanceltype.c | 3 ++-
sysdeps/nptl/pthread-functions.h | 1 -
sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arc/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/arm/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/csky/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/i386/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist | 1 -
.../unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist | 1 -
.../unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sh/be/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sh/le/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist | 1 -
sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist | 1 -
36 files changed, 4 insertions(+), 36 deletions(-)
diff --git a/nptl/Makefile b/nptl/Makefile
index fc0c5a405b..098c31115f 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -83,6 +83,7 @@ routines = \
pthread_once \
pthread_self \
pthread_setcancelstate \
+ pthread_setcanceltype \
pthread_setschedparam \
pthread_sigmask \
unwind \
@@ -204,7 +205,6 @@ libpthread-routines = \
pthread_rwlockattr_setpshared \
pthread_setaffinity \
pthread_setattr_default_np \
- pthread_setcanceltype \
pthread_setconcurrency \
pthread_setname \
pthread_setschedprio \
diff --git a/nptl/Versions b/nptl/Versions
index 5018649e5d..2838897371 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -194,7 +194,6 @@ libpthread {
pthread_mutexattr_getkind_np;
pthread_mutexattr_init;
pthread_mutexattr_setkind_np;
- pthread_setcanceltype;
pthread_setspecific;
pthread_sigmask;
pthread_testcancel;
diff --git a/nptl/forward.c b/nptl/forward.c
index ef4a17d39b..de4e9cd6ab 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -101,5 +101,3 @@ FORWARD (pthread_mutex_init,
FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
-
-FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index e7615ffcb6..49d811aed7 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -85,7 +85,6 @@ static const struct pthread_functions pthread_functions =
.ptr_pthread_mutex_init = __pthread_mutex_init,
.ptr_pthread_mutex_lock = __pthread_mutex_lock,
.ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
- .ptr_pthread_setcanceltype = __pthread_setcanceltype,
.ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
.ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
.ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index c01cfea4ff..b7b5e62747 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -530,6 +530,7 @@ extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
libc_hidden_proto (__pthread_exit)
extern int __pthread_join (pthread_t threadid, void **thread_return);
extern int __pthread_setcanceltype (int type, int *oldtype);
+libc_hidden_proto (__pthread_setcanceltype)
extern int __pthread_enable_asynccancel (void) attribute_hidden;
extern void __pthread_disable_asynccancel (int oldtype) attribute_hidden;
extern void __pthread_testcancel (void);
diff --git a/nptl/pthread_setcanceltype.c b/nptl/pthread_setcanceltype.c
index a9ce9b37fb..5f061d512b 100644
--- a/nptl/pthread_setcanceltype.c
+++ b/nptl/pthread_setcanceltype.c
@@ -68,4 +68,5 @@ __pthread_setcanceltype (int type, int *oldtype)
return 0;
}
-strong_alias (__pthread_setcanceltype, pthread_setcanceltype)
+libc_hidden_def (__pthread_setcanceltype)
+weak_alias (__pthread_setcanceltype, pthread_setcanceltype)
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index ca7673135d..2092ecef07 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -46,7 +46,6 @@ struct pthread_functions
const pthread_mutexattr_t *);
int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
- int (*ptr_pthread_setcanceltype) (int, int *);
int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 047869a3a0..47c5564772 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.17 pthread_rwlockattr_init F
GLIBC_2.17 pthread_rwlockattr_setkind_np F
GLIBC_2.17 pthread_rwlockattr_setpshared F
GLIBC_2.17 pthread_setaffinity_np F
-GLIBC_2.17 pthread_setcanceltype F
GLIBC_2.17 pthread_setconcurrency F
GLIBC_2.17 pthread_setname_np F
GLIBC_2.17 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 5252f34efe..1d834d6d54 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 554b85d779..3c1054101c 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -151,7 +151,6 @@ GLIBC_2.32 pthread_rwlockattr_setkind_np F
GLIBC_2.32 pthread_rwlockattr_setpshared F
GLIBC_2.32 pthread_setaffinity_np F
GLIBC_2.32 pthread_setattr_default_np F
-GLIBC_2.32 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index bbe8d28583..c2892c4b8d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
GLIBC_2.4 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index bbe8d28583..c2892c4b8d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
GLIBC_2.4 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index c09b6cd6f4..2d125f11a3 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -146,7 +146,6 @@ GLIBC_2.29 pthread_rwlockattr_setkind_np F
GLIBC_2.29 pthread_rwlockattr_setpshared F
GLIBC_2.29 pthread_setaffinity_np F
GLIBC_2.29 pthread_setattr_default_np F
-GLIBC_2.29 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 424e2cf068..11fa4711d8 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index e145d86e57..1d84eb35fb 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 2c131140ba..88e178b1c3 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index bbe8d28583..c2892c4b8d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -164,7 +164,6 @@ GLIBC_2.4 pthread_rwlockattr_init F
GLIBC_2.4 pthread_rwlockattr_setkind_np F
GLIBC_2.4 pthread_rwlockattr_setpshared F
GLIBC_2.4 pthread_setaffinity_np F
-GLIBC_2.4 pthread_setcanceltype F
GLIBC_2.4 pthread_setconcurrency F
GLIBC_2.4 pthread_setschedprio F
GLIBC_2.4 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index e145d86e57..1d84eb35fb 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 31d008004d..b19c648328 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.18 pthread_rwlockattr_setkind_np F
GLIBC_2.18 pthread_rwlockattr_setpshared F
GLIBC_2.18 pthread_setaffinity_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.18 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 31d008004d..b19c648328 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.18 pthread_rwlockattr_setkind_np F
GLIBC_2.18 pthread_rwlockattr_setpshared F
GLIBC_2.18 pthread_setaffinity_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.18 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index d4bd5b5ce3..0d7d23b8f3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index d4bd5b5ce3..0d7d23b8f3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index ed8be1e44b..34c81eb8db 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.21 pthread_rwlockattr_setkind_np F
GLIBC_2.21 pthread_rwlockattr_setpshared F
GLIBC_2.21 pthread_setaffinity_np F
GLIBC_2.21 pthread_setattr_default_np F
-GLIBC_2.21 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index d9e3bb5b31..9ef23ed6d6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 8f393575e1..5474d3eb4d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -141,7 +141,6 @@ GLIBC_2.3 pthread_rwlockattr_getpshared F
GLIBC_2.3 pthread_rwlockattr_init F
GLIBC_2.3 pthread_rwlockattr_setkind_np F
GLIBC_2.3 pthread_rwlockattr_setpshared F
-GLIBC_2.3 pthread_setcanceltype F
GLIBC_2.3 pthread_setconcurrency F
GLIBC_2.3 pthread_setspecific F
GLIBC_2.3 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 047869a3a0..47c5564772 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.17 pthread_rwlockattr_init F
GLIBC_2.17 pthread_rwlockattr_setkind_np F
GLIBC_2.17 pthread_rwlockattr_setpshared F
GLIBC_2.17 pthread_setaffinity_np F
-GLIBC_2.17 pthread_setcanceltype F
GLIBC_2.17 pthread_setconcurrency F
GLIBC_2.17 pthread_setname_np F
GLIBC_2.17 pthread_setschedprio F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 528792a426..e86e8cab1d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -151,7 +151,6 @@ GLIBC_2.33 pthread_rwlockattr_setkind_np F
GLIBC_2.33 pthread_rwlockattr_setpshared F
GLIBC_2.33 pthread_setaffinity_np F
GLIBC_2.33 pthread_setattr_default_np F
-GLIBC_2.33 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 66f871fb89..220affa7f0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -135,7 +135,6 @@ GLIBC_2.27 pthread_rwlockattr_setkind_np F
GLIBC_2.27 pthread_rwlockattr_setpshared F
GLIBC_2.27 pthread_setaffinity_np F
GLIBC_2.27 pthread_setattr_default_np F
-GLIBC_2.27 pthread_setcanceltype 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/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index e69792eba6..81b8d5ce5c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 75c5a27854..b916709d08 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -122,7 +122,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 424e2cf068..11fa4711d8 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 424e2cf068..11fa4711d8 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 5252f34efe..1d834d6d54 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -58,7 +58,6 @@ GLIBC_2.0 pthread_mutexattr_destroy F
GLIBC_2.0 pthread_mutexattr_getkind_np F
GLIBC_2.0 pthread_mutexattr_init F
GLIBC_2.0 pthread_mutexattr_setkind_np F
-GLIBC_2.0 pthread_setcanceltype F
GLIBC_2.0 pthread_setspecific F
GLIBC_2.0 pthread_testcancel F
GLIBC_2.0 raise F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 2c131140ba..88e178b1c3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2 pthread_rwlockattr_getpshared F
GLIBC_2.2 pthread_rwlockattr_init F
GLIBC_2.2 pthread_rwlockattr_setkind_np F
GLIBC_2.2 pthread_rwlockattr_setpshared F
-GLIBC_2.2 pthread_setcanceltype F
GLIBC_2.2 pthread_setconcurrency F
GLIBC_2.2 pthread_setspecific F
GLIBC_2.2 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index afa8bb1dd8..f11ffd687f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -121,7 +121,6 @@ GLIBC_2.2.5 pthread_rwlockattr_getpshared F
GLIBC_2.2.5 pthread_rwlockattr_init F
GLIBC_2.2.5 pthread_rwlockattr_setkind_np F
GLIBC_2.2.5 pthread_rwlockattr_setpshared F
-GLIBC_2.2.5 pthread_setcanceltype F
GLIBC_2.2.5 pthread_setconcurrency F
GLIBC_2.2.5 pthread_setspecific F
GLIBC_2.2.5 pthread_spin_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index b8c545b9c0..579d0ffea2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -133,7 +133,6 @@ GLIBC_2.16 pthread_rwlockattr_init F
GLIBC_2.16 pthread_rwlockattr_setkind_np F
GLIBC_2.16 pthread_rwlockattr_setpshared F
GLIBC_2.16 pthread_setaffinity_np F
-GLIBC_2.16 pthread_setcanceltype F
GLIBC_2.16 pthread_setconcurrency F
GLIBC_2.16 pthread_setname_np F
GLIBC_2.16 pthread_setschedprio F
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH 18/18] nptl: Invoke the set_robust_list system call directly in fork
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
` (16 preceding siblings ...)
2021-03-12 17:50 ` [PATCH 17/18] nptl: Move pthread_setcanceltype " Florian Weimer
@ 2021-03-12 17:50 ` Florian Weimer
17 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-12 17:50 UTC (permalink / raw)
To: libc-alpha
This removes one of the pthread forwarder functions.
---
nptl/nptl-init.c | 21 ---------------------
sysdeps/nptl/fork.c | 11 ++---------
sysdeps/nptl/pthread-functions.h | 1 -
3 files changed, 2 insertions(+), 31 deletions(-)
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 49d811aed7..de64e34783 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -60,14 +60,6 @@ int __set_robust_list_avail;
/* Version of the library, used in libthread_db to detect mismatches. */
static const char nptl_version[] __attribute_used__ = VERSION;
-
-#ifdef SHARED
-static
-#else
-extern
-#endif
-void __nptl_set_robust (struct pthread *);
-
#ifdef SHARED
static const struct pthread_functions pthread_functions =
{
@@ -92,25 +84,12 @@ static const struct pthread_functions pthread_functions =
.ptr___pthread_getspecific = __pthread_getspecific,
.ptr___pthread_setspecific = __pthread_setspecific,
.ptr__nptl_setxid = __nptl_setxid,
- .ptr_set_robust = __nptl_set_robust
};
# define ptr_pthread_functions &pthread_functions
#else
# define ptr_pthread_functions NULL
#endif
-
-#ifdef SHARED
-static
-#endif
-void
-__nptl_set_robust (struct pthread *self)
-{
- INTERNAL_SYSCALL_CALL (set_robust_list, &self->robust_head,
- sizeof (struct robust_list_head));
-}
-
-
/* For asynchronous cancellation we use a signal. This is the handler. */
static void
sigcancel_handler (int sig, siginfo_t *si, void *ctx)
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index ffc8f9d041..a2a0643a1d 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -104,15 +104,8 @@ __libc_fork (void)
self->robust_prev = &self->robust_head;
#endif
self->robust_head.list = &self->robust_head;
-#ifdef SHARED
- if (__builtin_expect (__libc_pthread_functions_init, 0))
- PTHFCT_CALL (ptr_set_robust, (self));
-#else
- extern __typeof (__nptl_set_robust) __nptl_set_robust
- __attribute__((weak));
- if (__builtin_expect (__nptl_set_robust != NULL, 0))
- __nptl_set_robust (self);
-#endif
+ INTERNAL_SYSCALL_CALL (set_robust_list, &self->robust_head,
+ sizeof (struct robust_list_head));
/* Reset the lock state in the multi-threaded case. */
if (multiple_threads)
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 2092ecef07..844838cd49 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -53,7 +53,6 @@ struct pthread_functions
void *(*ptr___pthread_getspecific) (pthread_key_t);
int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
int (*ptr__nptl_setxid) (struct xid_command *);
- void (*ptr_set_robust) (struct pthread *);
};
/* Variable in libc.so. */
--
2.29.2
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 08/18] nptl: Move pthread_once and __pthread_once into libc
2021-03-12 17:49 ` [PATCH 08/18] nptl: Move pthread_once and __pthread_once " Florian Weimer
@ 2021-03-15 19:24 ` Florian Weimer
0 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-15 19:24 UTC (permalink / raw)
To: Florian Weimer via Libc-alpha
* Florian Weimer via Libc-alpha:
> And also the fork generation counter, __fork_generation. This
> eliminates the need for __fork_generation_pointer.
>
> To simplify symbol management, call pthread_once under the name
> ___libc_once. (Creating a hidden proto and setting the symbol
> version at the same time is difficult.)
I have since discovered libc_hidden_ver and it works, so I'm going to
use that instead.
Thanks,
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-12 17:48 ` [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc Florian Weimer
@ 2021-03-15 19:30 ` Adhemerval Zanella
2021-03-16 5:42 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-15 19:30 UTC (permalink / raw)
To: Florian Weimer, libc-alpha
On 12/03/2021 14:48, Florian Weimer via Libc-alpha wrote:
> And deprecated pthread_mutex_consistent_np, its old name.
Look good, only some remarks about how to deprecate the
pthread_mutex_consistent_np.
> ---
> NEWS | 4 +++-
> nptl/Makefile | 2 +-
> nptl/Versions | 11 ++++++++--
> nptl/pthread_mutex_consistent.c | 22 ++++++++++++++++---
> sysdeps/nptl/pthread.h | 5 +++--
> sysdeps/pthread/tst-robust1.c | 4 ++--
> sysdeps/pthread/tst-robust8.c | 2 +-
> sysdeps/pthread/tst-robust9.c | 4 ++--
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 3 +++
> .../sysv/linux/aarch64/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 3 +++
> .../unix/sysv/linux/alpha/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/arc/libc.abilist | 3 +++
> .../unix/sysv/linux/arc/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 3 +++
> .../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 3 +++
> .../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/csky/libc.abilist | 3 +++
> .../unix/sysv/linux/csky/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 3 +++
> .../unix/sysv/linux/hppa/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/i386/libc.abilist | 3 +++
> .../unix/sysv/linux/i386/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/ia64/libc.abilist | 3 +++
> .../unix/sysv/linux/ia64/libpthread.abilist | 2 --
> .../sysv/linux/m68k/coldfire/libc.abilist | 3 +++
> .../linux/m68k/coldfire/libpthread.abilist | 2 --
> .../unix/sysv/linux/m68k/m680x0/libc.abilist | 3 +++
> .../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
> .../sysv/linux/microblaze/be/libc.abilist | 3 +++
> .../linux/microblaze/be/libpthread.abilist | 2 --
> .../sysv/linux/microblaze/le/libc.abilist | 3 +++
> .../linux/microblaze/le/libpthread.abilist | 2 --
> .../sysv/linux/mips/mips32/fpu/libc.abilist | 3 +++
> .../sysv/linux/mips/mips32/libpthread.abilist | 2 --
> .../sysv/linux/mips/mips32/nofpu/libc.abilist | 3 +++
> .../sysv/linux/mips/mips64/libpthread.abilist | 2 --
> .../sysv/linux/mips/mips64/n32/libc.abilist | 3 +++
> .../sysv/linux/mips/mips64/n64/libc.abilist | 3 +++
> sysdeps/unix/sysv/linux/nios2/libc.abilist | 3 +++
> .../unix/sysv/linux/nios2/libpthread.abilist | 2 --
> .../linux/powerpc/powerpc32/fpu/libc.abilist | 3 +++
> .../powerpc/powerpc32/libpthread.abilist | 2 --
> .../powerpc/powerpc32/nofpu/libc.abilist | 3 +++
> .../linux/powerpc/powerpc64/be/libc.abilist | 3 +++
> .../powerpc/powerpc64/be/libpthread.abilist | 2 --
> .../linux/powerpc/powerpc64/le/libc.abilist | 3 +++
> .../powerpc/powerpc64/le/libpthread.abilist | 2 --
> .../unix/sysv/linux/riscv/rv32/libc.abilist | 3 +++
> .../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
> .../unix/sysv/linux/riscv/rv64/libc.abilist | 3 +++
> .../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
> .../unix/sysv/linux/s390/s390-32/libc.abilist | 3 +++
> .../linux/s390/s390-32/libpthread.abilist | 2 --
> .../unix/sysv/linux/s390/s390-64/libc.abilist | 3 +++
> .../linux/s390/s390-64/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 3 +++
> .../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 3 +++
> .../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
> .../sysv/linux/sparc/sparc32/libc.abilist | 3 +++
> .../linux/sparc/sparc32/libpthread.abilist | 2 --
> .../sysv/linux/sparc/sparc64/libc.abilist | 3 +++
> .../linux/sparc/sparc64/libpthread.abilist | 2 --
> .../unix/sysv/linux/x86_64/64/libc.abilist | 3 +++
> .../sysv/linux/x86_64/64/libpthread.abilist | 2 --
> .../unix/sysv/linux/x86_64/x32/libc.abilist | 3 +++
> .../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
> 69 files changed, 136 insertions(+), 72 deletions(-)
>
> diff --git a/NEWS b/NEWS
> index aa0f10a891..f9d15952f8 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -20,7 +20,9 @@ Major new features:
>
> Deprecated and removed features, and other changes affecting compatibility:
>
> - [Add deprecations, removals and changes affecting compatibility here]
> +* The function pthread_mutex_consistent_np has been deprecated; programs
> + should use the equivalent standard function pthread_mutex_consistent
> + instead.
>
> Changes to build and runtime requirements:
>
Ok.
> diff --git a/nptl/Makefile b/nptl/Makefile
> index b51deff6a3..96bb47e152 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -71,6 +71,7 @@ routines = \
> pthread_getaffinity \
> pthread_getattr_np \
> pthread_getschedparam \
> + pthread_mutex_consistent \
> pthread_self \
> pthread_setschedparam \
> pthread_sigmask \
> @@ -159,7 +160,6 @@ libpthread-routines = \
> pthread_kill_other_threads \
> pthread_mutex_cond_lock \
> pthread_mutex_conf \
> - pthread_mutex_consistent \
> pthread_mutex_destroy \
> pthread_mutex_getprioceiling \
> pthread_mutex_init \
Ok.
> diff --git a/nptl/Versions b/nptl/Versions
> index 039cff38aa..e38d98709d 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -55,6 +55,12 @@ libc {
> GLIBC_2.3.4 {
> pthread_attr_setaffinity_np;
> }
> + GLIBC_2.4 {
> + pthread_mutex_consistent_np;
> + }
> + GLIBC_2.12 {
> + pthread_mutex_consistent;
> + }
> # C11 thread symbols.
> GLIBC_2.28 {
> thrd_current;
Ok, old compat symbols.
> @@ -70,6 +76,9 @@ libc {
> pthread_getattr_np;
> pthread_sigmask;
> }
> + GLIBC_2.34 {
> + pthread_mutex_consistent;
> + }
> GLIBC_PRIVATE {
> __futex_abstimed_wait64;
> __futex_abstimed_wait_cancelable64;
Ok, adding a new symbol to avoid late crash on older glibc that do not
prevent this symbol (and it should cover dynamic objects that do not
call __libc_start_main).
> @@ -326,7 +335,6 @@ libpthread {
> }
>
> GLIBC_2.4 {
> - pthread_mutex_consistent_np;
> pthread_mutex_getprioceiling;
> pthread_mutex_setprioceiling;
> pthread_mutexattr_getprioceiling;
> @@ -343,7 +351,6 @@ libpthread {
>
> GLIBC_2.12 {
> pthread_getname_np;
> - pthread_mutex_consistent;
> pthread_mutexattr_getrobust;
> pthread_mutexattr_setrobust;
> pthread_setname_np;
Ok.
> diff --git a/nptl/pthread_mutex_consistent.c b/nptl/pthread_mutex_consistent.c
> index 937c7c4640..0a84063a2b 100644
> --- a/nptl/pthread_mutex_consistent.c
> +++ b/nptl/pthread_mutex_consistent.c
> @@ -18,10 +18,10 @@
>
> #include <errno.h>
> #include <pthreadP.h>
> -
> +#include <shlib-compat.h>
>
> int
> -pthread_mutex_consistent (pthread_mutex_t *mutex)
> +__pthread_mutex_consistent (pthread_mutex_t *mutex)
> {
> /* Test whether this is a robust mutex with a dead owner.
> See concurrency notes regarding __kind in struct __pthread_mutex_s
> @@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
>
> return 0;
> }
> -weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
> +versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
> + GLIBC_2_34);
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
Shouldn't be GLIBC_2_12 here?
> +/* Compat symbol with the old libc version, _np alias. */
> +# undef pthread_mutex_consistent_np
I think should be out of SHLIB_COMPAT.
> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_1)
> +compat_symbol (libc, __pthread_mutex_consistent_1,
> + pthread_mutex_consistent_np, GLIBC_2_4);
> +#endif
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_34)
> +/* Compat symbol with the old libc version. */
> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_2)
> +compat_symbol (libc, __pthread_mutex_consistent_2,
> + pthread_mutex_consistent, GLIBC_2_12);
> +#endif
I think we have compat_symbol_unique exactly for that.
> diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
> index a04a3a2754..2ec2caec98 100644
> --- a/sysdeps/nptl/pthread.h
> +++ b/sysdeps/nptl/pthread.h
> @@ -809,8 +809,9 @@ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
> extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
> __THROW __nonnull ((1));
> # ifdef __USE_GNU
> -extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
> - __THROW __nonnull ((1));
> +# define pthread_mutex_consistent_np __glibc_macro_warning ("\
> +pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent") \
> + pthread_mutex_consistent
> # endif
> #endif
>
Wouldn't be better to throw a link error instead an empty macro for such
case?
> diff --git a/sysdeps/pthread/tst-robust1.c b/sysdeps/pthread/tst-robust1.c
> index d4b1d88a68..6342fcbbf7 100644
> --- a/sysdeps/pthread/tst-robust1.c
> +++ b/sysdeps/pthread/tst-robust1.c
> @@ -241,14 +241,14 @@ do_test (void)
> #endif
>
> #ifndef NOT_CONSISTENT
> - e = pthread_mutex_consistent_np (&m1);
> + e = pthread_mutex_consistent (&m1);
> if (e != 0)
> {
> printf ("%ld: mutex_consistent m1 failed with error %d\n", round, e);
> return 1;
> }
>
> - e = pthread_mutex_consistent_np (&m2);
> + e = pthread_mutex_consistent (&m2);
> if (e != 0)
> {
> printf ("%ld: mutex_consistent m2 failed with error %d\n", round, e);
Ok.
> diff --git a/sysdeps/pthread/tst-robust8.c b/sysdeps/pthread/tst-robust8.c
> index 27dd53d2c3..8f135cb516 100644
> --- a/sysdeps/pthread/tst-robust8.c
> +++ b/sysdeps/pthread/tst-robust8.c
> @@ -92,7 +92,7 @@ mutex_timedlock of %d in thread %ld failed with %d\n",
> }
>
> if (e == EOWNERDEAD)
> - pthread_mutex_consistent_np (&map[r]);
> + pthread_mutex_consistent (&map[r]);
>
> if (e == 0 || e == EOWNERDEAD)
> state[r] = 1;
Ok.
> diff --git a/sysdeps/pthread/tst-robust9.c b/sysdeps/pthread/tst-robust9.c
> index befc14f2d8..532aebc4e9 100644
> --- a/sysdeps/pthread/tst-robust9.c
> +++ b/sysdeps/pthread/tst-robust9.c
> @@ -14,10 +14,10 @@ tf (void *data)
> int err = pthread_mutex_lock (&m);
> if (err == EOWNERDEAD)
> {
> - err = pthread_mutex_consistent_np (&m);
> + err = pthread_mutex_consistent (&m);
> if (err)
> {
> - puts ("pthread_mutex_consistent_np");
> + puts ("pthread_mutex_consistent");
> exit (1);
> }
> }
Ok.
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index bac795262d..231330e591 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1442,6 +1442,8 @@ GLIBC_2.17 pthread_exit F
> GLIBC_2.17 pthread_getaffinity_np F
> GLIBC_2.17 pthread_getattr_np F
> GLIBC_2.17 pthread_getschedparam F
> +GLIBC_2.17 pthread_mutex_consistent F
> +GLIBC_2.17 pthread_mutex_consistent_np F
> GLIBC_2.17 pthread_mutex_destroy F
> GLIBC_2.17 pthread_mutex_init F
> GLIBC_2.17 pthread_mutex_lock F
> @@ -2172,3 +2174,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 336ee51e7e..1d4fffb5a6 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -102,8 +102,6 @@ GLIBC_2.17 pthread_key_create F
> GLIBC_2.17 pthread_key_delete F
> GLIBC_2.17 pthread_kill F
> GLIBC_2.17 pthread_kill_other_threads_np F
> -GLIBC_2.17 pthread_mutex_consistent F
> -GLIBC_2.17 pthread_mutex_consistent_np F
> GLIBC_2.17 pthread_mutex_destroy F
> GLIBC_2.17 pthread_mutex_getprioceiling F
> GLIBC_2.17 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 897f70db22..72c1c3ae6a 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1749,6 +1749,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x458
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x458
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2254,6 +2255,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2437,6 +2439,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 5c87b9baa0..e97e4d4dd5 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 604d259ad6..180b1e6244 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1369,6 +1369,8 @@ GLIBC_2.32 pthread_exit F
> GLIBC_2.32 pthread_getaffinity_np F
> GLIBC_2.32 pthread_getattr_np F
> GLIBC_2.32 pthread_getschedparam F
> +GLIBC_2.32 pthread_mutex_consistent F
> +GLIBC_2.32 pthread_mutex_consistent_np F
> GLIBC_2.32 pthread_mutex_destroy F
> GLIBC_2.32 pthread_mutex_init F
> GLIBC_2.32 pthread_mutex_lock F
> @@ -1932,3 +1934,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 1adcbecc2e..2f76de6bfc 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -116,8 +116,6 @@ GLIBC_2.32 pthread_key_delete F
> GLIBC_2.32 pthread_kill F
> GLIBC_2.32 pthread_kill_other_threads_np F
> GLIBC_2.32 pthread_mutex_clocklock F
> -GLIBC_2.32 pthread_mutex_consistent F
> -GLIBC_2.32 pthread_mutex_consistent_np F
> GLIBC_2.32 pthread_mutex_destroy F
> GLIBC_2.32 pthread_mutex_getprioceiling F
> GLIBC_2.32 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 094236f713..e3781f0e83 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -156,6 +157,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> @@ -1535,6 +1537,7 @@ GLIBC_2.4 pthread_exit F
> GLIBC_2.4 pthread_getaffinity_np F
> GLIBC_2.4 pthread_getattr_np F
> GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_init F
> GLIBC_2.4 pthread_mutex_lock F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index b0bb1d0e01..a3516931d6 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
> GLIBC_2.4 pthread_key_delete F
> GLIBC_2.4 pthread_kill F
> GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 2bb4d31e81..0cd363cc2d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -153,6 +154,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
> @@ -1532,6 +1534,7 @@ GLIBC_2.4 pthread_exit F
> GLIBC_2.4 pthread_getaffinity_np F
> GLIBC_2.4 pthread_getattr_np F
> GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_init F
> GLIBC_2.4 pthread_mutex_lock F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index b0bb1d0e01..a3516931d6 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
> GLIBC_2.4 pthread_key_delete F
> GLIBC_2.4 pthread_kill F
> GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index d4291fecfb..c1e62a6df3 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1430,6 +1430,8 @@ GLIBC_2.29 pthread_exit F
> GLIBC_2.29 pthread_getaffinity_np F
> GLIBC_2.29 pthread_getattr_np F
> GLIBC_2.29 pthread_getschedparam F
> +GLIBC_2.29 pthread_mutex_consistent F
> +GLIBC_2.29 pthread_mutex_consistent_np F
> GLIBC_2.29 pthread_mutex_destroy F
> GLIBC_2.29 pthread_mutex_init F
> GLIBC_2.29 pthread_mutex_lock F
> @@ -2116,3 +2118,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 6ce59276a7..f05530eb2a 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -113,8 +113,6 @@ GLIBC_2.29 pthread_key_create F
> GLIBC_2.29 pthread_key_delete F
> GLIBC_2.29 pthread_kill F
> GLIBC_2.29 pthread_kill_other_threads_np F
> -GLIBC_2.29 pthread_mutex_consistent F
> -GLIBC_2.29 pthread_mutex_consistent_np F
> GLIBC_2.29 pthread_mutex_destroy F
> GLIBC_2.29 pthread_mutex_getprioceiling F
> GLIBC_2.29 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 1fd2a862f6..50d9080eb6 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x404
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x404
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2075,6 +2076,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2144,6 +2146,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index a7bb15be58..02dca5bd52 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 943331f01e..d172849c32 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1754,6 +1754,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2242,6 +2243,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2311,6 +2313,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 017a9d9a86..92acdbc721 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -224,7 +223,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index f530151bde..e9e82e5ec8 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x438
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x438
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2107,6 +2108,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2176,6 +2178,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 6fb2e05072..1f9d0edbc9 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 6e76b6dcaa..b0c0d7208d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -34,6 +34,7 @@ GLIBC_2.12 __m68k_read_tp F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -157,6 +158,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0x98
> GLIBC_2.4 _IO_2_1_stdin_ D 0x98
> @@ -1515,6 +1517,7 @@ GLIBC_2.4 pthread_exit F
> GLIBC_2.4 pthread_getaffinity_np F
> GLIBC_2.4 pthread_getattr_np F
> GLIBC_2.4 pthread_getschedparam F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_init F
> GLIBC_2.4 pthread_mutex_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index b0bb1d0e01..a3516931d6 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -136,7 +135,6 @@ GLIBC_2.4 pthread_key_create F
> GLIBC_2.4 pthread_key_delete F
> GLIBC_2.4 pthread_kill F
> GLIBC_2.4 pthread_kill_other_threads_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_destroy F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 7541b8289f..c312a9e726 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1711,6 +1711,7 @@ GLIBC_2.12 __m68k_read_tp F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2187,6 +2188,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2256,6 +2258,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 017a9d9a86..92acdbc721 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -224,7 +223,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 6cf1936c42..4e5f7336c3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1445,6 +1445,8 @@ GLIBC_2.18 pthread_exit F
> GLIBC_2.18 pthread_getaffinity_np F
> GLIBC_2.18 pthread_getattr_np F
> GLIBC_2.18 pthread_getschedparam F
> +GLIBC_2.18 pthread_mutex_consistent F
> +GLIBC_2.18 pthread_mutex_consistent_np F
> GLIBC_2.18 pthread_mutex_destroy F
> GLIBC_2.18 pthread_mutex_init F
> GLIBC_2.18 pthread_mutex_lock F
> @@ -2167,3 +2169,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 9356f6183a..4849b99385 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -103,8 +103,6 @@ GLIBC_2.18 pthread_key_create F
> GLIBC_2.18 pthread_key_delete F
> GLIBC_2.18 pthread_kill F
> GLIBC_2.18 pthread_kill_other_threads_np F
> -GLIBC_2.18 pthread_mutex_consistent F
> -GLIBC_2.18 pthread_mutex_consistent_np F
> GLIBC_2.18 pthread_mutex_destroy F
> GLIBC_2.18 pthread_mutex_getprioceiling F
> GLIBC_2.18 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 98730ebcda..374e48889a 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1445,6 +1445,8 @@ GLIBC_2.18 pthread_exit F
> GLIBC_2.18 pthread_getaffinity_np F
> GLIBC_2.18 pthread_getattr_np F
> GLIBC_2.18 pthread_getschedparam F
> +GLIBC_2.18 pthread_mutex_consistent F
> +GLIBC_2.18 pthread_mutex_consistent_np F
> GLIBC_2.18 pthread_mutex_destroy F
> GLIBC_2.18 pthread_mutex_init F
> GLIBC_2.18 pthread_mutex_lock F
> @@ -2164,3 +2166,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 9356f6183a..4849b99385 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -103,8 +103,6 @@ GLIBC_2.18 pthread_key_create F
> GLIBC_2.18 pthread_key_delete F
> GLIBC_2.18 pthread_kill F
> GLIBC_2.18 pthread_kill_other_threads_np F
> -GLIBC_2.18 pthread_mutex_consistent F
> -GLIBC_2.18 pthread_mutex_consistent_np F
> GLIBC_2.18 pthread_mutex_destroy F
> GLIBC_2.18 pthread_mutex_getprioceiling F
> GLIBC_2.18 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 92fa6cbc73..f4c9a0e288 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
> GLIBC_2.11 mkstemps F
> GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.13 fanotify_init F
> GLIBC_2.13 fanotify_mark F
> @@ -2158,6 +2159,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2225,6 +2227,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 7aff4d018b..23f58b6459 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -92,7 +92,6 @@ GLIBC_2.0 tcdrain F
> GLIBC_2.0 write F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -225,7 +224,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 265a49e74e..1935dd7207 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
> GLIBC_2.11 mkstemps F
> GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.13 fanotify_init F
> GLIBC_2.13 fanotify_mark F
> @@ -2156,6 +2157,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2223,6 +2225,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 7aff4d018b..23f58b6459 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -92,7 +92,6 @@ GLIBC_2.0 tcdrain F
> GLIBC_2.0 write F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -225,7 +224,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index cfa5e1111b..130dd19d46 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1344,6 +1344,7 @@ GLIBC_2.11 mkostemps64 F
> GLIBC_2.11 mkstemps F
> GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.13 fanotify_init F
> GLIBC_2.13 fanotify_mark F
> @@ -2164,6 +2165,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2231,6 +2233,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 8c03ac52cd..a8728b1a57 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1342,6 +1342,7 @@ GLIBC_2.11 mkostemps64 F
> GLIBC_2.11 mkstemps F
> GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.13 fanotify_init F
> GLIBC_2.13 fanotify_mark F
> @@ -2158,6 +2159,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2225,6 +2227,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 17f5609e06..040ee6c0b6 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1487,6 +1487,8 @@ GLIBC_2.21 pthread_exit F
> GLIBC_2.21 pthread_getaffinity_np F
> GLIBC_2.21 pthread_getattr_np F
> GLIBC_2.21 pthread_getschedparam F
> +GLIBC_2.21 pthread_mutex_consistent F
> +GLIBC_2.21 pthread_mutex_consistent_np F
> GLIBC_2.21 pthread_mutex_destroy F
> GLIBC_2.21 pthread_mutex_init F
> GLIBC_2.21 pthread_mutex_lock F
> @@ -2205,3 +2207,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 73b4dfbd8e..0c7fe737a0 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -103,8 +103,6 @@ GLIBC_2.21 pthread_key_create F
> GLIBC_2.21 pthread_key_delete F
> GLIBC_2.21 pthread_kill F
> GLIBC_2.21 pthread_kill_other_threads_np F
> -GLIBC_2.21 pthread_mutex_consistent F
> -GLIBC_2.21 pthread_mutex_consistent_np F
> GLIBC_2.21 pthread_mutex_destroy F
> GLIBC_2.21 pthread_mutex_getprioceiling F
> GLIBC_2.21 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 76a16e2a6d..d51a3a1b32 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1715,6 +1715,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2214,6 +2215,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2397,6 +2399,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 0c68fb1b7c..7bdd5c1a03 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 697f072fd4..6b0a6ef07e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1715,6 +1715,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2247,6 +2248,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2442,6 +2444,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 2647bb51f1..d4fcc5479a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x438
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x438
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2077,6 +2078,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2260,6 +2262,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index c7f6167250..335cda5763 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -215,7 +214,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 036b1c8345..bbe387fe61 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1531,6 +1531,8 @@ GLIBC_2.17 pthread_exit F
> GLIBC_2.17 pthread_getaffinity_np F
> GLIBC_2.17 pthread_getattr_np F
> GLIBC_2.17 pthread_getschedparam F
> +GLIBC_2.17 pthread_mutex_consistent F
> +GLIBC_2.17 pthread_mutex_consistent_np F
> GLIBC_2.17 pthread_mutex_destroy F
> GLIBC_2.17 pthread_mutex_init F
> GLIBC_2.17 pthread_mutex_lock F
> @@ -2367,3 +2369,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 336ee51e7e..1d4fffb5a6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -102,8 +102,6 @@ GLIBC_2.17 pthread_key_create F
> GLIBC_2.17 pthread_key_delete F
> GLIBC_2.17 pthread_kill F
> GLIBC_2.17 pthread_kill_other_threads_np F
> -GLIBC_2.17 pthread_mutex_consistent F
> -GLIBC_2.17 pthread_mutex_consistent_np F
> GLIBC_2.17 pthread_mutex_destroy F
> GLIBC_2.17 pthread_mutex_getprioceiling F
> GLIBC_2.17 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index ff3225e16f..684acb6795 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1371,6 +1371,8 @@ GLIBC_2.33 pthread_exit F
> GLIBC_2.33 pthread_getaffinity_np F
> GLIBC_2.33 pthread_getattr_np F
> GLIBC_2.33 pthread_getschedparam F
> +GLIBC_2.33 pthread_mutex_consistent F
> +GLIBC_2.33 pthread_mutex_consistent_np F
> GLIBC_2.33 pthread_mutex_destroy F
> GLIBC_2.33 pthread_mutex_init F
> GLIBC_2.33 pthread_mutex_lock F
> @@ -1934,3 +1936,4 @@ GLIBC_2.33 write F
> GLIBC_2.33 writev F
> GLIBC_2.33 wscanf F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 61b3c4ff7a..33b755ed10 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -116,8 +116,6 @@ GLIBC_2.33 pthread_key_delete F
> GLIBC_2.33 pthread_kill F
> GLIBC_2.33 pthread_kill_other_threads_np F
> GLIBC_2.33 pthread_mutex_clocklock F
> -GLIBC_2.33 pthread_mutex_consistent F
> -GLIBC_2.33 pthread_mutex_consistent_np F
> GLIBC_2.33 pthread_mutex_destroy F
> GLIBC_2.33 pthread_mutex_getprioceiling F
> GLIBC_2.33 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index fb5ad9909f..6f8afeb03e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1433,6 +1433,8 @@ GLIBC_2.27 pthread_exit F
> GLIBC_2.27 pthread_getaffinity_np F
> GLIBC_2.27 pthread_getattr_np F
> GLIBC_2.27 pthread_getschedparam F
> +GLIBC_2.27 pthread_mutex_consistent F
> +GLIBC_2.27 pthread_mutex_consistent_np F
> GLIBC_2.27 pthread_mutex_destroy F
> GLIBC_2.27 pthread_mutex_init F
> GLIBC_2.27 pthread_mutex_lock F
> @@ -2134,3 +2136,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 894c474fcb..4be8886aed 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -102,8 +102,6 @@ GLIBC_2.27 pthread_key_create F
> GLIBC_2.27 pthread_key_delete F
> GLIBC_2.27 pthread_kill F
> GLIBC_2.27 pthread_kill_other_threads_np F
> -GLIBC_2.27 pthread_mutex_consistent F
> -GLIBC_2.27 pthread_mutex_consistent_np F
> GLIBC_2.27 pthread_mutex_destroy F
> GLIBC_2.27 pthread_mutex_getprioceiling F
> GLIBC_2.27 pthread_mutex_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index cead75acc5..a4b1c00c78 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1707,6 +1707,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2212,6 +2213,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2395,6 +2397,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index a198e22445..c3c66c7f6a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 31366dd7e6..c05c18c2bb 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x438
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x438
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2113,6 +2114,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2296,6 +2298,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 6d166d5f97..fa4b4cf747 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index a3a8be8910..635a05bf2f 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2082,6 +2083,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2151,6 +2153,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index a7bb15be58..02dca5bd52 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 8f505c5045..5b09a03eef 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2079,6 +2080,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2148,6 +2150,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index a7bb15be58..02dca5bd52 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -216,7 +215,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 53ef6304f1..7019d97b8d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1708,6 +1708,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x21c
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x21c
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2203,6 +2204,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> GLIBC_2.4 _IO_sprintf F
> @@ -2412,6 +2414,7 @@ GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> GLIBC_2.4 printf F
> GLIBC_2.4 printf_size F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 qecvt F
> GLIBC_2.4 qecvt_r F
> GLIBC_2.4 qfcvt F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 5c87b9baa0..e97e4d4dd5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -129,7 +129,6 @@ GLIBC_2.1.1 sem_unlink F
> GLIBC_2.1.2 __libpthread_version_placeholder F
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -226,7 +225,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index eba0cb156d..deb4735664 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -37,6 +37,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x438
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x438
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2130,6 +2131,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2199,6 +2201,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 6fb2e05072..1f9d0edbc9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -218,7 +217,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 17ce5dfd58..779b06605b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -33,6 +33,7 @@ GLIBC_2.11 mkstemps64 F
> GLIBC_2.12 _sys_errlist D 0x438
> GLIBC_2.12 _sys_nerr D 0x4
> GLIBC_2.12 ntp_gettimex F
> +GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 recvmmsg F
> GLIBC_2.12 sys_errlist D 0x438
> GLIBC_2.12 sys_nerr D 0x4
> @@ -2089,6 +2090,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> GLIBC_2.4 __fgets_unlocked_chk F
> @@ -2158,6 +2160,7 @@ GLIBC_2.4 open_wmemstream F
> GLIBC_2.4 openat F
> GLIBC_2.4 openat64 F
> GLIBC_2.4 ppoll F
> +GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 readlinkat F
> GLIBC_2.4 renameat F
> GLIBC_2.4 symlinkat F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index f85ab1d3cd..01d330cad7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -1,6 +1,5 @@
> GLIBC_2.11 pthread_sigqueue F
> GLIBC_2.12 pthread_getname_np F
> -GLIBC_2.12 pthread_mutex_consistent F
> GLIBC_2.12 pthread_mutexattr_getrobust F
> GLIBC_2.12 pthread_mutexattr_setrobust F
> GLIBC_2.12 pthread_setname_np F
> @@ -215,7 +214,6 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
> GLIBC_2.30 pthread_rwlock_clockwrlock F
> GLIBC_2.30 sem_clockwait F
> GLIBC_2.31 pthread_clockjoin_np F
> -GLIBC_2.4 pthread_mutex_consistent_np F
> GLIBC_2.4 pthread_mutex_getprioceiling F
> GLIBC_2.4 pthread_mutex_setprioceiling F
> GLIBC_2.4 pthread_mutexattr_getprioceiling F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 17a1c83903..a85d2af101 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1450,6 +1450,8 @@ GLIBC_2.16 pthread_exit F
> GLIBC_2.16 pthread_getaffinity_np F
> GLIBC_2.16 pthread_getattr_np F
> GLIBC_2.16 pthread_getschedparam F
> +GLIBC_2.16 pthread_mutex_consistent F
> +GLIBC_2.16 pthread_mutex_consistent_np F
> GLIBC_2.16 pthread_mutex_destroy F
> GLIBC_2.16 pthread_mutex_init F
> GLIBC_2.16 pthread_mutex_lock F
> @@ -2186,3 +2188,4 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 0e24fcd6bf..b470f2eed5 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -102,8 +102,6 @@ GLIBC_2.16 pthread_key_create F
> GLIBC_2.16 pthread_key_delete F
> GLIBC_2.16 pthread_kill F
> GLIBC_2.16 pthread_kill_other_threads_np F
> -GLIBC_2.16 pthread_mutex_consistent F
> -GLIBC_2.16 pthread_mutex_consistent_np F
> GLIBC_2.16 pthread_mutex_destroy F
> GLIBC_2.16 pthread_mutex_getprioceiling F
> GLIBC_2.16 pthread_mutex_init F
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 02/18] nptl: Move __pthread_cleanup_routine into libc
2021-03-12 17:49 ` [PATCH 02/18] nptl: Move __pthread_cleanup_routine " Florian Weimer
@ 2021-03-15 19:53 ` Adhemerval Zanella
2021-03-16 7:09 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-15 19:53 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
LGTM with just a suggestion about using compat_symbol_unique.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> ---
> nptl/Makefile | 2 +-
> nptl/Versions | 3 ++-
> nptl/cleanup_routine.c | 12 ++++++++++--
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/arc/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arc/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arm/be/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arm/le/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/csky/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/csky/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/i386/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/i386/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 2 ++
> .../unix/sysv/linux/m68k/coldfire/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 2 ++
> .../unix/sysv/linux/m68k/m680x0/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 2 ++
> .../unix/sysv/linux/microblaze/be/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 2 ++
> .../unix/sysv/linux/microblaze/le/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 2 ++
> .../unix/sysv/linux/mips/mips32/libpthread.abilist | 1 -
> .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 2 ++
> .../unix/sysv/linux/mips/mips64/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 1 -
> .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 2 ++
> .../sysv/linux/powerpc/powerpc32/libpthread.abilist | 1 -
> .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 2 ++
> .../sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
> .../linux/powerpc/powerpc64/be/libpthread.abilist | 1 -
> .../sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
> .../linux/powerpc/powerpc64/le/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 2 ++
> .../unix/sysv/linux/riscv/rv32/libpthread.abilist | 1 -
> sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 2 ++
> .../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 ++
> .../unix/sysv/linux/x86_64/x32/libpthread.abilist | 1 -
> 64 files changed, 77 insertions(+), 33 deletions(-)
>
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 96bb47e152..b951fcb77e 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -30,6 +30,7 @@ extra-libs-others := $(extra-libs)
>
> routines = \
> alloca_cutoff \
> + cleanup_routine \
> elision-conf \
> elision-lock \
> elision-timed \
> @@ -98,7 +99,6 @@ libpthread-routines = \
> cleanup_compat \
> cleanup_defer \
> cleanup_defer_compat \
> - cleanup_routine \
> events \
> flockfile \
> ftrylockfile \
Ok.
> diff --git a/nptl/Versions b/nptl/Versions
> index e38d98709d..f2db649f9d 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -49,6 +49,7 @@ libc {
> pthread_cond_wait;
> }
> GLIBC_2.3.3 {
> + __pthread_cleanup_routine;
> pthread_attr_setaffinity_np;
> pthread_getaffinity_np;
> }
> @@ -77,6 +78,7 @@ libc {
> pthread_sigmask;
> }
> GLIBC_2.34 {
> + __pthread_cleanup_routine;
> pthread_mutex_consistent;
> }
> GLIBC_PRIVATE {
> @@ -312,7 +314,6 @@ libpthread {
> }
>
> GLIBC_2.3.3 {
> - __pthread_cleanup_routine;
> __pthread_register_cancel;
> __pthread_register_cancel_defer;
> __pthread_unregister_cancel;
Ok.
> diff --git a/nptl/cleanup_routine.c b/nptl/cleanup_routine.c
> index 973f088be7..9710bf58ec 100644
> --- a/nptl/cleanup_routine.c
> +++ b/nptl/cleanup_routine.c
> @@ -17,11 +17,19 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <pthread.h>
> -
> +#include <shlib-compat.h>
>
> void
> -__pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
> +___pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
> {
> if (f->__do_it)
> f->__cancel_routine (f->__cancel_arg);
> }
> +versioned_symbol (libc, ___pthread_cleanup_routine, __pthread_cleanup_routine,
> + GLIBC_2_34);
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
> +strong_alias (___pthread_cleanup_routine, __pthread_cleanup_routine_alias)
> +compat_symbol (libc, __pthread_cleanup_routine_alias,
> + __pthread_cleanup_routine, GLIBC_2_3_3);
> +#endif
I think you can use compat_symbol_unique here.
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 231330e591..a55f3d9667 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -338,6 +338,7 @@ GLIBC_2.17 __printf_fp F
> GLIBC_2.17 __profile_frequency F
> GLIBC_2.17 __progname D 0x8
> GLIBC_2.17 __progname_full D 0x8
> +GLIBC_2.17 __pthread_cleanup_routine F
> GLIBC_2.17 __ptsname_r_chk F
> GLIBC_2.17 __pwrite64 F
> GLIBC_2.17 __rawmemchr F
> @@ -2174,4 +2175,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 1d4fffb5a6..ad2492cb4c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.17 __lseek F
> GLIBC_2.17 __open F
> GLIBC_2.17 __open64 F
> GLIBC_2.17 __pread64 F
> -GLIBC_2.17 __pthread_cleanup_routine F
> GLIBC_2.17 __pthread_getspecific F
> GLIBC_2.17 __pthread_key_create F
> GLIBC_2.17 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 72c1c3ae6a..54a11b7e76 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2147,6 +2147,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2255,6 +2256,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index e97e4d4dd5..1eff0da935 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 180b1e6244..a229125212 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -327,6 +327,7 @@ GLIBC_2.32 __printf_fp F
> GLIBC_2.32 __profile_frequency F
> GLIBC_2.32 __progname D 0x4
> GLIBC_2.32 __progname_full D 0x4
> +GLIBC_2.32 __pthread_cleanup_routine F
> GLIBC_2.32 __ptsname_r_chk F
> GLIBC_2.32 __pwrite64 F
> GLIBC_2.32 __rawmemchr F
> @@ -1934,4 +1935,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 2f76de6bfc..c635f1dac9 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -12,7 +12,6 @@ GLIBC_2.32 __lseek F
> GLIBC_2.32 __open F
> GLIBC_2.32 __open64 F
> GLIBC_2.32 __pread64 F
> -GLIBC_2.32 __pthread_cleanup_routine F
> GLIBC_2.32 __pthread_getspecific F
> GLIBC_2.32 __pthread_key_create F
> GLIBC_2.32 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index e3781f0e83..cfc58ca510 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -157,6 +157,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> @@ -485,6 +486,7 @@ GLIBC_2.4 __printf_fp F
> GLIBC_2.4 __profile_frequency F
> GLIBC_2.4 __progname D 0x4
> GLIBC_2.4 __progname_full D 0x4
> +GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __ptsname_r_chk F
> GLIBC_2.4 __pwrite64 F
> GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index a3516931d6..79c5f66cff 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
> GLIBC_2.4 __open F
> GLIBC_2.4 __open64 F
> GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __pthread_getspecific F
> GLIBC_2.4 __pthread_key_create F
> GLIBC_2.4 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 0cd363cc2d..e725ee6217 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -154,6 +154,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> @@ -482,6 +483,7 @@ GLIBC_2.4 __printf_fp F
> GLIBC_2.4 __profile_frequency F
> GLIBC_2.4 __progname D 0x4
> GLIBC_2.4 __progname_full D 0x4
> +GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __ptsname_r_chk F
> GLIBC_2.4 __pwrite64 F
> GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index a3516931d6..79c5f66cff 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
> GLIBC_2.4 __open F
> GLIBC_2.4 __open64 F
> GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __pthread_getspecific F
> GLIBC_2.4 __pthread_key_create F
> GLIBC_2.4 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index c1e62a6df3..51d9d33b13 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -331,6 +331,7 @@ GLIBC_2.29 __printf_fp F
> GLIBC_2.29 __profile_frequency F
> GLIBC_2.29 __progname D 0x4
> GLIBC_2.29 __progname_full D 0x4
> +GLIBC_2.29 __pthread_cleanup_routine F
> GLIBC_2.29 __ptsname_r_chk F
> GLIBC_2.29 __pwrite64 F
> GLIBC_2.29 __rawmemchr F
> @@ -2118,4 +2119,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index f05530eb2a..e242edb9c3 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -12,7 +12,6 @@ GLIBC_2.29 __lseek F
> GLIBC_2.29 __open F
> GLIBC_2.29 __open64 F
> GLIBC_2.29 __pread64 F
> -GLIBC_2.29 __pthread_cleanup_routine F
> GLIBC_2.29 __pthread_getspecific F
> GLIBC_2.29 __pthread_key_create F
> GLIBC_2.29 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 50d9080eb6..914aef5f35 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1996,6 +1996,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2076,6 +2077,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 02dca5bd52..8ce3580478 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index d172849c32..f7ca08f695 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2161,6 +2161,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2243,6 +2244,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 92acdbc721..d3fc0f2d70 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index e9e82e5ec8..a77ab9816b 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2028,6 +2028,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2108,6 +2109,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 1f9d0edbc9..d7000f415e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index b0c0d7208d..49a3997d83 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -158,6 +158,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _Exit F
> GLIBC_2.4 _IO_2_1_stderr_ D 0x98
> @@ -471,6 +472,7 @@ GLIBC_2.4 __printf_fp F
> GLIBC_2.4 __profile_frequency F
> GLIBC_2.4 __progname D 0x4
> GLIBC_2.4 __progname_full D 0x4
> +GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __ptsname_r_chk F
> GLIBC_2.4 __pwrite64 F
> GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index a3516931d6..79c5f66cff 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -47,7 +47,6 @@ GLIBC_2.4 __lseek F
> GLIBC_2.4 __open F
> GLIBC_2.4 __open64 F
> GLIBC_2.4 __pread64 F
> -GLIBC_2.4 __pthread_cleanup_routine F
> GLIBC_2.4 __pthread_getspecific F
> GLIBC_2.4 __pthread_key_create F
> GLIBC_2.4 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index c312a9e726..9969b02829 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2105,6 +2105,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2188,6 +2189,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 92acdbc721..d3fc0f2d70 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 4e5f7336c3..eb6d753ae8 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -339,6 +339,7 @@ GLIBC_2.18 __printf_fp F
> GLIBC_2.18 __profile_frequency F
> GLIBC_2.18 __progname D 0x4
> GLIBC_2.18 __progname_full D 0x4
> +GLIBC_2.18 __pthread_cleanup_routine F
> GLIBC_2.18 __ptsname_r_chk F
> GLIBC_2.18 __pwrite64 F
> GLIBC_2.18 __rawmemchr F
> @@ -2169,4 +2170,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 4849b99385..c096915557 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.18 __lseek F
> GLIBC_2.18 __open F
> GLIBC_2.18 __open64 F
> GLIBC_2.18 __pread64 F
> -GLIBC_2.18 __pthread_cleanup_routine F
> GLIBC_2.18 __pthread_getspecific F
> GLIBC_2.18 __pthread_key_create F
> GLIBC_2.18 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 374e48889a..7c3d154267 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -339,6 +339,7 @@ GLIBC_2.18 __printf_fp F
> GLIBC_2.18 __profile_frequency F
> GLIBC_2.18 __progname D 0x4
> GLIBC_2.18 __progname_full D 0x4
> +GLIBC_2.18 __pthread_cleanup_routine F
> GLIBC_2.18 __ptsname_r_chk F
> GLIBC_2.18 __pwrite64 F
> GLIBC_2.18 __rawmemchr F
> @@ -2166,4 +2167,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 4849b99385..c096915557 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.18 __lseek F
> GLIBC_2.18 __open F
> GLIBC_2.18 __open64 F
> GLIBC_2.18 __pread64 F
> -GLIBC_2.18 __pthread_cleanup_routine F
> GLIBC_2.18 __pthread_getspecific F
> GLIBC_2.18 __pthread_key_create F
> GLIBC_2.18 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index f4c9a0e288..bb2c61d8b4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2079,6 +2079,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x200
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2159,6 +2160,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 23f58b6459..358a13524a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -200,7 +200,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 1935dd7207..7a418b2e12 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2077,6 +2077,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x200
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2157,6 +2158,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 23f58b6459..358a13524a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -200,7 +200,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 130dd19d46..29d9e4045a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2085,6 +2085,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x200
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2165,6 +2166,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index a8728b1a57..404789db07 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2078,6 +2078,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x400
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2159,6 +2160,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 040ee6c0b6..468444aa86 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -376,6 +376,7 @@ GLIBC_2.21 __printf_fp F
> GLIBC_2.21 __profile_frequency F
> GLIBC_2.21 __progname D 0x4
> GLIBC_2.21 __progname_full D 0x4
> +GLIBC_2.21 __pthread_cleanup_routine F
> GLIBC_2.21 __ptsname_r_chk F
> GLIBC_2.21 __pwrite64 F
> GLIBC_2.21 __rawmemchr F
> @@ -2207,4 +2208,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 0c7fe737a0..6379c1f86c 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.21 __lseek F
> GLIBC_2.21 __open F
> GLIBC_2.21 __open64 F
> GLIBC_2.21 __pread64 F
> -GLIBC_2.21 __pthread_cleanup_routine F
> GLIBC_2.21 __pthread_getspecific F
> GLIBC_2.21 __pthread_key_create F
> GLIBC_2.21 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index d51a3a1b32..41ba4fdb29 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2109,6 +2109,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 getcontext F
> GLIBC_2.3.3 gnu_dev_major F
> @@ -2215,6 +2216,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 7bdd5c1a03..7c6e78f6ce 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 6b0a6ef07e..1d030db5f7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2142,6 +2142,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 getcontext F
> GLIBC_2.3.3 gnu_dev_major F
> @@ -2248,6 +2249,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index d4fcc5479a..9f86b81d65 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1977,6 +1977,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2078,6 +2079,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 335cda5763..773d873bd1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -190,7 +190,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index bbe387fe61..599d06d56f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -424,6 +424,7 @@ GLIBC_2.17 __printf_fp F
> GLIBC_2.17 __profile_frequency F
> GLIBC_2.17 __progname D 0x8
> GLIBC_2.17 __progname_full D 0x8
> +GLIBC_2.17 __pthread_cleanup_routine F
> GLIBC_2.17 __ptsname_r_chk F
> GLIBC_2.17 __pwrite64 F
> GLIBC_2.17 __rawmemchr F
> @@ -2369,4 +2370,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 1d4fffb5a6..ad2492cb4c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.17 __lseek F
> GLIBC_2.17 __open F
> GLIBC_2.17 __open64 F
> GLIBC_2.17 __pread64 F
> -GLIBC_2.17 __pthread_cleanup_routine F
> GLIBC_2.17 __pthread_getspecific F
> GLIBC_2.17 __pthread_key_create F
> GLIBC_2.17 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 684acb6795..9f0068ba1c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -324,6 +324,7 @@ GLIBC_2.33 __printf_fp F
> GLIBC_2.33 __profile_frequency F
> GLIBC_2.33 __progname D 0x4
> GLIBC_2.33 __progname_full D 0x4
> +GLIBC_2.33 __pthread_cleanup_routine F
> GLIBC_2.33 __ptsname_r_chk F
> GLIBC_2.33 __pwrite64 F
> GLIBC_2.33 __rawmemchr F
> @@ -1936,4 +1937,5 @@ GLIBC_2.33 write F
> GLIBC_2.33 writev F
> GLIBC_2.33 wscanf F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 33b755ed10..76484b8073 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -12,7 +12,6 @@ GLIBC_2.33 __lseek F
> GLIBC_2.33 __open F
> GLIBC_2.33 __open64 F
> GLIBC_2.33 __pread64 F
> -GLIBC_2.33 __pthread_cleanup_routine F
> GLIBC_2.33 __pthread_getspecific F
> GLIBC_2.33 __pthread_key_create F
> GLIBC_2.33 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 6f8afeb03e..833d6f11d6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -335,6 +335,7 @@ GLIBC_2.27 __printf_fp F
> GLIBC_2.27 __profile_frequency F
> GLIBC_2.27 __progname D 0x8
> GLIBC_2.27 __progname_full D 0x8
> +GLIBC_2.27 __pthread_cleanup_routine F
> GLIBC_2.27 __ptsname_r_chk F
> GLIBC_2.27 __pwrite64 F
> GLIBC_2.27 __rawmemchr F
> @@ -2136,4 +2137,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 4be8886aed..2332ba5927 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.27 __lseek F
> GLIBC_2.27 __open F
> GLIBC_2.27 __open64 F
> GLIBC_2.27 __pread64 F
> -GLIBC_2.27 __pthread_cleanup_routine F
> GLIBC_2.27 __pthread_getspecific F
> GLIBC_2.27 __pthread_key_create F
> GLIBC_2.27 __pthread_mutex_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index a4b1c00c78..a3e732e82f 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2118,6 +2118,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2213,6 +2214,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index c3c66c7f6a..28cf9cfcee 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -203,7 +203,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 c05c18c2bb..4443545ed0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2022,6 +2022,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2114,6 +2115,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index fa4b4cf747..5baa0fdd6f 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -195,7 +195,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 635a05bf2f..f9cb4195cd 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2000,6 +2000,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2083,6 +2084,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 02dca5bd52..8ce3580478 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 5b09a03eef..e1ae67a464 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2000,6 +2000,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2080,6 +2081,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 02dca5bd52..8ce3580478 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 7019d97b8d..9ca458b1c5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2112,6 +2112,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x104
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2204,6 +2205,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 _IO_fprintf F
> GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index e97e4d4dd5..1eff0da935 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -201,7 +201,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_cancel F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index deb4735664..6af3cc116b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2051,6 +2051,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2131,6 +2132,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 1f9d0edbc9..d7000f415e 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -193,7 +193,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 779b06605b..e267cc2a23 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2009,6 +2009,7 @@ GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> GLIBC_2.3.2 strptime_l F
> +GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 _sys_siglist D 0x208
> GLIBC_2.3.3 gnu_dev_major F
> GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2090,6 +2091,7 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> GLIBC_2.4 __confstr_chk F
> GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 01d330cad7..f0271930eb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -192,7 +192,6 @@ GLIBC_2.3.2 pthread_cond_broadcast F
> GLIBC_2.3.2 pthread_cond_signal F
> GLIBC_2.3.2 pthread_cond_timedwait F
> GLIBC_2.3.2 pthread_cond_wait F
> -GLIBC_2.3.3 __pthread_cleanup_routine F
> GLIBC_2.3.3 __pthread_register_cancel F
> GLIBC_2.3.3 __pthread_register_cancel_defer F
> GLIBC_2.3.3 __pthread_unregister_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 a85d2af101..50e860fe40 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -339,6 +339,7 @@ GLIBC_2.16 __printf_fp F
> GLIBC_2.16 __profile_frequency F
> GLIBC_2.16 __progname D 0x4
> GLIBC_2.16 __progname_full D 0x4
> +GLIBC_2.16 __pthread_cleanup_routine F
> GLIBC_2.16 __ptsname_r_chk F
> GLIBC_2.16 __pwrite64 F
> GLIBC_2.16 __rawmemchr F
> @@ -2188,4 +2189,5 @@ GLIBC_2.33 mknodat F
> GLIBC_2.33 stat F
> GLIBC_2.33 stat64 F
> GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __pthread_cleanup_routine F
> GLIBC_2.34 pthread_mutex_consistent F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index b470f2eed5..aa9e127bad 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.16 __lseek F
> GLIBC_2.16 __open F
> GLIBC_2.16 __open64 F
> GLIBC_2.16 __pread64 F
> -GLIBC_2.16 __pthread_cleanup_routine F
> GLIBC_2.16 __pthread_getspecific F
> GLIBC_2.16 __pthread_key_create F
> GLIBC_2.16 __pthread_mutex_destroy F
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 03/18] nptl: Move legacy unwinding implementation into libc
2021-03-12 17:49 ` [PATCH 03/18] nptl: Move legacy unwinding implementation " Florian Weimer
@ 2021-03-15 20:02 ` Adhemerval Zanella
2021-03-16 7:03 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-15 20:02 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> It is still used internally. Since unwinding is now available
> unconditionally, avoid indirect calls through function pointers loaded
> from the stack by inlining the non-cancellation cleanup code. This
> avoids a regression in security hardening.
>
> The out-of-line __libc_cleanup_routine implementation is no longer
> needed because the inline definition is now static __always_inline.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> nptl/Versions | 2 +
> nptl/cleanup_defer_compat.c | 56 ++--------------------------
> nptl/libc-cleanup.c | 64 ++++++++++++++++++++++++++++++--
> nptl/nptl-init.c | 2 -
> sysdeps/nptl/libc-lock.h | 59 ++++++++++++++---------------
> sysdeps/nptl/libc-lockP.h | 26 +------------
> sysdeps/nptl/pthread-functions.h | 4 --
> 7 files changed, 97 insertions(+), 116 deletions(-)
>
> diff --git a/nptl/Versions b/nptl/Versions
> index f2db649f9d..e3eb686a04 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -86,6 +86,8 @@ libc {
> __futex_abstimed_wait_cancelable64;
> __libc_alloca_cutoff;
> __libc_allocate_rtsig_private;
> + __libc_cleanup_pop_restore;
> + __libc_cleanup_push_defer;
> __libc_current_sigrtmax_private;
> __libc_current_sigrtmin_private;
> __libc_dl_error_tsd;
Ok.
> diff --git a/nptl/cleanup_defer_compat.c b/nptl/cleanup_defer_compat.c
> index 49ef53ea60..1957318208 100644
> --- a/nptl/cleanup_defer_compat.c
> +++ b/nptl/cleanup_defer_compat.c
> @@ -17,41 +17,15 @@
> <https://www.gnu.org/licenses/>. */
>
> #include "pthreadP.h"
> -
> +#include <libc-lock.h>
>
> void
> _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> void (*routine) (void *), void *arg)
> {
> - struct pthread *self = THREAD_SELF;
> -
> buffer->__routine = routine;
> buffer->__arg = arg;
> - buffer->__prev = THREAD_GETMEM (self, cleanup);
> -
> - int cancelhandling = THREAD_GETMEM (self, cancelhandling);
> -
> - /* Disable asynchronous cancellation for now. */
> - if (__glibc_unlikely (cancelhandling & CANCELTYPE_BITMASK))
> - while (1)
> - {
> - int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
> - cancelhandling
> - & ~CANCELTYPE_BITMASK,
> - cancelhandling);
> - if (__glibc_likely (curval == cancelhandling))
> - /* Successfully replaced the value. */
> - break;
> -
> - /* Prepare for the next round. */
> - cancelhandling = curval;
> - }
> -
> - buffer->__canceltype = (cancelhandling & CANCELTYPE_BITMASK
> - ? PTHREAD_CANCEL_ASYNCHRONOUS
> - : PTHREAD_CANCEL_DEFERRED);
> -
> - THREAD_SETMEM (self, cleanup, buffer);
> + __libc_cleanup_push_defer (buffer);
> }
> strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
>
Ok.
> @@ -60,31 +34,7 @@ void
> _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
> int execute)
> {
> - struct pthread *self = THREAD_SELF;
> -
> - THREAD_SETMEM (self, cleanup, buffer->__prev);
> -
> - int cancelhandling;
> - if (__builtin_expect (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED, 0)
> - && ((cancelhandling = THREAD_GETMEM (self, cancelhandling))
> - & CANCELTYPE_BITMASK) == 0)
> - {
> - while (1)
> - {
> - int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
> - cancelhandling
> - | CANCELTYPE_BITMASK,
> - cancelhandling);
> - if (__glibc_likely (curval == cancelhandling))
> - /* Successfully replaced the value. */
> - break;
> -
> - /* Prepare for the next round. */
> - cancelhandling = curval;
> - }
> -
> - CANCELLATION_P (self);
> - }
> + __libc_cleanup_pop_restore (buffer);
>
> /* If necessary call the cleanup routine after we removed the
> current cleanup block from the list. */
Ok.
> diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c
> index 61f97eceda..14ccfe9285 100644
> --- a/nptl/libc-cleanup.c
> +++ b/nptl/libc-cleanup.c
> @@ -17,11 +17,69 @@
> <https://www.gnu.org/licenses/>. */
>
> #include "pthreadP.h"
> +#include <tls.h>
> +#include <libc-lock.h>
>
> +void
> +__libc_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer)
> +{
> + struct pthread *self = THREAD_SELF;
> +
> + buffer->__prev = THREAD_GETMEM (self, cleanup);
> +
> + int cancelhandling = THREAD_GETMEM (self, cancelhandling);
> +
> + /* Disable asynchronous cancellation for now. */
> + if (__glibc_unlikely (cancelhandling & CANCELTYPE_BITMASK))
> + while (1)
> + {
> + int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
> + cancelhandling
> + & ~CANCELTYPE_BITMASK,
> + cancelhandling);
> + if (__glibc_likely (curval == cancelhandling))
> + /* Successfully replaced the value. */
> + break;
> +
> + /* Prepare for the next round. */
> + cancelhandling = curval;
> + }
> +
> + buffer->__canceltype = (cancelhandling & CANCELTYPE_BITMASK
> + ? PTHREAD_CANCEL_ASYNCHRONOUS
> + : PTHREAD_CANCEL_DEFERRED);
> +
> + THREAD_SETMEM (self, cleanup, buffer);
> +}
> +libc_hidden_def (__libc_cleanup_push_defer)
>
> void
> -__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
> +__libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer)
> {
> - if (f->__do_it)
> - f->__cancel_routine (f->__cancel_arg);
> + struct pthread *self = THREAD_SELF;
> +
> + THREAD_SETMEM (self, cleanup, buffer->__prev);
> +
> + int cancelhandling;
> + if (__builtin_expect (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED, 0)
> + && ((cancelhandling = THREAD_GETMEM (self, cancelhandling))
> + & CANCELTYPE_BITMASK) == 0)
> + {
> + while (1)
> + {
> + int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
> + cancelhandling
> + | CANCELTYPE_BITMASK,
> + cancelhandling);
> + if (__glibc_likely (curval == cancelhandling))
> + /* Successfully replaced the value. */
> + break;
> +
> + /* Prepare for the next round. */
> + cancelhandling = curval;
> + }
> +
> + CANCELLATION_P (self);
> + }
> }
> +libc_hidden_def (__libc_cleanup_pop_restore)
Ok.
> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index 865ee8db29..c2b563cc68 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -96,8 +96,6 @@ static const struct pthread_functions pthread_functions =
> .ptr___pthread_key_create = __pthread_key_create,
> .ptr___pthread_getspecific = __pthread_getspecific,
> .ptr___pthread_setspecific = __pthread_setspecific,
> - .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
> - .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
> .ptr_nthreads = &__nptl_nthreads,
> .ptr___pthread_unwind = &__pthread_unwind,
> .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
Ok.
> diff --git a/sysdeps/nptl/libc-lock.h b/sysdeps/nptl/libc-lock.h
> index dea96121b3..56fe83f69f 100644
> --- a/sysdeps/nptl/libc-lock.h
> +++ b/sysdeps/nptl/libc-lock.h
> @@ -143,39 +143,40 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
> __libc_maybe_call (__pthread_mutex_unlock, (&(NAME).mutex), 0)
> #endif
>
> -/* Note that for I/O cleanup handling we are using the old-style
> - cancel handling. It does not have to be integrated with C++ since
> - no C++ code is called in the middle. The old-style handling is
> - faster and the support is not going away. */
> -extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> - void (*routine) (void *), void *arg);
> -extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
> - int execute);
> +/* Put the unwind buffer BUFFER on the per-thread callback stack. The
> + caller must fill BUFFER->__routine and BUFFER->__arg before calling
> + this function. */
> +void __libc_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer);
> +libc_hidden_proto (__libc_cleanup_push_defer)
> +/* Remove BUFFER from the unwind callback stack. The caller must invoke
> + the callback if desired. */
> +void __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer);
> +libc_hidden_proto (__libc_cleanup_pop_restore)
>
Ok.
> /* Start critical region with cleanup. */
> -#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
> - { struct _pthread_cleanup_buffer _buffer; \
> - int _avail; \
> - if (DOIT) { \
> - _avail = PTFAVAIL (_pthread_cleanup_push_defer); \
> - if (_avail) { \
> - __libc_ptf_call_always (_pthread_cleanup_push_defer, (&_buffer, FCT, \
> - ARG)); \
> - } else { \
> - _buffer.__routine = (FCT); \
> - _buffer.__arg = (ARG); \
> - } \
> - } else { \
> - _avail = 0; \
> - }
> +#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
> + { bool _cleanup_start_doit; \
> + struct _pthread_cleanup_buffer _buffer; \
> + /* Non-addresable copy of FCT, so that we avoid indirect calls on \
s/addresable/addressable
> + the non-unwinding path. */ \
> + void (*_cleanup_routine) (void *) = (FCT); \
> + _buffer.__arg = (ARG); \
> + if (DOIT) \
> + { \
> + _cleanup_start_doit = true; \
> + _buffer.__routine = _cleanup_routine; \
> + __libc_cleanup_push_defer (&_buffer); \
> + } \
> + else \
> + _cleanup_start_doit = false;
>
> /* End critical region with cleanup. */
> -#define __libc_cleanup_region_end(DOIT) \
> - if (_avail) { \
> - __libc_ptf_call_always (_pthread_cleanup_pop_restore, (&_buffer, DOIT));\
> - } else if (DOIT) \
> - _buffer.__routine (_buffer.__arg); \
> - }
> +#define __libc_cleanup_region_end(DOIT) \
> + if (_cleanup_start_doit) \
> + __libc_cleanup_pop_restore (&_buffer); \
> + if (DOIT) \
> + _cleanup_routine (_buffer.__arg); \
> + } /* matches __libc_cleanup_region_start */
>
Ok.
>
> /* Hide the definitions which are only supposed to be used inside libc in
> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index 4a0b96e6d9..1a861b0d3f 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -251,32 +251,12 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
> /* Get once control variable. */
> #define __libc_once_get(ONCE_CONTROL) ((ONCE_CONTROL) != PTHREAD_ONCE_INIT)
>
> -/* Note that for I/O cleanup handling we are using the old-style
> - cancel handling. It does not have to be integrated with C++ snce
> - no C++ code is called in the middle. The old-style handling is
> - faster and the support is not going away. */
> -extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
> - void (*routine) (void *), void *arg);
> -extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer,
> - int execute);
> -extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> - void (*routine) (void *), void *arg);
> -extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
> - int execute);
> -
> -/* Sometimes we have to exit the block in the middle. */
> -#define __libc_cleanup_end(DOIT) \
> - if (_avail) { \
> - __libc_ptf_call_always (_pthread_cleanup_pop_restore, (&_buffer, DOIT));\
> - } else if (DOIT) \
> - _buffer.__routine (_buffer.__arg)
> -
> /* __libc_cleanup_push and __libc_cleanup_pop depend on exception
> handling and stack unwinding. */
> #ifdef __EXCEPTIONS
>
Ok.
> /* Normal cleanup handling, based on C cleanup attribute. */
> -__extern_inline void
> +static __always_inline void
> __libc_cleanup_routine (struct __pthread_cleanup_frame *f)
> {
> if (f->__do_it)
> @@ -396,8 +376,6 @@ weak_extern (__pthread_once)
> weak_extern (__pthread_initialize)
> weak_extern (__pthread_atfork)
> weak_extern (__pthread_setcancelstate)
> -weak_extern (_pthread_cleanup_push_defer)
> -weak_extern (_pthread_cleanup_pop_restore)
> # else
> # pragma weak __pthread_mutex_init
> # pragma weak __pthread_mutex_destroy
> @@ -420,8 +398,6 @@ weak_extern (_pthread_cleanup_pop_restore)
> # pragma weak __pthread_initialize
> # pragma weak __pthread_atfork
> # pragma weak __pthread_setcancelstate
> -# pragma weak _pthread_cleanup_push_defer
> -# pragma weak _pthread_cleanup_pop_restore
> # endif
> #endif
>
> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 97a5c48939..4268084b66 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -57,10 +57,6 @@ struct pthread_functions
> int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
> void *(*ptr___pthread_getspecific) (pthread_key_t);
> int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
> - void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer *,
> - void (*) (void *), void *);
> - void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer *,
> - int);
> #define HAVE_PTR_NTHREADS
> unsigned int *ptr_nthreads;
> void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-15 19:30 ` Adhemerval Zanella
@ 2021-03-16 5:42 ` Florian Weimer
2021-03-16 13:49 ` Adhemerval Zanella
0 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 5:42 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
>> index 937c7c4640..0a84063a2b 100644
>> --- a/nptl/pthread_mutex_consistent.c
>> +++ b/nptl/pthread_mutex_consistent.c
>> @@ -18,10 +18,10 @@
>>
>> #include <errno.h>
>> #include <pthreadP.h>
>> -
>> +#include <shlib-compat.h>
>>
>> int
>> -pthread_mutex_consistent (pthread_mutex_t *mutex)
>> +__pthread_mutex_consistent (pthread_mutex_t *mutex)
>> {
>> /* Test whether this is a robust mutex with a dead owner.
>> See concurrency notes regarding __kind in struct __pthread_mutex_s
>> @@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
>>
>> return 0;
>> }
>> -weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
>> +versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
>> + GLIBC_2_34);
>> +
>> +#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
>
> Shouldn't be GLIBC_2_12 here?
Where exactly? There are so many symbol versions. The _np variant was
introduced in GLIBC_2.4, so GLIBC_2_4 is correct here. It ran parallel
with the non-_np variant until GLIBC_2.34, so that's the end range.
>> +/* Compat symbol with the old libc version, _np alias. */
>> +# undef pthread_mutex_consistent_np
>
> I think should be out of SHLIB_COMPAT.
It will go away if I switch to __REDIRECT.
>> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_1)
>> +compat_symbol (libc, __pthread_mutex_consistent_1,
>> + pthread_mutex_consistent_np, GLIBC_2_4);
>> +#endif
>> +
>> +#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_34)
>> +/* Compat symbol with the old libc version. */
>> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_2)
>> +compat_symbol (libc, __pthread_mutex_consistent_2,
>> + pthread_mutex_consistent, GLIBC_2_12);
>> +#endif
>
> I think we have compat_symbol_unique exactly for that.
It doesn't apply here because the symbol names are different
(__pthread_mutex_consistent vs pthread_mutex_consistent):
# define compat_symbol_unique(lib, name, version) \
The macro has just one name argument.
>> diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
>> index a04a3a2754..2ec2caec98 100644
>> --- a/sysdeps/nptl/pthread.h
>> +++ b/sysdeps/nptl/pthread.h
>> @@ -809,8 +809,9 @@ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
>> extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
>> __THROW __nonnull ((1));
>> # ifdef __USE_GNU
>> -extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
>> - __THROW __nonnull ((1));
>> +# define pthread_mutex_consistent_np __glibc_macro_warning ("\
>> +pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent") \
>> + pthread_mutex_consistent
>> # endif
>> #endif
>>
>
> Wouldn't be better to throw a link error instead an empty macro for such
> case?
It's not an empty macro, there's a third line. I can see if I can use
__REDIRECT instead if that's clearer.
Thanks,
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 03/18] nptl: Move legacy unwinding implementation into libc
2021-03-15 20:02 ` Adhemerval Zanella
@ 2021-03-16 7:03 ` Florian Weimer
0 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 7:03 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
>> +#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
>> + { bool _cleanup_start_doit; \
>> + struct _pthread_cleanup_buffer _buffer; \
>> + /* Non-addresable copy of FCT, so that we avoid indirect calls on \
>
> s/addresable/addressable
Thanks, fixed.
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 02/18] nptl: Move __pthread_cleanup_routine into libc
2021-03-15 19:53 ` Adhemerval Zanella
@ 2021-03-16 7:09 ` Florian Weimer
0 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 7:09 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
>> +#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
>> +strong_alias (___pthread_cleanup_routine, __pthread_cleanup_routine_alias)
>> +compat_symbol (libc, __pthread_cleanup_routine_alias,
>> + __pthread_cleanup_routine, GLIBC_2_3_3);
>> +#endif
>
> I think you can use compat_symbol_unique here.
No, the symbol names are still different (___ vs __ prefix).
Thanks,
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-16 5:42 ` Florian Weimer
@ 2021-03-16 13:49 ` Adhemerval Zanella
2021-03-16 13:53 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 13:49 UTC (permalink / raw)
To: Florian Weimer; +Cc: libc-alpha
On 16/03/2021 02:42, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>>> index 937c7c4640..0a84063a2b 100644
>>> --- a/nptl/pthread_mutex_consistent.c
>>> +++ b/nptl/pthread_mutex_consistent.c
>>> @@ -18,10 +18,10 @@
>>>
>>> #include <errno.h>
>>> #include <pthreadP.h>
>>> -
>>> +#include <shlib-compat.h>
>>>
>>> int
>>> -pthread_mutex_consistent (pthread_mutex_t *mutex)
>>> +__pthread_mutex_consistent (pthread_mutex_t *mutex)
>>> {
>>> /* Test whether this is a robust mutex with a dead owner.
>>> See concurrency notes regarding __kind in struct __pthread_mutex_s
>>> @@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>
>>> return 0;
>>> }
>>> -weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
>>> +versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
>>> + GLIBC_2_34);
>>> +
>>> +#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
>>
>> Shouldn't be GLIBC_2_12 here?
>
> Where exactly? There are so many symbol versions. The _np variant was
> introduced in GLIBC_2.4, so GLIBC_2_4 is correct here. It ran parallel
> with the non-_np variant until GLIBC_2.34, so that's the end range.
I meant 'SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_12)'
>
>>> +/* Compat symbol with the old libc version, _np alias. */
>>> +# undef pthread_mutex_consistent_np
>>
>> I think should be out of SHLIB_COMPAT.
>
> It will go away if I switch to __REDIRECT.
>
>>> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_1)
>>> +compat_symbol (libc, __pthread_mutex_consistent_1,
>>> + pthread_mutex_consistent_np, GLIBC_2_4);
>>> +#endif
>>> +
>>> +#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_34)
>>> +/* Compat symbol with the old libc version. */
>>> +strong_alias (__pthread_mutex_consistent, __pthread_mutex_consistent_2)
>>> +compat_symbol (libc, __pthread_mutex_consistent_2,
>>> + pthread_mutex_consistent, GLIBC_2_12);
>>> +#endif
>>
>> I think we have compat_symbol_unique exactly for that.
>
> It doesn't apply here because the symbol names are different
> (__pthread_mutex_consistent vs pthread_mutex_consistent):
>
> # define compat_symbol_unique(lib, name, version) \
>
> The macro has just one name argument.
Indeed, I will add a macro similar to compat_symbol_unique, but
that redirects to a an alias instead.
>
>>> diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
>>> index a04a3a2754..2ec2caec98 100644
>>> --- a/sysdeps/nptl/pthread.h
>>> +++ b/sysdeps/nptl/pthread.h
>>> @@ -809,8 +809,9 @@ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
>>> extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
>>> __THROW __nonnull ((1));
>>> # ifdef __USE_GNU
>>> -extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
>>> - __THROW __nonnull ((1));
>>> +# define pthread_mutex_consistent_np __glibc_macro_warning ("\
>>> +pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent") \
>>> + pthread_mutex_consistent
>>> # endif
>>> #endif
>>>
>>
>> Wouldn't be better to throw a link error instead an empty macro for such
>> case?
>
> It's not an empty macro, there's a third line. I can see if I can use
> __REDIRECT instead if that's clearer.
Ah right, I didn't noticed the last 'pthread_mutex_consistent'.
Patch look ok then, I think if you could remove the extra
pthread_mutex_consistent define on the installed header would be better
but it not a blocker.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-16 13:49 ` Adhemerval Zanella
@ 2021-03-16 13:53 ` Florian Weimer
2021-03-16 14:07 ` Adhemerval Zanella
0 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 13:53 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
> On 16/03/2021 02:42, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>>> index 937c7c4640..0a84063a2b 100644
>>>> --- a/nptl/pthread_mutex_consistent.c
>>>> +++ b/nptl/pthread_mutex_consistent.c
>>>> @@ -18,10 +18,10 @@
>>>>
>>>> #include <errno.h>
>>>> #include <pthreadP.h>
>>>> -
>>>> +#include <shlib-compat.h>
>>>>
>>>> int
>>>> -pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>> +__pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>> {
>>>> /* Test whether this is a robust mutex with a dead owner.
>>>> See concurrency notes regarding __kind in struct __pthread_mutex_s
>>>> @@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>>
>>>> return 0;
>>>> }
>>>> -weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
>>>> +versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
>>>> + GLIBC_2_34);
>>>> +
>>>> +#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
>>>
>>> Shouldn't be GLIBC_2_12 here?
>>
>> Where exactly? There are so many symbol versions. The _np variant was
>> introduced in GLIBC_2.4, so GLIBC_2_4 is correct here. It ran parallel
>> with the non-_np variant until GLIBC_2.34, so that's the end range.
>
> I meant 'SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_12)'
This would be wrong because until glibc 2.33, both symbols existed in
parallel AFAICS.
>>> I think we have compat_symbol_unique exactly for that.
>>
>> It doesn't apply here because the symbol names are different
>> (__pthread_mutex_consistent vs pthread_mutex_consistent):
>>
>> # define compat_symbol_unique(lib, name, version) \
>>
>> The macro has just one name argument.
>
> Indeed, I will add a macro similar to compat_symbol_unique, but
> that redirects to a an alias instead.
We could teach compat_symbol to always create an alias first.
> Ah right, I didn't noticed the last 'pthread_mutex_consistent'.
>
> Patch look ok then, I think if you could remove the extra
> pthread_mutex_consistent define on the installed header would be better
> but it not a blocker.
I'm going to repost it as part of the ongoing series. I could get
__REDIRECT to work.
Thanks,
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc
2021-03-16 13:53 ` Florian Weimer
@ 2021-03-16 14:07 ` Adhemerval Zanella
0 siblings, 0 replies; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 14:07 UTC (permalink / raw)
To: Florian Weimer; +Cc: libc-alpha
On 16/03/2021 10:53, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> On 16/03/2021 02:42, Florian Weimer wrote:
>>> * Adhemerval Zanella:
>>>
>>>>> index 937c7c4640..0a84063a2b 100644
>>>>> --- a/nptl/pthread_mutex_consistent.c
>>>>> +++ b/nptl/pthread_mutex_consistent.c
>>>>> @@ -18,10 +18,10 @@
>>>>>
>>>>> #include <errno.h>
>>>>> #include <pthreadP.h>
>>>>> -
>>>>> +#include <shlib-compat.h>
>>>>>
>>>>> int
>>>>> -pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>>> +__pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>>> {
>>>>> /* Test whether this is a robust mutex with a dead owner.
>>>>> See concurrency notes regarding __kind in struct __pthread_mutex_s
>>>>> @@ -35,4 +35,20 @@ pthread_mutex_consistent (pthread_mutex_t *mutex)
>>>>>
>>>>> return 0;
>>>>> }
>>>>> -weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
>>>>> +versioned_symbol (libc, __pthread_mutex_consistent, pthread_mutex_consistent,
>>>>> + GLIBC_2_34);
>>>>> +
>>>>> +#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_34)
>>>>
>>>> Shouldn't be GLIBC_2_12 here?
>>>
>>> Where exactly? There are so many symbol versions. The _np variant was
>>> introduced in GLIBC_2.4, so GLIBC_2_4 is correct here. It ran parallel
>>> with the non-_np variant until GLIBC_2.34, so that's the end range.
>>
>> I meant 'SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_12)'
>
> This would be wrong because until glibc 2.33, both symbols existed in
> parallel AFAICS.
>
Yeah, you are right.
>>>> I think we have compat_symbol_unique exactly for that.
>>>
>>> It doesn't apply here because the symbol names are different
>>> (__pthread_mutex_consistent vs pthread_mutex_consistent):
>>>
>>> # define compat_symbol_unique(lib, name, version) \
>>>
>>> The macro has just one name argument.
>>
>> Indeed, I will add a macro similar to compat_symbol_unique, but
>> that redirects to a an alias instead.
>
> We could teach compat_symbol to always create an alias first.
>
>> Ah right, I didn't noticed the last 'pthread_mutex_consistent'.
>>
>> Patch look ok then, I think if you could remove the extra
>> pthread_mutex_consistent define on the installed header would be better
>> but it not a blocker.
>
> I'm going to repost it as part of the ongoing series. I could get
> __REDIRECT to work.
>
> Thanks,
> Florian
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols
2021-03-12 17:49 ` [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols Florian Weimer
@ 2021-03-16 14:09 ` Adhemerval Zanella
2021-03-16 14:45 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 14:09 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> This affects _pthread_cleanup_pop, _pthread_cleanup_pop_restore,
> _pthread_cleanup_push, _pthread_cleanup_push_defer. The symbols
> have been moved using scripts/move-symbol-to-libc.py.
>
> No new symbol versions are added because the symbols are turned into
> compatibility symbols at the same time.
Looks good, only two new entries on nptl/Versions that don't really get it.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> nptl/Makefile | 15 ++++++++++----
> nptl/Versions | 10 ++++++----
> nptl/cleanup_compat.c | 16 +++++++++------
> nptl/cleanup_defer_compat.c | 20 ++++++++++++-------
> nptl/pthreadP.h | 17 ++++++++--------
> nptl/tst-cleanup4.c | 5 +++++
> nptl/tst-cleanup4aux.c | 5 +++++
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 4 ++++
> .../sysv/linux/aarch64/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 4 ++++
> .../unix/sysv/linux/alpha/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/arc/libc.abilist | 4 ++++
> .../unix/sysv/linux/arc/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 4 ++++
> .../unix/sysv/linux/arm/be/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 4 ++++
> .../unix/sysv/linux/arm/le/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/csky/libc.abilist | 4 ++++
> .../unix/sysv/linux/csky/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 4 ++++
> .../unix/sysv/linux/hppa/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/i386/libc.abilist | 4 ++++
> .../unix/sysv/linux/i386/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/ia64/libc.abilist | 4 ++++
> .../unix/sysv/linux/ia64/libpthread.abilist | 4 ----
> .../sysv/linux/m68k/coldfire/libc.abilist | 4 ++++
> .../linux/m68k/coldfire/libpthread.abilist | 4 ----
> .../unix/sysv/linux/m68k/m680x0/libc.abilist | 4 ++++
> .../sysv/linux/m68k/m680x0/libpthread.abilist | 4 ----
> .../sysv/linux/microblaze/be/libc.abilist | 4 ++++
> .../linux/microblaze/be/libpthread.abilist | 4 ----
> .../sysv/linux/microblaze/le/libc.abilist | 4 ++++
> .../linux/microblaze/le/libpthread.abilist | 4 ----
> .../sysv/linux/mips/mips32/fpu/libc.abilist | 4 ++++
> .../sysv/linux/mips/mips32/libpthread.abilist | 4 ----
> .../sysv/linux/mips/mips32/nofpu/libc.abilist | 4 ++++
> .../sysv/linux/mips/mips64/libpthread.abilist | 4 ----
> .../sysv/linux/mips/mips64/n32/libc.abilist | 4 ++++
> .../sysv/linux/mips/mips64/n64/libc.abilist | 4 ++++
> sysdeps/unix/sysv/linux/nios2/libc.abilist | 4 ++++
> .../unix/sysv/linux/nios2/libpthread.abilist | 4 ----
> .../linux/powerpc/powerpc32/fpu/libc.abilist | 4 ++++
> .../powerpc/powerpc32/libpthread.abilist | 4 ----
> .../powerpc/powerpc32/nofpu/libc.abilist | 4 ++++
> .../linux/powerpc/powerpc64/be/libc.abilist | 4 ++++
> .../powerpc/powerpc64/be/libpthread.abilist | 4 ----
> .../linux/powerpc/powerpc64/le/libc.abilist | 4 ++++
> .../powerpc/powerpc64/le/libpthread.abilist | 4 ----
> .../unix/sysv/linux/riscv/rv32/libc.abilist | 4 ++++
> .../sysv/linux/riscv/rv32/libpthread.abilist | 4 ----
> .../unix/sysv/linux/riscv/rv64/libc.abilist | 4 ++++
> .../sysv/linux/riscv/rv64/libpthread.abilist | 4 ----
> .../unix/sysv/linux/s390/s390-32/libc.abilist | 4 ++++
> .../linux/s390/s390-32/libpthread.abilist | 4 ----
> .../unix/sysv/linux/s390/s390-64/libc.abilist | 4 ++++
> .../linux/s390/s390-64/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 4 ++++
> .../unix/sysv/linux/sh/be/libpthread.abilist | 4 ----
> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 4 ++++
> .../unix/sysv/linux/sh/le/libpthread.abilist | 4 ----
> .../sysv/linux/sparc/sparc32/libc.abilist | 4 ++++
> .../linux/sparc/sparc32/libpthread.abilist | 4 ----
> .../sysv/linux/sparc/sparc64/libc.abilist | 4 ++++
> .../linux/sparc/sparc64/libpthread.abilist | 4 ----
> .../unix/sysv/linux/x86_64/64/libc.abilist | 4 ++++
> .../sysv/linux/x86_64/64/libpthread.abilist | 4 ----
> .../unix/sysv/linux/x86_64/x32/libc.abilist | 4 ++++
> .../sysv/linux/x86_64/x32/libpthread.abilist | 4 ----
> 68 files changed, 186 insertions(+), 146 deletions(-)
>
> diff --git a/nptl/Makefile b/nptl/Makefile
> index b951fcb77e..147a8d3d59 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -30,6 +30,8 @@ extra-libs-others := $(extra-libs)
>
> routines = \
> alloca_cutoff \
> + cleanup_compat \
> + cleanup_defer_compat \
> cleanup_routine \
> elision-conf \
> elision-lock \
> @@ -96,9 +98,7 @@ libpthread-routines = \
> $(pthread-compat-wrappers) \
> cancellation \
> cleanup \
> - cleanup_compat \
> cleanup_defer \
> - cleanup_defer_compat \
> events \
> flockfile \
> ftrylockfile \
Ok.
> @@ -344,7 +344,6 @@ tests = tst-attr2 tst-attr3 tst-default-attr \
> tst-tsd3 tst-tsd4 \
> tst-cancel4_1 tst-cancel4_2 \
> tst-cancel7 tst-cancel17 tst-cancel24 \
> - tst-cleanup4 \
> tst-signal3 \
> tst-exec4 tst-exec5 \
> tst-stack2 tst-stack3 tst-stack4 \
> @@ -418,7 +417,7 @@ endif
>
> LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst
>
> -tests += tst-cancelx7 tst-cancelx17 tst-cleanupx4
> +tests += tst-cancelx7 tst-cancelx17
>
> ifeq ($(build-shared),yes)
> tests += tst-compat-forwarder tst-audit-threads
Ok.
> @@ -438,6 +437,14 @@ extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) \
> tst-cleanup4aux.o tst-cleanupx4aux.o
> test-extras += tst-cleanup4aux tst-cleanupx4aux
>
> +# This test exercises compat symbols removed in glibc 2.34.
> +ifdef have-GLIBC_2.33
> +tests += tst-cleanup4
> +ifeq ($(build-shared),yes)
> +tests += tst-cleanupx4
> +endif
> +endif
> +
> tst-tls3mod.so-no-z-defs = yes
> tst-tls5mod.so-no-z-defs = yes
> tst-tls5moda.so-no-z-defs = yes
Ok.
> diff --git a/nptl/Versions b/nptl/Versions
> index e3eb686a04..ff6eae2566 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -1,5 +1,9 @@
> libc {
> GLIBC_2.0 {
> + _pthread_cleanup_pop;
> + _pthread_cleanup_pop_restore;
> + _pthread_cleanup_push;
> + _pthread_cleanup_push_defer;
> pthread_attr_destroy;
> pthread_attr_getdetachstate;
> pthread_attr_getinheritsched;
> @@ -103,6 +107,8 @@ libc {
> __pthread_attr_init;
> __pthread_attr_setaffinity_np;
> __pthread_attr_setsigmask_internal;
> + __pthread_cleanup_pop;
> + __pthread_cleanup_push;
> __pthread_cond_destroy; # Used by the C11 threads.
> __pthread_cond_init; # Used by the C11 threads.
> __pthread_force_elision;
Why are you exporting the double underscore __pthread_cleanup_[pop,push]
on older versions here?
> @@ -141,10 +147,6 @@ libpthread {
> __sigaction;
> __write;
> _exit;
> - _pthread_cleanup_pop;
> - _pthread_cleanup_pop_restore;
> - _pthread_cleanup_push;
> - _pthread_cleanup_push_defer;
> accept;
> close;
> connect;
Ok.
> diff --git a/nptl/cleanup_compat.c b/nptl/cleanup_compat.c
> index fec88c2f86..b5fd657c38 100644
> --- a/nptl/cleanup_compat.c
> +++ b/nptl/cleanup_compat.c
> @@ -16,12 +16,12 @@
> License along with the GNU C Library; if not, see
> <https://www.gnu.org/licenses/>. */
>
> +#include <shlib-compat.h>
> #include <stdlib.h>
> #include "pthreadP.h"
>
> -
> void
> -_pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
> +__pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
> void (*routine) (void *), void *arg)
> {
> struct pthread *self = THREAD_SELF;
> @@ -32,11 +32,10 @@ _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
>
> THREAD_SETMEM (self, cleanup, buffer);
> }
> -strong_alias (_pthread_cleanup_push, __pthread_cleanup_push)
> -
> +libc_hidden_def (__pthread_cleanup_push)
>
> void
> -_pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
> +__pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
> {
> struct pthread *self __attribute ((unused)) = THREAD_SELF;
>
> @@ -47,4 +46,9 @@ _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
> if (execute)
> buffer->__routine (buffer->__arg);
> }
> -strong_alias (_pthread_cleanup_pop, __pthread_cleanup_pop)
> +libc_hidden_def (__pthread_cleanup_pop)
> +
> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +compat_symbol (libc, __pthread_cleanup_push, _pthread_cleanup_push, GLIBC_2_0);
> +compat_symbol (libc, __pthread_cleanup_pop, _pthread_cleanup_pop, GLIBC_2_0);
> +#endif /* SHLIB_COMPAT */
Ok.
> diff --git a/nptl/cleanup_defer_compat.c b/nptl/cleanup_defer_compat.c
> index 1957318208..a172218b42 100644
> --- a/nptl/cleanup_defer_compat.c
> +++ b/nptl/cleanup_defer_compat.c
> @@ -16,10 +16,13 @@
> License along with the GNU C Library; if not, see
> <https://www.gnu.org/licenses/>. */
>
> -#include "pthreadP.h"
> -#include <libc-lock.h>
> +#include <shlib-compat.h>
>
> -void
> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34)
> +# include "pthreadP.h"
> +# include <libc-lock.h>
> +
> +void attribute_compat_text_section
> _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> void (*routine) (void *), void *arg)
> {
> @@ -27,10 +30,10 @@ _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> buffer->__arg = arg;
> __libc_cleanup_push_defer (buffer);
> }
> -strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
> -
> +compat_symbol (libc, _pthread_cleanup_push_defer,
> + _pthread_cleanup_push_defer, GLIBC_2_0);
>
> -void
> +void attribute_compat_text_section
> _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
> int execute)
> {
> @@ -41,4 +44,7 @@ _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
> if (execute)
> buffer->__routine (buffer->__arg);
> }
> -strong_alias (_pthread_cleanup_pop_restore, __pthread_cleanup_pop_restore)
> +compat_symbol (libc, _pthread_cleanup_pop_restore,
> + _pthread_cleanup_pop_restore, GLIBC_2_0);
> +
> +#endif /* SHLIB_COMPAT */
Ok.
> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index c8538de44f..781bc65c1c 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -585,11 +585,10 @@ libc_hidden_proto (__pthread_attr_setsigmask_internal)
> extern __typeof (pthread_attr_getsigmask_np) __pthread_attr_getsigmask_np;
> libc_hidden_proto (__pthread_attr_getsigmask_np)
>
> -#if IS_IN (libpthread)
> /* Special versions which use non-exported functions. */
> extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
> - void (*routine) (void *), void *arg)
> - attribute_hidden;
> + void (*routine) (void *), void *arg);
> +libc_hidden_proto (__pthread_cleanup_push)
>
> /* Replace cleanup macros defined in <pthread.h> with internal
> versions that don't depend on unwind info and better support
> @@ -600,12 +599,13 @@ extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
> __pthread_cleanup_push (&_buffer, (routine), (arg));
>
> extern void __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer,
> - int execute) attribute_hidden;
> + int execute);
> +libc_hidden_proto (__pthread_cleanup_pop)
> # undef pthread_cleanup_pop
> # define pthread_cleanup_pop(execute) \
> __pthread_cleanup_pop (&_buffer, (execute)); }
>
> -# if defined __EXCEPTIONS && !defined __cplusplus
> +#if defined __EXCEPTIONS && !defined __cplusplus
> /* Structure to hold the cleanup handler information. */
> struct __pthread_cleanup_combined_frame
> {
> @@ -646,7 +646,7 @@ __pthread_cleanup_combined_routine_voidptr (void *__arg)
> }
> }
>
> -# define pthread_cleanup_combined_push(routine, arg) \
> +# define pthread_cleanup_combined_push(routine, arg) \
> do { \
> void (*__cancel_routine) (void *) = (routine); \
> struct __pthread_cleanup_combined_frame __clframe \
> @@ -657,15 +657,14 @@ __pthread_cleanup_combined_routine_voidptr (void *__arg)
> __pthread_cleanup_combined_routine_voidptr, \
> &__clframe);
>
> -# define pthread_cleanup_combined_pop(execute) \
> +# define pthread_cleanup_combined_pop(execute) \
> __pthread_cleanup_pop (&__clframe.__buffer, 0); \
> __clframe.__do_it = 0; \
> if (execute) \
> __cancel_routine (__clframe.__cancel_arg); \
> } while (0)
>
> -# endif
> -#endif
> +#endif /* __EXCEPTIONS && !defined __cplusplus */
>
> extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
> void (*routine) (void *), void *arg);
Ok.
> diff --git a/nptl/tst-cleanup4.c b/nptl/tst-cleanup4.c
> index 24c062db1a..4eb51580bc 100644
> --- a/nptl/tst-cleanup4.c
> +++ b/nptl/tst-cleanup4.c
> @@ -17,6 +17,7 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <pthread.h>
> +#include <shlib-compat.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> @@ -25,8 +26,12 @@
> extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
> void (*__routine) (void *),
> void *__arg);
> +compat_symbol_reference (libc, _pthread_cleanup_push,
> + _pthread_cleanup_push, GLIBC_2_0);
> extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
> int __execute);
> +compat_symbol_reference (libc, _pthread_cleanup_pop,
> + _pthread_cleanup_pop, GLIBC_2_0);
>
> static int fds[2];
> static pthread_barrier_t b2;
Ok.
> diff --git a/nptl/tst-cleanup4aux.c b/nptl/tst-cleanup4aux.c
> index d20730ddf2..7713f9c612 100644
> --- a/nptl/tst-cleanup4aux.c
> +++ b/nptl/tst-cleanup4aux.c
> @@ -17,6 +17,7 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <pthread.h>
> +#include <shlib-compat.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> @@ -24,8 +25,12 @@
> extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
> void (*__routine) (void *),
> void *__arg);
> +compat_symbol_reference (libc, _pthread_cleanup_push,
> + _pthread_cleanup_push, GLIBC_2_0);
> extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
> int __execute);
> +compat_symbol_reference (libc, _pthread_cleanup_pop,
> + _pthread_cleanup_pop, GLIBC_2_0);
>
> extern void clh (void *arg);
> extern void fn0 (void);
Ok.
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index a55f3d9667..a585f7d30d 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -538,6 +538,10 @@ GLIBC_2.17 _obstack_begin_1 F
> GLIBC_2.17 _obstack_free F
> GLIBC_2.17 _obstack_memory_used F
> GLIBC_2.17 _obstack_newchunk F
> +GLIBC_2.17 _pthread_cleanup_pop F
> +GLIBC_2.17 _pthread_cleanup_pop_restore F
> +GLIBC_2.17 _pthread_cleanup_push F
> +GLIBC_2.17 _pthread_cleanup_push_defer F
> GLIBC_2.17 _res D 0x238
> GLIBC_2.17 _res_hconf D 0x48
> GLIBC_2.17 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index ad2492cb4c..6047fa274f 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.17 __res_state F
> GLIBC_2.17 __send F
> GLIBC_2.17 __sigaction F
> GLIBC_2.17 __write F
> -GLIBC_2.17 _pthread_cleanup_pop F
> -GLIBC_2.17 _pthread_cleanup_pop_restore F
> -GLIBC_2.17 _pthread_cleanup_push F
> -GLIBC_2.17 _pthread_cleanup_push_defer F
> GLIBC_2.17 accept F
> GLIBC_2.17 close F
> GLIBC_2.17 connect F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 54a11b7e76..c9ac935ccf 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -277,6 +277,10 @@ GLIBC_2.0 _obstack_newchunk F
> GLIBC_2.0 _outb F
> GLIBC_2.0 _outl F
> GLIBC_2.0 _outw F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x238
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 1eff0da935..5f8c13bb69 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index a229125212..27fecc5c8a 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -506,6 +506,10 @@ GLIBC_2.32 _obstack_begin_1 F
> GLIBC_2.32 _obstack_free F
> GLIBC_2.32 _obstack_memory_used F
> GLIBC_2.32 _obstack_newchunk F
> +GLIBC_2.32 _pthread_cleanup_pop F
> +GLIBC_2.32 _pthread_cleanup_pop_restore F
> +GLIBC_2.32 _pthread_cleanup_push F
> +GLIBC_2.32 _pthread_cleanup_push_defer F
> GLIBC_2.32 _res D 0x200
> GLIBC_2.32 _res_hconf D 0x30
> GLIBC_2.32 _setjmp F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index c635f1dac9..9713a20071 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -42,10 +42,6 @@ GLIBC_2.32 __res_state F
> GLIBC_2.32 __send F
> GLIBC_2.32 __sigaction F
> GLIBC_2.32 __write F
> -GLIBC_2.32 _pthread_cleanup_pop F
> -GLIBC_2.32 _pthread_cleanup_pop_restore F
> -GLIBC_2.32 _pthread_cleanup_push F
> -GLIBC_2.32 _pthread_cleanup_push_defer F
> GLIBC_2.32 accept F
> GLIBC_2.32 call_once F
> GLIBC_2.32 close F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index cfc58ca510..2383d95094 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -683,6 +683,10 @@ GLIBC_2.4 _obstack_begin_1 F
> GLIBC_2.4 _obstack_free F
> GLIBC_2.4 _obstack_memory_used F
> GLIBC_2.4 _obstack_newchunk F
> +GLIBC_2.4 _pthread_cleanup_pop F
> +GLIBC_2.4 _pthread_cleanup_pop_restore F
> +GLIBC_2.4 _pthread_cleanup_push F
> +GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 _res D 0x200
> GLIBC_2.4 _res_hconf D 0x30
> GLIBC_2.4 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 79c5f66cff..c2e78416b8 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
> GLIBC_2.4 __send F
> GLIBC_2.4 __sigaction F
> GLIBC_2.4 __write F
> -GLIBC_2.4 _pthread_cleanup_pop F
> -GLIBC_2.4 _pthread_cleanup_pop_restore F
> -GLIBC_2.4 _pthread_cleanup_push F
> -GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 accept F
> GLIBC_2.4 close F
> GLIBC_2.4 connect F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index e725ee6217..bb46b8b5e3 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -680,6 +680,10 @@ GLIBC_2.4 _obstack_begin_1 F
> GLIBC_2.4 _obstack_free F
> GLIBC_2.4 _obstack_memory_used F
> GLIBC_2.4 _obstack_newchunk F
> +GLIBC_2.4 _pthread_cleanup_pop F
> +GLIBC_2.4 _pthread_cleanup_pop_restore F
> +GLIBC_2.4 _pthread_cleanup_push F
> +GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 _res D 0x200
> GLIBC_2.4 _res_hconf D 0x30
> GLIBC_2.4 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 79c5f66cff..c2e78416b8 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
> GLIBC_2.4 __send F
> GLIBC_2.4 __sigaction F
> GLIBC_2.4 __write F
> -GLIBC_2.4 _pthread_cleanup_pop F
> -GLIBC_2.4 _pthread_cleanup_pop_restore F
> -GLIBC_2.4 _pthread_cleanup_push F
> -GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 accept F
> GLIBC_2.4 close F
> GLIBC_2.4 connect F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 51d9d33b13..684e451f83 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -515,6 +515,10 @@ GLIBC_2.29 _obstack_begin_1 F
> GLIBC_2.29 _obstack_free F
> GLIBC_2.29 _obstack_memory_used F
> GLIBC_2.29 _obstack_newchunk F
> +GLIBC_2.29 _pthread_cleanup_pop F
> +GLIBC_2.29 _pthread_cleanup_pop_restore F
> +GLIBC_2.29 _pthread_cleanup_push F
> +GLIBC_2.29 _pthread_cleanup_push_defer F
> GLIBC_2.29 _res D 0x200
> GLIBC_2.29 _res_hconf D 0x30
> GLIBC_2.29 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index e242edb9c3..bb8a51a51d 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -42,10 +42,6 @@ GLIBC_2.29 __res_state F
> GLIBC_2.29 __send F
> GLIBC_2.29 __sigaction F
> GLIBC_2.29 __write F
> -GLIBC_2.29 _pthread_cleanup_pop F
> -GLIBC_2.29 _pthread_cleanup_pop_restore F
> -GLIBC_2.29 _pthread_cleanup_push F
> -GLIBC_2.29 _pthread_cleanup_push_defer F
> GLIBC_2.29 accept F
> GLIBC_2.29 call_once F
> GLIBC_2.29 close F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 914aef5f35..8dde237f8b 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -502,6 +502,10 @@ GLIBC_2.2 _obstack_begin_1 F
> GLIBC_2.2 _obstack_free F
> GLIBC_2.2 _obstack_memory_used F
> GLIBC_2.2 _obstack_newchunk F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x200
> GLIBC_2.2 _res_hconf D 0x30
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 8ce3580478..8d7aa63a02 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index f7ca08f695..cc2226be23 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index d3fc0f2d70..ee156d6f49 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index a77ab9816b..438f3bd131 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -514,6 +514,10 @@ GLIBC_2.2 _obstack_newchunk F
> GLIBC_2.2 _outb F
> GLIBC_2.2 _outl F
> GLIBC_2.2 _outw F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x238
> GLIBC_2.2 _res_hconf D 0x48
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index d7000f415e..ab6a5cfb78 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 49a3997d83..5add3e607a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -671,6 +671,10 @@ GLIBC_2.4 _obstack_begin_1 F
> GLIBC_2.4 _obstack_free F
> GLIBC_2.4 _obstack_memory_used F
> GLIBC_2.4 _obstack_newchunk F
> +GLIBC_2.4 _pthread_cleanup_pop F
> +GLIBC_2.4 _pthread_cleanup_pop_restore F
> +GLIBC_2.4 _pthread_cleanup_push F
> +GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 _res D 0x1fe
> GLIBC_2.4 _res_hconf D 0x30
> GLIBC_2.4 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 79c5f66cff..c2e78416b8 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -77,10 +77,6 @@ GLIBC_2.4 __res_state F
> GLIBC_2.4 __send F
> GLIBC_2.4 __sigaction F
> GLIBC_2.4 __write F
> -GLIBC_2.4 _pthread_cleanup_pop F
> -GLIBC_2.4 _pthread_cleanup_pop_restore F
> -GLIBC_2.4 _pthread_cleanup_push F
> -GLIBC_2.4 _pthread_cleanup_push_defer F
> GLIBC_2.4 accept F
> GLIBC_2.4 close F
> GLIBC_2.4 connect F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 9969b02829..2e7c9f9b47 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x1fe
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index d3fc0f2d70..ee156d6f49 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index eb6d753ae8..493f7ddaa0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -541,6 +541,10 @@ GLIBC_2.18 _obstack_begin_1 F
> GLIBC_2.18 _obstack_free F
> GLIBC_2.18 _obstack_memory_used F
> GLIBC_2.18 _obstack_newchunk F
> +GLIBC_2.18 _pthread_cleanup_pop F
> +GLIBC_2.18 _pthread_cleanup_pop_restore F
> +GLIBC_2.18 _pthread_cleanup_push F
> +GLIBC_2.18 _pthread_cleanup_push_defer F
> GLIBC_2.18 _res D 0x200
> GLIBC_2.18 _res_hconf D 0x30
> GLIBC_2.18 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index c096915557..1f516569ba 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.18 __res_state F
> GLIBC_2.18 __send F
> GLIBC_2.18 __sigaction F
> GLIBC_2.18 __write F
> -GLIBC_2.18 _pthread_cleanup_pop F
> -GLIBC_2.18 _pthread_cleanup_pop_restore F
> -GLIBC_2.18 _pthread_cleanup_push F
> -GLIBC_2.18 _pthread_cleanup_push_defer F
> GLIBC_2.18 accept F
> GLIBC_2.18 close F
> GLIBC_2.18 connect F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 7c3d154267..ec83b89aa3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -541,6 +541,10 @@ GLIBC_2.18 _obstack_begin_1 F
> GLIBC_2.18 _obstack_free F
> GLIBC_2.18 _obstack_memory_used F
> GLIBC_2.18 _obstack_newchunk F
> +GLIBC_2.18 _pthread_cleanup_pop F
> +GLIBC_2.18 _pthread_cleanup_pop_restore F
> +GLIBC_2.18 _pthread_cleanup_push F
> +GLIBC_2.18 _pthread_cleanup_push_defer F
> GLIBC_2.18 _res D 0x200
> GLIBC_2.18 _res_hconf D 0x30
> GLIBC_2.18 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index c096915557..1f516569ba 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.18 __res_state F
> GLIBC_2.18 __send F
> GLIBC_2.18 __sigaction F
> GLIBC_2.18 __write F
> -GLIBC_2.18 _pthread_cleanup_pop F
> -GLIBC_2.18 _pthread_cleanup_pop_restore F
> -GLIBC_2.18 _pthread_cleanup_push F
> -GLIBC_2.18 _pthread_cleanup_push_defer F
> GLIBC_2.18 accept F
> GLIBC_2.18 close F
> GLIBC_2.18 connect F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index bb2c61d8b4..cb0ab4bc19 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 358a13524a..903f49957f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 7a418b2e12..2be2623e99 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 358a13524a..903f49957f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 29d9e4045a..09147861b5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -262,6 +262,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 404789db07..4a0208c8c8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -260,6 +260,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x238
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 468444aa86..078025a7d6 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -582,6 +582,10 @@ GLIBC_2.21 _obstack_begin_1 F
> GLIBC_2.21 _obstack_free F
> GLIBC_2.21 _obstack_memory_used F
> GLIBC_2.21 _obstack_newchunk F
> +GLIBC_2.21 _pthread_cleanup_pop F
> +GLIBC_2.21 _pthread_cleanup_pop_restore F
> +GLIBC_2.21 _pthread_cleanup_push F
> +GLIBC_2.21 _pthread_cleanup_push_defer F
> GLIBC_2.21 _res D 0x200
> GLIBC_2.21 _res_hconf D 0x30
> GLIBC_2.21 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 6379c1f86c..cd41c7d42b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.21 __res_state F
> GLIBC_2.21 __send F
> GLIBC_2.21 __sigaction F
> GLIBC_2.21 __write F
> -GLIBC_2.21 _pthread_cleanup_pop F
> -GLIBC_2.21 _pthread_cleanup_pop_restore F
> -GLIBC_2.21 _pthread_cleanup_push F
> -GLIBC_2.21 _pthread_cleanup_push_defer F
> GLIBC_2.21 accept F
> GLIBC_2.21 close F
> GLIBC_2.21 connect F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 41ba4fdb29..bc79b844a5 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -275,6 +275,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 7c6e78f6ce..589a865796 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 1d030db5f7..63c05472ed 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -275,6 +275,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 9f86b81d65..37e4ee564d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -561,6 +561,10 @@ GLIBC_2.3 _obstack_begin_1 F
> GLIBC_2.3 _obstack_free F
> GLIBC_2.3 _obstack_memory_used F
> GLIBC_2.3 _obstack_newchunk F
> +GLIBC_2.3 _pthread_cleanup_pop F
> +GLIBC_2.3 _pthread_cleanup_pop_restore F
> +GLIBC_2.3 _pthread_cleanup_push F
> +GLIBC_2.3 _pthread_cleanup_push_defer F
> GLIBC_2.3 _res D 0x238
> GLIBC_2.3 _res_hconf D 0x48
> GLIBC_2.3 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 773d873bd1..7c1553be29 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -66,10 +66,6 @@ GLIBC_2.3 __res_state F
> GLIBC_2.3 __send F
> GLIBC_2.3 __sigaction F
> GLIBC_2.3 __write F
> -GLIBC_2.3 _pthread_cleanup_pop F
> -GLIBC_2.3 _pthread_cleanup_pop_restore F
> -GLIBC_2.3 _pthread_cleanup_push F
> -GLIBC_2.3 _pthread_cleanup_push_defer F
> GLIBC_2.3 accept F
> GLIBC_2.3 close F
> GLIBC_2.3 connect F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 599d06d56f..1888ec6e86 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -627,6 +627,10 @@ GLIBC_2.17 _obstack_begin_1 F
> GLIBC_2.17 _obstack_free F
> GLIBC_2.17 _obstack_memory_used F
> GLIBC_2.17 _obstack_newchunk F
> +GLIBC_2.17 _pthread_cleanup_pop F
> +GLIBC_2.17 _pthread_cleanup_pop_restore F
> +GLIBC_2.17 _pthread_cleanup_push F
> +GLIBC_2.17 _pthread_cleanup_push_defer F
> GLIBC_2.17 _res D 0x238
> GLIBC_2.17 _res_hconf D 0x48
> GLIBC_2.17 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index ad2492cb4c..6047fa274f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.17 __res_state F
> GLIBC_2.17 __send F
> GLIBC_2.17 __sigaction F
> GLIBC_2.17 __write F
> -GLIBC_2.17 _pthread_cleanup_pop F
> -GLIBC_2.17 _pthread_cleanup_pop_restore F
> -GLIBC_2.17 _pthread_cleanup_push F
> -GLIBC_2.17 _pthread_cleanup_push_defer F
> GLIBC_2.17 accept F
> GLIBC_2.17 close F
> GLIBC_2.17 connect F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 9f0068ba1c..8cd92b1abe 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -500,6 +500,10 @@ GLIBC_2.33 _obstack_begin_1 F
> GLIBC_2.33 _obstack_free F
> GLIBC_2.33 _obstack_memory_used F
> GLIBC_2.33 _obstack_newchunk F
> +GLIBC_2.33 _pthread_cleanup_pop F
> +GLIBC_2.33 _pthread_cleanup_pop_restore F
> +GLIBC_2.33 _pthread_cleanup_push F
> +GLIBC_2.33 _pthread_cleanup_push_defer F
> GLIBC_2.33 _res D 0x200
> GLIBC_2.33 _res_hconf D 0x30
> GLIBC_2.33 _setjmp F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 76484b8073..71e8f38003 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -42,10 +42,6 @@ GLIBC_2.33 __res_state F
> GLIBC_2.33 __send F
> GLIBC_2.33 __sigaction F
> GLIBC_2.33 __write F
> -GLIBC_2.33 _pthread_cleanup_pop F
> -GLIBC_2.33 _pthread_cleanup_pop_restore F
> -GLIBC_2.33 _pthread_cleanup_push F
> -GLIBC_2.33 _pthread_cleanup_push_defer F
> GLIBC_2.33 accept F
> GLIBC_2.33 call_once F
> GLIBC_2.33 close F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 833d6f11d6..894f01282f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -521,6 +521,10 @@ GLIBC_2.27 _obstack_begin_1 F
> GLIBC_2.27 _obstack_free F
> GLIBC_2.27 _obstack_memory_used F
> GLIBC_2.27 _obstack_newchunk F
> +GLIBC_2.27 _pthread_cleanup_pop F
> +GLIBC_2.27 _pthread_cleanup_pop_restore F
> +GLIBC_2.27 _pthread_cleanup_push F
> +GLIBC_2.27 _pthread_cleanup_push_defer F
> GLIBC_2.27 _res D 0x238
> GLIBC_2.27 _res_hconf D 0x48
> GLIBC_2.27 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 2332ba5927..f5f9baefb9 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.27 __res_state F
> GLIBC_2.27 __send F
> GLIBC_2.27 __sigaction F
> GLIBC_2.27 __write F
> -GLIBC_2.27 _pthread_cleanup_pop F
> -GLIBC_2.27 _pthread_cleanup_pop_restore F
> -GLIBC_2.27 _pthread_cleanup_push F
> -GLIBC_2.27 _pthread_cleanup_push_defer F
> GLIBC_2.27 accept F
> GLIBC_2.27 close F
> GLIBC_2.27 connect F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index a3e732e82f..8788493ce0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -265,6 +265,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 28cf9cfcee..7aa725ccae 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 4443545ed0..4596ab72b0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -519,6 +519,10 @@ GLIBC_2.2 _obstack_begin_1 F
> GLIBC_2.2 _obstack_free F
> GLIBC_2.2 _obstack_memory_used F
> GLIBC_2.2 _obstack_newchunk F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x238
> GLIBC_2.2 _res_hconf D 0x48
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 5baa0fdd6f..25da7ea8dc 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -47,10 +47,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index f9cb4195cd..ae16394e8a 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -505,6 +505,10 @@ GLIBC_2.2 _obstack_begin_1 F
> GLIBC_2.2 _obstack_free F
> GLIBC_2.2 _obstack_memory_used F
> GLIBC_2.2 _obstack_newchunk F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x200
> GLIBC_2.2 _res_hconf D 0x30
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 8ce3580478..8d7aa63a02 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index e1ae67a464..6e45427e90 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -505,6 +505,10 @@ GLIBC_2.2 _obstack_begin_1 F
> GLIBC_2.2 _obstack_free F
> GLIBC_2.2 _obstack_memory_used F
> GLIBC_2.2 _obstack_newchunk F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x200
> GLIBC_2.2 _res_hconf D 0x30
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 8ce3580478..8d7aa63a02 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 9ca458b1c5..080a036590 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -267,6 +267,10 @@ GLIBC_2.0 _obstack_begin_1 F
> GLIBC_2.0 _obstack_free F
> GLIBC_2.0 _obstack_memory_used F
> GLIBC_2.0 _obstack_newchunk F
> +GLIBC_2.0 _pthread_cleanup_pop F
> +GLIBC_2.0 _pthread_cleanup_pop_restore F
> +GLIBC_2.0 _pthread_cleanup_push F
> +GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 _res D 0x200
> GLIBC_2.0 _rpc_dtablesize F
> GLIBC_2.0 _seterr_reply F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 1eff0da935..5f8c13bb69 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -24,10 +24,6 @@ GLIBC_2.0 __read F
> GLIBC_2.0 __send F
> GLIBC_2.0 __sigaction F
> GLIBC_2.0 __write F
> -GLIBC_2.0 _pthread_cleanup_pop F
> -GLIBC_2.0 _pthread_cleanup_pop_restore F
> -GLIBC_2.0 _pthread_cleanup_push F
> -GLIBC_2.0 _pthread_cleanup_push_defer F
> GLIBC_2.0 accept F
> GLIBC_2.0 close F
> GLIBC_2.0 connect F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 6af3cc116b..c8fb7da49f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -547,6 +547,10 @@ GLIBC_2.2 _obstack_begin_1 F
> GLIBC_2.2 _obstack_free F
> GLIBC_2.2 _obstack_memory_used F
> GLIBC_2.2 _obstack_newchunk F
> +GLIBC_2.2 _pthread_cleanup_pop F
> +GLIBC_2.2 _pthread_cleanup_pop_restore F
> +GLIBC_2.2 _pthread_cleanup_push F
> +GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 _res D 0x238
> GLIBC_2.2 _res_hconf D 0x48
> GLIBC_2.2 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index d7000f415e..ab6a5cfb78 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2 __res_state F
> GLIBC_2.2 __send F
> GLIBC_2.2 __sigaction F
> GLIBC_2.2 __write F
> -GLIBC_2.2 _pthread_cleanup_pop F
> -GLIBC_2.2 _pthread_cleanup_pop_restore F
> -GLIBC_2.2 _pthread_cleanup_push F
> -GLIBC_2.2 _pthread_cleanup_push_defer F
> GLIBC_2.2 accept F
> GLIBC_2.2 close F
> GLIBC_2.2 connect F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index e267cc2a23..cde6fdb49d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -508,6 +508,10 @@ GLIBC_2.2.5 _obstack_begin_1 F
> GLIBC_2.2.5 _obstack_free F
> GLIBC_2.2.5 _obstack_memory_used F
> GLIBC_2.2.5 _obstack_newchunk F
> +GLIBC_2.2.5 _pthread_cleanup_pop F
> +GLIBC_2.2.5 _pthread_cleanup_pop_restore F
> +GLIBC_2.2.5 _pthread_cleanup_push F
> +GLIBC_2.2.5 _pthread_cleanup_push_defer F
> GLIBC_2.2.5 _res D 0x238
> GLIBC_2.2.5 _res_hconf D 0x48
> GLIBC_2.2.5 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index f0271930eb..301c0817b8 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -45,10 +45,6 @@ GLIBC_2.2.5 __res_state F
> GLIBC_2.2.5 __send F
> GLIBC_2.2.5 __sigaction F
> GLIBC_2.2.5 __write F
> -GLIBC_2.2.5 _pthread_cleanup_pop F
> -GLIBC_2.2.5 _pthread_cleanup_pop_restore F
> -GLIBC_2.2.5 _pthread_cleanup_push F
> -GLIBC_2.2.5 _pthread_cleanup_push_defer F
> GLIBC_2.2.5 accept F
> GLIBC_2.2.5 close F
> GLIBC_2.2.5 connect F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 50e860fe40..e772da1ec4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -542,6 +542,10 @@ GLIBC_2.16 _obstack_begin_1 F
> GLIBC_2.16 _obstack_free F
> GLIBC_2.16 _obstack_memory_used F
> GLIBC_2.16 _obstack_newchunk F
> +GLIBC_2.16 _pthread_cleanup_pop F
> +GLIBC_2.16 _pthread_cleanup_pop_restore F
> +GLIBC_2.16 _pthread_cleanup_push F
> +GLIBC_2.16 _pthread_cleanup_push_defer F
> GLIBC_2.16 _res D 0x200
> GLIBC_2.16 _res_hconf D 0x30
> GLIBC_2.16 _rpc_dtablesize F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index aa9e127bad..31322dfabb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -43,10 +43,6 @@ GLIBC_2.16 __res_state F
> GLIBC_2.16 __send F
> GLIBC_2.16 __sigaction F
> GLIBC_2.16 __write F
> -GLIBC_2.16 _pthread_cleanup_pop F
> -GLIBC_2.16 _pthread_cleanup_pop_restore F
> -GLIBC_2.16 _pthread_cleanup_push F
> -GLIBC_2.16 _pthread_cleanup_push_defer F
> GLIBC_2.16 accept F
> GLIBC_2.16 close F
> GLIBC_2.16 connect F
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread
2021-03-12 17:49 ` [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread Florian Weimer
@ 2021-03-16 14:13 ` Adhemerval Zanella
2021-03-16 14:39 ` Florian Weimer
0 siblings, 1 reply; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 14:13 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> The definitions in libc are sufficient, the forwarders are no longer
> needed.
>
> The symbols have been moved using scripts/move-symbol-to-libc.py.
> s390-linux-gnu and s390x-linux-gnu need a new version placeholder
> to keep the GLIBC_2.19 symbol version in libpthread.
>
> Tested on i386-linux-gnu, powerpc64le-linux-gnu, s390x-linux-gnu,
> x86_64-linux-gnu. Built with build-many-glibcs.py.
Patch looks good, I was working on a similar one as well. The only
suggestion is to keep the x86 _Static_assert regarding the priv field
in struct pthread_unwind_buf has space to store shadow stack pointer.
I have done it by adding a new x86 longjmp implementation:
diff --git a/sysdeps/unix/sysv/linux/x86/longjmp.c b/sysdeps/unix/sysv/linux/x86/longjmp.c
new file mode 100644
index 0000000000..104592fd48
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86/longjmp.c
@@ -0,0 +1,39 @@
+/* __libc_siglongjmp for Linux/x86
+ Copyright (C) 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 <sysdeps/x86/longjmp.c>
+
+#include <nptl/pthreadP.h>
+#include <jmp_buf-ssp.h>
+
+#ifdef __x86_64__
+# define SHADOW_STACK_POINTER_SIZE 8
+#else
+# define SHADOW_STACK_POINTER_SIZE 4
+#endif
+
+/* Assert that the priv field in struct pthread_unwind_buf has space
+ to store shadow stack pointer. */
+_Static_assert ((offsetof (struct pthread_unwind_buf, priv)
+ <= SHADOW_STACK_POINTER_OFFSET)
+ && ((offsetof (struct pthread_unwind_buf, priv)
+ + sizeof (((struct pthread_unwind_buf *) 0)->priv))
+ >= (SHADOW_STACK_POINTER_OFFSET
+ + SHADOW_STACK_POINTER_SIZE)),
+ "Shadow stack pointer is not within private storage "
+ "of pthread_unwind_buf.");
> ---
> nptl/Makefile | 1 -
> nptl/Versions | 2 -
> nptl/pt-longjmp.c | 49 -------------
> .../sysv/linux/aarch64/libpthread.abilist | 2 -
> .../unix/sysv/linux/alpha/libpthread.abilist | 2 -
> .../unix/sysv/linux/arm/be/libpthread.abilist | 2 -
> .../unix/sysv/linux/arm/le/libpthread.abilist | 2 -
> .../unix/sysv/linux/hppa/libpthread.abilist | 2 -
> .../unix/sysv/linux/i386/libpthread.abilist | 2 -
> .../unix/sysv/linux/ia64/libpthread.abilist | 2 -
> .../linux/m68k/coldfire/libpthread.abilist | 2 -
> .../sysv/linux/m68k/m680x0/libpthread.abilist | 2 -
> .../linux/microblaze/be/libpthread.abilist | 2 -
> .../linux/microblaze/le/libpthread.abilist | 2 -
> .../sysv/linux/mips/mips32/libpthread.abilist | 2 -
> .../sysv/linux/mips/mips64/libpthread.abilist | 2 -
> .../unix/sysv/linux/nios2/libpthread.abilist | 2 -
> .../powerpc/powerpc32/libpthread.abilist | 4 --
> .../powerpc/powerpc64/be/libpthread.abilist | 4 --
> .../powerpc/powerpc64/le/libpthread.abilist | 2 -
> sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c | 61 ----------------
> sysdeps/unix/sysv/linux/s390/Versions | 2 +-
> .../unix/sysv/linux/s390/libpthread-compat.c | 25 +++++++
> sysdeps/unix/sysv/linux/s390/pt-longjmp.c | 33 ---------
> .../linux/s390/s390-32/libpthread.abilist | 5 +-
> .../linux/s390/s390-64/libpthread.abilist | 5 +-
> .../unix/sysv/linux/sh/be/libpthread.abilist | 2 -
> .../unix/sysv/linux/sh/le/libpthread.abilist | 2 -
> .../linux/sparc/sparc32/libpthread.abilist | 2 -
> .../linux/sparc/sparc64/libpthread.abilist | 2 -
> .../sysv/linux/x86_64/64/libpthread.abilist | 2 -
> .../sysv/linux/x86_64/x32/libpthread.abilist | 2 -
> sysdeps/x86/nptl/pt-longjmp.c | 71 -------------------
> 33 files changed, 28 insertions(+), 276 deletions(-)
> delete mode 100644 nptl/pt-longjmp.c
> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
> create mode 100644 sysdeps/unix/sysv/linux/s390/libpthread-compat.c
> delete mode 100644 sysdeps/unix/sysv/linux/s390/pt-longjmp.c
> delete mode 100644 sysdeps/x86/nptl/pt-longjmp.c
>
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 147a8d3d59..7e566675f2 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -116,7 +116,6 @@ libpthread-routines = \
> pt-cleanup \
> pt-fcntl \
> pt-interp \
> - pt-longjmp \
> pt-raise \
> pt-system \
> pthread_attr_getaffinity \
> diff --git a/nptl/Versions b/nptl/Versions
> index ff6eae2566..cf4d5b677d 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -155,7 +155,6 @@ libpthread {
> fsync;
> ftrylockfile;
> funlockfile;
> - longjmp;
> lseek;
> msync;
> open;
> @@ -205,7 +204,6 @@ libpthread {
> sendmsg;
> sendto;
> sigaction;
> - siglongjmp;
> sigwait;
> system;
> tcdrain;
> diff --git a/nptl/pt-longjmp.c b/nptl/pt-longjmp.c
> deleted file mode 100644
> index 3f903495dc..0000000000
> --- a/nptl/pt-longjmp.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -/* ABI compatibility for 'longjmp' and 'siglongjmp' symbols in libpthread ABI.
> - 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 <setjmp.h>
> -#include <shlib-compat.h>
> -
> -/* libpthread once had its own longjmp (and siglongjmp alias), though there
> - was no apparent reason for it. There is no use in having a separate
> - symbol in libpthread, but the historical ABI requires it. For static
> - linking, there is no need to provide anything here--the libc version
> - will be linked in. For shared library ABI compatibility, there must be
> - longjmp and siglongjmp symbols in libpthread.so.
> -
> - With an IFUNC resolver, it would be possible to avoid the indirection,
> - but the IFUNC resolver might run before the __libc_longjmp symbol has
> - been relocated, in which case the IFUNC resolver would not be able to
> - provide the correct address. */
> -
> -#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
> -
> -static void __attribute__ ((noreturn, used))
> -longjmp_compat (jmp_buf env, int val)
> -{
> - __libc_longjmp (env, val);
> -}
> -
> -strong_alias (longjmp_compat, longjmp_alias)
> -compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0);
> -
> -strong_alias (longjmp_alias, siglongjmp_alias)
> -compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0);
> -
> -#endif
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 6047fa274f..884d97efca 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.17 flockfile F
> GLIBC_2.17 fsync F
> GLIBC_2.17 ftrylockfile F
> GLIBC_2.17 funlockfile F
> -GLIBC_2.17 longjmp F
> GLIBC_2.17 lseek F
> GLIBC_2.17 lseek64 F
> GLIBC_2.17 msync F
> @@ -175,7 +174,6 @@ GLIBC_2.17 send F
> GLIBC_2.17 sendmsg F
> GLIBC_2.17 sendto F
> GLIBC_2.17 sigaction F
> -GLIBC_2.17 siglongjmp F
> GLIBC_2.17 sigwait F
> GLIBC_2.17 system F
> GLIBC_2.17 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 5f8c13bb69..e17b5183ef 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index c2e78416b8..e75c83d47f 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
> GLIBC_2.4 fsync F
> GLIBC_2.4 ftrylockfile F
> GLIBC_2.4 funlockfile F
> -GLIBC_2.4 longjmp F
> GLIBC_2.4 lseek F
> GLIBC_2.4 lseek64 F
> GLIBC_2.4 msync F
> @@ -204,7 +203,6 @@ GLIBC_2.4 send F
> GLIBC_2.4 sendmsg F
> GLIBC_2.4 sendto F
> GLIBC_2.4 sigaction F
> -GLIBC_2.4 siglongjmp F
> GLIBC_2.4 sigwait F
> GLIBC_2.4 system F
> GLIBC_2.4 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index c2e78416b8..e75c83d47f 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
> GLIBC_2.4 fsync F
> GLIBC_2.4 ftrylockfile F
> GLIBC_2.4 funlockfile F
> -GLIBC_2.4 longjmp F
> GLIBC_2.4 lseek F
> GLIBC_2.4 lseek64 F
> GLIBC_2.4 msync F
> @@ -204,7 +203,6 @@ GLIBC_2.4 send F
> GLIBC_2.4 sendmsg F
> GLIBC_2.4 sendto F
> GLIBC_2.4 sigaction F
> -GLIBC_2.4 siglongjmp F
> GLIBC_2.4 sigwait F
> GLIBC_2.4 system F
> GLIBC_2.4 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 8d7aa63a02..740570ef37 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index ee156d6f49..0b8c5b9104 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index ab6a5cfb78..0565c43c10 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index c2e78416b8..e75c83d47f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -85,7 +85,6 @@ GLIBC_2.4 flockfile F
> GLIBC_2.4 fsync F
> GLIBC_2.4 ftrylockfile F
> GLIBC_2.4 funlockfile F
> -GLIBC_2.4 longjmp F
> GLIBC_2.4 lseek F
> GLIBC_2.4 lseek64 F
> GLIBC_2.4 msync F
> @@ -204,7 +203,6 @@ GLIBC_2.4 send F
> GLIBC_2.4 sendmsg F
> GLIBC_2.4 sendto F
> GLIBC_2.4 sigaction F
> -GLIBC_2.4 siglongjmp F
> GLIBC_2.4 sigwait F
> GLIBC_2.4 system F
> GLIBC_2.4 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index ee156d6f49..0b8c5b9104 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 1f516569ba..3798ae24be 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.18 flockfile F
> GLIBC_2.18 fsync F
> GLIBC_2.18 ftrylockfile F
> GLIBC_2.18 funlockfile F
> -GLIBC_2.18 longjmp F
> GLIBC_2.18 lseek F
> GLIBC_2.18 lseek64 F
> GLIBC_2.18 msync F
> @@ -177,7 +176,6 @@ GLIBC_2.18 send F
> GLIBC_2.18 sendmsg F
> GLIBC_2.18 sendto F
> GLIBC_2.18 sigaction F
> -GLIBC_2.18 siglongjmp F
> GLIBC_2.18 sigwait F
> GLIBC_2.18 system F
> GLIBC_2.18 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 1f516569ba..3798ae24be 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.18 flockfile F
> GLIBC_2.18 fsync F
> GLIBC_2.18 ftrylockfile F
> GLIBC_2.18 funlockfile F
> -GLIBC_2.18 longjmp F
> GLIBC_2.18 lseek F
> GLIBC_2.18 lseek64 F
> GLIBC_2.18 msync F
> @@ -177,7 +176,6 @@ GLIBC_2.18 send F
> GLIBC_2.18 sendmsg F
> GLIBC_2.18 sendto F
> GLIBC_2.18 sigaction F
> -GLIBC_2.18 siglongjmp F
> GLIBC_2.18 sigwait F
> GLIBC_2.18 system F
> GLIBC_2.18 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index 903f49957f..79da59eb81 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index 903f49957f..79da59eb81 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index cd41c7d42b..9dadbc85cc 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.21 flockfile F
> GLIBC_2.21 fsync F
> GLIBC_2.21 ftrylockfile F
> GLIBC_2.21 funlockfile F
> -GLIBC_2.21 longjmp F
> GLIBC_2.21 lseek F
> GLIBC_2.21 lseek64 F
> GLIBC_2.21 msync F
> @@ -177,7 +176,6 @@ GLIBC_2.21 send F
> GLIBC_2.21 sendmsg F
> GLIBC_2.21 sendto F
> GLIBC_2.21 sigaction F
> -GLIBC_2.21 siglongjmp F
> GLIBC_2.21 sigwait F
> GLIBC_2.21 system F
> GLIBC_2.21 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 589a865796..c852fcc147 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> @@ -209,11 +207,9 @@ GLIBC_2.3.3 pthread_condattr_setclock 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 longjmp 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.3.4 siglongjmp F
> GLIBC_2.30 pthread_cond_clockwait F
> GLIBC_2.30 pthread_mutex_clocklock F
> GLIBC_2.30 pthread_rwlock_clockrdlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 7c1553be29..b7d0c8b743 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -74,7 +74,6 @@ GLIBC_2.3 flockfile F
> GLIBC_2.3 fsync F
> GLIBC_2.3 ftrylockfile F
> GLIBC_2.3 funlockfile F
> -GLIBC_2.3 longjmp F
> GLIBC_2.3 lseek F
> GLIBC_2.3 lseek64 F
> GLIBC_2.3 msync F
> @@ -177,7 +176,6 @@ GLIBC_2.3 send F
> GLIBC_2.3 sendmsg F
> GLIBC_2.3 sendto F
> GLIBC_2.3 sigaction F
> -GLIBC_2.3 siglongjmp F
> GLIBC_2.3 sigwait F
> GLIBC_2.3 system F
> GLIBC_2.3 tcdrain F
> @@ -198,11 +196,9 @@ GLIBC_2.3.3 pthread_condattr_setclock 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 longjmp 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.3.4 siglongjmp F
> GLIBC_2.30 pthread_cond_clockwait F
> GLIBC_2.30 pthread_mutex_clocklock F
> GLIBC_2.30 pthread_rwlock_clockrdlock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 6047fa274f..884d97efca 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.17 flockfile F
> GLIBC_2.17 fsync F
> GLIBC_2.17 ftrylockfile F
> GLIBC_2.17 funlockfile F
> -GLIBC_2.17 longjmp F
> GLIBC_2.17 lseek F
> GLIBC_2.17 lseek64 F
> GLIBC_2.17 msync F
> @@ -175,7 +174,6 @@ GLIBC_2.17 send F
> GLIBC_2.17 sendmsg F
> GLIBC_2.17 sendto F
> GLIBC_2.17 sigaction F
> -GLIBC_2.17 siglongjmp F
> GLIBC_2.17 sigwait F
> GLIBC_2.17 system F
> GLIBC_2.17 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c b/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
> deleted file mode 100644
> index ed6b2a5db1..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -/* 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 <setjmp.h>
> -#include <stdlib.h>
> -#include <bits/wordsize.h>
> -#include "pthreadP.h"
> -#include <shlib-compat.h>
> -#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3_4)
> -
> -/* These functions are not declared anywhere since they shouldn't be
> - used at another place but here. */
> -extern void __novmx__libc_siglongjmp (sigjmp_buf env, int val)
> - __attribute__ ((noreturn));
> -extern void __novmx__libc_longjmp (sigjmp_buf env, int val)
> - __attribute__ ((noreturn));
> -
> -
> -void __novmx_siglongjmp (sigjmp_buf env, int val)
> -{
> - __novmx__libc_siglongjmp (env, val);
> -}
> -
> -void __novmx_longjmp (jmp_buf env, int val)
> -{
> - __novmx__libc_longjmp (env, val);
> -}
> -
> -compat_symbol (libpthread, __novmx_longjmp, longjmp, GLIBC_2_0);
> -compat_symbol (libpthread, __novmx_siglongjmp, siglongjmp, GLIBC_2_0);
> -#endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)) */
> -
> -void
> -__vmx_longjmp (jmp_buf env, int val)
> -{
> - __libc_longjmp (env, val);
> -}
> -
> -void
> -__vmx_siglongjmp (jmp_buf env, int val)
> -{
> - __libc_siglongjmp (env, val);
> -}
> -
> -versioned_symbol (libpthread, __vmx_longjmp, longjmp, GLIBC_2_3_4);
> -versioned_symbol (libpthread, __vmx_siglongjmp, siglongjmp, GLIBC_2_3_4);
> diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/Versions
> index 55518a7e5f..548397fcff 100644
> --- a/sysdeps/unix/sysv/linux/s390/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/Versions
> @@ -11,6 +11,6 @@ libc {
>
> libpthread {
> GLIBC_2.19 {
> - longjmp; siglongjmp;
> + __libpthread_version_placeholder;
> }
> }
> diff --git a/sysdeps/unix/sysv/linux/s390/libpthread-compat.c b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c
> new file mode 100644
> index 0000000000..e8a7b6db5e
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c
> @@ -0,0 +1,25 @@
> +/* Placeholder definitions to pull in removed symbol versions. s390 version.
> + Copyright (C) 2019-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 <nptl/libpthread-compat.c>
> +
> +/* GLIBC_2.19 was used by a longjmp compatibility symbol. */
> +#if (SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20))
> +compat_symbol_unique (libpthread,
> + __libpthread_version_placeholder, GLIBC_2_19);
> +#endif
> diff --git a/sysdeps/unix/sysv/linux/s390/pt-longjmp.c b/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
> deleted file mode 100644
> index 6e97ed538b..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* 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/>.
> -
> - Versioned copy of nptl/pt-longjmp.c modified for versioning
> - the reverted jmpbuf extension. */
> -
> -#include <shlib-compat.h>
> -
> -#include <nptl/pt-longjmp.c>
> -
> -#if SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
> -/* In glibc release 2.19 new versions of longjmp-functions were introduced,
> - but were reverted before 2.20. Thus both versions are the same function. */
> -
> -strong_alias (longjmp_alias, __v2longjmp)
> -compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19);
> -strong_alias (siglongjmp_alias, __v2siglongjmp)
> -compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19);
> -#endif /* SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 7aa725ccae..518a08ad1e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> @@ -130,8 +128,7 @@ GLIBC_2.12 pthread_mutexattr_setrobust 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 longjmp F
> -GLIBC_2.19 siglongjmp F
> +GLIBC_2.19 __libpthread_version_placeholder F
> GLIBC_2.2 __open64 F
> GLIBC_2.2 __pread64 F
> GLIBC_2.2 __pthread_rwlock_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 25da7ea8dc..c21f7cfea6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -5,8 +5,7 @@ GLIBC_2.12 pthread_mutexattr_setrobust 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 longjmp F
> -GLIBC_2.19 siglongjmp F
> +GLIBC_2.19 __libpthread_version_placeholder F
> GLIBC_2.2 _IO_flockfile F
> GLIBC_2.2 _IO_ftrylockfile F
> GLIBC_2.2 _IO_funlockfile F
> @@ -55,7 +54,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -159,7 +157,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 8d7aa63a02..740570ef37 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 8d7aa63a02..740570ef37 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 5f8c13bb69..e17b5183ef 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -32,7 +32,6 @@ GLIBC_2.0 flockfile F
> GLIBC_2.0 fsync F
> GLIBC_2.0 ftrylockfile F
> GLIBC_2.0 funlockfile F
> -GLIBC_2.0 longjmp F
> GLIBC_2.0 lseek F
> GLIBC_2.0 msync F
> GLIBC_2.0 open F
> @@ -81,7 +80,6 @@ GLIBC_2.0 send F
> GLIBC_2.0 sendmsg F
> GLIBC_2.0 sendto F
> GLIBC_2.0 sigaction F
> -GLIBC_2.0 siglongjmp F
> GLIBC_2.0 sigwait F
> GLIBC_2.0 system F
> GLIBC_2.0 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index ab6a5cfb78..0565c43c10 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2 flockfile F
> GLIBC_2.2 fsync F
> GLIBC_2.2 ftrylockfile F
> GLIBC_2.2 funlockfile F
> -GLIBC_2.2 longjmp F
> GLIBC_2.2 lseek F
> GLIBC_2.2 lseek64 F
> GLIBC_2.2 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2 send F
> GLIBC_2.2 sendmsg F
> GLIBC_2.2 sendto F
> GLIBC_2.2 sigaction F
> -GLIBC_2.2 siglongjmp F
> GLIBC_2.2 sigwait F
> GLIBC_2.2 system F
> GLIBC_2.2 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 301c0817b8..f1255816b1 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -53,7 +53,6 @@ GLIBC_2.2.5 flockfile F
> GLIBC_2.2.5 fsync F
> GLIBC_2.2.5 ftrylockfile F
> GLIBC_2.2.5 funlockfile F
> -GLIBC_2.2.5 longjmp F
> GLIBC_2.2.5 lseek F
> GLIBC_2.2.5 lseek64 F
> GLIBC_2.2.5 msync F
> @@ -157,7 +156,6 @@ GLIBC_2.2.5 send F
> GLIBC_2.2.5 sendmsg F
> GLIBC_2.2.5 sendto F
> GLIBC_2.2.5 sigaction F
> -GLIBC_2.2.5 siglongjmp F
> GLIBC_2.2.5 sigwait F
> GLIBC_2.2.5 system F
> GLIBC_2.2.5 tcdrain F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 31322dfabb..fdaff69ea6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -51,7 +51,6 @@ GLIBC_2.16 flockfile F
> GLIBC_2.16 fsync F
> GLIBC_2.16 ftrylockfile F
> GLIBC_2.16 funlockfile F
> -GLIBC_2.16 longjmp F
> GLIBC_2.16 lseek F
> GLIBC_2.16 lseek64 F
> GLIBC_2.16 msync F
> @@ -175,7 +174,6 @@ GLIBC_2.16 send F
> GLIBC_2.16 sendmsg F
> GLIBC_2.16 sendto F
> GLIBC_2.16 sigaction F
> -GLIBC_2.16 siglongjmp F
> GLIBC_2.16 sigwait F
> GLIBC_2.16 system F
> GLIBC_2.16 tcdrain F
> diff --git a/sysdeps/x86/nptl/pt-longjmp.c b/sysdeps/x86/nptl/pt-longjmp.c
> deleted file mode 100644
> index 77b32667ee..0000000000
> --- a/sysdeps/x86/nptl/pt-longjmp.c
> +++ /dev/null
> @@ -1,71 +0,0 @@
> -/* ABI compatibility for 'longjmp' and 'siglongjmp' symbols in libpthread ABI.
> - X86 version.
> - Copyright (C) 1918-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 <pthreadP.h>
> -#include <jmp_buf-ssp.h>
> -
> -#ifdef __x86_64__
> -# define SHADOW_STACK_POINTER_SIZE 8
> -#else
> -# define SHADOW_STACK_POINTER_SIZE 4
> -#endif
> -
> -/* Assert that the priv field in struct pthread_unwind_buf has space
> - to store shadow stack pointer. */
> -_Static_assert ((offsetof (struct pthread_unwind_buf, priv)
> - <= SHADOW_STACK_POINTER_OFFSET)
> - && ((offsetof (struct pthread_unwind_buf, priv)
> - + sizeof (((struct pthread_unwind_buf *) 0)->priv))
> - >= (SHADOW_STACK_POINTER_OFFSET
> - + SHADOW_STACK_POINTER_SIZE)),
> - "Shadow stack pointer is not within private storage "
> - "of pthread_unwind_buf.");
> -
> -#include <shlib-compat.h>
> -
> -/* libpthread once had its own longjmp (and siglongjmp alias), though there
> - was no apparent reason for it. There is no use in having a separate
> - symbol in libpthread, but the historical ABI requires it. For static
> - linking, there is no need to provide anything here--the libc version
> - will be linked in. For shared library ABI compatibility, there must be
> - longjmp and siglongjmp symbols in libpthread.so.
> -
> - With an IFUNC resolver, it would be possible to avoid the indirection,
> - but the IFUNC resolver might run before the __libc_longjmp symbol has
> - been relocated, in which case the IFUNC resolver would not be able to
> - provide the correct address. */
> -
> -#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
> -
> -static void __attribute__ ((noreturn, used))
> -longjmp_compat (jmp_buf env, int val)
> -{
> - /* NB: We call __libc_siglongjmp, instead of __libc_longjmp, since
> - __libc_longjmp is a private interface for cancellation which
> - doesn't restore shadow stack register. */
> - __libc_siglongjmp (env, val);
> -}
> -
> -strong_alias (longjmp_compat, longjmp_alias)
> -compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0);
> -
> -strong_alias (longjmp_alias, siglongjmp_alias)
> -compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0);
> -
> -#endif
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA
2021-03-12 17:49 ` [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA Florian Weimer
@ 2021-03-16 14:14 ` Adhemerval Zanella
0 siblings, 0 replies; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 14:14 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> It is not actually used by the legacy unwinder linked into
> libc.so, and it conflicts with the unwind-link functionality
> in libpthread.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> sysdeps/generic/unwind-dw2.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c
> index 618fa8885f..da971279be 100644
> --- a/sysdeps/generic/unwind-dw2.c
> +++ b/sysdeps/generic/unwind-dw2.c
> @@ -177,14 +177,6 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
> return * (_Unwind_Word *) context->reg[index];
> }
>
> -/* Get the value of the CFA as saved in CONTEXT. */
> -
> -_Unwind_Word
> -_Unwind_GetCFA (struct _Unwind_Context *context)
> -{
> - return (_Unwind_Ptr) context->cfa;
> -}
> -
> /* Overwrite the saved value for register REG in CONTEXT with VAL. */
>
> inline void
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc
2021-03-12 17:49 ` [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc Florian Weimer
@ 2021-03-16 14:35 ` Adhemerval Zanella
0 siblings, 0 replies; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 14:35 UTC (permalink / raw)
To: libc-alpha, Florian Weimer
On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
> This internal symbol is used as part of the longjmp implementation.
> Rename the file from nptl/pt-cleanup.c to nptl/pthread_cleanup_upto.c
> so that the pt-* files remain restricted to libpthread.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> nptl/Makefile | 2 +-
> nptl/Versions | 1 +
> nptl/nptl-init.c | 1 -
> nptl/pthreadP.h | 4 +---
> nptl/{pt-cleanup.c => pthread_cleanup_upto.c} | 2 +-
> sysdeps/nptl/jmp-unwind.c | 8 ++------
> sysdeps/nptl/pthread-functions.h | 1 -
> sysdeps/unix/sysv/linux/s390/jmp-unwind.c | 7 ++-----
> 8 files changed, 8 insertions(+), 18 deletions(-)
> rename nptl/{pt-cleanup.c => pthread_cleanup_upto.c} (98%)
>
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 7e566675f2..8847c4dd49 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -66,6 +66,7 @@ routines = \
> pthread_attr_setscope \
> pthread_attr_setsigmask \
> pthread_attr_setsigmask_internal \
> + pthread_cleanup_upto \
> pthread_cond_destroy \
> pthread_cond_init \
> pthread_condattr_destroy \
> @@ -113,7 +114,6 @@ libpthread-routines = \
> old_pthread_cond_timedwait \
> old_pthread_cond_wait \
> pt-allocrtsig \
> - pt-cleanup \
> pt-fcntl \
> pt-interp \
> pt-raise \
Ok.
> diff --git a/nptl/Versions b/nptl/Versions
> index cf4d5b677d..8fa0d178db 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -109,6 +109,7 @@ libc {
> __pthread_attr_setsigmask_internal;
> __pthread_cleanup_pop;
> __pthread_cleanup_push;
> + __pthread_cleanup_upto;
> __pthread_cond_destroy; # Used by the C11 threads.
> __pthread_cond_init; # Used by the C11 threads.
> __pthread_force_elision;
Ok.
> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index c2b563cc68..41527dcad1 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -88,7 +88,6 @@ static const struct pthread_functions pthread_functions =
> .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
> .ptr___pthread_setcancelstate = __pthread_setcancelstate,
> .ptr_pthread_setcanceltype = __pthread_setcanceltype,
> - .ptr___pthread_cleanup_upto = __pthread_cleanup_upto,
> .ptr___pthread_once = __pthread_once,
> .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
> .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
Ok.
> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 781bc65c1c..8f3d2cc8c9 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -332,9 +332,7 @@ extern int __make_stacks_executable (void **stack_endp) attribute_hidden;
>
> /* longjmp handling. */
> extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe);
> -#if IS_IN (libpthread)
> -hidden_proto (__pthread_cleanup_upto)
> -#endif
> +libc_hidden_proto (__pthread_cleanup_upto)
>
>
> /* Functions with versioned interfaces. */
Ok.
> diff --git a/nptl/pt-cleanup.c b/nptl/pthread_cleanup_upto.c
> similarity index 98%
> rename from nptl/pt-cleanup.c
> rename to nptl/pthread_cleanup_upto.c
Ok.
> index 541533230d..89da3e5229 100644
> --- a/nptl/pt-cleanup.c
> +++ b/nptl/pthread_cleanup_upto.c
> @@ -59,4 +59,4 @@ __pthread_cleanup_upto (__jmp_buf target, char *targetframe)
>
> THREAD_SETMEM (self, cleanup, cbuf);
> }
> -hidden_def (__pthread_cleanup_upto)
> +libc_hidden_def (__pthread_cleanup_upto)
Ok.
> diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
> index a79c792e82..96c4862c74 100644
> --- a/sysdeps/nptl/jmp-unwind.c
> +++ b/sysdeps/nptl/jmp-unwind.c
> @@ -19,14 +19,10 @@
> #include <setjmp.h>
> #include <stddef.h>
> #include <libc-lock.h>
> -
> -extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
> -#pragma weak __pthread_cleanup_upto
> -
> +#include <nptl/pthreadP.h>
>
> void
> _longjmp_unwind (jmp_buf env, int val)
> {
> - __libc_ptf_call (__pthread_cleanup_upto, (env->__jmpbuf,
> - CURRENT_STACK_FRAME), 0);
> + __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME);
> }
Ok.
> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 4268084b66..1bbe609598 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -49,7 +49,6 @@ struct pthread_functions
> int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
> int (*ptr___pthread_setcancelstate) (int, int *);
> int (*ptr_pthread_setcanceltype) (int, int *);
> - void (*ptr___pthread_cleanup_upto) (__jmp_buf, char *);
> int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
> int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
> int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
Ok.
> diff --git a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> index 2bdde57ec7..8e0399a3e9 100644
> --- a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> +++ b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> @@ -19,15 +19,12 @@
> #include <setjmp.h>
> #include <stddef.h>
> #include <libc-lock.h>
> -
> -extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
> -#pragma weak __pthread_cleanup_upto
> -
> +#include <nptl/pthreadP.h>
>
> void
> _longjmp_unwind (jmp_buf env, int val)
> {
> char local_var;
>
> - __libc_ptf_call (__pthread_cleanup_upto, (env->__jmpbuf, &local_var), 0);
> + __pthread_cleanup_upto (env->__jmpbuf, &local_var);
> }
>
Ok.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread
2021-03-16 14:13 ` Adhemerval Zanella
@ 2021-03-16 14:39 ` Florian Weimer
0 siblings, 0 replies; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 14:39 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
> On 12/03/2021 14:49, Florian Weimer via Libc-alpha wrote:
>> The definitions in libc are sufficient, the forwarders are no longer
>> needed.
>>
>> The symbols have been moved using scripts/move-symbol-to-libc.py.
>> s390-linux-gnu and s390x-linux-gnu need a new version placeholder
>> to keep the GLIBC_2.19 symbol version in libpthread.
>>
>> Tested on i386-linux-gnu, powerpc64le-linux-gnu, s390x-linux-gnu,
>> x86_64-linux-gnu. Built with build-many-glibcs.py.
>
> Patch looks good, I was working on a similar one as well. The only
> suggestion is to keep the x86 _Static_assert regarding the priv field
> in struct pthread_unwind_buf has space to store shadow stack pointer.
>
> I have done it by adding a new x86 longjmp implementation:
>
> diff --git a/sysdeps/unix/sysv/linux/x86/longjmp.c b/sysdeps/unix/sysv/linux/x86/longjmp.c
> new file mode 100644
> index 0000000000..104592fd48
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/x86/longjmp.c
> @@ -0,0 +1,39 @@
> +/* __libc_siglongjmp for Linux/x86
> + Copyright (C) 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 <sysdeps/x86/longjmp.c>
> +
> +#include <nptl/pthreadP.h>
> +#include <jmp_buf-ssp.h>
> +
> +#ifdef __x86_64__
> +# define SHADOW_STACK_POINTER_SIZE 8
> +#else
> +# define SHADOW_STACK_POINTER_SIZE 4
> +#endif
> +
> +/* Assert that the priv field in struct pthread_unwind_buf has space
> + to store shadow stack pointer. */
> +_Static_assert ((offsetof (struct pthread_unwind_buf, priv)
> + <= SHADOW_STACK_POINTER_OFFSET)
> + && ((offsetof (struct pthread_unwind_buf, priv)
> + + sizeof (((struct pthread_unwind_buf *) 0)->priv))
> + >= (SHADOW_STACK_POINTER_OFFSET
> + + SHADOW_STACK_POINTER_SIZE)),
> + "Shadow stack pointer is not within private storage "
> + "of pthread_unwind_buf.");
Thanks, I've merged this into the series.
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols
2021-03-16 14:09 ` Adhemerval Zanella
@ 2021-03-16 14:45 ` Florian Weimer
2021-03-16 18:14 ` Adhemerval Zanella
0 siblings, 1 reply; 36+ messages in thread
From: Florian Weimer @ 2021-03-16 14:45 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
>> diff --git a/nptl/Versions b/nptl/Versions
>> index e3eb686a04..ff6eae2566 100644
>> --- a/nptl/Versions
>> +++ b/nptl/Versions
>> @@ -1,5 +1,9 @@
>> libc {
>> GLIBC_2.0 {
>> + _pthread_cleanup_pop;
>> + _pthread_cleanup_pop_restore;
>> + _pthread_cleanup_push;
>> + _pthread_cleanup_push_defer;
>> pthread_attr_destroy;
>> pthread_attr_getdetachstate;
>> pthread_attr_getinheritsched;
>> @@ -103,6 +107,8 @@ libc {
>> __pthread_attr_init;
>> __pthread_attr_setaffinity_np;
>> __pthread_attr_setsigmask_internal;
>> + __pthread_cleanup_pop;
>> + __pthread_cleanup_push;
>> __pthread_cond_destroy; # Used by the C11 threads.
>> __pthread_cond_init; # Used by the C11 threads.
>> __pthread_force_elision;
>
> Why are you exporting the double underscore __pthread_cleanup_[pop,push]
> on older versions here?
More patch context:
GLIBC_PRIVATE {
__futex_abstimed_wait64;
__futex_abstimed_wait_cancelable64;
__libc_alloca_cutoff;
__libc_allocate_rtsig_private;
__libc_cleanup_pop_restore;
__libc_cleanup_push_defer;
__libc_current_sigrtmax_private;
__libc_current_sigrtmin_private;
__libc_dl_error_tsd;
__libc_pthread_init;
__lll_clocklock_elision;
__lll_lock_elision;
__lll_lock_wait;
__lll_lock_wait_private;
__lll_trylock_elision;
__lll_unlock_elision;
__pthread_attr_copy;
__pthread_attr_destroy;
__pthread_attr_init;
__pthread_attr_setaffinity_np;
__pthread_attr_setsigmask_internal;
+ __pthread_cleanup_pop;
+ __pthread_cleanup_push;
__pthread_cond_destroy; # Used by the C11 threads.
__pthread_cond_init; # Used by the C11 threads.
__pthread_force_elision;
__pthread_getattr_default_np;
}
I've added this to the commit message:
__pthread_cleanup_pop and __pthread_cleanup_push are added as
GLIBC_PRIVATE symbols because they are also used internally, for
glibc's own cancellation handling.
Thanks,
Florian
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols
2021-03-16 14:45 ` Florian Weimer
@ 2021-03-16 18:14 ` Adhemerval Zanella
0 siblings, 0 replies; 36+ messages in thread
From: Adhemerval Zanella @ 2021-03-16 18:14 UTC (permalink / raw)
To: Florian Weimer; +Cc: libc-alpha
On 16/03/2021 11:45, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>>> diff --git a/nptl/Versions b/nptl/Versions
>>> index e3eb686a04..ff6eae2566 100644
>>> --- a/nptl/Versions
>>> +++ b/nptl/Versions
>>> @@ -1,5 +1,9 @@
>>> libc {
>>> GLIBC_2.0 {
>>> + _pthread_cleanup_pop;
>>> + _pthread_cleanup_pop_restore;
>>> + _pthread_cleanup_push;
>>> + _pthread_cleanup_push_defer;
>>> pthread_attr_destroy;
>>> pthread_attr_getdetachstate;
>>> pthread_attr_getinheritsched;
>>> @@ -103,6 +107,8 @@ libc {
>>> __pthread_attr_init;
>>> __pthread_attr_setaffinity_np;
>>> __pthread_attr_setsigmask_internal;
>>> + __pthread_cleanup_pop;
>>> + __pthread_cleanup_push;
>>> __pthread_cond_destroy; # Used by the C11 threads.
>>> __pthread_cond_init; # Used by the C11 threads.
>>> __pthread_force_elision;
>>
>> Why are you exporting the double underscore __pthread_cleanup_[pop,push]
>> on older versions here?
>
> More patch context:
>
> GLIBC_PRIVATE {
> __futex_abstimed_wait64;
> __futex_abstimed_wait_cancelable64;
> __libc_alloca_cutoff;
> __libc_allocate_rtsig_private;
> __libc_cleanup_pop_restore;
> __libc_cleanup_push_defer;
> __libc_current_sigrtmax_private;
> __libc_current_sigrtmin_private;
> __libc_dl_error_tsd;
> __libc_pthread_init;
> __lll_clocklock_elision;
> __lll_lock_elision;
> __lll_lock_wait;
> __lll_lock_wait_private;
> __lll_trylock_elision;
> __lll_unlock_elision;
> __pthread_attr_copy;
> __pthread_attr_destroy;
> __pthread_attr_init;
> __pthread_attr_setaffinity_np;
> __pthread_attr_setsigmask_internal;
> + __pthread_cleanup_pop;
> + __pthread_cleanup_push;
> __pthread_cond_destroy; # Used by the C11 threads.
> __pthread_cond_init; # Used by the C11 threads.
> __pthread_force_elision;
> __pthread_getattr_default_np;
> }
>
> I've added this to the commit message:
>
> __pthread_cleanup_pop and __pthread_cleanup_push are added as
> GLIBC_PRIVATE symbols because they are also used internally, for
> glibc's own cancellation handling.
Ack I missed this.
^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2021-03-16 18:14 UTC | newest]
Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-12 17:48 [PATCH 00/18] Repost of pending libpthread removal patches Florian Weimer
2021-03-12 17:48 ` [PATCH 01/18] nptl: Move pthread_mutex_consistent into libc Florian Weimer
2021-03-15 19:30 ` Adhemerval Zanella
2021-03-16 5:42 ` Florian Weimer
2021-03-16 13:49 ` Adhemerval Zanella
2021-03-16 13:53 ` Florian Weimer
2021-03-16 14:07 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 02/18] nptl: Move __pthread_cleanup_routine " Florian Weimer
2021-03-15 19:53 ` Adhemerval Zanella
2021-03-16 7:09 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 03/18] nptl: Move legacy unwinding implementation " Florian Weimer
2021-03-15 20:02 ` Adhemerval Zanella
2021-03-16 7:03 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 04/18] nptl: Move legacy cancelation handling into libc as compat symbols Florian Weimer
2021-03-16 14:09 ` Adhemerval Zanella
2021-03-16 14:45 ` Florian Weimer
2021-03-16 18:14 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 05/18] nptl: Remove longjmp, siglongjmp from libpthread Florian Weimer
2021-03-16 14:13 ` Adhemerval Zanella
2021-03-16 14:39 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 06/18] Legacy unwinder: Remove definition of _Unwind_GetCFA Florian Weimer
2021-03-16 14:14 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 07/18] nptl: Move __pthread_cleanup_upto into libc Florian Weimer
2021-03-16 14:35 ` Adhemerval Zanella
2021-03-12 17:49 ` [PATCH 08/18] nptl: Move pthread_once and __pthread_once " Florian Weimer
2021-03-15 19:24 ` Florian Weimer
2021-03-12 17:49 ` [PATCH 09/18] nptl: Move __pthread_unwind_next " Florian Weimer
2021-03-12 17:49 ` [PATCH 10/18] csu: Move calling main out of __libc_start_main_impl Florian Weimer
2021-03-12 17:49 ` [PATCH 11/18] nptl: Move internal __nptl_nthreads variable into libc Florian Weimer
2021-03-12 17:49 ` [PATCH 12/18] nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE Florian Weimer
2021-03-12 17:50 ` [PATCH 13/18] nptl: Move __pthread_keys global variable into libc Florian Weimer
2021-03-12 17:50 ` [PATCH 14/18] nptl: Move __nptl_deallocate_tsd " Florian Weimer
2021-03-12 17:50 ` [PATCH 15/18] nptl: Move pthread_exit " Florian Weimer
2021-03-12 17:50 ` [PATCH 16/18] nptl: Move pthread_setcancelstate " Florian Weimer
2021-03-12 17:50 ` [PATCH 17/18] nptl: Move pthread_setcanceltype " Florian Weimer
2021-03-12 17:50 ` [PATCH 18/18] nptl: Invoke the set_robust_list system call directly in fork Florian Weimer
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).