From: Francesco Chemolli <5175948+kinkie@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:03:45 +0000 (+0000) Subject: Flip configure --enable-arch-native default (#2261) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dc66c46762fb94e3dcf0103b5c6f7bc3a1ef5aa5;p=thirdparty%2Fsquid.git Flip configure --enable-arch-native default (#2261) Flip the default of configure's `--enable-arch-native` option from enabled to disabled. GCC's and clang's `-march=native` argument causes issues in some environments, most notably containers where the compilers' heuristics about CPU feature set may fail. These issues manifest as hard-to-reproduce SIGILL errors in binaries such as `squid` or unit test programs. The new default is safer. Performance-minded administrators still have a convenient option to optimize via `--enable-arch-native`. --- diff --git a/configure.ac b/configure.ac index 9dd4a09aa8..4f595eb9d4 100644 --- a/configure.ac +++ b/configure.ac @@ -68,19 +68,23 @@ AC_USE_SYSTEM_EXTENSIONS AC_LANG([C++]) -# Clang 3.2 on some CPUs requires -march-native to detect correctly. -# GCC 4.3+ can also produce faster executables when its used. +# Some compilers can produce faster executables when its used. # But building inside a virtual machine environment has been found to # cause random Illegal Instruction errors due to mis-detection of CPU. AC_ARG_ENABLE(arch-native, - AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific + AS_HELP_STRING([--enable-arch-native],[Some compilers offer CPU-specific optimizations with the -march=native parameter. - This flag disables the optimization. The default is to - auto-detect compiler support and use where available.]), [ + This flag enables the optimization, by default disabled, + provided that the compiler supports it. Enabling this + optimization may cause crashes due to illegal instruction errors + when Squid is run on a CPU different from the one it is built on, + and in some containerized or virtualized environments]), [ SQUID_YESNO([$enableval],[--enable-arch-native]) ]) -AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}]) -AS_IF([test "x${enable_arch_native}" != "xno"],[ +AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=no}]) +AS_IF([test "x${enable_arch_native}" = "xyes"],[ + # XXX: Fail if the explicitly requested native optimization is not available. + # TODO: Make this a tristate yes/no/auto. SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native]) ]) diff --git a/doc/release-notes/release-7.sgml.in b/doc/release-notes/release-7.sgml.in index 42a84eb061..ef5c2f6875 100644 --- a/doc/release-notes/release-7.sgml.in +++ b/doc/release-notes/release-7.sgml.in @@ -286,7 +286,16 @@ This section gives an account of those changes in three categories: Changes to existing options