Skip to content

Commit 90abf31

Browse files
committed
Pass sanitizer flags to swift on Unix-y systems
This patch fixes the part of the build system where we aren't passing the sanitizer flags to swift, so the linker isn't linking against the sanitizer libraries.
1 parent 92beb71 commit 90abf31

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,41 @@ 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_ON_UNIX)
81+
82+
if (LLVM_USE_SANITIZER STREQUAL "Address")
83+
set(_Swift_SANITIZER_FLAGS "-sanitize=address")
84+
elseif (LLVM_USE_SANITIZER STREQUAL "HWAddress")
85+
# Not supported?
86+
elseif (LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?")
87+
# Not supported
88+
if(LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins")
89+
# Not supported
90+
endif()
91+
elseif (LLVM_USE_SANITIZER STREQUAL "Undefined")
92+
set(_Swift_SANITIZER_FLAGS "-sanitize=undefined")
93+
elseif (LLVM_USE_SANITIZER STREQUAL "Thread")
94+
set(_Swift_SANITIZER_FLAGS "-sanitize=thread")
95+
elseif (LLVM_USE_SANITIZER STREQUAL "DataFlow")
96+
# Not supported
97+
elseif (LLVM_USE_SANITIZER STREQUAL "Address;Undefined" OR
98+
LLVM_USE_SANITIZER STREQUAL "Undefined;Address")
99+
set(_Swift_SANITIZER_FLAGS "-sanitize=address -sanitize=undefined")
100+
elseif (LLVM_USE_SANITIZER STREQUAL "Leaks")
101+
# Not supported
102+
else()
103+
message(FATAL_ERROR "Unsupported value of LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER}")
104+
endif()
105+
106+
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:${_Swift_SANITIZER_FLAGS}>)
107+
else ()
108+
# TODO (etcwilde): Pass sanitizer flags to swiftc on windows
109+
endif ()
110+
endif ()
111+
endfunction()
112+
78113
# Usage:
79114
# _add_host_variant_c_compile_link_flags(name)
80115
function(_add_host_variant_c_compile_link_flags name)
@@ -100,6 +135,8 @@ function(_add_host_variant_c_compile_link_flags name)
100135
MACCATALYST_BUILD_FLAVOR ""
101136
DEPLOYMENT_VERSION "${DEPLOYMENT_VERSION}")
102137
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:-target;${target}>)
138+
139+
_add_host_variant_swift_sanitizer_flags(${name})
103140
endif()
104141

105142
set(_sysroot

0 commit comments

Comments
 (0)