Home | History | Annotate | Download | only in dfsan
      1 include_directories(..)
      2 
      3 # Runtime library sources and build flags.
      4 set(DFSAN_RTL_SOURCES
      5   dfsan.cc
      6   dfsan_custom.cc
      7   dfsan_interceptors.cc)
      8 set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS})
      9 # Prevent clang from generating libc calls.
     10 append_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS)
     11 
     12 # Static runtime library.
     13 add_custom_target(dfsan)
     14 set(arch "x86_64")
     15 if(CAN_TARGET_${arch})
     16   set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS})
     17   append_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS)
     18   add_compiler_rt_runtime(clang_rt.dfsan-${arch} ${arch} STATIC
     19     SOURCES ${DFSAN_RTL_SOURCES}
     20             $<TARGET_OBJECTS:RTInterception.${arch}>
     21             $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
     22             $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
     23     CFLAGS ${DFSAN_CFLAGS})
     24   set(DFSAN_NOLIBC_CFLAGS ${DFSAN_COMMON_CFLAGS} -DDFSAN_NOLIBC)
     25   add_compiler_rt_runtime(clang_rt.dfsan-libc-${arch} ${arch} STATIC
     26     SOURCES ${DFSAN_RTL_SOURCES}
     27             $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
     28             CFLAGS ${DFSAN_NOLIBC_CFLAGS})
     29   add_sanitizer_rt_symbols(clang_rt.dfsan-${arch} dfsan.syms.extra)
     30   add_dependencies(dfsan
     31     clang_rt.dfsan-${arch}
     32     clang_rt.dfsan-${arch}-symbols)
     33 endif()
     34 
     35 set(dfsan_abilist_filename ${COMPILER_RT_OUTPUT_DIR}/dfsan_abilist.txt)
     36 add_custom_target(dfsan_abilist ALL
     37   DEPENDS ${dfsan_abilist_filename})
     38 add_custom_command(OUTPUT ${dfsan_abilist_filename}
     39                    VERBATIM
     40                    COMMAND
     41                      cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt
     42                          ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1204_abilist.txt
     43                          > ${dfsan_abilist_filename}
     44                    DEPENDS done_abilist.txt libc_ubuntu1204_abilist.txt)
     45 add_dependencies(dfsan dfsan_abilist)
     46 install(FILES ${dfsan_abilist_filename}
     47         DESTINATION ${COMPILER_RT_INSTALL_PATH})
     48 
     49 add_dependencies(compiler-rt dfsan)
     50