aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella Netto <adhemerval.zanella@linaro.org>2023-03-23 10:13:51 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2023-03-29 14:33:06 -0300
commit33237fe83d553dff111915024c9670adc3f06048 (patch)
tree610ddd2195dca3c3901cfcc74f76e4ab6eb6c0e7
parent6384171fa0cef59b738ce8d0499fcea4f5009411 (diff)
downloadglibc-33237fe83d553dff111915024c9670adc3f06048.tar.xz
glibc-33237fe83d553dff111915024c9670adc3f06048.zip
Remove --enable-tunables configure option
And make always supported. The configure option was added on glibc 2.25 and some features require it (such as hwcap mask, huge pages support, and lock elisition tuning). It also simplifies the build permutations. Changes from v1: * Remove glibc.rtld.dynamic_sort changes, it is orthogonal and needs more discussion. * Cleanup more code. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
-rw-r--r--INSTALL19
-rw-r--r--Makeconfig9
-rw-r--r--NEWS3
-rw-r--r--config.h.in3
-rw-r--r--config.make.in1
-rwxr-xr-xconfigure17
-rw-r--r--configure.ac10
-rw-r--r--elf/Makefile9
-rw-r--r--elf/dl-cache.c2
-rw-r--r--elf/dl-hwcaps.h11
-rw-r--r--elf/dl-sort-maps.c7
-rw-r--r--elf/dl-support.c15
-rw-r--r--elf/dl-tls.c6
-rw-r--r--elf/dl-tunables.c12
-rw-r--r--elf/dl-tunables.h35
-rw-r--r--elf/dl-usage.c8
-rw-r--r--elf/rtld.c23
-rw-r--r--elf/tst-env-setuid-tunables.c11
-rw-r--r--gmon/gmon.c12
-rw-r--r--malloc/Makefile2
-rw-r--r--malloc/arena.c118
-rw-r--r--malloc/malloc-check.c8
-rw-r--r--malloc/malloc.c14
-rw-r--r--manual/install.texi19
-rw-r--r--nptl/pthread_mutex_conf.c4
-rw-r--r--nptl/tst-mutex8.c2
-rwxr-xr-xscripts/build-many-glibcs.py1
-rw-r--r--sysdeps/generic/ldsodefs.h20
-rw-r--r--sysdeps/generic/unsecvars.h8
-rw-r--r--sysdeps/nptl/dl-tls_init_tp.c2
-rw-r--r--sysdeps/nptl/pthreadP.h4
-rw-r--r--sysdeps/nptl/pthread_early_init.h2
-rw-r--r--sysdeps/nptl/pthread_mutex_conf.h8
-rw-r--r--sysdeps/powerpc/cpu-features.c9
-rw-r--r--sysdeps/s390/cpu-features.c14
-rw-r--r--sysdeps/sparc/sparc32/dl-machine.h5
-rw-r--r--sysdeps/unix/sysv/linux/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/cpu-features.c6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-conf.c8
-rw-r--r--sysdeps/unix/sysv/linux/s390/elision-conf.c8
-rw-r--r--sysdeps/unix/sysv/linux/x86/elision-conf.c8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/Makefile2
-rw-r--r--sysdeps/x86/Makefile10
-rw-r--r--sysdeps/x86/cacheinfo.h8
-rw-r--r--sysdeps/x86/cpu-features.c24
-rw-r--r--sysdeps/x86/cpu-tunables.c45
-rw-r--r--sysdeps/x86/dl-cacheinfo.h10
-rw-r--r--sysdeps/x86_64/Makefile2
48 files changed, 75 insertions, 513 deletions
diff --git a/INSTALL b/INSTALL
index 32535709d9..b406a11268 100644
--- a/INSTALL
+++ b/INSTALL
@@ -228,25 +228,6 @@ if 'CFLAGS' is specified it must enable optimization. For example:
By default for x86_64, the GNU C Library is built with the vector
math library. Use this option to disable the vector math library.
-'--enable-tunables'
- Tunables support allows additional library parameters to be
- customized at runtime. This feature is enabled by default. This
- option can take the following values:
-
- 'yes'
- This is the default if no option is passed to configure. This
- enables tunables and selects the default frontend (currently
- 'valstring').
-
- 'no'
- This option disables tunables.
-
- 'valstring'
- This enables tunables and selects the 'valstring' frontend for
- tunables. This frontend allows users to specify tunables as a
- colon-separated list in a single environment variable
- 'GLIBC_TUNABLES'.
-
'--disable-crypt'
Do not install the passphrase-hashing library 'libcrypt' or the
header file 'crypt.h'. 'unistd.h' will still declare the function
diff --git a/Makeconfig b/Makeconfig
index 2fda4af5f7..2514db35f6 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1017,11 +1017,8 @@ CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \
$(CPPFLAGS-$(suffix $@)) \
$(foreach lib,$(libof-$(basename $(@F))) \
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
- $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
-
-ifneq (no,$(have-tunables))
-CPPFLAGS += -DTOP_NAMESPACE=glibc
-endif
+ $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F))) \
+ -DTOP_NAMESPACE=glibc
override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
@@ -1203,7 +1200,6 @@ endif
# Build the tunables list header early since it could be used by any module in
# glibc.
-ifneq (no,$(have-tunables))
before-compile += $(common-objpfx)dl-tunable-list.h
common-generated += dl-tunable-list.h dl-tunable-list.stmp
@@ -1216,7 +1212,6 @@ $(common-objpfx)dl-tunable-list.stmp: \
$(AWK) -f $^ > ${@:stmp=T}
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
touch $@
-endif
# Dump the GCC macros used by the default compiler flags to a header
# file, so that they can be inspected when using different compiler
diff --git a/NEWS b/NEWS
index d5816923c6..83d082afad 100644
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,9 @@ Deprecated and removed features, and other changes affecting compatibility:
cache can still be disable per-application using tunables
(glibc.malloc.tcache_count set to zero).
+* The configure option --enable-tunables has been removed. The tunable
+ feature is now always enabled.
+
Changes to build and runtime requirements:
[Add changes to build and runtime requirements here]
diff --git a/config.h.in b/config.h.in
index 09730d9d52..c87008b6a9 100644
--- a/config.h.in
+++ b/config.h.in
@@ -271,9 +271,6 @@
/* PowerPC32 uses fctidz for floating point to long long conversions. */
#define HAVE_PPC_FCTIDZ 0
-/* Build glibc with tunables support. */
-#define HAVE_TUNABLES 0
-
/* Define if PIE is unsupported. */
#undef PIE_UNSUPPORTED
diff --git a/config.make.in b/config.make.in
index dce93ecf73..4afd37feaf 100644
--- a/config.make.in
+++ b/config.make.in
@@ -93,7 +93,6 @@ build-nscd = @build_nscd@
use-nscd = @use_nscd@
build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
build-pt-chown = @build_pt_chown@
-have-tunables = @have_tunables@
pthread-in-libc = @pthread_in_libc@
# Build tools.
diff --git a/configure b/configure
index 904fc689e7..f84040644b 100755
--- a/configure
+++ b/configure
@@ -664,7 +664,6 @@ INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
base_machine
-have_tunables
build_pt_chown
build_nscd
libc_cv_static_nss_crypt
@@ -780,7 +779,6 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
-enable_tunables
enable_mathvec
enable_cet
enable_scv
@@ -1448,8 +1446,6 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
- --enable-tunables Enable tunables support. Known values are 'yes',
- 'no' and 'valstring'
--enable-mathvec Enable building and installing mathvec [default
depends on architecture]
--enable-cet enable Intel Control-flow Enforcement Technology
@@ -3658,19 +3654,6 @@ if test "$build_pt_chown" = yes; then
fi
-# Check whether --enable-tunables was given.
-if test "${enable_tunables+set}" = set; then :
- enableval=$enable_tunables; have_tunables=$enableval
-else
- have_tunables=yes
-fi
-
-
-if test "$have_tunables" = yes; then
- $as_echo "#define HAVE_TUNABLES 1" >>confdefs.h
-
-fi
-
# The abi-tags file uses a fairly simplistic model for name recognition that
# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
diff --git a/configure.ac b/configure.ac
index 48ca0d3707..88df3e5eed 100644
--- a/configure.ac
+++ b/configure.ac
@@ -427,16 +427,6 @@ if test "$build_pt_chown" = yes; then
AC_DEFINE(HAVE_PT_CHOWN)
fi
-AC_ARG_ENABLE([tunables],
- [AS_HELP_STRING([--enable-tunables],
- [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
- [have_tunables=$enableval],
- [have_tunables=yes])
-AC_SUBST(have_tunables)
-if test "$have_tunables" = yes; then
- AC_DEFINE(HAVE_TUNABLES)
-fi
-
# The abi-tags file uses a fairly simplistic model for name recognition that
# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
diff --git a/elf/Makefile b/elf/Makefile
index 8cf46ba782..396ec51424 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -82,6 +82,7 @@ dl-routines = \
dl-tls \
dl-tls_init_tp \
dl-trampoline \
+ dl-tunables \
dl-version \
dl-write \
# dl-routines
@@ -90,11 +91,6 @@ ifeq (yes,$(use-ldconfig))
dl-routines += dl-cache
endif
-ifneq (no,$(have-tunables))
-dl-routines += dl-tunables
-tunables-type = $(addprefix TUNABLES_FRONTEND_,$(have-tunables))
-CPPFLAGS-dl-tunables.c += -DTUNABLES_FRONTEND=$(tunables-type)
-
ifeq (yesyes,$(build-shared)$(run-built-tests))
tests-special += $(objpfx)list-tunables.out
endif
@@ -104,7 +100,6 @@ endif
ifeq (yes,$(have-loop-to-function))
CFLAGS-dl-tunables.c += -fno-tree-loop-distribute-patterns
endif
-endif
all-dl-routines = $(dl-routines) $(sysdep-dl-routines)
# But they are absent from the shared libc, because that code is in ld.so.
@@ -1173,7 +1168,6 @@ postclean-generated += $(objpfx)/dso-sort-tests-2.generated-makefile \
$(objpfx)/dso-sort-tests-2.generated-makefile
# Generate from each testcase description file
-ifeq (yes,$(have-tunables))
$(eval $(call include_dsosort_tests,dso-sort-tests-1.def))
$(eval $(call include_dsosort_tests,dso-sort-tests-2.def))
@@ -1181,7 +1175,6 @@ $(eval $(call include_dsosort_tests,dso-sort-tests-2.def))
LDFLAGS-tst-bz15311-b.so += -Wl,-z,lazy
LDFLAGS-tst-bz15311-c.so += -Wl,-z,lazy
LDFLAGS-tst-bz15311-d.so += -Wl,-z,lazy
-endif
check-abi: $(objpfx)check-abi-ld.out \
$(objpfx)check-abi-version-libc.out
diff --git a/elf/dl-cache.c b/elf/dl-cache.c
index 07c054b11a..631286832d 100644
--- a/elf/dl-cache.c
+++ b/elf/dl-cache.c
@@ -205,7 +205,7 @@ search_cache (const char *string_table, uint32_t string_table_size,
uint64_t platform = _dl_string_platform (GLRO (dl_platform));
if (platform != (uint64_t) -1)
platform = 1ULL << platform;
- uint64_t hwcap_mask = GET_HWCAP_MASK ();
+ uint64_t hwcap_mask = TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t, NULL);
#define _DL_HWCAP_TLS_MASK (1LL << 63)
uint64_t hwcap_exclude = ~((GLRO (dl_hwcap) & hwcap_mask)
| _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK);
diff --git a/elf/dl-hwcaps.h b/elf/dl-hwcaps.h
index abe6aaf7c5..3012ebf2b4 100644
--- a/elf/dl-hwcaps.h
+++ b/elf/dl-hwcaps.h
@@ -24,17 +24,6 @@
#include <elf/dl-tunables.h>
-#if HAVE_TUNABLES
-# define GET_HWCAP_MASK() TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t, NULL)
-#else
-# ifdef SHARED
-# define GET_HWCAP_MASK() GLRO(dl_hwcap_mask)
-# else
-/* HWCAP_MASK is ignored in static binaries when built without tunables. */
-# define GET_HWCAP_MASK() (0)
-# endif
-#endif
-
#define GLIBC_HWCAPS_SUBDIRECTORY "glibc-hwcaps"
#define GLIBC_HWCAPS_PREFIX GLIBC_HWCAPS_SUBDIRECTORY "/"
diff --git a/elf/dl-sort-maps.c b/elf/dl-sort-maps.c
index 325e96388e..5616c8a6a3 100644
--- a/elf/dl-sort-maps.c
+++ b/elf/dl-sort-maps.c
@@ -121,11 +121,6 @@ _dl_sort_maps_original (struct link_map **maps, unsigned int nmaps,
}
}
-#if !HAVE_TUNABLES
-/* In this case, just default to the original algorithm. */
-strong_alias (_dl_sort_maps_original, _dl_sort_maps);
-#else
-
/* We use a recursive function due to its better clarity and ease of
implementation, as well as faster execution speed. We already use
alloca() for list allocation during the breadth-first search of
@@ -314,5 +309,3 @@ _dl_sort_maps (struct link_map **maps, unsigned int nmaps,
else
_dl_sort_maps_dfs (maps, nmaps, force_first, for_fini);
}
-
-#endif /* HAVE_TUNABLES. */
diff --git a/elf/dl-support.c b/elf/dl-support.c
index d2519ce1a9..322599916f 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -168,16 +168,6 @@ enum dso_sort_algorithm _dl_dso_sort_algo;
/* The value of the FPU control word the kernel will preset in hardware. */
fpu_control_t _dl_fpu_control = _FPU_DEFAULT;
-#if !HAVE_TUNABLES
-/* This is not initialized to HWCAP_IMPORTANT, matching the definition
- of _dl_important_hwcaps, below, where no hwcap strings are ever
- used. This mask is still used to mediate the lookups in the cache
- file. Since there is no way to set this nonzero (we don't grok the
- LD_HWCAP_MASK environment variable here), there is no real point in
- setting _dl_hwcap nonzero below, but we do anyway. */
-uint64_t _dl_hwcap_mask;
-#endif
-
/* Prevailing state of the stack. Generally this includes PF_X, indicating it's
* executable but this isn't true for all platforms. */
ElfW(Word) _dl_stack_flags = DEFAULT_STACK_PERMS;
@@ -328,11 +318,6 @@ _dl_non_dynamic_init (void)
__unsetenv (cp);
cp = strchr (cp, '\0') + 1;
}
-
-#if !HAVE_TUNABLES
- if (__access ("/etc/suid-debug", F_OK) != 0)
- __unsetenv ("MALLOC_CHECK_");
-#endif
}
#ifdef DL_PLATFORM_INIT
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 8943a3b4ae..4ef7bc3f1e 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -97,14 +97,8 @@ _dl_tls_static_surplus_init (size_t naudit)
{
size_t nns, opt_tls;
-#if HAVE_TUNABLES
nns = TUNABLE_GET (nns, size_t, NULL);
opt_tls = TUNABLE_GET (optional_static_tls, size_t, NULL);
-#else
- /* Default values of the tunables. */
- nns = DEFAULT_NNS;