forked from OSchip/llvm-project
Revert "[CMake] Avoid accidental C++ standard library dependency in sanitizers"
This reverts commit 287c318690
which broke
sanitizer tests that use C++ standard library.
This commit is contained in:
parent
287c318690
commit
220de1f32a
|
@ -437,13 +437,6 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")
|
|||
list(APPEND SANITIZER_COMMON_LINK_LIBS zircon)
|
||||
endif()
|
||||
|
||||
# We don't use the C++ standard library, so avoid including it by mistake.
|
||||
append_list_if(COMPILER_RT_HAS_NOSTDINCXX_FLAG -nostdinc++ SANITIZER_COMMON_CFLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ SANITIZER_COMMON_LINK_FLAGS)
|
||||
|
||||
# Remove -stdlib= which is unused when passing -nostdinc++.
|
||||
string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
|
||||
macro(append_libcxx_libs var)
|
||||
if (${var}_INTREE)
|
||||
if (SANITIZER_USE_STATIC_LLVM_UNWINDER AND (TARGET unwind_static OR HAVE_LIBUNWIND))
|
||||
|
|
|
@ -80,13 +80,6 @@ function(list_replace input_list old new)
|
|||
set(${input_list} "${replaced_list}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
macro(list_filter list element)
|
||||
list(FIND ${list} ${element} index)
|
||||
if(NOT index EQUAL -1)
|
||||
list(REMOVE_AT ${list} ${index})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Takes ${ARGN} and puts only supported architectures in @out_var list.
|
||||
function(filter_available_targets out_var)
|
||||
set(archs ${${out_var}})
|
||||
|
|
|
@ -123,7 +123,6 @@ check_symbol_exists(__func__ "" COMPILER_RT_HAS_FUNC_SYMBOL)
|
|||
|
||||
# Includes.
|
||||
check_cxx_compiler_flag(-nostdinc++ COMPILER_RT_HAS_NOSTDINCXX_FLAG)
|
||||
check_cxx_compiler_flag(-nostdlib++ COMPILER_RT_HAS_NOSTDLIBXX_FLAG)
|
||||
check_include_files("sys/auxv.h" COMPILER_RT_HAS_AUXV)
|
||||
|
||||
# Libraries.
|
||||
|
|
|
@ -111,6 +111,10 @@ append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread ASAN_DYNAMIC_LIBS)
|
|||
append_list_if(COMPILER_RT_HAS_LIBLOG log ASAN_DYNAMIC_LIBS)
|
||||
append_list_if(MINGW "${MINGW_LIBRARIES}" ASAN_DYNAMIC_LIBS)
|
||||
|
||||
if (TARGET cxx-headers OR HAVE_LIBCXX)
|
||||
set(ASAN_DEPS cxx-headers)
|
||||
endif()
|
||||
|
||||
# Compile ASan sources into an object library.
|
||||
|
||||
add_compiler_rt_object_libraries(RTAsan_dynamic
|
||||
|
@ -119,7 +123,8 @@ add_compiler_rt_object_libraries(RTAsan_dynamic
|
|||
SOURCES ${ASAN_SOURCES} ${ASAN_CXX_SOURCES}
|
||||
ADDITIONAL_HEADERS ${ASAN_HEADERS}
|
||||
CFLAGS ${ASAN_DYNAMIC_CFLAGS}
|
||||
DEFS ${ASAN_DYNAMIC_DEFINITIONS})
|
||||
DEFS ${ASAN_DYNAMIC_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
|
||||
if(NOT APPLE)
|
||||
add_compiler_rt_object_libraries(RTAsan
|
||||
|
@ -127,26 +132,30 @@ if(NOT APPLE)
|
|||
SOURCES ${ASAN_SOURCES}
|
||||
ADDITIONAL_HEADERS ${ASAN_HEADERS}
|
||||
CFLAGS ${ASAN_CFLAGS}
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
add_compiler_rt_object_libraries(RTAsan_cxx
|
||||
ARCHS ${ASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${ASAN_CXX_SOURCES}
|
||||
ADDITIONAL_HEADERS ${ASAN_HEADERS}
|
||||
CFLAGS ${ASAN_CFLAGS}
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
add_compiler_rt_object_libraries(RTAsan_preinit
|
||||
ARCHS ${ASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${ASAN_PREINIT_SOURCES}
|
||||
ADDITIONAL_HEADERS ${ASAN_HEADERS}
|
||||
CFLAGS ${ASAN_CFLAGS}
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp "")
|
||||
add_compiler_rt_object_libraries(RTAsan_dynamic_version_script_dummy
|
||||
ARCHS ${ASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
|
||||
CFLAGS ${ASAN_DYNAMIC_CFLAGS}
|
||||
DEFS ${ASAN_DYNAMIC_DEFINITIONS})
|
||||
DEFS ${ASAN_DYNAMIC_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
endif()
|
||||
|
||||
# Build ASan runtimes shipped with Clang.
|
||||
|
@ -241,7 +250,8 @@ else()
|
|||
ARCHS ${arch}
|
||||
SOURCES asan_win_weak_interception.cpp
|
||||
CFLAGS ${ASAN_CFLAGS} -DSANITIZER_DYNAMIC
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
set(ASAN_DYNAMIC_WEAK_INTERCEPTION
|
||||
AsanWeakInterception
|
||||
UbsanWeakInterception
|
||||
|
@ -286,7 +296,8 @@ else()
|
|||
SOURCES asan_globals_win.cpp
|
||||
asan_win_dll_thunk.cpp
|
||||
CFLAGS ${ASAN_CFLAGS} -DSANITIZER_DLL_THUNK
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
|
||||
add_compiler_rt_runtime(clang_rt.asan_dll_thunk
|
||||
STATIC
|
||||
|
@ -311,7 +322,8 @@ else()
|
|||
SOURCES asan_globals_win.cpp
|
||||
asan_win_dynamic_runtime_thunk.cpp
|
||||
CFLAGS ${ASAN_CFLAGS} ${DYNAMIC_RUNTIME_THUNK_CFLAGS}
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS})
|
||||
DEFS ${ASAN_COMMON_DEFINITIONS}
|
||||
DEPS ${ASAN_DEPS})
|
||||
|
||||
add_compiler_rt_runtime(clang_rt.asan_dynamic_runtime_thunk
|
||||
STATIC
|
||||
|
|
|
@ -60,15 +60,11 @@ set(LIBFUZZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
|
|||
if(OS_NAME MATCHES "Linux|Fuchsia" AND
|
||||
COMPILER_RT_LIBCXX_PATH AND
|
||||
COMPILER_RT_LIBCXXABI_PATH)
|
||||
list(APPEND LIBFUZZER_CFLAGS -D_LIBCPP_ABI_VERSION=Fuzzer)
|
||||
list(APPEND LIBFUZZER_CFLAGS -nostdinc++ -D_LIBCPP_ABI_VERSION=Fuzzer)
|
||||
# Remove -stdlib= which is unused when passing -nostdinc++.
|
||||
string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
else()
|
||||
# libFuzzer uses C++ standard library headers so drop -nostdinc++.
|
||||
list_filter(LIBFUZZER_CFLAGS "-nostdinc++")
|
||||
if(TARGET cxx-headers OR HAVE_LIBCXX)
|
||||
set(LIBFUZZER_DEPS cxx-headers)
|
||||
endif()
|
||||
elseif(TARGET cxx-headers OR HAVE_LIBCXX)
|
||||
set(LIBFUZZER_DEPS cxx-headers)
|
||||
endif()
|
||||
|
||||
append_list_if(COMPILER_RT_HAS_OMIT_FRAME_POINTER_FLAG -fno-omit-frame-pointer LIBFUZZER_CFLAGS)
|
||||
|
|
|
@ -71,6 +71,10 @@ append_list_if(COMPILER_RT_HAS_LIBRT rt HWASAN_DYNAMIC_LIBS)
|
|||
append_list_if(COMPILER_RT_HAS_LIBM m HWASAN_DYNAMIC_LIBS)
|
||||
append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread HWASAN_DYNAMIC_LIBS)
|
||||
|
||||
if (TARGET cxx-headers OR HAVE_LIBCXX)
|
||||
set(HWASAN_DEPS cxx-headers)
|
||||
endif()
|
||||
|
||||
# Static runtime library.
|
||||
add_compiler_rt_component(hwasan)
|
||||
|
||||
|
@ -79,26 +83,30 @@ add_compiler_rt_object_libraries(RTHwasan
|
|||
SOURCES ${HWASAN_RTL_SOURCES}
|
||||
ADDITIONAL_HEADERS ${HWASAN_RTL_HEADERS}
|
||||
CFLAGS ${HWASAN_RTL_CFLAGS}
|
||||
DEFS ${HWASAN_DEFINITIONS})
|
||||
DEFS ${HWASAN_DEFINITIONS}
|
||||
DEPS ${HWASAN_DEPS})
|
||||
add_compiler_rt_object_libraries(RTHwasan_cxx
|
||||
ARCHS ${HWASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${HWASAN_RTL_CXX_SOURCES}
|
||||
ADDITIONAL_HEADERS ${HWASAN_RTL_HEADERS}
|
||||
CFLAGS ${HWASAN_RTL_CFLAGS}
|
||||
DEFS ${HWASAN_DEFINITIONS})
|
||||
DEFS ${HWASAN_DEFINITIONS}
|
||||
DEPS ${HWASAN_DEPS})
|
||||
add_compiler_rt_object_libraries(RTHwasan_dynamic
|
||||
ARCHS ${HWASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${HWASAN_RTL_SOURCES} ${HWASAN_RTL_CXX_SOURCES}
|
||||
ADDITIONAL_HEADERS ${HWASAN_RTL_HEADERS}
|
||||
CFLAGS ${HWASAN_DYNAMIC_CFLAGS}
|
||||
DEFS ${HWASAN_DEFINITIONS})
|
||||
DEFS ${HWASAN_DEFINITIONS}
|
||||
DEPS ${HWASAN_DEPS})
|
||||
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp "")
|
||||
add_compiler_rt_object_libraries(RTHwasan_dynamic_version_script_dummy
|
||||
ARCHS ${HWASAN_SUPPORTED_ARCH}
|
||||
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
|
||||
CFLAGS ${HWASAN_DYNAMIC_CFLAGS}
|
||||
DEFS ${HWASAN_DEFINITIONS})
|
||||
DEFS ${HWASAN_DEFINITIONS}
|
||||
DEPS ${HWASAN_DEPS})
|
||||
|
||||
foreach(arch ${HWASAN_SUPPORTED_ARCH})
|
||||
add_compiler_rt_runtime(clang_rt.hwasan
|
||||
|
|
|
@ -113,6 +113,8 @@ endif()
|
|||
|
||||
# We don't use the C++ Standard Library here, so avoid including it by mistake.
|
||||
append_list_if(COMPILER_RT_HAS_NOSTDINCXX_FLAG -nostdinc++ EXTRA_FLAGS)
|
||||
# Remove -stdlib= which is unused when passing -nostdinc++.
|
||||
string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
|
||||
# This appears to be a C-only warning banning the use of locals in aggregate
|
||||
# initializers. All other compilers accept this, though.
|
||||
|
|
|
@ -149,8 +149,6 @@ set(XRAY_COMMON_RUNTIME_OBJECT_LIBS
|
|||
RTSanitizerCommon
|
||||
RTSanitizerCommonLibc)
|
||||
|
||||
# XRay uses C++ standard library headers so drop -nostdinc++.
|
||||
list_filter(XRAY_CFLAGS "-nostdinc++")
|
||||
if (TARGET cxx-headers OR HAVE_LIBCXX)
|
||||
set(XRAY_DEPS cxx-headers)
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue