# Build with optimization, unless we're in debug mode.
if(COMPILER_RT_DEBUG)
- list(APPEND SANITIZER_COMMON_CFLAGS -O0)
- list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -O0)
+ list(APPEND SANITIZER_COMMON_CFLAGS -O1)
else()
list(APPEND SANITIZER_COMMON_CFLAGS -O3)
- list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -O3)
endif()
endif()
string(REGEX REPLACE "(^| )/Z[i7I]($| )" " /Z7 "
"${var_to_update}" "${${var_to_update}}")
endforeach()
- list(APPEND COMPILER_RT_UNITTEST_CFLAGS -gcodeview)
elseif(APPLE)
# On Apple platforms use full debug info (i.e. not `-gline-tables-only`)
# for all build types so that the runtime can be debugged.
list(APPEND SANITIZER_COMMON_CFLAGS -g)
elseif(COMPILER_RT_HAS_GLINE_TABLES_ONLY_FLAG AND NOT COMPILER_RT_DEBUG)
list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only)
- # -gline-tables-only must be enough for these tests, so use it if possible.
- list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -gline-tables-only)
- list(APPEND COMPILER_RT_UNITTEST_CFLAGS -gline-tables-only)
elseif(COMPILER_RT_HAS_G_FLAG)
list(APPEND SANITIZER_COMMON_CFLAGS -g)
- list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -g)
- list(APPEND COMPILER_RT_UNITTEST_CFLAGS -g)
endif()
if(LLVM_ENABLE_MODULES)
-I${COMPILER_RT_SOURCE_DIR}/lib/asan
-I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/tests
-fno-rtti
+ -O2
-Wno-format
-Werror=sign-compare)
append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros ASAN_UNITTEST_COMMON_CFLAGS)
${COMPILER_RT_UNITTEST_LINK_FLAGS}
${COMPILER_RT_UNWINDER_LINK_LIBS}
${SANITIZER_TEST_CXX_LIBRARIES})
+
+# -gline-tables-only must be enough for ASan, so use it if possible.
+if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gline-tables-only)
+else()
+ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -g)
+endif()
+if(MSVC)
+ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gcodeview)
+endif()
list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -g)
# Use -D instead of definitions to please custom compile command.
${COMPILER_RT_UNITTEST_CFLAGS}
${COMPILER_RT_GTEST_CFLAGS}
-I${COMPILER_RT_SOURCE_DIR}/lib/fuzzer
- -fno-rtti)
+ -fno-rtti
+ -O2)
if (APPLE)
set(FUZZER_SUPPORTED_OS osx)
${SANITIZER_TEST_CXX_CFLAGS}
-std=c++17
-I${COMPILER_RT_SOURCE_DIR}/lib/
+ -O2
-g
-fno-omit-frame-pointer)
-I${COMPILER_RT_SOURCE_DIR}/lib
-I${COMPILER_RT_SOURCE_DIR}/lib/interception
-fno-rtti
+ -O2
-Werror=sign-compare)
set(INTERCEPTION_TEST_LINK_FLAGS_COMMON
${COMPILER_RT_UNWINDER_LINK_LIBS}
${SANITIZER_TEST_CXX_LIBRARIES})
+# -gline-tables-only must be enough for these tests, so use it if possible.
+if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -gline-tables-only)
+else()
+ list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -g)
+endif()
if(MSVC)
+ list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -gcodeview)
list(APPEND INTERCEPTION_TEST_LINK_FLAGS_COMMON
-Wl,-largeaddressaware
-Wl,-nodefaultlib:libcmt,-defaultlib:msvcrt,-defaultlib:oldnames
-I${COMPILER_RT_SOURCE_DIR}/lib
-I${COMPILER_RT_SOURCE_DIR}/lib/msan
-g
+ -O2
-fno-omit-frame-pointer
-mno-omit-leaf-frame-pointer
-Wno-deprecated-declarations
-I${COMPILER_RT_SOURCE_DIR}/lib
-I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common
-fno-rtti
+ -O2
-Werror=sign-compare
-Wno-gnu-zero-variadic-macro-arguments
)
${COMPILER_RT_UNITTEST_LINK_FLAGS}
${COMPILER_RT_UNWINDER_LINK_LIBS}
${SANITIZER_TEST_CXX_LIBRARIES})
+
+# -gline-tables-only must be enough for these tests, so use it if possible.
+if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ list(APPEND SANITIZER_TEST_CFLAGS_COMMON -gline-tables-only)
+else()
+ list(APPEND SANITIZER_TEST_CFLAGS_COMMON -g)
+endif()
+if(MSVC)
+ list(APPEND SANITIZER_TEST_CFLAGS_COMMON -gcodeview)
+endif()
list(APPEND SANITIZER_TEST_LINK_FLAGS_COMMON -g)
if(NOT MSVC)
};
TEST(SanitizerCommon, IsTriviallyDestructible) {
- // Causes undefined references to __sanitizer::integral_constant<bool,
- // true>::value.
-#if !SANITIZER_DEBUG
ASSERT_TRUE((is_trivially_destructible<int>::value));
ASSERT_TRUE((is_trivially_destructible<TestStruct>::value));
-#endif
ASSERT_FALSE((is_trivially_destructible<std::vector<int>>::value));
}
TEST(SanitizerCommon, IsTriviallyCopyable) {
-#if !SANITIZER_DEBUG
ASSERT_TRUE((is_trivially_copyable<int>::value));
ASSERT_TRUE((is_trivially_copyable<TestStruct>::value));
-#endif
ASSERT_FALSE((is_trivially_copyable<std::vector<int>>::value));
}
-} // namespace __sanitizer
+} // namespace __sanitizer
\ No newline at end of file