1*7c3d14c8STreehugger Robotinclude_directories(..) 2*7c3d14c8STreehugger Robot 3*7c3d14c8STreehugger Robot# Runtime library sources and build flags. 4*7c3d14c8STreehugger Robotset(DFSAN_RTL_SOURCES 5*7c3d14c8STreehugger Robot dfsan.cc 6*7c3d14c8STreehugger Robot dfsan_custom.cc 7*7c3d14c8STreehugger Robot dfsan_interceptors.cc) 8*7c3d14c8STreehugger Robotset(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 9*7c3d14c8STreehugger Robotappend_rtti_flag(OFF DFSAN_COMMON_CFLAGS) 10*7c3d14c8STreehugger Robot# Prevent clang from generating libc calls. 11*7c3d14c8STreehugger Robotappend_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS) 12*7c3d14c8STreehugger Robot 13*7c3d14c8STreehugger Robot# Static runtime library. 14*7c3d14c8STreehugger Robotadd_custom_target(dfsan) 15*7c3d14c8STreehugger Robotset_target_properties(dfsan PROPERTIES FOLDER "Compiler-RT Misc") 16*7c3d14c8STreehugger Robot 17*7c3d14c8STreehugger Robotforeach(arch ${DFSAN_SUPPORTED_ARCH}) 18*7c3d14c8STreehugger Robot set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS}) 19*7c3d14c8STreehugger Robot append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS) 20*7c3d14c8STreehugger Robot add_compiler_rt_runtime(clang_rt.dfsan 21*7c3d14c8STreehugger Robot STATIC 22*7c3d14c8STreehugger Robot ARCHS ${arch} 23*7c3d14c8STreehugger Robot SOURCES ${DFSAN_RTL_SOURCES} 24*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTInterception.${arch}> 25*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 26*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 27*7c3d14c8STreehugger Robot CFLAGS ${DFSAN_CFLAGS} 28*7c3d14c8STreehugger Robot PARENT_TARGET dfsan) 29*7c3d14c8STreehugger Robot add_sanitizer_rt_symbols(clang_rt.dfsan 30*7c3d14c8STreehugger Robot ARCHS ${arch} 31*7c3d14c8STreehugger Robot EXTRA dfsan.syms.extra) 32*7c3d14c8STreehugger Robot add_dependencies(dfsan 33*7c3d14c8STreehugger Robot clang_rt.dfsan-${arch}-symbols) 34*7c3d14c8STreehugger Robotendforeach() 35*7c3d14c8STreehugger Robot 36*7c3d14c8STreehugger Robotset(dfsan_abilist_filename ${COMPILER_RT_OUTPUT_DIR}/dfsan_abilist.txt) 37*7c3d14c8STreehugger Robotadd_custom_target(dfsan_abilist ALL 38*7c3d14c8STreehugger Robot DEPENDS ${dfsan_abilist_filename}) 39*7c3d14c8STreehugger Robotadd_custom_command(OUTPUT ${dfsan_abilist_filename} 40*7c3d14c8STreehugger Robot VERBATIM 41*7c3d14c8STreehugger Robot COMMAND 42*7c3d14c8STreehugger Robot cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt 43*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt 44*7c3d14c8STreehugger Robot > ${dfsan_abilist_filename} 45*7c3d14c8STreehugger Robot DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt) 46*7c3d14c8STreehugger Robotadd_dependencies(dfsan dfsan_abilist) 47*7c3d14c8STreehugger Robotinstall(FILES ${dfsan_abilist_filename} 48*7c3d14c8STreehugger Robot DESTINATION ${COMPILER_RT_INSTALL_PATH}) 49*7c3d14c8STreehugger Robot 50*7c3d14c8STreehugger Robotadd_dependencies(compiler-rt dfsan) 51