[PATCH 0/5] Linux: Fall back to mmap if early sbrk fails
Florian Weimer
fweimer@redhat.com
Mon May 2 19:15:27 GMT 2022
This series implements a _dl_early_allocate function that does not need
a TCB. It prefers sbrk over mmap to avoid creating too many PTE, but it
can use mmap as well.
Tested on aarch64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
s390x-linux-gnu, x86_64-linux-gnu. Built with build-many-glibcs.py.
I manually used strace to inject an brk failure, and it mmap fallback
kicks in.
Thanks,
Florian
Florian Weimer (5):
Linux: Implement a useful version of _startup_fatal
Linux: Define MMAP_CALL_INTERNAL
i386: Remove OPTIMIZE_FOR_GCC_5 from Linux libc-do-syscall.S
i386: Honor I386_USE_SYSENTER for 6-argument Linux system calls
csu: Implement and use _dl_early_allocate during static startup
csu/libc-tls.c | 12 ++-
elf/Makefile | 19 +++++
elf/dl-early_allocate.c | 30 +++++++
elf/tst-tls-allocation-failure-static.c | 31 +++++++
scripts/tst-elf-edit.py | 34 ++++++--
sysdeps/generic/ldsodefs.h | 5 ++
sysdeps/unix/sysv/linux/dl-early_allocate.c | 81 +++++++++++++++++++
sysdeps/unix/sysv/linux/i386/Makefile | 2 +-
.../sysv/linux/i386/libc-do-syscall-int80.S | 25 ++++++
.../unix/sysv/linux/i386/libc-do-syscall.S | 3 -
sysdeps/unix/sysv/linux/i386/startup.h | 17 +---
sysdeps/unix/sysv/linux/i386/sysdep.h | 13 ++-
sysdeps/unix/sysv/linux/mmap_call.h | 22 +++++
sysdeps/unix/sysv/linux/mmap_internal.h | 6 +-
.../s390/{mmap_internal.h => mmap_call.h} | 14 ++--
sysdeps/unix/sysv/linux/startup.h | 38 +++++++++
16 files changed, 309 insertions(+), 43 deletions(-)
create mode 100644 elf/dl-early_allocate.c
create mode 100644 elf/tst-tls-allocation-failure-static.c
create mode 100644 sysdeps/unix/sysv/linux/dl-early_allocate.c
create mode 100644 sysdeps/unix/sysv/linux/i386/libc-do-syscall-int80.S
create mode 100644 sysdeps/unix/sysv/linux/mmap_call.h
rename sysdeps/unix/sysv/linux/s390/{mmap_internal.h => mmap_call.h} (78%)
create mode 100644 sysdeps/unix/sysv/linux/startup.h
base-commit: d056c212130280c0a54d9a4f72170ec621b70ce5
--
2.35.1
More information about the Libc-alpha
mailing list