1*7c3d14c8STreehugger Robotset(UBSAN_LIT_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 2*7c3d14c8STreehugger Robot 3*7c3d14c8STreehugger Robotset(UBSAN_TESTSUITES) 4*7c3d14c8STreehugger Robotset(UBSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS}) 5*7c3d14c8STreehugger Robot 6*7c3d14c8STreehugger Robotmacro(add_ubsan_testsuite test_mode sanitizer arch) 7*7c3d14c8STreehugger Robot set(UBSAN_LIT_TEST_MODE "${test_mode}") 8*7c3d14c8STreehugger Robot set(CONFIG_NAME ${UBSAN_LIT_TEST_MODE}-${arch}) 9*7c3d14c8STreehugger Robot configure_lit_site_cfg( 10*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 11*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg) 12*7c3d14c8STreehugger Robot list(APPEND UBSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) 13*7c3d14c8STreehugger Robot if(NOT COMPILER_RT_STANDALONE_BUILD) 14*7c3d14c8STreehugger Robot list(APPEND UBSAN_TEST_DEPS ${sanitizer}) 15*7c3d14c8STreehugger Robot endif() 16*7c3d14c8STreehugger Robotendmacro() 17*7c3d14c8STreehugger Robot 18*7c3d14c8STreehugger Robotset(UBSAN_TEST_ARCH ${UBSAN_SUPPORTED_ARCH}) 19*7c3d14c8STreehugger Robotif(APPLE) 20*7c3d14c8STreehugger Robot darwin_filter_host_archs(UBSAN_SUPPORTED_ARCH UBSAN_TEST_ARCH) 21*7c3d14c8STreehugger Robotendif() 22*7c3d14c8STreehugger Robot 23*7c3d14c8STreehugger Robotforeach(arch ${UBSAN_TEST_ARCH}) 24*7c3d14c8STreehugger Robot set(UBSAN_TEST_TARGET_ARCH ${arch}) 25*7c3d14c8STreehugger Robot if(${arch} MATCHES "arm|aarch64") 26*7c3d14c8STreehugger Robot # This is only true if we're cross-compiling. 27*7c3d14c8STreehugger Robot set(UBSAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS}) 28*7c3d14c8STreehugger Robot else() 29*7c3d14c8STreehugger Robot get_target_flags_for_arch(${arch} UBSAN_TEST_TARGET_CFLAGS) 30*7c3d14c8STreehugger Robot string(REPLACE ";" " " UBSAN_TEST_TARGET_CFLAGS "${UBSAN_TEST_TARGET_CFLAGS}") 31*7c3d14c8STreehugger Robot endif() 32*7c3d14c8STreehugger Robot add_ubsan_testsuite("Standalone" ubsan ${arch}) 33*7c3d14c8STreehugger Robot 34*7c3d14c8STreehugger Robot if(COMPILER_RT_HAS_ASAN AND ";${ASAN_SUPPORTED_ARCH};" MATCHES ";${arch};") 35*7c3d14c8STreehugger Robot # TODO(wwchrome): Re-enable ubsan for asan win 64-bit when ready. 36*7c3d14c8STreehugger Robot # Disable ubsan with AddressSanitizer tests for Windows 64-bit. 37*7c3d14c8STreehugger Robot if(NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4) 38*7c3d14c8STreehugger Robot add_ubsan_testsuite("AddressSanitizer" asan ${arch}) 39*7c3d14c8STreehugger Robot endif() 40*7c3d14c8STreehugger Robot endif() 41*7c3d14c8STreehugger Robot if(COMPILER_RT_HAS_MSAN AND ";${MSAN_SUPPORTED_ARCH};" MATCHES ";${arch};") 42*7c3d14c8STreehugger Robot add_ubsan_testsuite("MemorySanitizer" msan ${arch}) 43*7c3d14c8STreehugger Robot endif() 44*7c3d14c8STreehugger Robot if(COMPILER_RT_HAS_TSAN AND ";${TSAN_SUPPORTED_ARCH};" MATCHES ";${arch};") 45*7c3d14c8STreehugger Robot add_ubsan_testsuite("ThreadSanitizer" tsan ${arch}) 46*7c3d14c8STreehugger Robot endif() 47*7c3d14c8STreehugger Robotendforeach() 48*7c3d14c8STreehugger Robot 49*7c3d14c8STreehugger Robotadd_lit_testsuite(check-ubsan "Running UndefinedBehaviorSanitizer tests" 50*7c3d14c8STreehugger Robot ${UBSAN_TESTSUITES} 51*7c3d14c8STreehugger Robot DEPENDS ${UBSAN_TEST_DEPS}) 52*7c3d14c8STreehugger Robotset_target_properties(check-ubsan PROPERTIES FOLDER "Compiler-RT Misc") 53