[04/18] nptl: Move legacy cancelation handling into libc as compat symbols

Message ID 1ece6f9349c307d5d81fe2ee319866c9c47254b8.1615569355.git.fweimer@redhat.com
State Superseded
Headers show
Series
  • Repost of pending libpthread removal patches
Related show

Commit Message

Ben Woodard via Libc-alpha March 12, 2021, 5:49 p.m.
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(-)

-- 
2.29.2

Comments

Ben Woodard via Libc-alpha March 16, 2021, 2:09 p.m. | #1
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.
Ben Woodard via Libc-alpha March 16, 2021, 2:45 p.m. | #2
* 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
Ben Woodard via Libc-alpha March 16, 2021, 6:14 p.m. | #3
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.

Patch

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