mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 00:01:12 +00:00
07ed18d26a
This patch adds several new tunables to control the behavior of elision on supported platforms[1]. Since elision now depends on tunables, we should always *compile* with elision enabled, and leave the code disabled, but available for runtime selection. This gives us *much* better compile-time testing of the existing code to avoid bit-rot[2]. Tested on ppc, ppc64, ppc64le, s390x and x86_64. [1] This part of the patch was initially proposed by Paul Murphy but was "staled" because the framework have changed since the patch was originally proposed: https://patchwork.sourceware.org/patch/10342/ [2] This part of the patch was inititally proposed as a RFC by Carlos O'Donnell. Make sense to me integrate this on the patch: https://sourceware.org/ml/libc-alpha/2017-05/msg00335.html * elf/dl-tunables.list: Add elision parameters. * manual/tunables.texi: Add entries about elision tunable. * sysdeps/unix/sysv/linux/powerpc/elision-conf.c: Add callback functions to dynamically enable/disable elision. Add multiple callbacks functions to set elision parameters. Deleted __libc_enable_secure check. * sysdeps/unix/sysv/linux/s390/elision-conf.c: Likewise. * sysdeps/unix/sysv/linux/x86/elision-conf.c: Likewise. * configure: Regenerated. * configure.ac: Option enable_lock_elision was deleted. * config.h.in: ENABLE_LOCK_ELISION flag was deleted. * config.make.in: Remove references to enable_lock_elision. * manual/install.texi: Elision configure option was removed. * INSTALL: Regenerated to remove enable_lock_elision. * nptl/Makefile: Disable elision so it can verify error case for destroying a mutex. * sysdeps/powerpc/nptl/elide.h: Cleanup ENABLE_LOCK_ELISION check. Deleted macros for the case when ENABLE_LOCK_ELISION was not defined. * sysdeps/s390/configure: Regenerated. * sysdeps/s390/configure.ac: Remove references to enable_lock_elision.. * nptl/tst-mutex8.c: Deleted all #ifndef ENABLE_LOCK_ELISION from the test. * sysdeps/powerpc/powerpc32/sysdep.h: Deleted all ENABLE_LOCK_ELISION checks. * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. * sysdeps/powerpc/sysdep.h: Likewise. * sysdeps/s390/nptl/bits/pthreadtypes-arch.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/force-elision.h: Likewise. * sysdeps/unix/sysv/linux/s390/elision-conf.h: Likewise. * sysdeps/unix/sysv/linux/s390/force-elision.h: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/s390/Makefile: Remove references to enable-lock-elision. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
134 lines
3.2 KiB
Plaintext
134 lines
3.2 KiB
Plaintext
# Copyright (C) 2016-2017 Free Software Foundation, Inc.
|
|
# This file is part of the GNU C Library.
|
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
|
|
# The GNU C Library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with the GNU C Library; if not, see
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
# Allowed attributes for tunables:
|
|
#
|
|
# type: Defaults to STRING
|
|
# minval: Optional minimum acceptable value
|
|
# maxval: Optional maximum acceptable value
|
|
# env_alias: An alias environment variable
|
|
# security_level: Specify security level of the tunable. Valid values are:
|
|
#
|
|
# SXID_ERASE: (default) Don't read for AT_SECURE binaries and
|
|
# removed so that child processes can't read it.
|
|
# SXID_IGNORE: Don't read for AT_SECURE binaries, but retained for
|
|
# non-AT_SECURE subprocesses.
|
|
# NONE: Read all the time.
|
|
|
|
glibc {
|
|
malloc {
|
|
check {
|
|
type: INT_32
|
|
minval: 0
|
|
maxval: 3
|
|
env_alias: MALLOC_CHECK_
|
|
}
|
|
top_pad {
|
|
type: SIZE_T
|
|
env_alias: MALLOC_TOP_PAD_
|
|
security_level: SXID_IGNORE
|
|
}
|
|
perturb {
|
|
type: INT_32
|
|
minval: 0
|
|
maxval: 0xff
|
|
env_alias: MALLOC_PERTURB_
|
|
security_level: SXID_IGNORE
|
|
}
|
|
mmap_threshold {
|
|
type: SIZE_T
|
|
env_alias: MALLOC_MMAP_THRESHOLD_
|
|
security_level: SXID_IGNORE
|
|
}
|
|
trim_threshold {
|
|
type: SIZE_T
|
|
env_alias: MALLOC_TRIM_THRESHOLD_
|
|
security_level: SXID_IGNORE
|
|
}
|
|
mmap_max {
|
|
type: INT_32
|
|
env_alias: MALLOC_MMAP_MAX_
|
|
security_level: SXID_IGNORE
|
|
}
|
|
arena_max {
|
|
type: SIZE_T
|
|
env_alias: MALLOC_ARENA_MAX
|
|
minval: 1
|
|
security_level: SXID_IGNORE
|
|
}
|
|
arena_test {
|
|
type: SIZE_T
|
|
env_alias: MALLOC_ARENA_TEST
|
|
minval: 1
|
|
security_level: SXID_IGNORE
|
|
}
|
|
tcache_max {
|
|
type: SIZE_T
|
|
security_level: SXID_ERASE
|
|
}
|
|
tcache_count {
|
|
type: SIZE_T
|
|
security_level: SXID_ERASE
|
|
}
|
|
tcache_unsorted_limit {
|
|
type: SIZE_T
|
|
security_level: SXID_ERASE
|
|
}
|
|
}
|
|
tune {
|
|
hwcap_mask {
|
|
type: UINT_64
|
|
env_alias: LD_HWCAP_MASK
|
|
default: HWCAP_IMPORTANT
|
|
}
|
|
}
|
|
|
|
elision {
|
|
enable {
|
|
type: INT_32
|
|
minval: 0
|
|
maxval: 1
|
|
security_level: SXID_ERASE
|
|
}
|
|
skip_lock_busy {
|
|
type: INT_32
|
|
default: 3
|
|
security_level: SXID_ERASE
|
|
}
|
|
skip_lock_internal_abort {
|
|
type: INT_32
|
|
default: 3
|
|
security_level: SXID_ERASE
|
|
}
|
|
skip_lock_after_retries {
|
|
type: INT_32
|
|
default: 3
|
|
security_level: SXID_ERASE
|
|
}
|
|
tries {
|
|
type: INT_32
|
|
default: 3
|
|
security_level: SXID_ERASE
|
|
}
|
|
skip_trylock_internal_abort {
|
|
type: INT_32
|
|
default: 3
|
|
security_level: SXID_ERASE
|
|
}
|
|
}
|
|
}
|