https://github.com/Genivia/ugrep/pull/50 From e5413eeb4a98339587e9b32fe098e305b2bb9092 Mon Sep 17 00:00:00 2001 From: "Bernhard M. Wiedemann" Date: Sat, 4 Jul 2020 06:18:32 +0200 Subject: [PATCH] Disable march=native for SSE2 Without this patch, the code would only build binaries with SSE2, if the build machine CPU supported SSE2. And through the -march=native flag, it would then use more CPU features available on the build CPU that might not be available on the target machine CPU. That can cause an illegal instruction exception on the target machine. This patch changes behaviour so that only configure options determine the result of the build, regarding SSE2. See https://reproducible-builds.org/ for why this is good. This PR was done while working on reproducible builds for openSUSE. --- configure | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) Index: ugrep-2.3.2/configure =================================================================== --- ugrep-2.3.2.orig/configure +++ ugrep-2.3.2/configure @@ -7708,7 +7709,7 @@ $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports SSE2 intrinsics" >&5 $as_echo_n "checking whether ${CXX} supports SSE2 intrinsics... " >&6; } save_CXXFLAGS=$CXXFLAGS - CXXFLAGS="-march=native" + CXXFLAGS="-msse2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -7730,7 +7731,7 @@ rm -f core conftest.err conftest.$ac_obj { $as_echo "$as_me:${as_lineno-$LINENO}: result: $msse2_ok" >&5 $as_echo "$msse2_ok" >&6; } if test "x$msse2_ok" = "xyes"; then - SIMD_FLAGS="-march=native -msse2 -DHAVE_SSE2" + SIMD_FLAGS="-msse2 -DHAVE_SSE2" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5