glibc/sysdeps/unix/sysv/linux/x86_64
H.J. Lu 317f1c0a8a x86-64: Add glibc.cpu.prefer_map_32bit_exec [BZ #28656]
Crossing 2GB boundaries with indirect calls and jumps can use more
branch prediction resources on Intel Golden Cove CPU (see the
"Misprediction for Branches >2GB" section in Intel 64 and IA-32
Architectures Optimization Reference Manual.)  There is visible
performance improvement on workloads with many PLT calls when executable
and shared libraries are mmapped below 2GB.  Add the Prefer_MAP_32BIT_EXEC
bit so that mmap will try to map executable or denywrite pages in shared
libraries with MAP_32BIT first.

NB: Prefer_MAP_32BIT_EXEC reduces bits available for address space
layout randomization (ASLR), which is always disabled for SUID programs
and can only be enabled by the tunable, glibc.cpu.prefer_map_32bit_exec,
or the environment variable, LD_PREFER_MAP_32BIT_EXEC.  This works only
between shared libraries or between shared libraries and executables with
addresses below 2GB.  PIEs are usually loaded at a random address above
4GB by the kernel.
2023-02-22 18:28:37 -08:00
..
64 x86-64: Add glibc.cpu.prefer_map_32bit_exec [BZ #28656] 2023-02-22 18:28:37 -08:00
x32 C2x strtol binary constant handling 2023-02-16 23:02:40 +00:00
Implies
Makefile
Versions
____longjmp_chk.S
__start_context.S
clone.S
clone3.S
configure
configure.ac
dl-cache.h
dl-procinfo.c
dl-procinfo.h
getcontext.S
kernel-features.h
ldd-rewrite.sed
libc_sigaction.c
libmvec.abilist
makecontext.c
pointer_guard.h
setcontext.S
sigaltstack-offsets.sym
sigcontextinfo.h
single-thread.h
swapcontext.S
syscall.S
syscalls.list
sysdep.S
sysdep.h
tst-glibc-hwcaps-2.c
ucontext_i.sym
vfork.S
x86-64-isa-level-VALUE.c