1include_directories(..) 2 3# Runtime library sources and build flags. 4set(DFSAN_RTL_SOURCES 5 dfsan.cpp 6 dfsan_custom.cpp 7 dfsan_interceptors.cpp 8 ) 9 10set(DFSAN_RTL_HEADERS 11 dfsan.h 12 dfsan_flags.inc 13 dfsan_platform.h 14 ) 15 16set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 17append_rtti_flag(OFF DFSAN_COMMON_CFLAGS) 18# Prevent clang from generating libc calls. 19append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS) 20 21# Static runtime library. 22add_compiler_rt_component(dfsan) 23 24foreach(arch ${DFSAN_SUPPORTED_ARCH}) 25 set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS}) 26 append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS) 27 add_compiler_rt_runtime(clang_rt.dfsan 28 STATIC 29 ARCHS ${arch} 30 SOURCES ${DFSAN_RTL_SOURCES} 31 $<TARGET_OBJECTS:RTInterception.${arch}> 32 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 33 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 34 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}> 35 ADDITIONAL_HEADERS ${DFSAN_RTL_HEADERS} 36 CFLAGS ${DFSAN_CFLAGS} 37 PARENT_TARGET dfsan) 38 add_sanitizer_rt_symbols(clang_rt.dfsan 39 ARCHS ${arch} 40 EXTRA dfsan.syms.extra) 41 add_dependencies(dfsan 42 clang_rt.dfsan-${arch}-symbols) 43endforeach() 44 45set(dfsan_abilist_dir ${COMPILER_RT_OUTPUT_DIR}/share) 46set(dfsan_abilist_filename ${dfsan_abilist_dir}/dfsan_abilist.txt) 47add_custom_target(dfsan_abilist ALL 48 DEPENDS ${dfsan_abilist_filename}) 49add_custom_command(OUTPUT ${dfsan_abilist_filename} 50 VERBATIM 51 COMMAND 52 ${CMAKE_COMMAND} -E make_directory ${dfsan_abilist_dir} 53 COMMAND 54 cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt 55 ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt 56 > ${dfsan_abilist_filename} 57 DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt) 58add_dependencies(dfsan dfsan_abilist) 59install(FILES ${dfsan_abilist_filename} 60 DESTINATION ${COMPILER_RT_INSTALL_PATH}/share) 61