• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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