diff mbox series

[v3,09/37] nptl: Move __pthread_unwind_next into libc

Message ID c42d8003634856c93a4a4b0348e4bcec96a5c61e.1615914631.git.fweimer@redhat.com
State Superseded
Delegated to: Adhemerval Zanella Netto
Headers show
Series libpthread removal: NPTL forwarders are gone | expand

Commit Message

Florian Weimer March 16, 2021, 5:29 p.m. UTC
It's necessary to stub out __libc_disable_asynccancel and
__libc_enable_asynccancel via rtld-stubbed-symbols because the new
direct references to the unwinder result in symbol conflicts when the
rtld exception handling from libc is linked in during the construction
of librtld.map.

unwind-forcedunwind.c is merged into unwind-resume.c.  libc now needs
the functions that were previously only used in libpthread.

The GLIBC_PRIVATE exports of __libc_longjmp and __libc_siglongjmp are
no longer needed, so switch them to hidden symbols.

The symbol __pthread_unwind_next has been moved using
scripts/move-symbol-to-libc.py.
---
 elf/Makefile                                  |  2 +
 include/setjmp.h                              |  4 +-
 nptl/Makefile                                 |  4 +-
 nptl/Versions                                 |  4 +-
 nptl/forward.c                                |  6 --
 nptl/nptl-init.c                              |  1 -
 nptl/pthreadP.h                               |  8 ++-
 nptl/pthread_cancel.c                         | 10 ++-
 nptl/pthread_exit.c                           | 11 +++-
 nptl/unwind.c                                 | 14 ++--
 setjmp/Versions                               |  4 --
 sysdeps/arm/Makefile                          |  5 --
 sysdeps/arm/nptl/unwind-forcedunwind.c        | 25 --------
 sysdeps/arm/pt-arm-unwind-resume.S            | 20 ------
 sysdeps/generic/unwind-resume.c               | 14 ++++
 .../unwind-resume.c}                          |  5 +-
 sysdeps/nptl/pthread-functions.h              |  2 -
 sysdeps/nptl/unwind-forcedunwind.c            | 64 -------------------
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 .../sysv/linux/aarch64/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
 .../unix/sysv/linux/alpha/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 .../unix/sysv/linux/arc/libpthread.abilist    |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
 .../unix/sysv/linux/arm/be/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 .../unix/sysv/linux/arm/le/libpthread.abilist |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 .../unix/sysv/linux/csky/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
 .../unix/sysv/linux/hppa/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 .../unix/sysv/linux/i386/libpthread.abilist   |  1 -
 sysdeps/unix/sysv/linux/ia64/Makefile         |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
 .../unix/sysv/linux/ia64/libpthread.abilist   |  1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
 .../linux/m68k/coldfire/libpthread.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  1 -
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../linux/microblaze/be/libpthread.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../linux/microblaze/le/libpthread.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
 .../sysv/linux/mips/mips32/libpthread.abilist |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../sysv/linux/mips/mips64/libpthread.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 .../unix/sysv/linux/nios2/libpthread.abilist  |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../powerpc/powerpc32/libpthread.abilist      |  1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../powerpc/powerpc64/be/libpthread.abilist   |  1 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../powerpc/powerpc64/le/libpthread.abilist   |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../sysv/linux/riscv/rv32/libpthread.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../sysv/linux/riscv/rv64/libpthread.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
 .../linux/s390/s390-32/libpthread.abilist     |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../linux/s390/s390-64/libpthread.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../linux/sparc/sparc32/libpthread.abilist    |  1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
 .../linux/sparc/sparc64/libpthread.abilist    |  1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../sysv/linux/x86_64/64/libpthread.abilist   |  1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  1 -
 80 files changed, 122 insertions(+), 176 deletions(-)
 delete mode 100644 sysdeps/arm/nptl/unwind-forcedunwind.c
 delete mode 100644 sysdeps/arm/pt-arm-unwind-resume.S
 rename sysdeps/{unix/sysv/linux/ia64/unwind-forcedunwind.c => ia64/unwind-resume.c} (87%)
 delete mode 100644 sysdeps/nptl/unwind-forcedunwind.c

Comments

Adhemerval Zanella March 17, 2021, 7:42 p.m. UTC | #1
On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
> It's necessary to stub out __libc_disable_asynccancel and
> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
> direct references to the unwinder result in symbol conflicts when the
> rtld exception handling from libc is linked in during the construction
> of librtld.map.

From where exactly these come from? The *assynccancel should not be
generated for rtld-* objects.

> 
> unwind-forcedunwind.c is merged into unwind-resume.c.  libc now needs
> the functions that were previously only used in libpthread.
> 
> The GLIBC_PRIVATE exports of __libc_longjmp and __libc_siglongjmp are
> no longer needed, so switch them to hidden symbols.
> 
> The symbol __pthread_unwind_next has been moved using
> scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  elf/Makefile                                  |  2 +
>  include/setjmp.h                              |  4 +-
>  nptl/Makefile                                 |  4 +-
>  nptl/Versions                                 |  4 +-
>  nptl/forward.c                                |  6 --
>  nptl/nptl-init.c                              |  1 -
>  nptl/pthreadP.h                               |  8 ++-
>  nptl/pthread_cancel.c                         | 10 ++-
>  nptl/pthread_exit.c                           | 11 +++-
>  nptl/unwind.c                                 | 14 ++--
>  setjmp/Versions                               |  4 --
>  sysdeps/arm/Makefile                          |  5 --
>  sysdeps/arm/nptl/unwind-forcedunwind.c        | 25 --------
>  sysdeps/arm/pt-arm-unwind-resume.S            | 20 ------
>  sysdeps/generic/unwind-resume.c               | 14 ++++
>  .../unwind-resume.c}                          |  5 +-
>  sysdeps/nptl/pthread-functions.h              |  2 -
>  sysdeps/nptl/unwind-forcedunwind.c            | 64 -------------------
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  .../sysv/linux/aarch64/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  .../unix/sysv/linux/arc/libpthread.abilist    |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  .../unix/sysv/linux/csky/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  .../unix/sysv/linux/i386/libpthread.abilist   |  1 -
>  sysdeps/unix/sysv/linux/ia64/Makefile         |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../linux/m68k/coldfire/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../linux/microblaze/be/libpthread.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../linux/microblaze/le/libpthread.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips32/libpthread.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../sysv/linux/mips/mips64/libpthread.abilist |  1 -
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../powerpc/powerpc32/libpthread.abilist      |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../powerpc/powerpc64/be/libpthread.abilist   |  1 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../powerpc/powerpc64/le/libpthread.abilist   |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
>  .../linux/s390/s390-32/libpthread.abilist     |  1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  .../linux/s390/s390-64/libpthread.abilist     |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../linux/sparc/sparc32/libpthread.abilist    |  1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
>  .../linux/sparc/sparc64/libpthread.abilist    |  1 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  1 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  1 -
>  80 files changed, 122 insertions(+), 176 deletions(-)
>  delete mode 100644 sysdeps/arm/nptl/unwind-forcedunwind.c
>  delete mode 100644 sysdeps/arm/pt-arm-unwind-resume.S
>  rename sysdeps/{unix/sysv/linux/ia64/unwind-forcedunwind.c => ia64/unwind-resume.c} (87%)
>  delete mode 100644 sysdeps/nptl/unwind-forcedunwind.c
> 
> diff --git a/elf/Makefile b/elf/Makefile
> index 3b8e13e066..936d4cf276 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -519,6 +519,8 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
>  # discovery mechanism is not compatible with the libc implementation
>  # when compiled for libc.
>  rtld-stubbed-symbols = \
> +  __libc_disable_asynccancel \
> +  __libc_enable_asynccancel \
>    calloc \
>    free \
>    malloc \
> diff --git a/include/setjmp.h b/include/setjmp.h
> index 0a8e4d2eaf..a3936e611d 100644
> --- a/include/setjmp.h
> +++ b/include/setjmp.h
> @@ -20,9 +20,9 @@ extern int __sigjmp_save (jmp_buf __env, int __savemask);
>  extern void _longjmp_unwind (jmp_buf env, int val);
>  
>  extern void __libc_siglongjmp (sigjmp_buf env, int val)
> -	  __attribute__ ((noreturn));
> +	  __attribute__ ((noreturn)) attribute_hidden;
>  extern void __libc_longjmp (sigjmp_buf env, int val)
> -     __attribute__ ((noreturn));
> +     __attribute__ ((noreturn)) attribute_hidden;
>  
>  libc_hidden_proto (_setjmp)
>  libc_hidden_proto (__sigsetjmp)

Ok.

> diff --git a/nptl/Makefile b/nptl/Makefile
> index 910d8c7ebf..c1ade91a0b 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -80,6 +80,7 @@ routines = \
>    pthread_self \
>    pthread_setschedparam \
>    pthread_sigmask \
> +  unwind \
>  
>  shared-only-routines = forward
>  static-only-routines = pthread_atfork

Ok.

> @@ -229,15 +230,12 @@ libpthread-routines = \
>    sem_wait \
>    sigaction \
>    tpp \
> -  unwind \
> -  unwind-forcedunwind \
>    vars \
>    version \
>  
>  libpthread-shared-only-routines = \
>    pt-allocrtsig \
>    pt-interp \
> -  unwind-forcedunwind \
>    version \
>  
>  # Since cancellation handling is in large parts handled using exceptions

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 49133585e4..8f1cd3f7c4 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -56,6 +56,7 @@ libc {
>    }
>    GLIBC_2.3.3 {
>      __pthread_cleanup_routine;
> +    __pthread_unwind_next;
>      pthread_attr_setaffinity_np;
>      pthread_getaffinity_np;
>    }
> @@ -118,6 +119,7 @@ libc {
>      __pthread_cond_init; # Used by the C11 threads.
>      __pthread_force_elision;
>      __pthread_getattr_default_np;
> +    __pthread_unwind;
>    }
>  }
>  
> @@ -323,7 +325,6 @@ libpthread {
>      __pthread_register_cancel_defer;
>      __pthread_unregister_cancel;
>      __pthread_unregister_cancel_restore;
> -    __pthread_unwind_next;
>      pthread_attr_getaffinity_np;
>      pthread_barrierattr_getpshared;
>      pthread_condattr_getclock;
> @@ -412,6 +413,5 @@ libpthread {
>      __pthread_clock_settime;
>      __pthread_get_minstack;
>      __pthread_initialize_minimal;
> -    __pthread_unwind;
>    }
>  }

Ok.

> diff --git a/nptl/forward.c b/nptl/forward.c
> index 0b607436d4..7a7f54f9d9 100644
> --- a/nptl/forward.c
> +++ b/nptl/forward.c
> @@ -123,9 +123,3 @@ FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
>  strong_alias (__pthread_setcancelstate, pthread_setcancelstate)
>  
>  FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
> -
> -FORWARD_NORETURN (__pthread_unwind,
> -                  void attribute_hidden __attribute ((noreturn))
> -                  __cleanup_fct_attribute attribute_compat_text_section,
> -                  (__pthread_unwind_buf_t *buf), (buf),
> -                  __safe_fatal ())

Ok.

> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index c2e02b1bf2..d30e8a9bdf 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -95,7 +95,6 @@ static const struct pthread_functions pthread_functions =
>      .ptr___pthread_getspecific = __pthread_getspecific,
>      .ptr___pthread_setspecific = __pthread_setspecific,
>      .ptr_nthreads = &__nptl_nthreads,
> -    .ptr___pthread_unwind = &__pthread_unwind,
>      .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
>      .ptr__nptl_setxid = __nptl_setxid,
>      .ptr_set_robust = __nptl_set_robust

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 9f2990217c..f78bf03a52 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -271,19 +271,21 @@ extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
>       weak_function
>  #endif
>       ;
> +libc_hidden_proto (__pthread_unwind)
>  extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
>       __cleanup_fct_attribute __attribute ((__noreturn__))
>  #ifndef SHARED
>       weak_function
>  #endif
>       ;
> +/* NB: No hidden proto for __pthread_unwind_next: inside glibc, the
> +   legacy unwinding mechanism is used.  */
> +
> +#if IS_IN (libpthread)
>  extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
>       __cleanup_fct_attribute;
>  extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
>       __cleanup_fct_attribute;
> -#if IS_IN (libpthread)
> -hidden_proto (__pthread_unwind)
> -hidden_proto (__pthread_unwind_next)
>  hidden_proto (__pthread_register_cancel)
>  hidden_proto (__pthread_unregister_cancel)
>  # ifdef SHARED

Ok.

> diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
> index a011d72fa1..060484cdc8 100644
> --- a/nptl/pthread_cancel.c
> +++ b/nptl/pthread_cancel.c
> @@ -23,6 +23,9 @@
>  #include <atomic.h>
>  #include <sysdep.h>
>  #include <unistd.h>
> +#include <unwind-link.h>
> +#include <stdio.h>
> +#include <gnu/lib-names.h>
>  
>  int
>  __pthread_cancel (pthread_t th)
> @@ -36,7 +39,12 @@ __pthread_cancel (pthread_t th)
>  
>  #ifdef SHARED
>    /* Trigger an error if libgcc_s cannot be loaded.  */
> -  __pthread_unwind_link_get ();
> +  {
> +    struct unwind_link *unwind_link = __libc_unwind_link_get ();
> +    if (unwind_link == NULL)
> +      __libc_fatal (LIBGCC_S_SO
> +		    " must be installed for pthread_cancel to work\n");
> +  }

Maybe add a inline function for this since it is used on multiple places?

>  #endif
>    int result = 0;
>    int oldval;

Ok.

> diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c
> index 4afc406268..aed8c12e17 100644
> --- a/nptl/pthread_exit.c
> +++ b/nptl/pthread_exit.c
> @@ -18,11 +18,20 @@
>  
>  #include <stdlib.h>
>  #include "pthreadP.h"
> -
> +#include <unwind-link.h>
> +#include <stdio.h>
> +#include <gnu/lib-names.h>
>  
>  void
>  __pthread_exit (void *value)
>  {
> +  {
> +    struct unwind_link *unwind_link = __libc_unwind_link_get ();
> +    if (unwind_link == NULL)
> +      __libc_fatal (LIBGCC_S_SO
> +                    " must be installed for pthread_exit to work\n");
> +  }
> +
>    THREAD_SETMEM (THREAD_SELF, result, value);
>  
>    __do_cancel ();

Ok.

> diff --git a/nptl/unwind.c b/nptl/unwind.c
> index 9c7ed7d7ca..25a2ca32e6 100644
> --- a/nptl/unwind.c
> +++ b/nptl/unwind.c
> @@ -25,6 +25,7 @@
>  #include "pthreadP.h"
>  #include <libc-diag.h>
>  #include <jmpbuf-unwind.h>
> +#include <shlib-compat.h>
>  
>  #ifdef _STACK_GROWS_DOWN
>  # define FRAME_LEFT(frame, other, adj) \
> @@ -134,15 +135,20 @@ __pthread_unwind (__pthread_unwind_buf_t *buf)
>    /* We better do not get here.  */
>    abort ();
>  }
> -hidden_def (__pthread_unwind)
> -
> +libc_hidden_def (__pthread_unwind)
>  
>  void
>  __cleanup_fct_attribute __attribute ((noreturn))
> -__pthread_unwind_next (__pthread_unwind_buf_t *buf)
> +___pthread_unwind_next (__pthread_unwind_buf_t *buf)
>  {
>    struct pthread_unwind_buf *ibuf = (struct pthread_unwind_buf *) buf;
>  
>    __pthread_unwind ((__pthread_unwind_buf_t *) ibuf->priv.data.prev);
>  }
> -hidden_def (__pthread_unwind_next)
> +versioned_symbol (libc, ___pthread_unwind_next, __pthread_unwind_next,
> +		  GLIBC_2_34);
> +#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
> +strong_alias (___pthread_unwind_next, __pthread_unwind_next_alias)
> +compat_symbol (libc, __pthread_unwind_next_alias, __pthread_unwind_next,
> +	       GLIBC_2_3_3);
> +#endif

Ok.

> diff --git a/setjmp/Versions b/setjmp/Versions
> index 2baa49ae8a..3c7cf87780 100644
> --- a/setjmp/Versions
> +++ b/setjmp/Versions
> @@ -9,8 +9,4 @@ libc {
>      # s*
>      setjmp;
>    }
> -  GLIBC_PRIVATE {
> -    # helper functions
> -    __libc_longjmp; __libc_siglongjmp;
> -  }
>  }

Ok.

> diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
> index ad2042b93a..fb4164f0d9 100644
> --- a/sysdeps/arm/Makefile
> +++ b/sysdeps/arm/Makefile
> @@ -63,8 +63,3 @@ ifeq ($(subdir),rt)
>  librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
>  librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
>  endif
> -
> -ifeq ($(subdir),nptl)
> -libpthread-sysdep_routines += pt-arm-unwind-resume
> -libpthread-shared-only-routines += pt-arm-unwind-resume
> -endif

Ok.

> diff --git a/sysdeps/arm/nptl/unwind-forcedunwind.c b/sysdeps/arm/nptl/unwind-forcedunwind.c
> deleted file mode 100644
> index 61db34c0b5..0000000000
> --- a/sysdeps/arm/nptl/unwind-forcedunwind.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/* Unwinder function forwarders for libpthread.  Arm version.
> -   Copyright (C) 2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public License as
> -   published by the Free Software Foundation; either version 2.1 of the
> -   License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; see the file COPYING.LIB.  If
> -   not, see <https://www.gnu.org/licenses/>.  */
> -
> -#include <sysdeps/nptl/unwind-forcedunwind.c>
> -
> -void *
> -__unwind_link_get_resume (void)
> -{
> -  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume);
> -}

Ok.

> diff --git a/sysdeps/arm/pt-arm-unwind-resume.S b/sysdeps/arm/pt-arm-unwind-resume.S
> deleted file mode 100644
> index c056eb38d0..0000000000
> --- a/sysdeps/arm/pt-arm-unwind-resume.S
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* _Unwind_Resume wrapper for ARM EABI.
> -   Copyright (C) 2015-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public License as
> -   published by the Free Software Foundation; either version 2.1 of the
> -   License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library.  If not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -/* The implementation in libpthread is identical to the one in libc.  */
> -#include <sysdeps/arm/arm-unwind-resume.S>

Ok.

> diff --git a/sysdeps/generic/unwind-resume.c b/sysdeps/generic/unwind-resume.c
> index 9e63762bf1..66dbb67e81 100644
> --- a/sysdeps/generic/unwind-resume.c
> +++ b/sysdeps/generic/unwind-resume.c
> @@ -44,3 +44,17 @@ __gcc_personality_v0 PERSONALITY_PROTO
>  {
>    return UNWIND_LINK_PTR (link (), personality) PERSONALITY_ARGS;
>  }
> +
> +_Unwind_Reason_Code
> +_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
> +                      void *stop_argument)
> +{
> +  return UNWIND_LINK_PTR (link (), _Unwind_ForcedUnwind)
> +    (exc, stop, stop_argument);
> +}
> +
> +_Unwind_Word
> +_Unwind_GetCFA (struct _Unwind_Context *context)
> +{
> +  return UNWIND_LINK_PTR (link (), _Unwind_GetCFA) (context);
> +}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c b/sysdeps/ia64/unwind-resume.c
> similarity index 87%
> rename from sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
> rename to sysdeps/ia64/unwind-resume.c
> index eaed6cf2ef..f8cf447162 100644
> --- a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
> +++ b/sysdeps/ia64/unwind-resume.c
> @@ -16,11 +16,10 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <sysdeps/nptl/unwind-forcedunwind.c>
> +#include <sysdeps/generic/unwind-resume.c>
>  
>  _Unwind_Word
>  _Unwind_GetBSP (struct _Unwind_Context *context)
>  {
> -  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetBSP)
> -    (context);
> +  return UNWIND_LINK_PTR (link (), _Unwind_GetBSP) (context);
>  }

Ok.

> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 6ef7602cb9..280655fe40 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -57,8 +57,6 @@ struct pthread_functions
>    int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
>  #define HAVE_PTR_NTHREADS
>    unsigned int *ptr_nthreads;
> -  void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
> -       __attribute ((noreturn)) __cleanup_fct_attribute;
>    void (*ptr__nptl_deallocate_tsd) (void);
>    int (*ptr__nptl_setxid) (struct xid_command *);
>    void (*ptr_set_robust) (struct pthread *);

Ok.

> diff --git a/sysdeps/nptl/unwind-forcedunwind.c b/sysdeps/nptl/unwind-forcedunwind.c
> deleted file mode 100644
> index c0234670cf..0000000000
> --- a/sysdeps/nptl/unwind-forcedunwind.c
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Jakub Jelinek <jakub@redhat.com>.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public License as
> -   published by the Free Software Foundation; either version 2.1 of the
> -   License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; see the file COPYING.LIB.  If
> -   not, see <https://www.gnu.org/licenses/>.  */
> -
> -#include <stdio.h>
> -#include <unwind-link.h>
> -#include <pthreadP.h>
> -#include <sysdep.h>
> -#include <gnu/lib-names.h>
> -#include <unwind-resume.h>
> -
> -struct unwind_link *
> -__pthread_unwind_link_get (void)
> -{
> -  struct unwind_link *unwind_link = __libc_unwind_link_get ();
> -  if (unwind_link == NULL)
> -    __libc_fatal (LIBGCC_S_SO
> -		  " must be installed for pthread_cancel to work\n");
> -  return unwind_link;
> -}
> -
> -#if !HAVE_ARCH_UNWIND_RESUME
> -void
> -_Unwind_Resume (struct _Unwind_Exception *exc)
> -{
> -  UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume) (exc);
> -}
> -#endif
> -
> -_Unwind_Reason_Code
> -__gcc_personality_v0 PERSONALITY_PROTO
> -{
> -  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), personality)
> -    PERSONALITY_ARGS;
> -}
> -
> -_Unwind_Reason_Code
> -_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
> -		      void *stop_argument)
> -{
> -  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_ForcedUnwind)
> -    (exc, stop, stop_argument);
> -}
> -
> -_Unwind_Word
> -_Unwind_GetCFA (struct _Unwind_Context *context)
> -{
> -  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetCFA)
> -    (context);
> -}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 8a11066f9e..a4eec97fd0 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -340,6 +340,7 @@ GLIBC_2.17 __progname D 0x8
>  GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_once F
> +GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
>  GLIBC_2.17 __pwrite64 F
>  GLIBC_2.17 __rawmemchr F
> @@ -2183,5 +2184,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index a57e807cd0..03f9309528 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_setspecific F
>  GLIBC_2.17 __pthread_unregister_cancel F
>  GLIBC_2.17 __pthread_unregister_cancel_restore F
> -GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __pwrite64 F
>  GLIBC_2.17 __read F
>  GLIBC_2.17 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index b62c855163..cfd43859bc 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2154,6 +2154,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2264,6 +2265,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 059ae76802..62c3734ee1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index cd549c654b..f4a38131a0 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -329,6 +329,7 @@ GLIBC_2.32 __progname D 0x4
>  GLIBC_2.32 __progname_full D 0x4
>  GLIBC_2.32 __pthread_cleanup_routine F
>  GLIBC_2.32 __pthread_once F
> +GLIBC_2.32 __pthread_unwind_next F
>  GLIBC_2.32 __ptsname_r_chk F
>  GLIBC_2.32 __pwrite64 F
>  GLIBC_2.32 __rawmemchr F
> @@ -1943,5 +1944,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 55970eb845..43c2308c10 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -34,7 +34,6 @@ GLIBC_2.32 __pthread_rwlock_wrlock F
>  GLIBC_2.32 __pthread_setspecific F
>  GLIBC_2.32 __pthread_unregister_cancel F
>  GLIBC_2.32 __pthread_unregister_cancel_restore F
> -GLIBC_2.32 __pthread_unwind_next F
>  GLIBC_2.32 __pwrite64 F
>  GLIBC_2.32 __read F
>  GLIBC_2.32 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 03e5389852..9e6b989de2 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -159,6 +159,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -490,6 +491,7 @@ GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 2e3d644ed9..9e897ccaac 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
> -GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __read F
>  GLIBC_2.4 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index ac2fcf7b14..319cf8474a 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -156,6 +156,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -487,6 +488,7 @@ GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 2e3d644ed9..9e897ccaac 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
> -GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __read F
>  GLIBC_2.4 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 336a59110e..a9094c6575 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -333,6 +333,7 @@ GLIBC_2.29 __progname D 0x4
>  GLIBC_2.29 __progname_full D 0x4
>  GLIBC_2.29 __pthread_cleanup_routine F
>  GLIBC_2.29 __pthread_once F
> +GLIBC_2.29 __pthread_unwind_next F
>  GLIBC_2.29 __ptsname_r_chk F
>  GLIBC_2.29 __pwrite64 F
>  GLIBC_2.29 __rawmemchr F
> @@ -2127,5 +2128,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 78e69d3e06..02ecea2de5 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -34,7 +34,6 @@ GLIBC_2.29 __pthread_rwlock_wrlock F
>  GLIBC_2.29 __pthread_setspecific F
>  GLIBC_2.29 __pthread_unregister_cancel F
>  GLIBC_2.29 __pthread_unregister_cancel_restore F
> -GLIBC_2.29 __pthread_unwind_next F
>  GLIBC_2.29 __pwrite64 F
>  GLIBC_2.29 __read F
>  GLIBC_2.29 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 6d40c40268..63e458dc99 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2003,6 +2003,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2085,6 +2086,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 96c70fb45e..98c5811d37 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 2022f82d81..428ff25c25 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2168,6 +2168,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2252,6 +2253,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index f2be012ea9..13df0ccca6 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile
> index 97fc7df0b1..f6a08d15d0 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Makefile
> +++ b/sysdeps/unix/sysv/linux/ia64/Makefile
> @@ -23,7 +23,7 @@ librt-shared-only-routines += rt-sysdep
>  endif
>  
>  ifeq ($(subdir),nptl)
> -libpthread-sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
> +sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
>  endif
>  
>  ifeq ($(subdir),conform)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index b9eeaabb01..3556b0eac4 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2035,6 +2035,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2117,6 +2118,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 3698acd3e9..78c683810a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 5a099fb3d0..245ae8da1f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -160,6 +160,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _Exit F
> @@ -476,6 +477,7 @@ GLIBC_2.4 __progname D 0x4
>  GLIBC_2.4 __progname_full D 0x4
>  GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __rawmemchr F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 2e3d644ed9..9e897ccaac 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -69,7 +69,6 @@ GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
> -GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __pwrite64 F
>  GLIBC_2.4 __read F
>  GLIBC_2.4 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index f81c9cc523..fba3ac0138 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2112,6 +2112,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2197,6 +2198,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index f2be012ea9..13df0ccca6 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index ce50516bc6..6a6d813b2c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -341,6 +341,7 @@ GLIBC_2.18 __progname D 0x4
>  GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_once F
> +GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
>  GLIBC_2.18 __pwrite64 F
>  GLIBC_2.18 __rawmemchr F
> @@ -2178,5 +2179,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 73c70d5c87..51975cabbb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_setspecific F
>  GLIBC_2.18 __pthread_unregister_cancel F
>  GLIBC_2.18 __pthread_unregister_cancel_restore F
> -GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __pwrite64 F
>  GLIBC_2.18 __read F
>  GLIBC_2.18 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 37ecc7c967..7138bb3fe7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -341,6 +341,7 @@ GLIBC_2.18 __progname D 0x4
>  GLIBC_2.18 __progname_full D 0x4
>  GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_once F
> +GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
>  GLIBC_2.18 __pwrite64 F
>  GLIBC_2.18 __rawmemchr F
> @@ -2175,5 +2176,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 73c70d5c87..51975cabbb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_setspecific F
>  GLIBC_2.18 __pthread_unregister_cancel F
>  GLIBC_2.18 __pthread_unregister_cancel_restore F
> -GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __pwrite64 F
>  GLIBC_2.18 __read F
>  GLIBC_2.18 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 6d50fcc64f..d070746259 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2086,6 +2086,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2168,6 +2169,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index faa1ad9d1c..8829753707 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -196,7 +196,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index b4e05e270d..d40d0079fc 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2084,6 +2084,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2166,6 +2167,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index faa1ad9d1c..8829753707 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -196,7 +196,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 71d184c2aa..d56b5a25cb 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2092,6 +2092,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x200
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2174,6 +2175,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 1e792c6705..d334efb37c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2085,6 +2085,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x400
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2168,6 +2169,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 5afc3e8022..4422b5ca92 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -378,6 +378,7 @@ GLIBC_2.21 __progname D 0x4
>  GLIBC_2.21 __progname_full D 0x4
>  GLIBC_2.21 __pthread_cleanup_routine F
>  GLIBC_2.21 __pthread_once F
> +GLIBC_2.21 __pthread_unwind_next F
>  GLIBC_2.21 __ptsname_r_chk F
>  GLIBC_2.21 __pwrite64 F
>  GLIBC_2.21 __rawmemchr F
> @@ -2216,5 +2217,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 5db41bc85b..f370adca8d 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.21 __pthread_rwlock_wrlock F
>  GLIBC_2.21 __pthread_setspecific F
>  GLIBC_2.21 __pthread_unregister_cancel F
>  GLIBC_2.21 __pthread_unregister_cancel_restore F
> -GLIBC_2.21 __pthread_unwind_next F
>  GLIBC_2.21 __pwrite64 F
>  GLIBC_2.21 __read F
>  GLIBC_2.21 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 4bfae8faa6..8bd6dd5b48 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2116,6 +2116,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
> @@ -2224,6 +2225,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index 995c88cbce..e354162563 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index dc102f7f29..6bf7342f4c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2149,6 +2149,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 getcontext F
>  GLIBC_2.3.3 gnu_dev_major F
> @@ -2257,6 +2258,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 9f019c4eac..2d616e24cd 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1984,6 +1984,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2087,6 +2088,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 07428bd3d6..3bedf42d7a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -186,7 +186,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index f1217ffca5..247c8f77cf 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -426,6 +426,7 @@ GLIBC_2.17 __progname D 0x8
>  GLIBC_2.17 __progname_full D 0x8
>  GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_once F
> +GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
>  GLIBC_2.17 __pwrite64 F
>  GLIBC_2.17 __rawmemchr F
> @@ -2378,5 +2379,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index a57e807cd0..03f9309528 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_setspecific F
>  GLIBC_2.17 __pthread_unregister_cancel F
>  GLIBC_2.17 __pthread_unregister_cancel_restore F
> -GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __pwrite64 F
>  GLIBC_2.17 __read F
>  GLIBC_2.17 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index afaabf996e..1af16292a7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -326,6 +326,7 @@ GLIBC_2.33 __progname D 0x4
>  GLIBC_2.33 __progname_full D 0x4
>  GLIBC_2.33 __pthread_cleanup_routine F
>  GLIBC_2.33 __pthread_once F
> +GLIBC_2.33 __pthread_unwind_next F
>  GLIBC_2.33 __ptsname_r_chk F
>  GLIBC_2.33 __pwrite64 F
>  GLIBC_2.33 __rawmemchr F
> @@ -1945,5 +1946,6 @@ GLIBC_2.33 wscanf F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index ddf52b427a..a9958f0b67 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -34,7 +34,6 @@ GLIBC_2.33 __pthread_rwlock_wrlock F
>  GLIBC_2.33 __pthread_setspecific F
>  GLIBC_2.33 __pthread_unregister_cancel F
>  GLIBC_2.33 __pthread_unregister_cancel_restore F
> -GLIBC_2.33 __pthread_unwind_next F
>  GLIBC_2.33 __pwrite64 F
>  GLIBC_2.33 __read F
>  GLIBC_2.33 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 28563980d5..54038ac5ba 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -337,6 +337,7 @@ GLIBC_2.27 __progname D 0x8
>  GLIBC_2.27 __progname_full D 0x8
>  GLIBC_2.27 __pthread_cleanup_routine F
>  GLIBC_2.27 __pthread_once F
> +GLIBC_2.27 __pthread_unwind_next F
>  GLIBC_2.27 __ptsname_r_chk F
>  GLIBC_2.27 __pwrite64 F
>  GLIBC_2.27 __rawmemchr F
> @@ -2145,5 +2146,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index b12ec34091..0c6ae5b20c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.27 __pthread_rwlock_wrlock F
>  GLIBC_2.27 __pthread_setspecific F
>  GLIBC_2.27 __pthread_unregister_cancel F
>  GLIBC_2.27 __pthread_unregister_cancel_restore F
> -GLIBC_2.27 __pthread_unwind_next F
>  GLIBC_2.27 __pwrite64 F
>  GLIBC_2.27 __read F
>  GLIBC_2.27 __res_state F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 6cfde17d64..1e896254ef 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2125,6 +2125,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2222,6 +2223,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 738e9ab535..d72648c9dd 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -198,7 +198,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 16b2483535..3cf10b2ab2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2029,6 +2029,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2123,6 +2124,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 13a2e8ef91..09c03d66b8 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -190,7 +190,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index a6fd6eb894..f7bded858a 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2007,6 +2007,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2092,6 +2093,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 96c70fb45e..98c5811d37 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index f4ba7b4ee8..c8ec299eac 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2007,6 +2007,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2089,6 +2090,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 96c70fb45e..98c5811d37 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 70c2a92dfc..64529443e9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2119,6 +2119,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x104
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2213,6 +2214,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 _IO_fprintf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 059ae76802..62c3734ee1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -197,7 +197,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 6f323b3705..5c5ad0af63 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2058,6 +2058,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2140,6 +2141,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 3698acd3e9..78c683810a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -189,7 +189,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_attr_setstack F
>  GLIBC_2.3.3 pthread_attr_setstacksize F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 35503c7361..1805cd6b9b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2016,6 +2016,7 @@ GLIBC_2.3.2 pthread_cond_timedwait F
>  GLIBC_2.3.2 pthread_cond_wait F
>  GLIBC_2.3.2 strptime_l F
>  GLIBC_2.3.3 __pthread_cleanup_routine F
> +GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 _sys_siglist D 0x208
>  GLIBC_2.3.3 gnu_dev_major F
>  GLIBC_2.3.3 gnu_dev_makedev F
> @@ -2099,6 +2100,7 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
>  GLIBC_2.4 __confstr_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 7636fde610..31bb6837f9 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -188,7 +188,6 @@ GLIBC_2.3.3 __pthread_register_cancel F
>  GLIBC_2.3.3 __pthread_register_cancel_defer F
>  GLIBC_2.3.3 __pthread_unregister_cancel F
>  GLIBC_2.3.3 __pthread_unregister_cancel_restore F
> -GLIBC_2.3.3 __pthread_unwind_next F
>  GLIBC_2.3.3 pthread_attr_getaffinity_np F
>  GLIBC_2.3.3 pthread_barrierattr_getpshared F
>  GLIBC_2.3.3 pthread_condattr_getclock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 3af0b4def9..780679cb52 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -341,6 +341,7 @@ GLIBC_2.16 __progname D 0x4
>  GLIBC_2.16 __progname_full D 0x4
>  GLIBC_2.16 __pthread_cleanup_routine F
>  GLIBC_2.16 __pthread_once F
> +GLIBC_2.16 __pthread_unwind_next F
>  GLIBC_2.16 __ptsname_r_chk F
>  GLIBC_2.16 __pwrite64 F
>  GLIBC_2.16 __rawmemchr F
> @@ -2197,5 +2198,6 @@ GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index d15de68e7e..73719e6d11 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -35,7 +35,6 @@ GLIBC_2.16 __pthread_rwlock_wrlock F
>  GLIBC_2.16 __pthread_setspecific F
>  GLIBC_2.16 __pthread_unregister_cancel F
>  GLIBC_2.16 __pthread_unregister_cancel_restore F
> -GLIBC_2.16 __pthread_unwind_next F
>  GLIBC_2.16 __pwrite64 F
>  GLIBC_2.16 __read F
>  GLIBC_2.16 __res_state F
> 

Ok.
Florian Weimer March 17, 2021, 7:54 p.m. UTC | #2
* Adhemerval Zanella via Libc-alpha:

> On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
>> It's necessary to stub out __libc_disable_asynccancel and
>> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
>> direct references to the unwinder result in symbol conflicts when the
>> rtld exception handling from libc is linked in during the construction
>> of librtld.map.
>
> From where exactly these come from? The *assynccancel should not be
> generated for rtld-* objects.

I think what happens is this: The libc.so objects that are used as a
starting point have them, so the reducer tries to link in those symbols,
and that fails with symbol conflicts.

>> diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
>> index a011d72fa1..060484cdc8 100644
>> --- a/nptl/pthread_cancel.c
>> +++ b/nptl/pthread_cancel.c
>> @@ -23,6 +23,9 @@
>>  #include <atomic.h>
>>  #include <sysdep.h>
>>  #include <unistd.h>
>> +#include <unwind-link.h>
>> +#include <stdio.h>
>> +#include <gnu/lib-names.h>
>>  
>>  int
>>  __pthread_cancel (pthread_t th)
>> @@ -36,7 +39,12 @@ __pthread_cancel (pthread_t th)
>>  
>>  #ifdef SHARED
>>    /* Trigger an error if libgcc_s cannot be loaded.  */
>> -  __pthread_unwind_link_get ();
>> +  {
>> +    struct unwind_link *unwind_link = __libc_unwind_link_get ();
>> +    if (unwind_link == NULL)
>> +      __libc_fatal (LIBGCC_S_SO
>> +		    " must be installed for pthread_cancel to work\n");
>> +  }
>
> Maybe add a inline function for this since it is used on multiple places?

The error message is slightly different because the function name is
different.  __libc_fatal doesn't do format processing, so it has to be
one literal.  So there isn't that much commonality.

Thanks for the review.

Florian
Adhemerval Zanella March 17, 2021, 8:16 p.m. UTC | #3
On 17/03/2021 16:54, Florian Weimer wrote:
> * Adhemerval Zanella via Libc-alpha:
> 
>> On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
>>> It's necessary to stub out __libc_disable_asynccancel and
>>> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
>>> direct references to the unwinder result in symbol conflicts when the
>>> rtld exception handling from libc is linked in during the construction
>>> of librtld.map.
>>
>> From where exactly these come from? The *assynccancel should not be
>> generated for rtld-* objects.
> 
> I think what happens is this: The libc.so objects that are used as a
> starting point have them, so the reducer tries to link in those symbols,
> and that fails with symbol conflicts.

Right, but why doesn't it happen with other symbols that might be
pulled as well? It not a blocker, but I am trying to understand why
we are seeing this behavior with this change.
Florian Weimer March 17, 2021, 8:33 p.m. UTC | #4
* Adhemerval Zanella:

> On 17/03/2021 16:54, Florian Weimer wrote:
>> * Adhemerval Zanella via Libc-alpha:
>> 
>>> On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
>>>> It's necessary to stub out __libc_disable_asynccancel and
>>>> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
>>>> direct references to the unwinder result in symbol conflicts when the
>>>> rtld exception handling from libc is linked in during the construction
>>>> of librtld.map.
>>>
>>> From where exactly these come from? The *assynccancel should not be
>>> generated for rtld-* objects.
>> 
>> I think what happens is this: The libc.so objects that are used as a
>> starting point have them, so the reducer tries to link in those symbols,
>> and that fails with symbol conflicts.
>
> Right, but why doesn't it happen with other symbols that might be
> pulled as well? It not a blocker, but I am trying to understand why
> we are seeing this behavior with this change.

Ah, the explanation is quite trivial: We used to have a forwarder for
__pthread_unwind, and that acted as a firewall for the rtld symbol set
discovery.  Now the forwarder is gone, so the implementation of
__pthread_unwind starts to matter.

Maybe I should stub out __pthread_unwind instead?  But doing it for the
cancellation feels more natural.

Thanks,
Florian
Adhemerval Zanella March 17, 2021, 8:44 p.m. UTC | #5
On 17/03/2021 17:33, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> On 17/03/2021 16:54, Florian Weimer wrote:
>>> * Adhemerval Zanella via Libc-alpha:
>>>
>>>> On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
>>>>> It's necessary to stub out __libc_disable_asynccancel and
>>>>> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
>>>>> direct references to the unwinder result in symbol conflicts when the
>>>>> rtld exception handling from libc is linked in during the construction
>>>>> of librtld.map.
>>>>
>>>> From where exactly these come from? The *assynccancel should not be
>>>> generated for rtld-* objects.
>>>
>>> I think what happens is this: The libc.so objects that are used as a
>>> starting point have them, so the reducer tries to link in those symbols,
>>> and that fails with symbol conflicts.
>>
>> Right, but why doesn't it happen with other symbols that might be
>> pulled as well? It not a blocker, but I am trying to understand why
>> we are seeing this behavior with this change.
> 
> Ah, the explanation is quite trivial: We used to have a forwarder for
> __pthread_unwind, and that acted as a firewall for the rtld symbol set
> discovery.  Now the forwarder is gone, so the implementation of
> __pthread_unwind starts to matter.
> 
> Maybe I should stub out __pthread_unwind instead?  But doing it for the
> cancellation feels more natural.

The cancellation stub are fine, the long term goal is to remove them
anyway.
diff mbox series

Patch

diff --git a/elf/Makefile b/elf/Makefile
index 3b8e13e066..936d4cf276 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -519,6 +519,8 @@  $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
 # discovery mechanism is not compatible with the libc implementation
 # when compiled for libc.
 rtld-stubbed-symbols = \
+  __libc_disable_asynccancel \
+  __libc_enable_asynccancel \
   calloc \
   free \
   malloc \
diff --git a/include/setjmp.h b/include/setjmp.h
index 0a8e4d2eaf..a3936e611d 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -20,9 +20,9 @@  extern int __sigjmp_save (jmp_buf __env, int __savemask);
 extern void _longjmp_unwind (jmp_buf env, int val);
 
 extern void __libc_siglongjmp (sigjmp_buf env, int val)
-	  __attribute__ ((noreturn));
+	  __attribute__ ((noreturn)) attribute_hidden;
 extern void __libc_longjmp (sigjmp_buf env, int val)
-     __attribute__ ((noreturn));
+     __attribute__ ((noreturn)) attribute_hidden;
 
 libc_hidden_proto (_setjmp)
 libc_hidden_proto (__sigsetjmp)
diff --git a/nptl/Makefile b/nptl/Makefile
index 910d8c7ebf..c1ade91a0b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -80,6 +80,7 @@  routines = \
   pthread_self \
   pthread_setschedparam \
   pthread_sigmask \
+  unwind \
 
 shared-only-routines = forward
 static-only-routines = pthread_atfork
@@ -229,15 +230,12 @@  libpthread-routines = \
   sem_wait \
   sigaction \
   tpp \
-  unwind \
-  unwind-forcedunwind \
   vars \
   version \
 
 libpthread-shared-only-routines = \
   pt-allocrtsig \
   pt-interp \
-  unwind-forcedunwind \
   version \
 
 # Since cancellation handling is in large parts handled using exceptions
diff --git a/nptl/Versions b/nptl/Versions
index 49133585e4..8f1cd3f7c4 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -56,6 +56,7 @@  libc {
   }
   GLIBC_2.3.3 {
     __pthread_cleanup_routine;
+    __pthread_unwind_next;
     pthread_attr_setaffinity_np;
     pthread_getaffinity_np;
   }
@@ -118,6 +119,7 @@  libc {
     __pthread_cond_init; # Used by the C11 threads.
     __pthread_force_elision;
     __pthread_getattr_default_np;
+    __pthread_unwind;
   }
 }
 
@@ -323,7 +325,6 @@  libpthread {
     __pthread_register_cancel_defer;
     __pthread_unregister_cancel;
     __pthread_unregister_cancel_restore;
-    __pthread_unwind_next;
     pthread_attr_getaffinity_np;
     pthread_barrierattr_getpshared;
     pthread_condattr_getclock;
@@ -412,6 +413,5 @@  libpthread {
     __pthread_clock_settime;
     __pthread_get_minstack;
     __pthread_initialize_minimal;
-    __pthread_unwind;
   }
 }
diff --git a/nptl/forward.c b/nptl/forward.c
index 0b607436d4..7a7f54f9d9 100644
--- a/nptl/forward.c
+++ b/nptl/forward.c
@@ -123,9 +123,3 @@  FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
 strong_alias (__pthread_setcancelstate, pthread_setcancelstate)
 
 FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
-
-FORWARD_NORETURN (__pthread_unwind,
-                  void attribute_hidden __attribute ((noreturn))
-                  __cleanup_fct_attribute attribute_compat_text_section,
-                  (__pthread_unwind_buf_t *buf), (buf),
-                  __safe_fatal ())
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index c2e02b1bf2..d30e8a9bdf 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -95,7 +95,6 @@  static const struct pthread_functions pthread_functions =
     .ptr___pthread_getspecific = __pthread_getspecific,
     .ptr___pthread_setspecific = __pthread_setspecific,
     .ptr_nthreads = &__nptl_nthreads,
-    .ptr___pthread_unwind = &__pthread_unwind,
     .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
     .ptr__nptl_setxid = __nptl_setxid,
     .ptr_set_robust = __nptl_set_robust
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 9f2990217c..f78bf03a52 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -271,19 +271,21 @@  extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
      weak_function
 #endif
      ;
+libc_hidden_proto (__pthread_unwind)
 extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
      __cleanup_fct_attribute __attribute ((__noreturn__))
 #ifndef SHARED
      weak_function
 #endif
      ;
+/* NB: No hidden proto for __pthread_unwind_next: inside glibc, the
+   legacy unwinding mechanism is used.  */
+
+#if IS_IN (libpthread)
 extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
      __cleanup_fct_attribute;
 extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
      __cleanup_fct_attribute;
-#if IS_IN (libpthread)
-hidden_proto (__pthread_unwind)
-hidden_proto (__pthread_unwind_next)
 hidden_proto (__pthread_register_cancel)
 hidden_proto (__pthread_unregister_cancel)
 # ifdef SHARED
diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
index a011d72fa1..060484cdc8 100644
--- a/nptl/pthread_cancel.c
+++ b/nptl/pthread_cancel.c
@@ -23,6 +23,9 @@ 
 #include <atomic.h>
 #include <sysdep.h>
 #include <unistd.h>
+#include <unwind-link.h>
+#include <stdio.h>
+#include <gnu/lib-names.h>
 
 int
 __pthread_cancel (pthread_t th)
@@ -36,7 +39,12 @@  __pthread_cancel (pthread_t th)
 
 #ifdef SHARED
   /* Trigger an error if libgcc_s cannot be loaded.  */
-  __pthread_unwind_link_get ();
+  {
+    struct unwind_link *unwind_link = __libc_unwind_link_get ();
+    if (unwind_link == NULL)
+      __libc_fatal (LIBGCC_S_SO
+		    " must be installed for pthread_cancel to work\n");
+  }
 #endif
   int result = 0;
   int oldval;
diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c
index 4afc406268..aed8c12e17 100644
--- a/nptl/pthread_exit.c
+++ b/nptl/pthread_exit.c
@@ -18,11 +18,20 @@ 
 
 #include <stdlib.h>
 #include "pthreadP.h"
-
+#include <unwind-link.h>
+#include <stdio.h>
+#include <gnu/lib-names.h>
 
 void
 __pthread_exit (void *value)
 {
+  {
+    struct unwind_link *unwind_link = __libc_unwind_link_get ();
+    if (unwind_link == NULL)
+      __libc_fatal (LIBGCC_S_SO
+                    " must be installed for pthread_exit to work\n");
+  }
+
   THREAD_SETMEM (THREAD_SELF, result, value);
 
   __do_cancel ();
diff --git a/nptl/unwind.c b/nptl/unwind.c
index 9c7ed7d7ca..25a2ca32e6 100644
--- a/nptl/unwind.c
+++ b/nptl/unwind.c
@@ -25,6 +25,7 @@ 
 #include "pthreadP.h"
 #include <libc-diag.h>
 #include <jmpbuf-unwind.h>
+#include <shlib-compat.h>
 
 #ifdef _STACK_GROWS_DOWN
 # define FRAME_LEFT(frame, other, adj) \
@@ -134,15 +135,20 @@  __pthread_unwind (__pthread_unwind_buf_t *buf)
   /* We better do not get here.  */
   abort ();
 }
-hidden_def (__pthread_unwind)
-
+libc_hidden_def (__pthread_unwind)
 
 void
 __cleanup_fct_attribute __attribute ((noreturn))
-__pthread_unwind_next (__pthread_unwind_buf_t *buf)
+___pthread_unwind_next (__pthread_unwind_buf_t *buf)
 {
   struct pthread_unwind_buf *ibuf = (struct pthread_unwind_buf *) buf;
 
   __pthread_unwind ((__pthread_unwind_buf_t *) ibuf->priv.data.prev);
 }
-hidden_def (__pthread_unwind_next)
+versioned_symbol (libc, ___pthread_unwind_next, __pthread_unwind_next,
+		  GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_34)
+strong_alias (___pthread_unwind_next, __pthread_unwind_next_alias)
+compat_symbol (libc, __pthread_unwind_next_alias, __pthread_unwind_next,
+	       GLIBC_2_3_3);
+#endif
diff --git a/setjmp/Versions b/setjmp/Versions
index 2baa49ae8a..3c7cf87780 100644
--- a/setjmp/Versions
+++ b/setjmp/Versions
@@ -9,8 +9,4 @@  libc {
     # s*
     setjmp;
   }
-  GLIBC_PRIVATE {
-    # helper functions
-    __libc_longjmp; __libc_siglongjmp;
-  }
 }
diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
index ad2042b93a..fb4164f0d9 100644
--- a/sysdeps/arm/Makefile
+++ b/sysdeps/arm/Makefile
@@ -63,8 +63,3 @@  ifeq ($(subdir),rt)
 librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
 librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
 endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += pt-arm-unwind-resume
-libpthread-shared-only-routines += pt-arm-unwind-resume
-endif
diff --git a/sysdeps/arm/nptl/unwind-forcedunwind.c b/sysdeps/arm/nptl/unwind-forcedunwind.c
deleted file mode 100644
index 61db34c0b5..0000000000
--- a/sysdeps/arm/nptl/unwind-forcedunwind.c
+++ /dev/null
@@ -1,25 +0,0 @@ 
-/* Unwinder function forwarders for libpthread.  Arm version.
-   Copyright (C) 2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <https://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/nptl/unwind-forcedunwind.c>
-
-void *
-__unwind_link_get_resume (void)
-{
-  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume);
-}
diff --git a/sysdeps/arm/pt-arm-unwind-resume.S b/sysdeps/arm/pt-arm-unwind-resume.S
deleted file mode 100644
index c056eb38d0..0000000000
--- a/sysdeps/arm/pt-arm-unwind-resume.S
+++ /dev/null
@@ -1,20 +0,0 @@ 
-/* _Unwind_Resume wrapper for ARM EABI.
-   Copyright (C) 2015-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-/* The implementation in libpthread is identical to the one in libc.  */
-#include <sysdeps/arm/arm-unwind-resume.S>
diff --git a/sysdeps/generic/unwind-resume.c b/sysdeps/generic/unwind-resume.c
index 9e63762bf1..66dbb67e81 100644
--- a/sysdeps/generic/unwind-resume.c
+++ b/sysdeps/generic/unwind-resume.c
@@ -44,3 +44,17 @@  __gcc_personality_v0 PERSONALITY_PROTO
 {
   return UNWIND_LINK_PTR (link (), personality) PERSONALITY_ARGS;
 }
+
+_Unwind_Reason_Code
+_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
+                      void *stop_argument)
+{
+  return UNWIND_LINK_PTR (link (), _Unwind_ForcedUnwind)
+    (exc, stop, stop_argument);
+}
+
+_Unwind_Word
+_Unwind_GetCFA (struct _Unwind_Context *context)
+{
+  return UNWIND_LINK_PTR (link (), _Unwind_GetCFA) (context);
+}
diff --git a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c b/sysdeps/ia64/unwind-resume.c
similarity index 87%
rename from sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
rename to sysdeps/ia64/unwind-resume.c
index eaed6cf2ef..f8cf447162 100644
--- a/sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
+++ b/sysdeps/ia64/unwind-resume.c
@@ -16,11 +16,10 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <sysdeps/nptl/unwind-forcedunwind.c>
+#include <sysdeps/generic/unwind-resume.c>
 
 _Unwind_Word
 _Unwind_GetBSP (struct _Unwind_Context *context)
 {
-  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetBSP)
-    (context);
+  return UNWIND_LINK_PTR (link (), _Unwind_GetBSP) (context);
 }
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 6ef7602cb9..280655fe40 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -57,8 +57,6 @@  struct pthread_functions
   int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
 #define HAVE_PTR_NTHREADS
   unsigned int *ptr_nthreads;
-  void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
-       __attribute ((noreturn)) __cleanup_fct_attribute;
   void (*ptr__nptl_deallocate_tsd) (void);
   int (*ptr__nptl_setxid) (struct xid_command *);
   void (*ptr_set_robust) (struct pthread *);
diff --git a/sysdeps/nptl/unwind-forcedunwind.c b/sysdeps/nptl/unwind-forcedunwind.c
deleted file mode 100644
index c0234670cf..0000000000
--- a/sysdeps/nptl/unwind-forcedunwind.c
+++ /dev/null
@@ -1,64 +0,0 @@ 
-/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <https://www.gnu.org/licenses/>.  */
-
-#include <stdio.h>
-#include <unwind-link.h>
-#include <pthreadP.h>
-#include <sysdep.h>
-#include <gnu/lib-names.h>
-#include <unwind-resume.h>
-
-struct unwind_link *
-__pthread_unwind_link_get (void)
-{
-  struct unwind_link *unwind_link = __libc_unwind_link_get ();
-  if (unwind_link == NULL)
-    __libc_fatal (LIBGCC_S_SO
-		  " must be installed for pthread_cancel to work\n");
-  return unwind_link;
-}
-
-#if !HAVE_ARCH_UNWIND_RESUME
-void
-_Unwind_Resume (struct _Unwind_Exception *exc)
-{
-  UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_Resume) (exc);
-}
-#endif
-
-_Unwind_Reason_Code
-__gcc_personality_v0 PERSONALITY_PROTO
-{
-  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), personality)
-    PERSONALITY_ARGS;
-}
-
-_Unwind_Reason_Code
-_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
-		      void *stop_argument)
-{
-  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_ForcedUnwind)
-    (exc, stop, stop_argument);
-}
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
-  return UNWIND_LINK_PTR (__pthread_unwind_link_get (), _Unwind_GetCFA)
-    (context);
-}
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 8a11066f9e..a4eec97fd0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -340,6 +340,7 @@  GLIBC_2.17 __progname D 0x8
 GLIBC_2.17 __progname_full D 0x8
 GLIBC_2.17 __pthread_cleanup_routine F
 GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __rawmemchr F
@@ -2183,5 +2184,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index a57e807cd0..03f9309528 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_setspecific F
 GLIBC_2.17 __pthread_unregister_cancel F
 GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __read F
 GLIBC_2.17 __res_state F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index b62c855163..cfd43859bc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2154,6 +2154,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2264,6 +2265,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 059ae76802..62c3734ee1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -197,7 +197,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index cd549c654b..f4a38131a0 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -329,6 +329,7 @@  GLIBC_2.32 __progname D 0x4
 GLIBC_2.32 __progname_full D 0x4
 GLIBC_2.32 __pthread_cleanup_routine F
 GLIBC_2.32 __pthread_once F
+GLIBC_2.32 __pthread_unwind_next F
 GLIBC_2.32 __ptsname_r_chk F
 GLIBC_2.32 __pwrite64 F
 GLIBC_2.32 __rawmemchr F
@@ -1943,5 +1944,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 55970eb845..43c2308c10 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -34,7 +34,6 @@  GLIBC_2.32 __pthread_rwlock_wrlock F
 GLIBC_2.32 __pthread_setspecific F
 GLIBC_2.32 __pthread_unregister_cancel F
 GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 __pthread_unwind_next F
 GLIBC_2.32 __pwrite64 F
 GLIBC_2.32 __read F
 GLIBC_2.32 __res_state F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 03e5389852..9e6b989de2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -159,6 +159,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -490,6 +491,7 @@  GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __read F
 GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index ac2fcf7b14..319cf8474a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -156,6 +156,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -487,6 +488,7 @@  GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __read F
 GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 336a59110e..a9094c6575 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -333,6 +333,7 @@  GLIBC_2.29 __progname D 0x4
 GLIBC_2.29 __progname_full D 0x4
 GLIBC_2.29 __pthread_cleanup_routine F
 GLIBC_2.29 __pthread_once F
+GLIBC_2.29 __pthread_unwind_next F
 GLIBC_2.29 __ptsname_r_chk F
 GLIBC_2.29 __pwrite64 F
 GLIBC_2.29 __rawmemchr F
@@ -2127,5 +2128,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 78e69d3e06..02ecea2de5 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -34,7 +34,6 @@  GLIBC_2.29 __pthread_rwlock_wrlock F
 GLIBC_2.29 __pthread_setspecific F
 GLIBC_2.29 __pthread_unregister_cancel F
 GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 __pthread_unwind_next F
 GLIBC_2.29 __pwrite64 F
 GLIBC_2.29 __read F
 GLIBC_2.29 __res_state F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 6d40c40268..63e458dc99 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2003,6 +2003,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2085,6 +2086,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -189,7 +189,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 2022f82d81..428ff25c25 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2168,6 +2168,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2252,6 +2253,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index f2be012ea9..13df0ccca6 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -197,7 +197,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile
index 97fc7df0b1..f6a08d15d0 100644
--- a/sysdeps/unix/sysv/linux/ia64/Makefile
+++ b/sysdeps/unix/sysv/linux/ia64/Makefile
@@ -23,7 +23,7 @@  librt-shared-only-routines += rt-sysdep
 endif
 
 ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
+sysdep_routines += __ia64_longjmp unwind_longjmp __sigstack_longjmp
 endif
 
 ifeq ($(subdir),conform)
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b9eeaabb01..3556b0eac4 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2035,6 +2035,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2117,6 +2118,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 3698acd3e9..78c683810a 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -189,7 +189,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 5a099fb3d0..245ae8da1f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -160,6 +160,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _Exit F
@@ -476,6 +477,7 @@  GLIBC_2.4 __progname D 0x4
 GLIBC_2.4 __progname_full D 0x4
 GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __rawmemchr F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 2e3d644ed9..9e897ccaac 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -69,7 +69,6 @@  GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __read F
 GLIBC_2.4 __res_state F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index f81c9cc523..fba3ac0138 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2112,6 +2112,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2197,6 +2198,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index f2be012ea9..13df0ccca6 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -197,7 +197,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index ce50516bc6..6a6d813b2c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -341,6 +341,7 @@  GLIBC_2.18 __progname D 0x4
 GLIBC_2.18 __progname_full D 0x4
 GLIBC_2.18 __pthread_cleanup_routine F
 GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __rawmemchr F
@@ -2178,5 +2179,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 73c70d5c87..51975cabbb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_setspecific F
 GLIBC_2.18 __pthread_unregister_cancel F
 GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __read F
 GLIBC_2.18 __res_state F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 37ecc7c967..7138bb3fe7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -341,6 +341,7 @@  GLIBC_2.18 __progname D 0x4
 GLIBC_2.18 __progname_full D 0x4
 GLIBC_2.18 __pthread_cleanup_routine F
 GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __rawmemchr F
@@ -2175,5 +2176,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 73c70d5c87..51975cabbb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_setspecific F
 GLIBC_2.18 __pthread_unregister_cancel F
 GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __read F
 GLIBC_2.18 __res_state F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 6d50fcc64f..d070746259 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2086,6 +2086,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2168,6 +2169,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index faa1ad9d1c..8829753707 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -196,7 +196,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b4e05e270d..d40d0079fc 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2084,6 +2084,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2166,6 +2167,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index faa1ad9d1c..8829753707 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -196,7 +196,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 71d184c2aa..d56b5a25cb 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2092,6 +2092,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x200
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2174,6 +2175,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 1e792c6705..d334efb37c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2085,6 +2085,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x400
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2168,6 +2169,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 5afc3e8022..4422b5ca92 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -378,6 +378,7 @@  GLIBC_2.21 __progname D 0x4
 GLIBC_2.21 __progname_full D 0x4
 GLIBC_2.21 __pthread_cleanup_routine F
 GLIBC_2.21 __pthread_once F
+GLIBC_2.21 __pthread_unwind_next F
 GLIBC_2.21 __ptsname_r_chk F
 GLIBC_2.21 __pwrite64 F
 GLIBC_2.21 __rawmemchr F
@@ -2216,5 +2217,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 5db41bc85b..f370adca8d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.21 __pthread_rwlock_wrlock F
 GLIBC_2.21 __pthread_setspecific F
 GLIBC_2.21 __pthread_unregister_cancel F
 GLIBC_2.21 __pthread_unregister_cancel_restore F
-GLIBC_2.21 __pthread_unwind_next F
 GLIBC_2.21 __pwrite64 F
 GLIBC_2.21 __read F
 GLIBC_2.21 __res_state F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4bfae8faa6..8bd6dd5b48 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2116,6 +2116,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
@@ -2224,6 +2225,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 995c88cbce..e354162563 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -197,7 +197,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index dc102f7f29..6bf7342f4c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2149,6 +2149,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 getcontext F
 GLIBC_2.3.3 gnu_dev_major F
@@ -2257,6 +2258,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 9f019c4eac..2d616e24cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1984,6 +1984,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2087,6 +2088,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 07428bd3d6..3bedf42d7a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -186,7 +186,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index f1217ffca5..247c8f77cf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -426,6 +426,7 @@  GLIBC_2.17 __progname D 0x8
 GLIBC_2.17 __progname_full D 0x8
 GLIBC_2.17 __pthread_cleanup_routine F
 GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __rawmemchr F
@@ -2378,5 +2379,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index a57e807cd0..03f9309528 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_setspecific F
 GLIBC_2.17 __pthread_unregister_cancel F
 GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __read F
 GLIBC_2.17 __res_state F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index afaabf996e..1af16292a7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -326,6 +326,7 @@  GLIBC_2.33 __progname D 0x4
 GLIBC_2.33 __progname_full D 0x4
 GLIBC_2.33 __pthread_cleanup_routine F
 GLIBC_2.33 __pthread_once F
+GLIBC_2.33 __pthread_unwind_next F
 GLIBC_2.33 __ptsname_r_chk F
 GLIBC_2.33 __pwrite64 F
 GLIBC_2.33 __rawmemchr F
@@ -1945,5 +1946,6 @@  GLIBC_2.33 wscanf F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index ddf52b427a..a9958f0b67 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -34,7 +34,6 @@  GLIBC_2.33 __pthread_rwlock_wrlock F
 GLIBC_2.33 __pthread_setspecific F
 GLIBC_2.33 __pthread_unregister_cancel F
 GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 __pthread_unwind_next F
 GLIBC_2.33 __pwrite64 F
 GLIBC_2.33 __read F
 GLIBC_2.33 __res_state F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 28563980d5..54038ac5ba 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -337,6 +337,7 @@  GLIBC_2.27 __progname D 0x8
 GLIBC_2.27 __progname_full D 0x8
 GLIBC_2.27 __pthread_cleanup_routine F
 GLIBC_2.27 __pthread_once F
+GLIBC_2.27 __pthread_unwind_next F
 GLIBC_2.27 __ptsname_r_chk F
 GLIBC_2.27 __pwrite64 F
 GLIBC_2.27 __rawmemchr F
@@ -2145,5 +2146,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index b12ec34091..0c6ae5b20c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.27 __pthread_rwlock_wrlock F
 GLIBC_2.27 __pthread_setspecific F
 GLIBC_2.27 __pthread_unregister_cancel F
 GLIBC_2.27 __pthread_unregister_cancel_restore F
-GLIBC_2.27 __pthread_unwind_next F
 GLIBC_2.27 __pwrite64 F
 GLIBC_2.27 __read F
 GLIBC_2.27 __res_state F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 6cfde17d64..1e896254ef 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2125,6 +2125,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2222,6 +2223,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 738e9ab535..d72648c9dd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -198,7 +198,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 16b2483535..3cf10b2ab2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2029,6 +2029,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2123,6 +2124,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 13a2e8ef91..09c03d66b8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -190,7 +190,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index a6fd6eb894..f7bded858a 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2007,6 +2007,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2092,6 +2093,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -189,7 +189,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index f4ba7b4ee8..c8ec299eac 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2007,6 +2007,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2089,6 +2090,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 96c70fb45e..98c5811d37 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -189,7 +189,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 70c2a92dfc..64529443e9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2119,6 +2119,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x104
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2213,6 +2214,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 059ae76802..62c3734ee1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -197,7 +197,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 6f323b3705..5c5ad0af63 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2058,6 +2058,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2140,6 +2141,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 3698acd3e9..78c683810a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -189,7 +189,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_attr_setstack F
 GLIBC_2.3.3 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 35503c7361..1805cd6b9b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2016,6 +2016,7 @@  GLIBC_2.3.2 pthread_cond_timedwait F
 GLIBC_2.3.2 pthread_cond_wait F
 GLIBC_2.3.2 strptime_l F
 GLIBC_2.3.3 __pthread_cleanup_routine F
+GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 _sys_siglist D 0x208
 GLIBC_2.3.3 gnu_dev_major F
 GLIBC_2.3.3 gnu_dev_makedev F
@@ -2099,6 +2100,7 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
 GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 7636fde610..31bb6837f9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -188,7 +188,6 @@  GLIBC_2.3.3 __pthread_register_cancel F
 GLIBC_2.3.3 __pthread_register_cancel_defer F
 GLIBC_2.3.3 __pthread_unregister_cancel F
 GLIBC_2.3.3 __pthread_unregister_cancel_restore F
-GLIBC_2.3.3 __pthread_unwind_next F
 GLIBC_2.3.3 pthread_attr_getaffinity_np F
 GLIBC_2.3.3 pthread_barrierattr_getpshared F
 GLIBC_2.3.3 pthread_condattr_getclock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 3af0b4def9..780679cb52 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -341,6 +341,7 @@  GLIBC_2.16 __progname D 0x4
 GLIBC_2.16 __progname_full D 0x4
 GLIBC_2.16 __pthread_cleanup_routine F
 GLIBC_2.16 __pthread_once F
+GLIBC_2.16 __pthread_unwind_next F
 GLIBC_2.16 __ptsname_r_chk F
 GLIBC_2.16 __pwrite64 F
 GLIBC_2.16 __rawmemchr F
@@ -2197,5 +2198,6 @@  GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index d15de68e7e..73719e6d11 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -35,7 +35,6 @@  GLIBC_2.16 __pthread_rwlock_wrlock F
 GLIBC_2.16 __pthread_setspecific F
 GLIBC_2.16 __pthread_unregister_cancel F
 GLIBC_2.16 __pthread_unregister_cancel_restore F
-GLIBC_2.16 __pthread_unwind_next F
 GLIBC_2.16 __pwrite64 F
 GLIBC_2.16 __read F
 GLIBC_2.16 __res_state F