Skip to content

Commit 849ee7a

Browse files
authored
Merge pull request swiftlang#37958 from etcwilde/ewilde/pass-sanitizer-flags-to-swift
Pass sanitizer flags to swift driver
2 parents 0f884b8 + 49fad17 commit 849ee7a

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,36 @@ function(_set_target_prefix_and_suffix target kind sdk)
7575
endif()
7676
endfunction()
7777

78+
function(_add_host_variant_swift_sanitizer_flags target)
79+
if(LLVM_USE_SANITIZER)
80+
if(LLVM_USE_SANITIZER STREQUAL "Address")
81+
set(_Swift_SANITIZER_FLAGS "-sanitize=address")
82+
elseif(LLVM_USE_SANITIZER STREQUAL "HWAddress")
83+
# Not supported?
84+
elseif(LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?")
85+
# Not supported
86+
if(LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins")
87+
# Not supported
88+
endif()
89+
elseif(LLVM_USE_SANITIZER STREQUAL "Undefined")
90+
set(_Swift_SANITIZER_FLAGS "-sanitize=undefined")
91+
elseif(LLVM_USE_SANITIZER STREQUAL "Thread")
92+
set(_Swift_SANITIZER_FLAGS "-sanitize=thread")
93+
elseif(LLVM_USE_SANITIZER STREQUAL "DataFlow")
94+
# Not supported
95+
elseif(LLVM_USE_SANITIZER STREQUAL "Address;Undefined" OR
96+
LLVM_USE_SANITIZER STREQUAL "Undefined;Address")
97+
set(_Swift_SANITIZER_FLAGS "-sanitize=address -sanitize=undefined")
98+
elseif(LLVM_USE_SANITIZER STREQUAL "Leaks")
99+
# Not supported
100+
else()
101+
message(SEND_ERROR "unsupported value for LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER}")
102+
endif()
103+
104+
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:${_Swift_SANITIZER_FLAGS}>)
105+
endif()
106+
endfunction()
107+
78108
# Usage:
79109
# _add_host_variant_c_compile_link_flags(name)
80110
function(_add_host_variant_c_compile_link_flags name)
@@ -100,6 +130,8 @@ function(_add_host_variant_c_compile_link_flags name)
100130
MACCATALYST_BUILD_FLAVOR ""
101131
DEPLOYMENT_VERSION "${DEPLOYMENT_VERSION}")
102132
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:-target;${target}>)
133+
134+
_add_host_variant_swift_sanitizer_flags(${name})
103135
endif()
104136

105137
set(_sysroot

0 commit comments

Comments
 (0)