13cab2bb3Spatrick# Build system for the common Sanitizer runtime support library components. 23cab2bb3Spatrick# These components are shared between AddressSanitizer and ThreadSanitizer. 33cab2bb3Spatrick 43cab2bb3Spatrickset(SANITIZER_SOURCES_NOTERMINATION 53cab2bb3Spatrick sanitizer_allocator.cpp 63cab2bb3Spatrick sanitizer_common.cpp 73cab2bb3Spatrick sanitizer_deadlock_detector1.cpp 83cab2bb3Spatrick sanitizer_deadlock_detector2.cpp 93cab2bb3Spatrick sanitizer_errno.cpp 103cab2bb3Spatrick sanitizer_file.cpp 113cab2bb3Spatrick sanitizer_flags.cpp 123cab2bb3Spatrick sanitizer_flag_parser.cpp 133cab2bb3Spatrick sanitizer_fuchsia.cpp 143cab2bb3Spatrick sanitizer_libc.cpp 153cab2bb3Spatrick sanitizer_libignore.cpp 163cab2bb3Spatrick sanitizer_linux.cpp 173cab2bb3Spatrick sanitizer_linux_s390.cpp 183cab2bb3Spatrick sanitizer_mac.cpp 19d89ec533Spatrick sanitizer_mutex.cpp 203cab2bb3Spatrick sanitizer_netbsd.cpp 213cab2bb3Spatrick sanitizer_platform_limits_freebsd.cpp 223cab2bb3Spatrick sanitizer_platform_limits_linux.cpp 233cab2bb3Spatrick sanitizer_platform_limits_netbsd.cpp 243cab2bb3Spatrick sanitizer_platform_limits_posix.cpp 253cab2bb3Spatrick sanitizer_platform_limits_solaris.cpp 263cab2bb3Spatrick sanitizer_posix.cpp 273cab2bb3Spatrick sanitizer_printf.cpp 283cab2bb3Spatrick sanitizer_procmaps_common.cpp 293cab2bb3Spatrick sanitizer_procmaps_bsd.cpp 301f9cb04fSpatrick sanitizer_procmaps_fuchsia.cpp 313cab2bb3Spatrick sanitizer_procmaps_linux.cpp 323cab2bb3Spatrick sanitizer_procmaps_mac.cpp 333cab2bb3Spatrick sanitizer_procmaps_solaris.cpp 343cab2bb3Spatrick sanitizer_solaris.cpp 351f9cb04fSpatrick sanitizer_stoptheworld_fuchsia.cpp 363cab2bb3Spatrick sanitizer_stoptheworld_mac.cpp 37*810390e3Srobert sanitizer_stoptheworld_win.cpp 383cab2bb3Spatrick sanitizer_suppressions.cpp 393cab2bb3Spatrick sanitizer_tls_get_addr.cpp 403cab2bb3Spatrick sanitizer_thread_registry.cpp 413cab2bb3Spatrick sanitizer_type_traits.cpp 423cab2bb3Spatrick sanitizer_win.cpp 433cab2bb3Spatrick ) 443cab2bb3Spatrick 453cab2bb3Spatrickset(SANITIZER_SOURCES 463cab2bb3Spatrick ${SANITIZER_SOURCES_NOTERMINATION} 473cab2bb3Spatrick sanitizer_termination.cpp 483cab2bb3Spatrick ) 493cab2bb3Spatrick 503cab2bb3Spatrick# Libc functions stubs. These sources should be linked instead of 513cab2bb3Spatrick# SANITIZER_LIBCDEP_SOURCES when sanitizer_common library must not depend on 523cab2bb3Spatrick# libc. 533cab2bb3Spatrickset(SANITIZER_NOLIBC_SOURCES 543cab2bb3Spatrick sanitizer_common_nolibc.cpp 553cab2bb3Spatrick ) 563cab2bb3Spatrick 573cab2bb3Spatrickset(SANITIZER_LIBCDEP_SOURCES 583cab2bb3Spatrick sanitizer_common_libcdep.cpp 593cab2bb3Spatrick sanitizer_allocator_checks.cpp 603cab2bb3Spatrick sanitizer_linux_libcdep.cpp 613cab2bb3Spatrick sanitizer_mac_libcdep.cpp 623cab2bb3Spatrick sanitizer_posix_libcdep.cpp 633cab2bb3Spatrick sanitizer_stoptheworld_linux_libcdep.cpp 643cab2bb3Spatrick sanitizer_stoptheworld_netbsd_libcdep.cpp 653cab2bb3Spatrick ) 663cab2bb3Spatrick 673cab2bb3Spatrickset(SANITIZER_COVERAGE_SOURCES 683cab2bb3Spatrick sancov_flags.cpp 693cab2bb3Spatrick sanitizer_coverage_fuchsia.cpp 703cab2bb3Spatrick sanitizer_coverage_libcdep_new.cpp 713cab2bb3Spatrick sanitizer_coverage_win_sections.cpp 723cab2bb3Spatrick ) 733cab2bb3Spatrick 743cab2bb3Spatrickset(SANITIZER_SYMBOLIZER_SOURCES 753cab2bb3Spatrick sanitizer_allocator_report.cpp 76d89ec533Spatrick sanitizer_chained_origin_depot.cpp 77*810390e3Srobert sanitizer_stack_store.cpp 783cab2bb3Spatrick sanitizer_stackdepot.cpp 793cab2bb3Spatrick sanitizer_stacktrace.cpp 803cab2bb3Spatrick sanitizer_stacktrace_libcdep.cpp 813cab2bb3Spatrick sanitizer_stacktrace_printer.cpp 823cab2bb3Spatrick sanitizer_stacktrace_sparc.cpp 833cab2bb3Spatrick sanitizer_symbolizer.cpp 843cab2bb3Spatrick sanitizer_symbolizer_libbacktrace.cpp 853cab2bb3Spatrick sanitizer_symbolizer_libcdep.cpp 863cab2bb3Spatrick sanitizer_symbolizer_mac.cpp 873cab2bb3Spatrick sanitizer_symbolizer_markup.cpp 883cab2bb3Spatrick sanitizer_symbolizer_posix_libcdep.cpp 893cab2bb3Spatrick sanitizer_symbolizer_report.cpp 903cab2bb3Spatrick sanitizer_symbolizer_win.cpp 913cab2bb3Spatrick sanitizer_unwind_linux_libcdep.cpp 923cab2bb3Spatrick sanitizer_unwind_win.cpp 933cab2bb3Spatrick ) 943cab2bb3Spatrick 953cab2bb3Spatrick# Explicitly list all sanitizer_common headers. Not all of these are 963cab2bb3Spatrick# included in sanitizer_common source files, but we need to depend on 973cab2bb3Spatrick# headers when building our custom unit tests. 983cab2bb3Spatrickset(SANITIZER_IMPL_HEADERS 993cab2bb3Spatrick sancov_flags.h 1003cab2bb3Spatrick sancov_flags.inc 1013cab2bb3Spatrick sanitizer_addrhashmap.h 1023cab2bb3Spatrick sanitizer_allocator.h 1033cab2bb3Spatrick sanitizer_allocator_checks.h 1043cab2bb3Spatrick sanitizer_allocator_combined.h 105*810390e3Srobert sanitizer_allocator_dlsym.h 1063cab2bb3Spatrick sanitizer_allocator_interface.h 1073cab2bb3Spatrick sanitizer_allocator_internal.h 1083cab2bb3Spatrick sanitizer_allocator_local_cache.h 1093cab2bb3Spatrick sanitizer_allocator_primary32.h 1103cab2bb3Spatrick sanitizer_allocator_primary64.h 1113cab2bb3Spatrick sanitizer_allocator_report.h 1123cab2bb3Spatrick sanitizer_allocator_secondary.h 1133cab2bb3Spatrick sanitizer_allocator_size_class_map.h 1143cab2bb3Spatrick sanitizer_allocator_stats.h 1153cab2bb3Spatrick sanitizer_asm.h 1163cab2bb3Spatrick sanitizer_atomic.h 1173cab2bb3Spatrick sanitizer_atomic_clang.h 1183cab2bb3Spatrick sanitizer_atomic_clang_mips.h 1193cab2bb3Spatrick sanitizer_atomic_clang_other.h 1203cab2bb3Spatrick sanitizer_atomic_clang_x86.h 1213cab2bb3Spatrick sanitizer_atomic_msvc.h 1223cab2bb3Spatrick sanitizer_bitvector.h 1233cab2bb3Spatrick sanitizer_bvgraph.h 124d89ec533Spatrick sanitizer_chained_origin_depot.h 1253cab2bb3Spatrick sanitizer_common.h 1263cab2bb3Spatrick sanitizer_common_interceptors.inc 1273cab2bb3Spatrick sanitizer_common_interceptors_format.inc 1283cab2bb3Spatrick sanitizer_common_interceptors_ioctl.inc 1293cab2bb3Spatrick sanitizer_common_interface.inc 1303cab2bb3Spatrick sanitizer_common_interface_posix.inc 1313cab2bb3Spatrick sanitizer_common_syscalls.inc 1323cab2bb3Spatrick sanitizer_coverage_interface.inc 1333cab2bb3Spatrick sanitizer_dbghelp.h 1343cab2bb3Spatrick sanitizer_deadlock_detector.h 1353cab2bb3Spatrick sanitizer_deadlock_detector_interface.h 136*810390e3Srobert sanitizer_dense_map.h 137*810390e3Srobert sanitizer_dense_map_info.h 1383cab2bb3Spatrick sanitizer_errno.h 1393cab2bb3Spatrick sanitizer_errno_codes.h 1403cab2bb3Spatrick sanitizer_file.h 1413cab2bb3Spatrick sanitizer_flag_parser.h 1423cab2bb3Spatrick sanitizer_flags.h 1433cab2bb3Spatrick sanitizer_flags.inc 144*810390e3Srobert sanitizer_flat_map.h 1453cab2bb3Spatrick sanitizer_freebsd.h 1463cab2bb3Spatrick sanitizer_fuchsia.h 1473cab2bb3Spatrick sanitizer_getauxval.h 1483cab2bb3Spatrick sanitizer_hash.h 1493cab2bb3Spatrick sanitizer_interceptors_ioctl_netbsd.inc 1503cab2bb3Spatrick sanitizer_interface_internal.h 1513cab2bb3Spatrick sanitizer_internal_defs.h 152*810390e3Srobert sanitizer_leb128.h 1533cab2bb3Spatrick sanitizer_lfstack.h 1543cab2bb3Spatrick sanitizer_libc.h 1553cab2bb3Spatrick sanitizer_libignore.h 1563cab2bb3Spatrick sanitizer_linux.h 1573cab2bb3Spatrick sanitizer_list.h 1583cab2bb3Spatrick sanitizer_local_address_space_view.h 159*810390e3Srobert sanitizer_lzw.h 1603cab2bb3Spatrick sanitizer_mac.h 1613cab2bb3Spatrick sanitizer_malloc_mac.inc 1623cab2bb3Spatrick sanitizer_mutex.h 1633cab2bb3Spatrick sanitizer_placement_new.h 1643cab2bb3Spatrick sanitizer_platform.h 1653cab2bb3Spatrick sanitizer_platform_interceptors.h 1663cab2bb3Spatrick sanitizer_platform_limits_netbsd.h 1673cab2bb3Spatrick sanitizer_platform_limits_posix.h 1683cab2bb3Spatrick sanitizer_platform_limits_solaris.h 1693cab2bb3Spatrick sanitizer_posix.h 1703cab2bb3Spatrick sanitizer_procmaps.h 1711f9cb04fSpatrick sanitizer_ptrauth.h 1723cab2bb3Spatrick sanitizer_quarantine.h 1733cab2bb3Spatrick sanitizer_report_decorator.h 1743cab2bb3Spatrick sanitizer_ring_buffer.h 1753cab2bb3Spatrick sanitizer_signal_interceptors.inc 176*810390e3Srobert sanitizer_stack_store.h 1773cab2bb3Spatrick sanitizer_stackdepot.h 1783cab2bb3Spatrick sanitizer_stackdepotbase.h 1793cab2bb3Spatrick sanitizer_stacktrace.h 1803cab2bb3Spatrick sanitizer_stacktrace_printer.h 1813cab2bb3Spatrick sanitizer_stoptheworld.h 1823cab2bb3Spatrick sanitizer_suppressions.h 1833cab2bb3Spatrick sanitizer_symbolizer.h 1843cab2bb3Spatrick sanitizer_symbolizer_fuchsia.h 1853cab2bb3Spatrick sanitizer_symbolizer_internal.h 1863cab2bb3Spatrick sanitizer_symbolizer_libbacktrace.h 1873cab2bb3Spatrick sanitizer_symbolizer_mac.h 1883cab2bb3Spatrick sanitizer_syscall_generic.inc 1893cab2bb3Spatrick sanitizer_syscall_linux_aarch64.inc 1903cab2bb3Spatrick sanitizer_syscall_linux_arm.inc 1913cab2bb3Spatrick sanitizer_syscall_linux_x86_64.inc 192d89ec533Spatrick sanitizer_syscall_linux_riscv64.inc 193*810390e3Srobert sanitizer_syscall_linux_loongarch64.inc 1943cab2bb3Spatrick sanitizer_syscalls_netbsd.inc 1953cab2bb3Spatrick sanitizer_thread_registry.h 196d89ec533Spatrick sanitizer_thread_safety.h 1973cab2bb3Spatrick sanitizer_tls_get_addr.h 1983cab2bb3Spatrick sanitizer_vector.h 1993cab2bb3Spatrick sanitizer_win.h 2003cab2bb3Spatrick sanitizer_win_defs.h 2013cab2bb3Spatrick sanitizer_win_dll_thunk.h 2023cab2bb3Spatrick sanitizer_win_weak_interception.h 2033cab2bb3Spatrick ) 2043cab2bb3Spatrick 2053cab2bb3Spatrickinclude_directories(..) 2063cab2bb3Spatrick 2073cab2bb3Spatrickset(SANITIZER_COMMON_DEFINITIONS 2083cab2bb3Spatrick HAVE_RPC_XDR_H=${HAVE_RPC_XDR_H}) 2093cab2bb3Spatrick 2103cab2bb3Spatrickset(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 211*810390e3Srobert 212*810390e3Srobert# Too many existing bugs, needs cleanup. 213*810390e3Srobertappend_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format SANITIZER_CFLAGS) 214*810390e3Srobert 2153cab2bb3Spatrickappend_rtti_flag(OFF SANITIZER_CFLAGS) 2163cab2bb3Spatrick 2173cab2bb3Spatrickappend_list_if(SANITIZER_LIMIT_FRAME_SIZE -Wframe-larger-than=570 2183cab2bb3Spatrick SANITIZER_CFLAGS) 2193cab2bb3Spatrickappend_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors 2203cab2bb3Spatrick SANITIZER_CFLAGS) 2213cab2bb3Spatrick 2223cab2bb3Spatrickif(APPLE) 2233cab2bb3Spatrick set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS}) 2243cab2bb3Spatrickendif() 2253cab2bb3Spatrick 2263cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommon 2273cab2bb3Spatrick ${OS_OPTION} 2283cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2293cab2bb3Spatrick SOURCES ${SANITIZER_SOURCES} 2303cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2313cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2323cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2333cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoTermination 2343cab2bb3Spatrick ${OS_OPTION} 2353cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2363cab2bb3Spatrick SOURCES ${SANITIZER_SOURCES_NOTERMINATION} 2373cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2383cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2393cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2403cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoLibc 2413cab2bb3Spatrick ${OS_OPTION} 2423cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2433cab2bb3Spatrick SOURCES ${SANITIZER_NOLIBC_SOURCES} 2443cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2453cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2463cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2473cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonLibc 2483cab2bb3Spatrick ${OS_OPTION} 2493cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2503cab2bb3Spatrick SOURCES ${SANITIZER_LIBCDEP_SOURCES} 2513cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2523cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2533cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2543cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonCoverage 2553cab2bb3Spatrick ${OS_OPTION} 2563cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2573cab2bb3Spatrick SOURCES ${SANITIZER_COVERAGE_SOURCES} 2583cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2593cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2603cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2613cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonSymbolizer 2623cab2bb3Spatrick ${OS_OPTION} 2633cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2643cab2bb3Spatrick SOURCES ${SANITIZER_SYMBOLIZER_SOURCES} 2653cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2663cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} 2673cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2683cab2bb3Spatrick 2693cab2bb3Spatrickset(SANITIZER_NO_WEAK_HOOKS_CFLAGS ${SANITIZER_CFLAGS}) 2703cab2bb3Spatricklist(APPEND SANITIZER_NO_WEAK_HOOKS_CFLAGS "-DSANITIZER_SUPPORTS_WEAK_HOOKS=0") 2713cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoHooks 2723cab2bb3Spatrick ${OS_OPTION} 2733cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2743cab2bb3Spatrick SOURCES ${SANITIZER_SOURCES} 2753cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2763cab2bb3Spatrick CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS} 2773cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2783cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonLibcNoHooks 2793cab2bb3Spatrick ${OS_OPTION} 2803cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2813cab2bb3Spatrick SOURCES ${SANITIZER_LIBCDEP_SOURCES} 2823cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2833cab2bb3Spatrick CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS} 2843cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2853cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonSymbolizerNoHooks 2863cab2bb3Spatrick ${OS_OPTION} 2873cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 2883cab2bb3Spatrick SOURCES ${SANITIZER_SYMBOLIZER_SOURCES} 2893cab2bb3Spatrick ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS} 2903cab2bb3Spatrick CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS} 2913cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 2923cab2bb3Spatrick 2933cab2bb3Spatrickif(WIN32) 2943cab2bb3Spatrick add_compiler_rt_object_libraries(SanitizerCommonWeakInterception 2953cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 2963cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 297*810390e3Srobert SOURCES 298*810390e3Srobert sanitizer_win_weak_interception.cpp 2993cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DYNAMIC 3003cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3013cab2bb3Spatrick add_compiler_rt_object_libraries(SancovWeakInterception 3023cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 3033cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 304*810390e3Srobert SOURCES 305*810390e3Srobert sanitizer_coverage_win_weak_interception.cpp 3063cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DYNAMIC 3073cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3083cab2bb3Spatrick 3093cab2bb3Spatrick add_compiler_rt_object_libraries(SanitizerCommonDllThunk 3103cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 3113cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 312*810390e3Srobert SOURCES 313*810390e3Srobert sanitizer_win_dll_thunk.cpp 3143cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DLL_THUNK 3153cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3163cab2bb3Spatrick add_compiler_rt_object_libraries(SancovDllThunk 3173cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 3183cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 319*810390e3Srobert SOURCES 320*810390e3Srobert sanitizer_coverage_win_dll_thunk.cpp 3213cab2bb3Spatrick sanitizer_coverage_win_sections.cpp 3223cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DLL_THUNK 3233cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3243cab2bb3Spatrick 3253cab2bb3Spatrick set(DYNAMIC_RUNTIME_THUNK_CFLAGS "-DSANITIZER_DYNAMIC_RUNTIME_THUNK") 3263cab2bb3Spatrick if(MSVC) 3273cab2bb3Spatrick list(APPEND DYNAMIC_RUNTIME_THUNK_CFLAGS "-Zl") 3283cab2bb3Spatrick elseif(CMAKE_C_COMPILER_ID MATCHES Clang) 3293cab2bb3Spatrick list(APPEND DYNAMIC_RUNTIME_THUNK_CFLAGS "-nodefaultlibs") 3303cab2bb3Spatrick endif() 3313cab2bb3Spatrick add_compiler_rt_object_libraries(SanitizerCommonDynamicRuntimeThunk 3323cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 3333cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 334*810390e3Srobert SOURCES 335*810390e3Srobert sanitizer_win_dynamic_runtime_thunk.cpp 3363cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} ${DYNAMIC_RUNTIME_THUNK_CFLAGS} 3373cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3383cab2bb3Spatrick add_compiler_rt_object_libraries(SancovDynamicRuntimeThunk 3393cab2bb3Spatrick ${SANITIZER_COMMON_SUPPORTED_OS} 3403cab2bb3Spatrick ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} 341*810390e3Srobert SOURCES 342*810390e3Srobert sanitizer_coverage_win_dynamic_runtime_thunk.cpp 3433cab2bb3Spatrick sanitizer_coverage_win_sections.cpp 3443cab2bb3Spatrick CFLAGS ${SANITIZER_CFLAGS} ${DYNAMIC_RUNTIME_THUNK_CFLAGS} 3453cab2bb3Spatrick DEFS ${SANITIZER_COMMON_DEFINITIONS}) 3463cab2bb3Spatrickendif() 3473cab2bb3Spatrick 3483cab2bb3Spatrick# Unit tests for common sanitizer runtime. 3493cab2bb3Spatrickif(COMPILER_RT_INCLUDE_TESTS) 3503cab2bb3Spatrick add_subdirectory(tests) 3513cab2bb3Spatrickendif() 352