]> git.ipfire.org Git - thirdparty/glibc.git/commit
linux: Inline __syscall_internal_cancel and __syscall_cancel azanella/cancel-wrappers-inline
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 21 Mar 2025 14:03:00 +0000 (14:03 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 9 May 2025 13:45:28 +0000 (10:45 -0300)
commitdf92e9d71d320ef8d905d99d5f19e21733fd84fa
tree5f595562469f01bc93c6c6e84d94c028961864f8
parentf66cb3c9ebcac80b3200c3aff0e3aed6111547ba
linux: Inline __syscall_internal_cancel and __syscall_cancel

It improves some interception tools such as valgrind, however on
multithread the __syscall_cancel_arch is called.

The result libc.so has a slight larger code size:

ABI             master        patched         diff        increase
aarch64        1658673        1669121        10448           0.63%
x86_64         1976656        1985744         9088           0.46%
i686           2233622        2251130        17508           0.78%
powerpc64le    2382448        2396768        14320           0.60%

It mimics internally how cancellable entrypoints were implemented
before 89b53077d2a58f00e7debdfe58afabe953dac60d, where cancellation
handlign were done inline in the syscall wraper.
elf/Makefile
nptl/cancellation.c
nptl/futex-internal.c
nptl/sem_waitcommon.c
sysdeps/unix/sysdep.h
sysdeps/unix/sysv/linux/epoll_pwait2.c
sysdeps/unix/sysv/linux/recvmmsg.c
sysdeps/unix/sysv/linux/sigtimedwait.c
sysdeps/unix/sysv/linux/sysdep-cancel.h