From patchwork Thu Mar 23 13:13:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 66803 X-Patchwork-Delegate: siddhesh@gotplt.org Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 777A1385840F for ; Thu, 23 Mar 2023 13:14:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 777A1385840F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679577267; bh=g9X75TeRcYp2idMjEZdhuN+4Qd7Fl6e7Y69E16XLHpo=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=yYDWPOr9RG6H9MEV6IrFjosW4weLuM+iBc5PMB3XQlhUphQNJp84sDZHbFoOnLRBJ sYlbdJ2aVHDj74xd5H+OqPUAr8/114IT6X8+OqO5A8S3RJgi7vGYzLYZoSnptYD8Uw QM2+utZMcUpXJ9JUcjynTc1GLrCjGrcNKnm4Yc+A= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-ot1-x336.google.com (mail-ot1-x336.google.com [IPv6:2607:f8b0:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id 121353858C20 for ; Thu, 23 Mar 2023 13:13:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 121353858C20 Received: by mail-ot1-x336.google.com with SMTP id x8-20020a9d3788000000b0069f922cd5ceso3656152otb.12 for ; Thu, 23 Mar 2023 06:13:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679577237; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=g9X75TeRcYp2idMjEZdhuN+4Qd7Fl6e7Y69E16XLHpo=; b=zp4bTgztOM/1+WGFjkXb6xZUmk5Sd8m/KtyZWsgjl4RlaVx2tCD/3lO3Aq+ytcfwUs 7eqfvRkKqlPQp+1NFfGWDoB9f9Gm0BZrtO4SYEuLk7+qg5diuo07RdB7QUG4HD+skJ2/ aRgmN2El1Nb+QKuszkFqqXDotn+maa0QavoBd5gNwPl5UFbkvfVAWcfctUEmulR8I5kU 2Bt86pPHHHrAAa+8ngBPwfBTvp+XFBQ03NqTMS8up1LXyBZ6dMPWOXvVy01rNnErC6fa 4n0t7Uzk2a+Cn70OW8EUM4P2prcPNXNn5hOCbNUFQjU6nMDQ6RXfQaiDVcwMGSBPTEsz 4Mnw== X-Gm-Message-State: AO0yUKVIlUjfMdnGW0OAw5AE98vziHc2a63HpSWsxHPrvgKzH8K9XolI GWWXHyMjaGf5cL+8phx9G3j0l88kBPSiZhOuQWl0bw== X-Google-Smtp-Source: AK7set8V7g+VP9rwy2t15B6xejd8MgmtAKPTH5McEaKfSZ04gKS8Z42Afm6YoU6fW/IjMIY5L5VE2A== X-Received: by 2002:a9d:66d1:0:b0:69f:909a:a0a1 with SMTP id t17-20020a9d66d1000000b0069f909aa0a1mr3471997otm.7.1679577235623; Thu, 23 Mar 2023 06:13:55 -0700 (PDT) Received: from mandiga.. ([2804:1b3:a7c0:c260:db28:337:3c41:db0]) by smtp.gmail.com with ESMTPSA id q3-20020a9d6303000000b0069f17869390sm5062560otk.2.2023.03.23.06.13.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Mar 2023 06:13:54 -0700 (PDT) To: libc-alpha@sourceware.org, Siddhesh Poyarekar Subject: [PATCH v2] Remove --enable-tunables configure option Date: Thu, 23 Mar 2023 10:13:51 -0300 Message-Id: <20230323131351.947636-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 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 --- INSTALL | 19 --- Makeconfig | 9 +- NEWS | 3 + config.h.in | 3 - config.make.in | 1 - configure | 17 --- configure.ac | 10 -- elf/Makefile | 9 +- elf/dl-cache.c | 2 +- elf/dl-hwcaps.h | 11 -- elf/dl-sort-maps.c | 7 -- elf/dl-support.c | 15 --- elf/dl-tls.c | 6 - elf/dl-tunables.c | 12 +- elf/dl-tunables.h | 35 ++---- elf/dl-usage.c | 8 +- elf/rtld.c | 23 +--- elf/tst-env-setuid-tunables.c | 11 -- gmon/gmon.c | 12 +- malloc/Makefile | 2 - malloc/arena.c | 118 +----------------- malloc/malloc-check.c | 8 -- malloc/malloc.c | 14 +-- manual/install.texi | 19 --- nptl/pthread_mutex_conf.c | 4 +- nptl/tst-mutex8.c | 2 - scripts/build-many-glibcs.py | 1 - sysdeps/generic/ldsodefs.h | 20 +-- sysdeps/generic/unsecvars.h | 8 +- sysdeps/nptl/dl-tls_init_tp.c | 2 - sysdeps/nptl/pthreadP.h | 4 - sysdeps/nptl/pthread_early_init.h | 2 - sysdeps/nptl/pthread_mutex_conf.h | 8 -- sysdeps/powerpc/cpu-features.c | 9 +- sysdeps/s390/cpu-features.c | 14 +-- sysdeps/sparc/sparc32/dl-machine.h | 5 +- sysdeps/unix/sysv/linux/Makefile | 4 +- .../unix/sysv/linux/aarch64/cpu-features.c | 6 - .../unix/sysv/linux/powerpc/elision-conf.c | 8 +- sysdeps/unix/sysv/linux/s390/elision-conf.c | 8 +- sysdeps/unix/sysv/linux/x86/elision-conf.c | 8 +- sysdeps/unix/sysv/linux/x86_64/64/Makefile | 2 - sysdeps/x86/Makefile | 10 -- sysdeps/x86/cacheinfo.h | 8 +- sysdeps/x86/cpu-features.c | 24 +--- sysdeps/x86/cpu-tunables.c | 45 ++++--- sysdeps/x86/dl-cacheinfo.h | 10 -- sysdeps/x86_64/Makefile | 2 - 48 files changed, 75 insertions(+), 513 deletions(-) diff --git a/INSTALL b/INSTALL index 970d6627e2..021943d83f 100644 --- a/INSTALL +++ b/INSTALL @@ -234,25 +234,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-$( ${@: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 c54af824e0..d3ae15e4a6 100644 --- a/NEWS +++ b/NEWS @@ -30,6 +30,9 @@ Deprecated and removed features, and other changes affecting compatibility: alternatively stable kernels from versions 6.1.6, 5.15.87, 5.10.163, 5.4.228, 4.19.270 or 4.14.303. +* 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 d7c416cbea..9186a8aac9 100644 --- a/config.make.in +++ b/config.make.in @@ -96,7 +96,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 efb891456a..f357aa0b9c 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 @@ -784,7 +783,6 @@ enable_systemtap enable_build_nscd enable_nscd enable_pt_chown -enable_tunables enable_mathvec enable_cet enable_scv @@ -1454,8 +1452,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 @@ -3684,19 +3680,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 011844a3d4..6b316bfd44 100644 --- a/configure.ac +++ b/configure.ac @@ -441,16 +441,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 4d0e04b2a2..268463a02a 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. @@ -1187,7 +1182,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)) @@ -1195,7 +1189,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 -#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; - opt_tls = OPTIONAL_TLS; -#endif if (nns > DL_NNS) nns = DL_NNS; if (DL_NNS - nns < naudit) diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c index 327b9eb52f..62b7332d95 100644 --- a/elf/dl-tunables.c +++ b/elf/dl-tunables.c @@ -38,11 +38,6 @@ #include -#if TUNABLES_FRONTEND == TUNABLES_FRONTEND_valstring -# define GLIBC_TUNABLES "GLIBC_TUNABLES" -#endif - -#if TUNABLES_FRONTEND == TUNABLES_FRONTEND_valstring static char * tunables_strdup (const char *in) { @@ -62,7 +57,6 @@ tunables_strdup (const char *in) return out; } -#endif static char ** get_next_env (char **envp, char **name, size_t *namelen, char **val, @@ -160,7 +154,6 @@ __tunable_set_val (tunable_id_t id, tunable_val_t *valp, tunable_num_t *minp, do_tunable_update_val (cur, valp, minp, maxp); } -#if TUNABLES_FRONTEND == TUNABLES_FRONTEND_valstring /* Parse the tunable string TUNESTR and adjust it to drop any tunables that may be unsafe for AT_SECURE processes so that it can be used as the new environment variable value for GLIBC_TUNABLES. VALSTRING is the original @@ -255,7 +248,6 @@ parse_tunables (char *tunestr, char *valstring) p += len + 1; } } -#endif /* Enable the glibc.malloc.check tunable in SETUID/SETGID programs only when the system administrator has created the /etc/suid-debug file. This is a @@ -287,8 +279,7 @@ __tunables_init (char **envp) while ((envp = get_next_env (envp, &envname, &len, &envval, &prev_envp)) != NULL) { -#if TUNABLES_FRONTEND == TUNABLES_FRONTEND_valstring - if (tunable_is_name (GLIBC_TUNABLES, envname)) + if (tunable_is_name ("GLIBC_TUNABLES", envname)) { char *new_env = tunables_strdup (envname); if (new_env != NULL) @@ -297,7 +288,6 @@ __tunables_init (char **envp) *prev_envp = new_env; continue; } -#endif for (int i = 0; i < sizeof (tunable_list) / sizeof (tunable_t); i++) { diff --git a/elf/dl-tunables.h b/elf/dl-tunables.h index ae6e014b95..45c191e021 100644 --- a/elf/dl-tunables.h +++ b/elf/dl-tunables.h @@ -21,17 +21,9 @@ #ifndef _TUNABLES_H_ #define _TUNABLES_H_ -#if !HAVE_TUNABLES -static inline void -__always_inline -__tunables_init (char **unused __attribute__ ((unused))) -{ - /* This is optimized out if tunables are not enabled. */ -} -#else -# include -# include -# include +#include +#include +#include typedef intmax_t tunable_num_t; @@ -44,12 +36,12 @@ typedef union typedef void (*tunable_callback_t) (tunable_val_t *); /* Full name for a tunable is top_ns.tunable_ns.id. */ -# define TUNABLE_NAME_S(top,ns,id) #top "." #ns "." #id +#define TUNABLE_NAME_S(top,ns,id) #top "." #ns "." #id -# define TUNABLE_ENUM_NAME(__top,__ns,__id) TUNABLE_ENUM_NAME1 (__top,__ns,__id) -# define TUNABLE_ENUM_NAME1(__top,__ns,__id) __top ## _ ## __ns ## _ ## __id +#define TUNABLE_ENUM_NAME(__top,__ns,__id) TUNABLE_ENUM_NAME1 (__top,__ns,__id) +#define TUNABLE_ENUM_NAME1(__top,__ns,__id) __top ## _ ## __ns ## _ ## __id -# include "dl-tunable-list.h" +#include "dl-tunable-list.h" extern void __tunables_init (char **); extern void __tunables_print (void); @@ -83,7 +75,7 @@ rtld_hidden_proto (__tunable_set_val) /* Get and return a tunable value. If the tunable was set externally and __CB is defined then call __CB before returning the value. */ -# define TUNABLE_GET_FULL(__top, __ns, __id, __type, __cb) \ +#define TUNABLE_GET_FULL(__top, __ns, __id, __type, __cb) \ ({ \ tunable_id_t id = TUNABLE_ENUM_NAME (__top, __ns, __id); \ __type ret; \ @@ -92,14 +84,14 @@ rtld_hidden_proto (__tunable_set_val) }) /* Set a tunable value. */ -# define TUNABLE_SET_FULL(__top, __ns, __id, __val) \ +#define TUNABLE_SET_FULL(__top, __ns, __id, __val) \ ({ \ __tunable_set_val (TUNABLE_ENUM_NAME (__top, __ns, __id), \ & (tunable_val_t) {.numval = __val}, NULL, NULL); \ }) /* Set a tunable value together with min/max values. */ -# define TUNABLE_SET_WITH_BOUNDS_FULL(__top, __ns, __id,__val, __min, __max) \ +#define TUNABLE_SET_WITH_BOUNDS_FULL(__top, __ns, __id,__val, __min, __max) \ ({ \ __tunable_set_val (TUNABLE_ENUM_NAME (__top, __ns, __id), \ & (tunable_val_t) {.numval = __val}, \ @@ -109,11 +101,7 @@ rtld_hidden_proto (__tunable_set_val) /* Namespace sanity for callback functions. Use this macro to keep the namespace of the modules clean. */ -# define TUNABLE_CALLBACK(__name) _dl_tunable_ ## __name - -# define TUNABLES_FRONTEND_valstring 1 -/* The default value for TUNABLES_FRONTEND. */ -# define TUNABLES_FRONTEND_yes TUNABLES_FRONTEND_valstring +#define TUNABLE_CALLBACK(__name) _dl_tunable_ ## __name static __always_inline bool tunable_val_lt (tunable_num_t lhs, tunable_num_t rhs, bool unsigned_cmp) @@ -149,4 +137,3 @@ tunable_is_name (const char *orig, const char *envname) } #endif -#endif diff --git a/elf/dl-usage.c b/elf/dl-usage.c index 53535c1583..98f0b0d027 100644 --- a/elf/dl-usage.c +++ b/elf/dl-usage.c @@ -195,12 +195,8 @@ setting environment variables (which would be inherited by subprocesses).\n\ in LIST\n\ --audit LIST use objects named in LIST as auditors\n\ --preload LIST preload objects named in LIST\n\ - --argv0 STRING set argv[0] to STRING before running\n" -#if HAVE_TUNABLES -"\ - --list-tunables list all tunables with minimum and maximum values\n" -#endif -"\ + --argv0 STRING set argv[0] to STRING before running\n\ + --list-tunables list all tunables with minimum and maximum values\n\ --list-diagnostics list diagnostics information\n\ --help display this help and exit\n\ --version output version information and exit\n\ diff --git a/elf/rtld.c b/elf/rtld.c index f82fbeb132..c1e383b055 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -357,9 +357,6 @@ struct rtld_global_ro _rtld_global_ro attribute_relro = ._dl_sysinfo = DL_SYSINFO_DEFAULT, #endif ._dl_debug_fd = STDERR_FILENO, -#if !HAVE_TUNABLES - ._dl_hwcap_mask = HWCAP_IMPORTANT, -#endif ._dl_lazy = 1, ._dl_fpu_control = _FPU_DEFAULT, ._dl_pagesize = EXEC_PAGESIZE, @@ -1483,7 +1480,6 @@ dl_main (const ElfW(Phdr) *phdr, _dl_argc -= 2; _dl_argv += 2; } -#if HAVE_TUNABLES else if (! strcmp (_dl_argv[1], "--list-tunables")) { state.mode = rtld_mode_list_tunables; @@ -1491,7 +1487,6 @@ dl_main (const ElfW(Phdr) *phdr, --_dl_argc; ++_dl_argv; } -#endif else if (! strcmp (_dl_argv[1], "--list-diagnostics")) { state.mode = rtld_mode_list_diagnostics; @@ -1519,13 +1514,11 @@ dl_main (const ElfW(Phdr) *phdr, else break; -#if HAVE_TUNABLES if (__glibc_unlikely (state.mode == rtld_mode_list_tunables)) { __tunables_print (); _exit (0); } -#endif if (state.mode == rtld_mode_list_diagnostics) _dl_print_diagnostics (_environ); @@ -2624,15 +2617,6 @@ process_envvars (struct dl_main_state *state) _dl_show_auxv (); break; -#if !HAVE_TUNABLES - case 10: - /* Mask for the important hardware capabilities. */ - if (!__libc_enable_secure - && memcmp (envline, "HWCAP_MASK", 10) == 0) - GLRO(dl_hwcap_mask) = _dl_strtoul (&envline[11], NULL); - break; -#endif - case 11: /* Path where the binary is found. */ if (!__libc_enable_secure @@ -2695,12 +2679,7 @@ process_envvars (struct dl_main_state *state) while (*nextp != '\0'); if (__access ("/etc/suid-debug", F_OK) != 0) - { -#if !HAVE_TUNABLES - unsetenv ("MALLOC_CHECK_"); -#endif - GLRO(dl_debug_mask) = 0; - } + GLRO(dl_debug_mask) = 0; if (state->mode != rtld_mode_normal) _exit (5); diff --git a/elf/tst-env-setuid-tunables.c b/elf/tst-env-setuid-tunables.c index 807b426012..7dfb0e073a 100644 --- a/elf/tst-env-setuid-tunables.c +++ b/elf/tst-env-setuid-tunables.c @@ -19,8 +19,6 @@ glibc.malloc.check and glibc.malloc.mmap_threshold but also retain glibc.malloc.mmap_threshold in an unprivileged child. */ -/* This is compiled as part of the testsuite but needs to see - HAVE_TUNABLES. */ #define _LIBC 1 #include "config.h" #undef _LIBC @@ -83,7 +81,6 @@ test_child (int off) { const char *val = getenv ("GLIBC_TUNABLES"); -#if HAVE_TUNABLES if (val != NULL && strcmp (val, resultstrings[off]) == 0) return 0; @@ -91,14 +88,6 @@ test_child (int off) printf ("[%d] Unexpected GLIBC_TUNABLES VALUE %s\n", off, val); return 1; -#else - if (val != NULL) - { - printf ("[%d] GLIBC_TUNABLES not cleared\n", off); - return 1; - } - return 0; -#endif } static int diff --git a/gmon/gmon.c b/gmon/gmon.c index 5e99a7351d..bc0e29438a 100644 --- a/gmon/gmon.c +++ b/gmon/gmon.c @@ -46,10 +46,8 @@ #include #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE gmon -# include -#endif +#define TUNABLE_NAMESPACE gmon +#include #ifdef PIC # include @@ -130,7 +128,6 @@ __monstartup (u_long lowpc, u_long highpc) struct gmonparam *p = &_gmonparam; long int minarcs, maxarcs; -#if HAVE_TUNABLES /* Read minarcs/maxarcs tunables. */ minarcs = TUNABLE_GET (minarcs, int32_t, NULL); maxarcs = TUNABLE_GET (maxarcs, int32_t, NULL); @@ -139,11 +136,6 @@ __monstartup (u_long lowpc, u_long highpc) ERR("monstartup: maxarcs < minarcs, setting maxarcs = minarcs\n"); maxarcs = minarcs; } -#else - /* No tunables, we use hardcoded defaults */ - minarcs = MINARCS; - maxarcs = MAXARCS; -#endif /* * If we are incorrectly called twice in a row (without an diff --git a/malloc/Makefile b/malloc/Makefile index dfb51d344c..2b7bd10d49 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -61,9 +61,7 @@ tests-internal += \ tst-dynarray-fail \ tst-dynarray-at-fail \ -ifneq (no,$(have-tunables)) tests += tst-malloc-usable-tunables tst-mxfast -endif tests += $(tests-static) test-srcs = tst-mtrace diff --git a/malloc/arena.c b/malloc/arena.c index ccd193953b..e98b779dbb 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -18,9 +18,7 @@ #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE malloc -#endif +#define TUNABLE_NAMESPACE malloc #include /* Compile-time constants. */ @@ -47,21 +45,13 @@ static inline size_t heap_min_size (void) { -#if HAVE_TUNABLES return mp_.hp_pagesize == 0 ? HEAP_MIN_SIZE : mp_.hp_pagesize; -#else - return HEAP_MIN_SIZE; -#endif } static inline size_t heap_max_size (void) { -#if HAVE_TUNABLES return mp_.hp_pagesize == 0 ? HEAP_MAX_SIZE : mp_.hp_pagesize * 4; -#else - return HEAP_MAX_SIZE; -#endif } /***************************************************************************/ @@ -239,8 +229,7 @@ __malloc_fork_unlock_child (void) __libc_lock_init (list_lock); } -#if HAVE_TUNABLES -# define TUNABLE_CALLBACK_FNDECL(__name, __type) \ +#define TUNABLE_CALLBACK_FNDECL(__name, __type) \ static inline int do_ ## __name (__type value); \ static void \ TUNABLE_CALLBACK (__name) (tunable_val_t *valp) \ @@ -263,42 +252,6 @@ TUNABLE_CALLBACK_FNDECL (set_tcache_unsorted_limit, size_t) #endif TUNABLE_CALLBACK_FNDECL (set_mxfast, size_t) TUNABLE_CALLBACK_FNDECL (set_hugetlb, size_t) -#else -/* Initialization routine. */ -#include -extern char **_environ; - -static char * -next_env_entry (char ***position) -{ - char **current = *position; - char *result = NULL; - - while (*current != NULL) - { - if (__builtin_expect ((*current)[0] == 'M', 0) - && (*current)[1] == 'A' - && (*current)[2] == 'L' - && (*current)[3] == 'L' - && (*current)[4] == 'O' - && (*current)[5] == 'C' - && (*current)[6] == '_') - { - result = &(*current)[7]; - - /* Save current position for next visit. */ - *position = ++current; - - break; - } - - ++current; - } - - return result; -} -#endif - #if USE_TCACHE static void tcache_key_initialize (void); @@ -343,7 +296,6 @@ ptmalloc_init (void) malloc_init_state (&main_arena); -#if HAVE_TUNABLES TUNABLE_GET (top_pad, size_t, TUNABLE_CALLBACK (set_top_pad)); TUNABLE_GET (perturb, int32_t, TUNABLE_CALLBACK (set_perturb_byte)); TUNABLE_GET (mmap_threshold, size_t, TUNABLE_CALLBACK (set_mmap_threshold)); @@ -363,70 +315,6 @@ ptmalloc_init (void) /* Force mmap for main arena instead of sbrk, so hugepages are explicitly used. */ __always_fail_morecore = true; -#else - if (__glibc_likely (_environ != NULL)) - { - char **runp = _environ; - char *envline; - - while (__builtin_expect ((envline = next_env_entry (&runp)) != NULL, - 0)) - { - size_t len = strcspn (envline, "="); - - if (envline[len] != '=') - /* This is a "MALLOC_" variable at the end of the string - without a '=' character. Ignore it since otherwise we - will access invalid memory below. */ - continue; - - switch (len) - { - case 8: - if (!__builtin_expect (__libc_enable_secure, 0)) - { - if (memcmp (envline, "TOP_PAD_", 8) == 0) - __libc_mallopt (M_TOP_PAD, strtol (&envline[9], NULL, 10)); - else if (memcmp (envline, "PERTURB_", 8) == 0) - __libc_mallopt (M_PERTURB, strtol (&envline[9], NULL, 10)); - } - break; - case 9: - if (!__builtin_expect (__libc_enable_secure, 0)) - { - if (memcmp (envline, "MMAP_MAX_", 9) == 0) - __libc_mallopt (M_MMAP_MAX, strtol (&envline[10], - NULL, 10)); - else if (memcmp (envline, "ARENA_MAX", 9) == 0) - __libc_mallopt (M_ARENA_MAX, strtol (&envline[10], - NULL, 10)); - } - break; - case 10: - if (!__builtin_expect (__libc_enable_secure, 0)) - { - if (memcmp (envline, "ARENA_TEST", 10) == 0) - __libc_mallopt (M_ARENA_TEST, strtol (&envline[11], - NULL, 10)); - } - break; - case 15: - if (!__builtin_expect (__libc_enable_secure, 0)) - { - if (memcmp (envline, "TRIM_THRESHOLD_", 15) == 0) - __libc_mallopt (M_TRIM_THRESHOLD, strtol (&envline[16], - NULL, 10)); - else if (memcmp (envline, "MMAP_THRESHOLD_", 15) == 0) - __libc_mallopt (M_MMAP_THRESHOLD, strtol (&envline[16], - NULL, 10)); - } - break; - default: - break; - } - } - } -#endif } /* Managing heaps and arenas (for concurrent threads) */ @@ -561,7 +449,6 @@ alloc_new_heap (size_t size, size_t top_pad, size_t pagesize, static heap_info * new_heap (size_t size, size_t top_pad) { -#if HAVE_TUNABLES if (__glibc_unlikely (mp_.hp_pagesize != 0)) { heap_info *h = alloc_new_heap (size, top_pad, mp_.hp_pagesize, @@ -569,7 +456,6 @@ new_heap (size_t size, size_t top_pad) if (h != NULL) return h; } -#endif return alloc_new_heap (size, top_pad, GLRO (dl_pagesize), 0); } diff --git a/malloc/malloc-check.c b/malloc/malloc-check.c index af27fd2c52..5732d81bf1 100644 --- a/malloc/malloc-check.c +++ b/malloc/malloc-check.c @@ -376,7 +376,6 @@ memalign_check (size_t alignment, size_t bytes) return mem2mem_check (tag_new_usable (mem), bytes); } -#if HAVE_TUNABLES static void TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) { @@ -384,7 +383,6 @@ TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) if (value != 0) __malloc_debug_enable (MALLOC_CHECK_HOOK); } -#endif static bool initialize_malloc_check (void) @@ -392,12 +390,6 @@ initialize_malloc_check (void) /* This is the copy of the malloc initializer that we pulled in along with malloc-check. This does not affect any of the libc malloc structures. */ ptmalloc_init (); -#if HAVE_TUNABLES TUNABLE_GET (check, int32_t, TUNABLE_CALLBACK (set_mallopt_check)); -#else - const char *s = secure_getenv ("MALLOC_CHECK_"); - if (s && s[0] != '\0' && s[0] != '0') - __malloc_debug_enable (MALLOC_CHECK_HOOK); -#endif return __is_malloc_debug_enabled (MALLOC_CHECK_HOOK); } diff --git a/malloc/malloc.c b/malloc/malloc.c index 76c50e3f58..05e65a2d54 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1856,14 +1856,12 @@ struct malloc_par INTERNAL_SIZE_T arena_test; INTERNAL_SIZE_T arena_max; -#if HAVE_TUNABLES /* Transparent Large Page support. */ INTERNAL_SIZE_T thp_pagesize; /* A value different than 0 means to align mmap allocation to hp_pagesize add hp_flags on flags. */ INTERNAL_SIZE_T hp_pagesize; int hp_flags; -#endif /* Memory map support */ int n_mmaps; @@ -1998,7 +1996,7 @@ free_perturb (char *p, size_t n) static inline void madvise_thp (void *p, INTERNAL_SIZE_T size) { -#if HAVE_TUNABLES && defined (MADV_HUGEPAGE) +#ifdef MADV_HUGEPAGE /* Do not consider areas smaller than a huge page or if the tunable is not active. */ if (mp_.thp_pagesize == 0 || size < mp_.thp_pagesize) @@ -2557,7 +2555,6 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) && (mp_.n_mmaps < mp_.n_mmaps_max))) { char *mm; -#if HAVE_TUNABLES if (mp_.hp_pagesize > 0 && nb >= mp_.hp_pagesize) { /* There is no need to isse the THP madvise call if Huge Pages are @@ -2566,7 +2563,6 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) if (mm != MAP_FAILED) return mm; } -#endif mm = sysmalloc_mmap (nb, pagesize, 0, av); if (mm != MAP_FAILED) return mm; @@ -2679,7 +2675,7 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) previous calls. Otherwise, we correct to page-align below. */ -#if HAVE_TUNABLES && defined (MADV_HUGEPAGE) +#ifdef MADV_HUGEPAGE /* Defined in brk.c. */ extern void *__curbrk; if (__glibc_unlikely (mp_.thp_pagesize != 0)) @@ -2718,12 +2714,10 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) */ char *mbrk = MAP_FAILED; -#if HAVE_TUNABLES if (mp_.hp_pagesize > 0) mbrk = sysmalloc_mmap_fallback (&size, nb, old_size, mp_.hp_pagesize, mp_.hp_pagesize, mp_.hp_flags, av); -#endif if (mbrk == MAP_FAILED) mbrk = sysmalloc_mmap_fallback (&size, nb, old_size, MMAP_AS_MORECORE_SIZE, pagesize, 0, av); @@ -2966,7 +2960,7 @@ systrim (size_t pad, mstate av) return 0; /* Release in pagesize units and round down to the nearest page. */ -#if HAVE_TUNABLES && defined (MADV_HUGEPAGE) +#ifdef MADV_HUGEPAGE if (__glibc_unlikely (mp_.thp_pagesize != 0)) extra = ALIGN_DOWN (top_area - pad, mp_.thp_pagesize); else @@ -5410,7 +5404,6 @@ do_set_mxfast (size_t value) return 0; } -#if HAVE_TUNABLES static __always_inline int do_set_hugetlb (size_t value) { @@ -5429,7 +5422,6 @@ do_set_hugetlb (size_t value) &mp_.hp_flags); return 0; } -#endif int __libc_mallopt (int param_number, int value) diff --git a/manual/install.texi b/manual/install.texi index 260f8a5c82..37edf26195 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -262,25 +262,6 @@ configure with @option{--disable-werror}. By default for x86_64, @theglibc{} is built with the vector math library. Use this option to disable the vector math library. -@item --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: - -@table @code -@item yes -This is the default if no option is passed to configure. This enables tunables -and selects the default frontend (currently @samp{valstring}). - -@item no -This option disables tunables. - -@item valstring -This enables tunables and selects the @samp{valstring} frontend for tunables. -This frontend allows users to specify tunables as a colon-separated list in a -single environment variable @env{GLIBC_TUNABLES}. -@end table - @item --disable-crypt Do not install the passphrase-hashing library @file{libcrypt} or the header file @file{crypt.h}. @file{unistd.h} will still declare the diff --git a/nptl/pthread_mutex_conf.c b/nptl/pthread_mutex_conf.c index 329c4cbb8f..9133384d47 100644 --- a/nptl/pthread_mutex_conf.c +++ b/nptl/pthread_mutex_conf.c @@ -16,8 +16,7 @@ License along with the GNU C Library; if not, see . */ -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE pthread +#define TUNABLE_NAMESPACE pthread #include #include #include @@ -53,4 +52,3 @@ __pthread_tunables_init (void) TUNABLE_GET (stack_cache_size, size_t, TUNABLE_CALLBACK (set_stack_cache_size)); } -#endif diff --git a/nptl/tst-mutex8.c b/nptl/tst-mutex8.c index 4ac5f5059f..e16284d29e 100644 --- a/nptl/tst-mutex8.c +++ b/nptl/tst-mutex8.c @@ -98,7 +98,6 @@ check_type (const char *mas, pthread_mutexattr_t *ma) /* Check if a mutex will be elided. Lock elision can only be activated via the tunables framework. By default, lock elision is disabled. */ bool assume_elided_mutex = false; -#if HAVE_TUNABLES int ma_type = PTHREAD_MUTEX_TIMED_NP; if (ma != NULL) { @@ -117,7 +116,6 @@ check_type (const char *mas, pthread_mutexattr_t *ma) if (TUNABLE_GET_FULL (glibc, elision, enable, int32_t, NULL) == 1) assume_elided_mutex = true; } -#endif e = pthread_mutex_init (m, ma); if (e != 0) diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index 29c10c2916..7d7a10bffa 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -445,7 +445,6 @@ class Context(object): '--disable-profile', '--disable-timezone-tools', '--disable-mathvec', - '--disable-tunables', '--disable-crypt', '--disable-experimental-malloc', '--disable-build-nscd', diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index c99dad77cc..e1ab272a79 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -586,11 +586,6 @@ struct rtld_global_ro /* Mask for hardware capabilities that are available. */ EXTERN uint64_t _dl_hwcap; -#if !HAVE_TUNABLES - /* Mask for important hardware capabilities we honour. */ - EXTERN uint64_t _dl_hwcap_mask; -#endif - #ifdef HAVE_AUX_VECTOR /* Pointer to the auxv list supplied to the program at startup. */ EXTERN ElfW(auxv_t) *_dl_auxv; @@ -1192,22 +1187,13 @@ extern struct link_map * _dl_get_dl_main_map (void) brk. */ void *_dl_early_allocate (size_t size) attribute_hidden; -/* Initialize the DSO sort algorithm to use. */ -#if !HAVE_TUNABLES -static inline void -__always_inline -_dl_sort_maps_init (void) -{ - /* This is optimized out if tunables are not enabled. */ -} -#else -extern void _dl_sort_maps_init (void) attribute_hidden; -#endif - /* Initialization of libpthread for statically linked applications. If libpthread is not linked in, this is an empty function. */ void __pthread_initialize_minimal (void) weak_function; +/* Initialize the DSO sort algorithm to use. */ +extern void _dl_sort_maps_init (void) attribute_hidden; + /* Allocate memory for static TLS block (unless MEM is nonzero) and dtv. */ extern void *_dl_allocate_tls (void *mem); rtld_hidden_proto (_dl_allocate_tls) diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h index b50331b50f..81397fb90b 100644 --- a/sysdeps/generic/unsecvars.h +++ b/sysdeps/generic/unsecvars.h @@ -1,16 +1,10 @@ -#if !HAVE_TUNABLES -# define GLIBC_TUNABLES_ENVVAR "GLIBC_TUNABLES\0" -#else -# define GLIBC_TUNABLES_ENVVAR -#endif - /* Environment variable to be removed for SUID programs. The names are all stuffed in a single string which means they have to be terminated with a '\0' explicitly. */ #define UNSECURE_ENVVARS \ "GCONV_PATH\0" \ "GETCONF_DIR\0" \ - GLIBC_TUNABLES_ENVVAR \ + "GLIBC_TUNABLES\0" \ "HOSTALIASES\0" \ "LD_AUDIT\0" \ "LD_DEBUG\0" \ diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c index 0db0349c4b..50dc778852 100644 --- a/sysdeps/nptl/dl-tls_init_tp.c +++ b/sysdeps/nptl/dl-tls_init_tp.c @@ -102,9 +102,7 @@ __tls_init_tp (void) { bool do_rseq = true; -#if HAVE_TUNABLES do_rseq = TUNABLE_GET (rseq, int, NULL); -#endif if (rseq_register_current_thread (pd, do_rseq)) { /* We need a writable view of the variables. They are in diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h index 536b75b582..54f9198681 100644 --- a/sysdeps/nptl/pthreadP.h +++ b/sysdeps/nptl/pthreadP.h @@ -45,11 +45,7 @@ static inline short max_adaptive_count (void) { -#if HAVE_TUNABLES return __mutex_aconf.spin_count; -#else - return DEFAULT_ADAPTIVE_COUNT; -#endif } diff --git a/sysdeps/nptl/pthread_early_init.h b/sysdeps/nptl/pthread_early_init.h index 39255d928c..f1a3b65d1a 100644 --- a/sysdeps/nptl/pthread_early_init.h +++ b/sysdeps/nptl/pthread_early_init.h @@ -53,9 +53,7 @@ __pthread_early_init (void) __default_pthread_attr.internal.stacksize = limit.rlim_cur; __default_pthread_attr.internal.guardsize = GLRO (dl_pagesize); -#if HAVE_TUNABLES __pthread_tunables_init (); -#endif } #endif /* _PTHREAD_EARLY_INIT_H */ diff --git a/sysdeps/nptl/pthread_mutex_conf.h b/sysdeps/nptl/pthread_mutex_conf.h index 6d4b6ad880..8151bafce7 100644 --- a/sysdeps/nptl/pthread_mutex_conf.h +++ b/sysdeps/nptl/pthread_mutex_conf.h @@ -20,7 +20,6 @@ #include -#if HAVE_TUNABLES struct mutex_config { int spin_count; @@ -30,12 +29,5 @@ extern struct mutex_config __mutex_aconf; libc_hidden_proto (__mutex_aconf) extern void __pthread_tunables_init (void) attribute_hidden; -#else -static inline void -__pthread_tunables_init (void) -{ - /* No tunables to initialize. */ -} -#endif #endif diff --git a/sysdeps/powerpc/cpu-features.c b/sysdeps/powerpc/cpu-features.c index 9ed0e5e8c1..0ef3cf89d2 100644 --- a/sysdeps/powerpc/cpu-features.c +++ b/sysdeps/powerpc/cpu-features.c @@ -18,10 +18,7 @@ #include #include - -#if HAVE_TUNABLES -# include -#endif +#include static inline void init_cpu_features (struct cpu_features *cpu_features) @@ -29,11 +26,7 @@ init_cpu_features (struct cpu_features *cpu_features) /* Default is to use aligned memory access on optimized function unless tunables is enable, since for this case user can explicit disable unaligned optimizations. */ -#if HAVE_TUNABLES int32_t cached_memfunc = TUNABLE_GET (glibc, cpu, cached_memopt, int32_t, NULL); cpu_features->use_cached_memopt = (cached_memfunc > 0); -#else - cpu_features->use_cached_memopt = false; -#endif } diff --git a/sysdeps/s390/cpu-features.c b/sysdeps/s390/cpu-features.c index afeb9b5638..39f8c23a60 100644 --- a/sysdeps/s390/cpu-features.c +++ b/sysdeps/s390/cpu-features.c @@ -18,15 +18,12 @@ #include -#if HAVE_TUNABLES -# include -# include -# include +#include +#include +#include extern __typeof (memcmp) MEMCMP_DEFAULT; -#endif -#if HAVE_TUNABLES -# define S390_COPY_CPU_FEATURES(SRC_PTR, DEST_PTR) \ +#define S390_COPY_CPU_FEATURES(SRC_PTR, DEST_PTR) \ (DEST_PTR)->hwcap = (SRC_PTR)->hwcap; \ (DEST_PTR)->stfle_bits[0] = (SRC_PTR)->stfle_bits[0]; @@ -205,7 +202,6 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) cpu_features->stfle_bits[0] = cpu_features_curr.stfle_bits[0] & cpu_features_orig.stfle_bits[0]; } -#endif static inline void init_cpu_features (struct cpu_features *cpu_features) @@ -233,7 +229,5 @@ init_cpu_features (struct cpu_features *cpu_features) cpu_features->stfle_bits[0] = 0ULL; } -#if HAVE_TUNABLES TUNABLE_GET (glibc, cpu, hwcaps, tunable_val_t *, TUNABLE_CALLBACK (set_hwcaps)); -#endif } diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index 835e68925b..9b57ae1a93 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -39,8 +39,9 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr) return 1; else if (ehdr->e_machine == EM_SPARC32PLUS) { -#if HAVE_TUNABLES || defined SHARED - uint64_t hwcap_mask = GET_HWCAP_MASK(); +#if defined SHARED + uint64_t hwcap_mask = TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t, + NULL); return GLRO(dl_hwcap) & hwcap_mask & HWCAP_SPARC_V9; #else return GLRO(dl_hwcap) & HWCAP_SPARC_V9; diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index f8bd12d991..b4323b2604 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -245,11 +245,9 @@ tests-internal += \ tst-sigcontext-get_pc \ # tests-internal -ifneq (no,$(have-tunables)) tests-internal += \ tst-rseq-disable \ - # tests-internal $(have-tunables) -endif + # tests-internal tests-time64 += \ tst-adjtimex-time64 \ diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c index 0380f116de..dc09c1c827 100644 --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c @@ -30,7 +30,6 @@ to see when pointer have been correctly tagged. */ #define MTE_ALLOWED_TAGS (0xfffe << PR_MTE_TAG_SHIFT) -#if HAVE_TUNABLES struct cpu_list { const char *name; @@ -59,19 +58,16 @@ get_midr_from_mcpu (const char *mcpu) return UINT64_MAX; } -#endif static inline void init_cpu_features (struct cpu_features *cpu_features) { register uint64_t midr = UINT64_MAX; -#if HAVE_TUNABLES /* Get the tunable override. */ const char *mcpu = TUNABLE_GET (glibc, cpu, name, const char *, NULL); if (mcpu != NULL) midr = get_midr_from_mcpu (mcpu); -#endif /* If there was no useful tunable override, query the MIDR if the kernel allows it. */ @@ -100,13 +96,11 @@ init_cpu_features (struct cpu_features *cpu_features) cpu_features->mte_state = 0; #ifdef USE_MTAG -# if HAVE_TUNABLES int mte_state = TUNABLE_GET (glibc, mem, tagging, unsigned, 0); cpu_features->mte_state = (GLRO (dl_hwcap2) & HWCAP2_MTE) ? mte_state : 0; /* If we lack the MTE feature, disable the tunable, since it will otherwise cause instructions that won't run on this CPU to be used. */ TUNABLE_SET (glibc, mem, tagging, cpu_features->mte_state); -# endif if (cpu_features->mte_state & 4) /* Enable choosing system-preferred faulting mode. */ diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c index 8cd945a6c5..7c98dbd0d0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c @@ -22,9 +22,7 @@ #include #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE elision -#endif +#define TUNABLE_NAMESPACE elision #include /* Reasonable initial tuning values, may be revised in the future. @@ -51,7 +49,6 @@ struct elision_config __elision_aconf = .skip_trylock_internal_abort = 3, }; -#if HAVE_TUNABLES static inline void __always_inline do_set_elision_enable (int32_t elision_enable) @@ -94,14 +91,12 @@ TUNABLE_CALLBACK_FNDECL (skip_lock_internal_abort, int32_t); TUNABLE_CALLBACK_FNDECL (skip_lock_out_of_tbegin_retries, int32_t); TUNABLE_CALLBACK_FNDECL (try_tbegin, int32_t); TUNABLE_CALLBACK_FNDECL (skip_trylock_internal_abort, int32_t); -#endif /* Initialize elision. */ void __lll_elision_init (void) { -#if HAVE_TUNABLES /* Elision depends on tunables and must be explicitly turned on by setting the appropriate tunable on a supported platform. */ @@ -117,7 +112,6 @@ __lll_elision_init (void) TUNABLE_CALLBACK (set_elision_try_tbegin)); TUNABLE_GET (skip_trylock_internal_abort, int32_t, TUNABLE_CALLBACK (set_elision_skip_trylock_internal_abort)); -#endif /* Linux from 3.9 through 4.2 do not abort HTM transaction on syscalls, instead it suspends the transaction and resumes it when returning to diff --git a/sysdeps/unix/sysv/linux/s390/elision-conf.c b/sysdeps/unix/sysv/linux/s390/elision-conf.c index 5911e51097..6a6d6814ee 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-conf.c +++ b/sysdeps/unix/sysv/linux/s390/elision-conf.c @@ -22,9 +22,7 @@ #include #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE elision -#endif +#define TUNABLE_NAMESPACE elision #include /* Reasonable initial tuning values, may be revised in the future. @@ -51,7 +49,6 @@ struct elision_config __elision_aconf = .skip_trylock_internal_abort = 3, }; -#if HAVE_TUNABLES static inline void __always_inline do_set_elision_enable (int32_t elision_enable) @@ -93,14 +90,12 @@ TUNABLE_CALLBACK_FNDECL (skip_lock_internal_abort, int32_t); TUNABLE_CALLBACK_FNDECL (skip_lock_out_of_tbegin_retries, int32_t); TUNABLE_CALLBACK_FNDECL (try_tbegin, int32_t); TUNABLE_CALLBACK_FNDECL (skip_trylock_internal_abort, int32_t); -#endif /* Initialize elison. */ void __lll_elision_init (void) { -#if HAVE_TUNABLES /* Elision depends on tunables and must be explicitly turned on by setting the appropriate tunable on a supported platform. */ @@ -116,7 +111,6 @@ __lll_elision_init (void) TUNABLE_CALLBACK (set_elision_try_tbegin)); TUNABLE_GET (skip_trylock_internal_abort, int32_t, TUNABLE_CALLBACK (set_elision_skip_trylock_internal_abort)); -#endif if (!__pthread_force_elision) __elision_aconf.try_tbegin = 0; /* Disable elision on rwlocks. */ diff --git a/sysdeps/unix/sysv/linux/x86/elision-conf.c b/sysdeps/unix/sysv/linux/x86/elision-conf.c index 6447bda96b..cfd9a71e31 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-conf.c +++ b/sysdeps/unix/sysv/linux/x86/elision-conf.c @@ -22,9 +22,7 @@ #include #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE elision -#endif +#define TUNABLE_NAMESPACE elision #include /* Reasonable initial tuning values, may be revised in the future. @@ -48,7 +46,6 @@ struct elision_config __elision_aconf = .skip_trylock_internal_abort = 3, }; -#if HAVE_TUNABLES static __always_inline void do_set_elision_enable (int32_t elision_enable) { @@ -87,14 +84,12 @@ TUNABLE_CALLBACK_FNDECL (skip_lock_busy, int32_t); TUNABLE_CALLBACK_FNDECL (skip_lock_internal_abort, int32_t); TUNABLE_CALLBACK_FNDECL (retry_try_xbegin, int32_t); TUNABLE_CALLBACK_FNDECL (skip_trylock_internal_abort, int32_t); -#endif /* Initialize elision. */ void __lll_elision_init (void) { -#if HAVE_TUNABLES /* Elision depends on tunables and must be explicitly turned on by setting the appropriate tunable on a supported platform. */ @@ -108,7 +103,6 @@ __lll_elision_init (void) TUNABLE_CALLBACK (set_elision_retry_try_xbegin)); TUNABLE_GET (skip_trylock_internal_abort, int32_t, TUNABLE_CALLBACK (set_elision_skip_trylock_internal_abort)); -#endif if (!__pthread_force_elision) __elision_aconf.retry_try_xbegin = 0; /* Disable elision on rwlocks. */ diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/sysdeps/unix/sysv/linux/x86_64/64/Makefile index 8ff4f27786..1bf7d528b2 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/Makefile +++ b/sysdeps/unix/sysv/linux/x86_64/64/Makefile @@ -2,7 +2,6 @@ default-abi := 64 ifeq ($(subdir),elf) -ifneq ($(have-tunables),no) tests-map-32bit = \ tst-map-32bit-1a \ @@ -24,4 +23,3 @@ tst-map-32bit-1b-ENV = GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1 $(objpfx)tst-map-32bit-1b: $(objpfx)tst-map-32bit-mod.so endif -endif diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile index 56fd5fc805..917c26f116 100644 --- a/sysdeps/x86/Makefile +++ b/sysdeps/x86/Makefile @@ -25,7 +25,6 @@ tests-static += \ tst-ifunc-isa-1-static test-xfail-tst-ifunc-isa-1 = $(with-lld) test-xfail-tst-ifunc-isa-1-static = $(with-lld) -ifneq ($(have-tunables),no) tests += \ tst-ifunc-isa-2 \ tst-ifunc-isa-2-static @@ -35,7 +34,6 @@ test-xfail-tst-ifunc-isa-2 = $(with-lld) test-xfail-tst-ifunc-isa-2-static = $(with-lld) endif endif -endif ifeq (yes,$(enable-x86-isa-level)) tests += tst-isa-level-1 modules-names += tst-isa-level-mod-1-baseline \ @@ -65,11 +63,9 @@ $(objpfx)tst-isa-level-1.out: $(objpfx)tst-isa-level-mod-1-baseline.so \ $(objpfx)tst-isa-level-mod-1-v3.so \ $(objpfx)tst-isa-level-mod-1-v4.so endif -ifneq ($(have-tunables),no) tst-ifunc-isa-2-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SSE4_2,-AVX,-AVX2,-AVX512F tst-ifunc-isa-2-static-ENV = $(tst-ifunc-isa-2-ENV) endif -endif ifeq ($(subdir),math) tests += tst-ldbl-nonnormal-printf @@ -79,12 +75,10 @@ ifeq ($(subdir),setjmp) gen-as-const-headers += jmp_buf-ssp.sym sysdep_routines += __longjmp_cancel ifneq ($(enable-cet),no) -ifneq ($(have-tunables),no) tests += tst-setjmp-cet tst-setjmp-cet-ENV = GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on endif endif -endif ifeq ($(subdir),string) sysdep_routines += cacheinfo @@ -135,10 +129,8 @@ tests += tst-cet-legacy-1 tst-cet-legacy-1a tst-cet-legacy-2 \ tst-cet-legacy-10 tst-cet-legacy-10-static tests-static += tst-cet-legacy-9-static tst-cet-legacy-10-static tst-cet-legacy-1a-ARGS = -- $(host-test-program-cmd) -ifneq (no,$(have-tunables)) tests += tst-cet-legacy-4a tst-cet-legacy-4b tst-cet-legacy-4c \ tst-cet-legacy-5b tst-cet-legacy-6b -endif modules-names += tst-cet-legacy-mod-1 tst-cet-legacy-mod-2 \ tst-cet-legacy-mod-4 tst-cet-legacy-mod-5a \ tst-cet-legacy-mod-5b tst-cet-legacy-mod-5c \ @@ -195,7 +187,6 @@ $(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \ $(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so $(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete -ifneq (no,$(have-tunables)) $(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive $(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so @@ -211,7 +202,6 @@ tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK tst-cet-legacy-9-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK tst-cet-legacy-9-static-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK endif -endif # Add -fcf-protection to CFLAGS when CET is enabled. CFLAGS-.o += -fcf-protection diff --git a/sysdeps/x86/cacheinfo.h b/sysdeps/x86/cacheinfo.h index 7a99e04b73..ec1bc142c4 100644 --- a/sysdeps/x86/cacheinfo.h +++ b/sysdeps/x86/cacheinfo.h @@ -21,11 +21,9 @@ #include #include -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE cpu -# include /* Get STDOUT_FILENO for _dl_printf. */ -# include -#endif +#define TUNABLE_NAMESPACE cpu +#include /* Get STDOUT_FILENO for _dl_printf. */ +#include #if IS_IN (libc) /* Data cache size for use in memory and string routines, typically diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index 822688e21f..978eb29f72 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -23,11 +23,10 @@ #include #include -#if HAVE_TUNABLES extern void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *) attribute_hidden; -# ifdef __LP64__ +#ifdef __LP64__ static void TUNABLE_CALLBACK (set_prefer_map_32bit_exec) (tunable_val_t *valp) { @@ -35,17 +34,14 @@ TUNABLE_CALLBACK (set_prefer_map_32bit_exec) (tunable_val_t *valp) GLRO(dl_x86_cpu_features).preferred[index_arch_Prefer_MAP_32BIT_EXEC] |= bit_arch_Prefer_MAP_32BIT_EXEC; } -# endif +#endif -# if CET_ENABLED +#if CET_ENABLED extern void TUNABLE_CALLBACK (set_x86_ibt) (tunable_val_t *) attribute_hidden; extern void TUNABLE_CALLBACK (set_x86_shstk) (tunable_val_t *) attribute_hidden; -# endif -#endif -#if CET_ENABLED # include #endif @@ -712,13 +708,12 @@ no_cpuid: dl_init_cacheinfo (cpu_features); -#if HAVE_TUNABLES TUNABLE_GET (hwcaps, tunable_val_t *, TUNABLE_CALLBACK (set_hwcaps)); -# ifdef __LP64__ +#ifdef __LP64__ TUNABLE_GET (prefer_map_32bit_exec, tunable_val_t *, TUNABLE_CALLBACK (set_prefer_map_32bit_exec)); -# endif +#endif bool disable_xsave_features = false; @@ -774,13 +769,6 @@ no_cpuid: CPU_FEATURE_UNSET (cpu_features, FMA4); } -#elif defined SHARED - /* Reuse dl_platform, dl_hwcap and dl_hwcap_mask for x86. The - glibc.cpu.hwcap_mask tunable is initialized already, so no - need to do this. */ - GLRO(dl_hwcap_mask) = HWCAP_IMPORTANT; -#endif - #ifdef __x86_64__ GLRO(dl_hwcap) = HWCAP_X86_64; if (cpu_features->basic.kind == arch_kind_intel) @@ -828,12 +816,10 @@ no_cpuid: #endif #if CET_ENABLED -# if HAVE_TUNABLES TUNABLE_GET (x86_ibt, tunable_val_t *, TUNABLE_CALLBACK (set_x86_ibt)); TUNABLE_GET (x86_shstk, tunable_val_t *, TUNABLE_CALLBACK (set_x86_shstk)); -# endif /* Check CET status. */ unsigned int cet_status = get_cet_status (); diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c index 772fb0c4c2..0d4f328585 100644 --- a/sysdeps/x86/cpu-tunables.c +++ b/sysdeps/x86/cpu-tunables.c @@ -16,31 +16,30 @@ License along with the GNU C Library; if not, see . */ -#if HAVE_TUNABLES -# define TUNABLE_NAMESPACE cpu -# include -# include -# include /* Get STDOUT_FILENO for _dl_printf. */ -# include -# include -# include -# include +#define TUNABLE_NAMESPACE cpu +#include +#include +#include /* Get STDOUT_FILENO for _dl_printf. */ +#include +#include +#include +#include /* We can't use IFUNC memcmp nor strlen in init_cpu_features from libc.a since IFUNC must be set up by init_cpu_features. */ -# if defined USE_MULTIARCH && !defined SHARED -# ifdef __x86_64__ +#if defined USE_MULTIARCH && !defined SHARED +# ifdef __x86_64__ /* DEFAULT_MEMCMP by sysdeps/x86_64/memcmp-isa-default-impl.h. */ -# include -# else -# define DEFAULT_MEMCMP __memcmp_ia32 -# endif -extern __typeof (memcmp) DEFAULT_MEMCMP; +# include # else -# define DEFAULT_MEMCMP memcmp +# define DEFAULT_MEMCMP __memcmp_ia32 # endif +extern __typeof (memcmp) DEFAULT_MEMCMP; +#else +# define DEFAULT_MEMCMP memcmp +#endif -# define CHECK_GLIBC_IFUNC_CPU_OFF(f, cpu_features, name, len) \ +#define CHECK_GLIBC_IFUNC_CPU_OFF(f, cpu_features, name, len) \ _Static_assert (sizeof (#name) - 1 == len, #name " != " #len); \ if (!DEFAULT_MEMCMP (f, #name, len)) \ { \ @@ -50,7 +49,7 @@ extern __typeof (memcmp) DEFAULT_MEMCMP; /* Disable a preferred feature NAME. We don't enable a preferred feature which isn't available. */ -# define CHECK_GLIBC_IFUNC_PREFERRED_OFF(f, cpu_features, name, len) \ +#define CHECK_GLIBC_IFUNC_PREFERRED_OFF(f, cpu_features, name, len) \ _Static_assert (sizeof (#name) - 1 == len, #name " != " #len); \ if (!DEFAULT_MEMCMP (f, #name, len)) \ { \ @@ -60,7 +59,7 @@ extern __typeof (memcmp) DEFAULT_MEMCMP; } /* Enable/disable a preferred feature NAME. */ -# define CHECK_GLIBC_IFUNC_PREFERRED_BOTH(f, cpu_features, name, \ +#define CHECK_GLIBC_IFUNC_PREFERRED_BOTH(f, cpu_features, name, \ disable, len) \ _Static_assert (sizeof (#name) - 1 == len, #name " != " #len); \ if (!DEFAULT_MEMCMP (f, #name, len)) \ @@ -74,7 +73,7 @@ extern __typeof (memcmp) DEFAULT_MEMCMP; /* Enable/disable a preferred feature NAME. Enable a preferred feature only if the feature NEED is usable. */ -# define CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH(f, cpu_features, name, \ +#define CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH(f, cpu_features, name, \ need, disable, len) \ _Static_assert (sizeof (#name) - 1 == len, #name " != " #len); \ if (!DEFAULT_MEMCMP (f, #name, len)) \ @@ -286,8 +285,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) while (*c != '\0'); } -# if CET_ENABLED - +#if CET_ENABLED attribute_hidden void TUNABLE_CALLBACK (set_x86_ibt) (tunable_val_t *valp) @@ -313,5 +311,4 @@ TUNABLE_CALLBACK (set_x86_shstk) (tunable_val_t *valp) sizeof ("permissive")) == 0) GL(dl_x86_feature_control).shstk = cet_permissive; } -# endif #endif diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h index a0474af8d1..ab671487da 100644 --- a/sysdeps/x86/dl-cacheinfo.h +++ b/sysdeps/x86/dl-cacheinfo.h @@ -760,10 +760,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) else if (non_temporal_threshold > maximum_non_temporal_threshold) non_temporal_threshold = maximum_non_temporal_threshold; -#if HAVE_TUNABLES /* NB: The REP MOVSB threshold must be greater than VEC_SIZE * 8. */ unsigned int minimum_rep_movsb_threshold; -#endif /* NB: The default REP MOVSB threshold is 4096 * (VEC_SIZE / 16) for VEC_SIZE == 64 or 32. For VEC_SIZE == 16, the default REP MOVSB threshold is 2048 * (VEC_SIZE / 16). */ @@ -772,24 +770,18 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) && !CPU_FEATURE_PREFERRED_P (cpu_features, Prefer_No_AVX512)) { rep_movsb_threshold = 4096 * (64 / 16); -#if HAVE_TUNABLES minimum_rep_movsb_threshold = 64 * 8; -#endif } else if (CPU_FEATURE_PREFERRED_P (cpu_features, AVX_Fast_Unaligned_Load)) { rep_movsb_threshold = 4096 * (32 / 16); -#if HAVE_TUNABLES minimum_rep_movsb_threshold = 32 * 8; -#endif } else { rep_movsb_threshold = 2048 * (16 / 16); -#if HAVE_TUNABLES minimum_rep_movsb_threshold = 16 * 8; -#endif } /* NB: The default REP MOVSB threshold is 2112 on processors with fast short REP MOVSB (FSRM). */ @@ -799,7 +791,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) /* The default threshold to use Enhanced REP STOSB. */ unsigned long int rep_stosb_threshold = 2048; -#if HAVE_TUNABLES long int tunable_size; tunable_size = TUNABLE_GET (x86_data_cache_size, long int, NULL); @@ -836,7 +827,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) minimum_rep_movsb_threshold, SIZE_MAX); TUNABLE_SET_WITH_BOUNDS (x86_rep_stosb_threshold, rep_stosb_threshold, 1, SIZE_MAX); -#endif unsigned long int rep_movsb_stop_threshold; /* ERMS feature is implemented from AMD Zen3 architecture and it is diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile index 688eb2d7c4..54396c3c3f 100644 --- a/sysdeps/x86_64/Makefile +++ b/sysdeps/x86_64/Makefile @@ -57,7 +57,6 @@ $(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o CFLAGS-tst-quad1pie.c = $(PIE-ccflag) CFLAGS-tst-quad2pie.c = $(PIE-ccflag) -ifneq (no,$(have-tunables)) tests += tst-platform-1 modules-names += tst-platformmod-1 x86_64/tst-platformmod-2 extra-test-objs += tst-platformmod-2.o @@ -71,7 +70,6 @@ $(objpfx)tst-platform-1.out: $(objpfx)x86_64/tst-platformmod-2.so # always set to x86_64. tst-platform-1-ENV = LD_PRELOAD=$(objpfx)\$$PLATFORM/tst-platformmod-2.so \ GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512F,-AVX2 -endif tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 \ tst-audit10 tst-sse tst-avx tst-avx512