Home | History | Annotate | Download | only in ubsan
      1 # Build for the undefined behavior sanitizer runtime support library.
      2 
      3 set(UBSAN_SOURCES
      4   ubsan_diag.cc
      5   ubsan_handlers.cc
      6   ubsan_value.cc
      7   )
      8 
      9 set(UBSAN_CXX_SOURCES
     10   ubsan_handlers_cxx.cc
     11   ubsan_type_hash.cc
     12   )
     13 
     14 include_directories(..)
     15 
     16 set(UBSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS})
     17 
     18 filter_available_targets(UBSAN_SUPPORTED_ARCH
     19   x86_64 i386)
     20 
     21 set(UBSAN_RUNTIME_LIBRARIES)
     22 
     23 if(APPLE)
     24   # Build universal binary on APPLE.
     25   add_compiler_rt_osx_static_runtime(clang_rt.ubsan_osx
     26     ARCH ${UBSAN_SUPPORTED_ARCH}
     27     SOURCES ${UBSAN_SOURCES} ${UBSAN_CXX_SOURCES}
     28             $<TARGET_OBJECTS:RTSanitizerCommon.osx>
     29     CFLAGS ${UBSAN_CFLAGS})
     30   list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan_osx)
     31 else()
     32   # Build separate libraries for each target.
     33   foreach(arch ${UBSAN_SUPPORTED_ARCH})
     34     # Main UBSan runtime.
     35     add_compiler_rt_static_runtime(clang_rt.ubsan-${arch} ${arch}
     36       SOURCES ${UBSAN_SOURCES}
     37       CFLAGS ${UBSAN_CFLAGS}
     38       SYMS ubsan.syms)
     39     # C++-specific parts of UBSan runtime. Requires a C++ ABI library.
     40     add_compiler_rt_static_runtime(clang_rt.ubsan_cxx-${arch} ${arch}
     41       SOURCES ${UBSAN_CXX_SOURCES}
     42       CFLAGS ${UBSAN_CFLAGS}
     43       SYMS ubsan.syms)
     44     list(APPEND UBSAN_RUNTIME_LIBRARIES
     45            clang_rt.san-${arch}
     46            clang_rt.ubsan-${arch}
     47            clang_rt.ubsan_cxx-${arch})
     48   endforeach()
     49 endif()
     50 
     51 add_subdirectory(lit_tests)
     52