diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e890830..1c030dcf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -508,7 +508,7 @@ upx_print_var(CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_AR CMAKE_RANLIB) upx_print_var(CMAKE_C_COMPILER_ID CMAKE_C_COMPILER_VERSION CMAKE_C_COMPILER_FRONTEND_VARIANT CMAKE_C_COMPILER_ARCHITECTURE_ID CMAKE_C_PLATFORM_ID CMAKE_C_COMPILER_ABI) upx_print_var(CMAKE_CXX_COMPILER_ID CMAKE_CXX_COMPILER_VERSION CMAKE_CXX_COMPILER_FRONTEND_VARIANT CMAKE_CXX_COMPILER_ARCHITECTURE_ID CMAKE_CXX_PLATFORM_ID CMAKE_CXX_COMPILER_ABI) upx_print_var(CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_POSITION_INDEPENDENT_CODE CMAKE_TRY_COMPILE_CONFIGURATION) -upx_print_var(APPLE CYGWIN GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE UNIX WIN32 WIN64) +upx_print_var(APPLE CLANG CYGWIN GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE UNIX WIN32 WIN64) endif() # UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO upx_print_var(CMAKE_INSTALL_PREFIX CMAKE_CONFIGURATION_TYPES CMAKE_BUILD_TYPE) if(Threads_FOUND) diff --git a/misc/cmake/functions.cmake b/misc/cmake/functions.cmake index 6e18c1f2..4389eac3 100644 --- a/misc/cmake/functions.cmake +++ b/misc/cmake/functions.cmake @@ -293,8 +293,12 @@ function(upx_sanitize_target) # ARGV elseif(MINGW OR CYGWIN) # avoid link errors with current MinGW-w64 versions # see https://www.mingw-w64.org/contribute/#sanitizers-asan-tsan-usan + elseif(CMAKE_C_COMPILER_ID MATCHES "^Clang$" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "9.0") + # unreliable/broken sanitize implementation before clang-9 (Sep 2019) + message(WARNING "WARNING: ignoring SANITIZE for target '${t}'") elseif(CMAKE_C_COMPILER_ID MATCHES "^GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "8.0") - # unsupported compiler; unreliable/broken sanitize implementation + # unsupported compiler; unreliable/broken sanitize implementation before gcc-8 (May 2018) + message(WARNING "WARNING: ignoring SANITIZE for target '${t}'") else() # default sanitizer for Debug builds target_compile_options(${t} PRIVATE $<$:-fsanitize=undefined -fsanitize-undefined-trap-on-error -fstack-protector-all>) diff --git a/src/check/dt_check.cpp b/src/check/dt_check.cpp index a55c57d2..717c2d56 100644 --- a/src/check/dt_check.cpp +++ b/src/check/dt_check.cpp @@ -384,14 +384,6 @@ static noinline bool shall_test_float_division_by_zero(void) { #if defined(__clang__) && defined(__FAST_MATH__) && defined(__INTEL_LLVM_COMPILER) // warning: comparison with NaN always evaluates to false in fast floating point modes fprintf(stderr, "upx: WARNING: ignoring %s: __FAST_MATH__\n", envvar); -#elif defined(__clang__) && (__clang_major__ < 9) && defined(__SANITIZE_UNDEFINED_BEHAVIOR__) - // UBSAN problem with clang < 9 - // @COMPILER_BUG @CLANG_BUG @UBSAN_BUG - fprintf(stderr, "upx: WARNING: ignoring %s: UBSAN\n", envvar); -#elif defined(__clang__) && (__clang_major__ < 8) - // NOTE: cannot reliably detect __SANITIZE_UNDEFINED_BEHAVIOR__ on older clang versions - // @COMPILER_BUG @CLANG_BUG @UBSAN_BUG - fprintf(stderr, "upx: WARNING: ignoring %s: clang %d\n", envvar, __clang_major__); #else result = true; #endif