Stack unwinding that happens during NPTL thread cancellation needs cancellable syscall wrapper functions to be compiled with -fexceptions -fasynchronous-unwind-tables to be able to unwind to cleanup handlers registered before syscall invocation.
Add these flags for all cancellable syscall wrappers.
Signed-off-by: Max Filippov jcmvbkbc@gmail.com --- libpthread/nptl/Makefile.in | 49 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-)
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in index 55eeba2..8261fce 100644 --- a/libpthread/nptl/Makefile.in +++ b/libpthread/nptl/Makefile.in @@ -187,18 +187,51 @@ CFLAGS-sem_wait.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-sem_timedwait.c = -fexceptions -fasynchronous-unwind-tables
# These are the function wrappers we have to duplicate here. -CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-accept.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-close.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-connect.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-creat.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-fdatasync.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-fsync.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-lockf.c = -fexceptions -CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-msync.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-nanosleep.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-open64.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-open.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-pause.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-poll.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-ppoll.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-pread_write.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-pselect.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-read.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-readv.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-recv.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-recvfrom.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-recvmsg.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-__rt_sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-__rt_sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-select.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-send.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sendmsg.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sendto.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sigpause.c = -fexceptions +CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-__syscall_fcntl64.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-__syscall_fcntl.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-usleep.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-wait4.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-waitid.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-write.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-pt-system.c = -fexceptions -I$(top_srcdir)libc/stdlib
Hi Max, Max Filippov wrote,
Stack unwinding that happens during NPTL thread cancellation needs cancellable syscall wrapper functions to be compiled with -fexceptions -fasynchronous-unwind-tables to be able to unwind to cleanup handlers registered before syscall invocation.
Add these flags for all cancellable syscall wrappers.
Thanks, wonderful, reduces test failure for ARM to just 6: FAIL test-double got 1 expected 0 FAIL test-float got 1 expected 0 FAIL test-idouble got 1 expected 0 FAIL test-ifloat got 1 expected 0 FAIL tst-signal7 got 1 expected 0 FAIL tst-tls16 got 1 expected 0
Committed and pushed, best regards Waldemar