about summary refs log tree commit diff
path: root/nptl/pthreadP.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-04-21 19:49:50 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-04-21 19:49:50 +0200
commit1d95b035c721908d3bcbbca9e8d3a5e55a24c09e (patch)
treeacc915c7a01fc6ad5572767b483cf6cfc9c9118b /nptl/pthreadP.h
parent3fec7f18bfcb7044e813a12e19c3c98eb8387e26 (diff)
downloadglibc-1d95b035c721908d3bcbbca9e8d3a5e55a24c09e.tar.gz
glibc-1d95b035c721908d3bcbbca9e8d3a5e55a24c09e.tar.xz
glibc-1d95b035c721908d3bcbbca9e8d3a5e55a24c09e.zip
nptl: Move __pthread_unwind_next into libc
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.

Reviewed-by: Adhemerva Zanella  <adhemerval.zanella@linaro.org>
Diffstat (limited to 'nptl/pthreadP.h')
-rw-r--r--nptl/pthreadP.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 75fec43fed..2e66379441 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