nptl: Export _pthread_cleanup_push, _pthread_cleanup_pop again

Message ID 87r1h3gnlx.fsf@oldenburg.str.redhat.com
State Committed
Headers
Series nptl: Export _pthread_cleanup_push, _pthread_cleanup_pop again |

Checks

Context Check Description
dj/TryBot-apply_patch fail Patch failed to apply to master at the time it was sent

Commit Message

Florian Weimer June 15, 2021, 3:21 p.m. UTC
  These were turned into compat symbols as part of the libpthread
move.  It turns out they are used by language run-time libraries
(e.g., the GCC D front end), so it makes to preserve them as
external symbols even though they are not declared in any header
file.

Tested on i686-linux-gnu, x86_64-linux-gnu.  Built on i686-gnu.  (No
full build on all ABIs, but the ABI update was done with
update-all-abi.)

---
 nptl/Versions                                                | 2 ++
 nptl/cleanup_compat.c                                        | 4 ++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/alpha/libc.abilist                   | 2 ++
 sysdeps/unix/sysv/linux/arc/libc.abilist                     | 2 ++
 sysdeps/unix/sysv/linux/arm/be/libc.abilist                  | 2 ++
 sysdeps/unix/sysv/linux/arm/le/libc.abilist                  | 2 ++
 sysdeps/unix/sysv/linux/csky/libc.abilist                    | 2 ++
 sysdeps/unix/sysv/linux/hppa/libc.abilist                    | 2 ++
 sysdeps/unix/sysv/linux/i386/libc.abilist                    | 2 ++
 sysdeps/unix/sysv/linux/ia64/libc.abilist                    | 2 ++
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist             | 2 ++
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist       | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/nios2/libc.abilist                   | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist   | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist              | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist              | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist            | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist            | 2 ++
 sysdeps/unix/sysv/linux/sh/be/libc.abilist                   | 2 ++
 sysdeps/unix/sysv/linux/sh/le/libc.abilist                   | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist              | 2 ++
 34 files changed, 70 insertions(+)
  

Comments

Carlos O'Donell June 15, 2021, 7:17 p.m. UTC | #1
On 6/15/21 11:21 AM, Florian Weimer via Libc-alpha wrote:
> These were turned into compat symbols as part of the libpthread
> move.  It turns out they are used by language run-time libraries
> (e.g., the GCC D front end), so it makes to preserve them as
> external symbols even though they are not declared in any header
> file.
> 
> Tested on i686-linux-gnu, x86_64-linux-gnu.  Built on i686-gnu.  (No
> full build on all ABIs, but the ABI update was done with
> update-all-abi.)

Just like the pthread min stack size problem this is something we can't
change until we work with the runtime authors to avoid the regression or
get interfaces they need defined.

Thanks for working through this issue. This change is straight forward,
we aren't at ABI freeze yet, and so this looks good to me.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
 
> ---
>  nptl/Versions                                                | 2 ++
>  nptl/cleanup_compat.c                                        | 4 ++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/alpha/libc.abilist                   | 2 ++
>  sysdeps/unix/sysv/linux/arc/libc.abilist                     | 2 ++
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist                  | 2 ++
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist                  | 2 ++
>  sysdeps/unix/sysv/linux/csky/libc.abilist                    | 2 ++
>  sysdeps/unix/sysv/linux/hppa/libc.abilist                    | 2 ++
>  sysdeps/unix/sysv/linux/i386/libc.abilist                    | 2 ++
>  sysdeps/unix/sysv/linux/ia64/libc.abilist                    | 2 ++
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist             | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist       | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist                   | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist   | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist              | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist              | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist            | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist            | 2 ++
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist                   | 2 ++
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist                   | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist              | 2 ++
>  34 files changed, 70 insertions(+)
> 
> diff --git a/nptl/Versions b/nptl/Versions
> index d49dba9c15..62bb939d54 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -260,6 +260,8 @@ libc {
>      __pthread_unregister_cancel;
>      __pthread_unregister_cancel_restore;
>      __pthread_unwind_next;
> +    _pthread_cleanup_pop;
> +    _pthread_cleanup_push;

OK. Add the two symbols to nptl/Versions.

>      call_once;
>      cnd_broadcast;
>      cnd_destroy;
> diff --git a/nptl/cleanup_compat.c b/nptl/cleanup_compat.c
> index 1a757cf06a..6e3c6b1c1a 100644
> --- a/nptl/cleanup_compat.c
> +++ b/nptl/cleanup_compat.c
> @@ -33,6 +33,8 @@ __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
>    THREAD_SETMEM (self, cleanup, buffer);
>  }
>  libc_hidden_def (__pthread_cleanup_push)
> +versioned_symbol (libc, __pthread_cleanup_push, _pthread_cleanup_push,
> +		  GLIBC_2_34);

OK. Add versioned symbol.

>  
>  void
>  __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
> @@ -47,6 +49,8 @@ __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
>      buffer->__routine (buffer->__arg);
>  }
>  libc_hidden_def (__pthread_cleanup_pop)
> +versioned_symbol (libc, __pthread_cleanup_pop, _pthread_cleanup_pop,
> +		  GLIBC_2_34);

OK. Add versioned symbol.

>  
>  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
>  compat_symbol (libpthread, __pthread_cleanup_push, _pthread_cleanup_push,
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index bee807a6f8..ad4c83787d 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2344,6 +2344,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 43dd600039..30dfd0baa1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2437,6 +2437,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 033ed08877..72ff8c5bdc 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -2103,6 +2103,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index f66ee7aab1..2f5561cd15 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -200,6 +200,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 3798b32830..1508687f18 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -197,6 +197,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index ba53b61ea6..ae2f0739e2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2287,6 +2287,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 9783504c93..4a60471ef5 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2241,6 +2241,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index c223c360ff..e47b9c5cc8 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2425,6 +2425,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index ea2be9ead2..4a608b5d29 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2277,6 +2277,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 3cb4279b41..86b3367f58 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -201,6 +201,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 94a718ff58..efa1605eb5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2368,6 +2368,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 5823bf18ef..81ca0d648e 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2338,6 +2338,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 723c4bcb09..249776d92d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2335,6 +2335,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index f67da8f37a..e55dc423e0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2333,6 +2333,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index e44a6be8aa..40d54df83f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2331,6 +2331,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 21cbe39166..195ee7e2ba 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2339,6 +2339,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index a271342813..485a0121dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2333,6 +2333,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 9429209215..ff6ee05f24 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2377,6 +2377,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index eaca8e4b0c..7157d14aac 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2395,6 +2395,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index c754a181da..d48fd20d34 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2428,6 +2428,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 98bd6bea39..3ff4d977f7 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2241,6 +2241,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index d27f7448ed..c2c5c605ac 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2540,6 +2540,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 33c9f98bf5..2abe414bda 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -2105,6 +2105,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 9902603cd4..947fc8072d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2305,6 +2305,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 963e27571d..6fddf57536 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2393,6 +2393,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 17c56a2658..084b419cf6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2278,6 +2278,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 456abfb5bb..0d15162043 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2248,6 +2248,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 45e59f1821..478d5afb80 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2245,6 +2245,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 734e1f38b6..c4e2bf1838 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2386,6 +2386,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 9edf5ff234..27b3443394 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2298,6 +2298,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index bc8535fbed..2e5c5957b0 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2256,6 +2256,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 669cc664f5..0b0d1ac43f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2359,6 +2359,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
>  GLIBC_2.34 __pthread_unregister_cancel F
>  GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
> +GLIBC_2.34 _pthread_cleanup_pop F
> +GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> 

OK. Fixup the abilists.
  
Florian Weimer June 15, 2021, 7:19 p.m. UTC | #2
* Carlos O'Donell:

> On 6/15/21 11:21 AM, Florian Weimer via Libc-alpha wrote:
>> These were turned into compat symbols as part of the libpthread
>> move.  It turns out they are used by language run-time libraries
>> (e.g., the GCC D front end), so it makes to preserve them as
>> external symbols even though they are not declared in any header
>> file.
>> 
>> Tested on i686-linux-gnu, x86_64-linux-gnu.  Built on i686-gnu.  (No
>> full build on all ABIs, but the ABI update was done with
>> update-all-abi.)
>
> Just like the pthread min stack size problem this is something we can't
> change until we work with the runtime authors to avoid the regression or
> get interfaces they need defined.
>
> Thanks for working through this issue. This change is straight forward,
> we aren't at ABI freeze yet, and so this looks good to me.

Just to be clear, this is a public interface, not a GLIBC_PRIVATE one.
It's just an old interface that unexpectedly has current users.

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

Thanks!

Florian
  
Carlos O'Donell June 15, 2021, 7:35 p.m. UTC | #3
On 6/15/21 3:19 PM, Florian Weimer wrote:
> * Carlos O'Donell:
> 
>> On 6/15/21 11:21 AM, Florian Weimer via Libc-alpha wrote:
>>> These were turned into compat symbols as part of the libpthread
>>> move.  It turns out they are used by language run-time libraries
>>> (e.g., the GCC D front end), so it makes to preserve them as
>>> external symbols even though they are not declared in any header
>>> file.
>>>
>>> Tested on i686-linux-gnu, x86_64-linux-gnu.  Built on i686-gnu.  (No
>>> full build on all ABIs, but the ABI update was done with
>>> update-all-abi.)
>>
>> Just like the pthread min stack size problem this is something we can't
>> change until we work with the runtime authors to avoid the regression or
>> get interfaces they need defined.
>>
>> Thanks for working through this issue. This change is straight forward,
>> we aren't at ABI freeze yet, and so this looks good to me.
> 
> Just to be clear, this is a public interface, not a GLIBC_PRIVATE one.
> It's just an old interface that unexpectedly has current users.

As an interface with a leading underscore it is part of the implementation
and should only have been called by macros under the control of the
implementation. There is perhaps a digression here, is the "D" runtime in
gcc a part of the implementation formed with glibc? If your answer is "Yes"
then the libphobos implementation that calls _pthreaed_cleanup_[push,pop]
is valid code to have in the compiler. However, my opinion is that core
language runtimes should not be calling leading underscore functions, and
that there should be a stronger separation between the language runtime
and the core runtime functionality. That requires we talk to more language
runtime developers to ensure we provide the functionality they need and
that we provide that functionality in some way. They should definitely
not be calling GLIBC_PRIVATE functions, but they do, because of missing
functionality in public interfaces.
  
Jakub Jelinek June 15, 2021, 7:46 p.m. UTC | #4
On Tue, Jun 15, 2021 at 03:35:56PM -0400, Carlos O'Donell wrote:
> >>> These were turned into compat symbols as part of the libpthread
> >>> move.  It turns out they are used by language run-time libraries
> >>> (e.g., the GCC D front end), so it makes to preserve them as
> >>> external symbols even though they are not declared in any header
> >>> file.
> >>>
> >>> Tested on i686-linux-gnu, x86_64-linux-gnu.  Built on i686-gnu.  (No
> >>> full build on all ABIs, but the ABI update was done with
> >>> update-all-abi.)
> >>
> >> Just like the pthread min stack size problem this is something we can't
> >> change until we work with the runtime authors to avoid the regression or
> >> get interfaces they need defined.
> >>
> >> Thanks for working through this issue. This change is straight forward,
> >> we aren't at ABI freeze yet, and so this looks good to me.
> > 
> > Just to be clear, this is a public interface, not a GLIBC_PRIVATE one.
> > It's just an old interface that unexpectedly has current users.
> 
> As an interface with a leading underscore it is part of the implementation
> and should only have been called by macros under the control of the
> implementation. There is perhaps a digression here, is the "D" runtime in
> gcc a part of the implementation formed with glibc? If your answer is "Yes"
> then the libphobos implementation that calls _pthreaed_cleanup_[push,pop]
> is valid code to have in the compiler. However, my opinion is that core
> language runtimes should not be calling leading underscore functions, and
> that there should be a stronger separation between the language runtime
> and the core runtime functionality. That requires we talk to more language
> runtime developers to ensure we provide the functionality they need and
> that we provide that functionality in some way. They should definitely
> not be calling GLIBC_PRIVATE functions, but they do, because of missing
> functionality in public interfaces.

Languages like D can't use the C headers glibc provides.
And, this isn't something to gcc, it has been in all the D implementations
for ~ 13 years already:
https://github.com/dlang/druntime/blame/master/src/core/sys/posix/pthread.d

	Jakub
  

Patch

diff --git a/nptl/Versions b/nptl/Versions
index d49dba9c15..62bb939d54 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -260,6 +260,8 @@  libc {
     __pthread_unregister_cancel;
     __pthread_unregister_cancel_restore;
     __pthread_unwind_next;
+    _pthread_cleanup_pop;
+    _pthread_cleanup_push;
     call_once;
     cnd_broadcast;
     cnd_destroy;
diff --git a/nptl/cleanup_compat.c b/nptl/cleanup_compat.c
index 1a757cf06a..6e3c6b1c1a 100644
--- a/nptl/cleanup_compat.c
+++ b/nptl/cleanup_compat.c
@@ -33,6 +33,8 @@  __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
   THREAD_SETMEM (self, cleanup, buffer);
 }
 libc_hidden_def (__pthread_cleanup_push)
+versioned_symbol (libc, __pthread_cleanup_push, _pthread_cleanup_push,
+		  GLIBC_2_34);
 
 void
 __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
@@ -47,6 +49,8 @@  __pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, int execute)
     buffer->__routine (buffer->__arg);
 }
 libc_hidden_def (__pthread_cleanup_pop)
+versioned_symbol (libc, __pthread_cleanup_pop, _pthread_cleanup_pop,
+		  GLIBC_2_34);
 
 #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_34)
 compat_symbol (libpthread, __pthread_cleanup_push, _pthread_cleanup_push,
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index bee807a6f8..ad4c83787d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2344,6 +2344,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 43dd600039..30dfd0baa1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2437,6 +2437,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 033ed08877..72ff8c5bdc 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2103,6 +2103,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index f66ee7aab1..2f5561cd15 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -200,6 +200,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 3798b32830..1508687f18 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -197,6 +197,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index ba53b61ea6..ae2f0739e2 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2287,6 +2287,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 9783504c93..4a60471ef5 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2241,6 +2241,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c223c360ff..e47b9c5cc8 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2425,6 +2425,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ea2be9ead2..4a608b5d29 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2277,6 +2277,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 3cb4279b41..86b3367f58 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -201,6 +201,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 94a718ff58..efa1605eb5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2368,6 +2368,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 5823bf18ef..81ca0d648e 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2338,6 +2338,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 723c4bcb09..249776d92d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2335,6 +2335,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f67da8f37a..e55dc423e0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2333,6 +2333,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e44a6be8aa..40d54df83f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2331,6 +2331,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 21cbe39166..195ee7e2ba 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2339,6 +2339,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index a271342813..485a0121dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2333,6 +2333,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 9429209215..ff6ee05f24 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2377,6 +2377,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index eaca8e4b0c..7157d14aac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2395,6 +2395,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index c754a181da..d48fd20d34 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2428,6 +2428,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 98bd6bea39..3ff4d977f7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2241,6 +2241,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index d27f7448ed..c2c5c605ac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2540,6 +2540,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 33c9f98bf5..2abe414bda 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2105,6 +2105,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 9902603cd4..947fc8072d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2305,6 +2305,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 963e27571d..6fddf57536 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2393,6 +2393,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 17c56a2658..084b419cf6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2278,6 +2278,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 456abfb5bb..0d15162043 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2248,6 +2248,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 45e59f1821..478d5afb80 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2245,6 +2245,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 734e1f38b6..c4e2bf1838 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2386,6 +2386,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 9edf5ff234..27b3443394 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2298,6 +2298,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index bc8535fbed..2e5c5957b0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2256,6 +2256,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 669cc664f5..0b0d1ac43f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2359,6 +2359,8 @@  GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 _pthread_cleanup_pop F
+GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F