54 lines · plain
1# Build for the minimal undefined behavior sanitizer runtime support library.2 3set(UBSAN_MINIMAL_SOURCES4 ubsan_minimal_handlers.cpp5 )6 7include_directories(..)8 9set(UBSAN_CFLAGS10 ${SANITIZER_COMMON_CFLAGS}11 -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS)12append_rtti_flag(OFF UBSAN_CFLAGS)13 14set(UBSAN_LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS})15 16set(UBSAN_DYNAMIC_LIBS ${SANITIZER_COMMON_LINK_LIBS})17 18add_compiler_rt_component(ubsan-minimal)19 20# Common parts of minimal UBSan runtime.21add_compiler_rt_object_libraries(RTUbsan_minimal22 OS ${SANITIZER_COMMON_SUPPORTED_OS}23 ARCHS ${UBSAN_COMMON_SUPPORTED_ARCH}24 SOURCES ${UBSAN_MINIMAL_SOURCES} CFLAGS ${UBSAN_CFLAGS})25 26 27# Standalone minimal UBSan runtimes.28add_compiler_rt_runtime(clang_rt.ubsan_minimal29 STATIC30 OS ${UBSAN_SUPPORTED_OS}31 ARCHS ${UBSAN_SUPPORTED_ARCH}32 OBJECT_LIBS RTUbsan_minimal33 CFLAGS ${UBSAN_CFLAGS}34 PARENT_TARGET ubsan-minimal)35 36add_compiler_rt_runtime(clang_rt.ubsan_minimal37 SHARED38 OS ${UBSAN_SUPPORTED_OS}39 ARCHS ${UBSAN_SUPPORTED_ARCH}40 OBJECT_LIBS RTUbsan_minimal41 CFLAGS ${UBSAN_CFLAGS}42 LINK_FLAGS ${UBSAN_LINK_FLAGS}43 LINK_LIBS ${UBSAN_DYNAMIC_LIBS}44 PARENT_TARGET ubsan-minimal)45 46if (SANITIZER_USE_SYMBOLS AND NOT APPLE)47 set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})48 list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386 i686)49 add_sanitizer_rt_symbols(clang_rt.ubsan_minimal50 ARCHS ${ARCHS_FOR_SYMBOLS}51 PARENT_TARGET ubsan-minimal52 EXTRA ubsan.syms.extra)53endif()54