freebsd-dev/libexec/rtld-elf
Konstantin Belousov aef199e563 Use sigfastblock(2) in rtld.
This allows for rtld to not issue two sigprocmask(2) syscalls for each
symbol binding operation in single-threaded processes.  Rtld needs to
block signals as part of locking to ensure signal safety of the bind
process, because signal handlers might need to lazily resolve symbol
references.

As result, number of syscalls issued on startup by simple programs not
using libthr, is typically reduced 2x.  For instance, for hello world,
I see:
non-sigfastblock
# (truss ./hello > /dev/null) |& wc -l
      63
sigfastblock
# (truss ./hello > /dev/null) |& wc -l
      37

Tested by:	pho
Disscussed with:	cem, emaste, jilles
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D12773
2020-02-09 12:22:43 +00:00
..
aarch64 Improve R_AARCH64_TLSDESC relocation. 2018-12-15 10:38:07 +00:00
amd64 rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
arm rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
i386 rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
mips rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
powerpc [PowerPC] powerpc32 rtld IFUNC handling code 2019-12-24 16:13:15 +00:00
powerpc64 rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
riscv Correct the offset of static TLS variables for Initial-Exec on RISC-V. 2019-12-10 21:56:44 +00:00
rtld-libc Use sigfastblock(2) in rtld. 2020-02-09 12:22:43 +00:00
sparc64 rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
tests Fix regression tests broken by r337067. 2018-08-02 11:55:16 +00:00
debug.c libexec: adoption of SPDX licensing ID tags. 2017-11-27 15:25:02 +00:00
debug.h Use rtld_putstr() instead of write() for the rtld msg() macro 2019-06-26 15:43:26 +00:00
libmap.c Reduce size of rtld by 22% by pulling in less code from libc 2019-06-30 11:49:58 +00:00
libmap.conf Move libmap.conf to libexec/rtld-elf/ 2018-09-18 00:25:00 +00:00
libmap.h rtld-elf: make it compile with WARNS=3 2018-10-29 21:08:11 +00:00
Makefile rtld: clean up Makefile. 2020-01-11 09:18:58 +00:00
Makefile.depend new depends 2015-06-16 23:37:19 +00:00
map_object.c rtld: make checks for mmap(2) failures compliant with documentation. 2019-12-12 22:59:22 +00:00
paths.h rtld-elf: compile with WANRS=4 warnings other than -Wcast-align 2018-10-29 21:08:19 +00:00
rtld_lock.c Use sigfastblock(2) in rtld. 2020-02-09 12:22:43 +00:00
rtld_lock.h libexec: adoption of SPDX licensing ID tags. 2017-11-27 15:25:02 +00:00
rtld_malloc.c Remove remnants of optimization for > pagesize allocations. 2019-09-02 08:03:29 +00:00
rtld_malloc.h Add header file missed in r343564. 2019-01-29 22:45:24 +00:00
rtld_printf.c Reduce size of rtld by 22% by pulling in less code from libc 2019-06-30 11:49:58 +00:00
rtld_printf.h Use rtld_putstr() instead of write() for the rtld msg() macro 2019-06-26 15:43:26 +00:00
rtld_tls.h libexec: adoption of SPDX licensing ID tags. 2017-11-27 15:25:02 +00:00
rtld_utrace.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
rtld.1 Add serial comma. 2017-09-01 16:56:37 +00:00
rtld.c Use sigfastblock(2) in rtld. 2020-02-09 12:22:43 +00:00
rtld.h Use sigfastblock(2) in rtld. 2020-02-09 12:22:43 +00:00
Symbol.map Add rtld private interface for dso to detect dynamic loading 2015-01-03 18:09:53 +00:00
xmalloc.c Reduce size of rtld by 22% by pulling in less code from libc 2019-06-30 11:49:58 +00:00