diff --git a/lib/IRGen/GenDecl.cpp b/lib/IRGen/GenDecl.cpp index b245c467ed55e..736051bc682c0 100644 --- a/lib/IRGen/GenDecl.cpp +++ b/lib/IRGen/GenDecl.cpp @@ -1992,6 +1992,7 @@ void IRGenerator::emitDynamicReplacements() { "\x01l_auto_dynamic_replacements", IGM.getPointerAlignment(), /*isConstant*/ true, llvm::GlobalValue::PrivateLinkage); autoReplVar->setSection(getDynamicReplacementSection(IGM)); + disableAddressSanitizer(IGM, autoReplVar); IGM.addUsedGlobal(autoReplVar); if (origFuncTypes.empty()) diff --git a/lib/Option/SanitizerOptions.cpp b/lib/Option/SanitizerOptions.cpp index f8f8ccbb4bb19..df5c095341f86 100644 --- a/lib/Option/SanitizerOptions.cpp +++ b/lib/Option/SanitizerOptions.cpp @@ -168,7 +168,7 @@ OptionSet swift::parseSanitizerArgValues( } // Check that we're one of the known supported targets for sanitizers. - if (!(Triple.isOSDarwin() || Triple.isOSLinux() || Triple.isOSWindows())) { + if (!(Triple.isOSDarwin() || Triple.isOSLinux() || Triple.isOSWindows() || Triple.isOSWASI())) { SmallString<128> b; Diags.diagnose(SourceLoc(), diag::error_unsupported_opt_for_target, (A->getOption().getPrefixedName() + diff --git a/test/IRGen/dynamic_replaceable.sil b/test/IRGen/dynamic_replaceable.sil index 9e4022a38ee77..339bf7bc8e93c 100644 --- a/test/IRGen/dynamic_replaceable.sil +++ b/test/IRGen/dynamic_replaceable.sil @@ -24,7 +24,7 @@ // CHECK: @"\01l_auto_dynamic_replacements" = private constant { i32, i32, [2 x i32] } // CHECK-SAME: { i32 0, i32 1, // CHECK-SAME: [2 x i32] [{{.*}}@"\01l_unnamed_dynamic_replacements"{{.*}}, i32 0] -// CHECK-SAME: }, section "__TEXT, __swift5_replace, regular, no_dead_strip" +// CHECK-SAME: }, section "__TEXT, __swift5_replace, regular, no_dead_strip", no_sanitize_address // CHECK-LABEL: define swiftcc void @test_dynamically_replaceable() // CHECK-NEXT: entry: diff --git a/utils/swift_build_support/swift_build_support/products/wasisysroot.py b/utils/swift_build_support/swift_build_support/products/wasisysroot.py index 712a07e8377b4..6d7af143ff88e 100644 --- a/utils/swift_build_support/swift_build_support/products/wasisysroot.py +++ b/utils/swift_build_support/swift_build_support/products/wasisysroot.py @@ -168,8 +168,12 @@ def _build(self, host_target, enable_wasi_threads=False, self.cmake_options.define('COMPILER_RT_BAREMETAL_BUILD:BOOL', 'TRUE') self.cmake_options.define('COMPILER_RT_BUILD_XRAY:BOOL', 'FALSE') self.cmake_options.define('COMPILER_RT_BUILD_PROFILE:BOOL', 'TRUE') + self.cmake_options.define('COMPILER_RT_BUILD_SANITIZERS:BOOL', 'TRUE') self.cmake_options.define('COMPILER_RT_INCLUDE_TESTS:BOOL', 'FALSE') self.cmake_options.define('COMPILER_RT_HAS_FPIC_FLAG:BOOL', 'FALSE') + # At this point, CMake feature check for -fno-builtin always fails + # because compiler-rt itself is not built yet and failed to link executable. + self.cmake_options.define('COMPILER_RT_HAS_FNO_BUILTIN_FLAG:BOOL', 'TRUE') self.cmake_options.define('COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN:BOOL', 'FALSE') self.cmake_options.define('COMPILER_RT_OS_DIR:STRING', compiler_rt_os_dir)