mirror of git://sourceware.org/git/glibc.git
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. |
||
---|---|---|
.. | ||
64 | ||
x32 | ||
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 |