diff options
| author | Florian Weimer <fweimer@redhat.com> | 2021-04-21 19:49:50 +0200 |
|---|---|---|
| committer | Florian Weimer <fweimer@redhat.com> | 2021-04-21 19:49:50 +0200 |
| commit | 1d95b035c721908d3bcbbca9e8d3a5e55a24c09e (patch) | |
| tree | acc915c7a01fc6ad5572767b483cf6cfc9c9118b | |
| parent | 3fec7f18bfcb7044e813a12e19c3c98eb8387e26 (diff) | |
| download | 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>
82 files changed, 126 insertions, 189 deletions
diff --git a/elf/Makefile b/elf/Makefile index c531470ede..1103559b9b 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -528,6 +528,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 323bcc9432..1d3781062c 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -81,6 +81,7 @@ routines = \ pthread_self \ pthread_setschedparam \ pthread_sigmask \ + unwind \ shared-only-routines = forward static-only-routines = pthrea |
