Index: lib/Driver/ToolChains.h =================================================================== --- lib/Driver/ToolChains.h +++ lib/Driver/ToolChains.h @@ -496,6 +496,8 @@ return TargetVersion < VersionTuple(V0, V1, V2); } + StringRef getOSLibraryNameSuffix() const; + public: /// } /// @name ToolChain Implementation Index: lib/Driver/ToolChains.cpp =================================================================== --- lib/Driver/ToolChains.cpp +++ lib/Driver/ToolChains.cpp @@ -319,6 +319,25 @@ } } +StringRef Darwin::getOSLibraryNameSuffix() const { + if (isTargetMacOS()) + return "osx"; + if (isTargetWatchOSSimulator()) + return "watchossim"; + if (isTargetWatchOS()) + return "watchos"; + if (isTargetIOSSimulator()) + return "iossim"; + if (isTargetIPhoneOS()) + return "ios"; + if (isTargetTvOSSimulator()) + return "tvossim"; + if (isTargetTvOS()) + return "tvos"; + + llvm_unreachable("Unsuported OS"); +} + void Darwin::addProfileRTLibs(const ArgList &Args, ArgStringList &CmdArgs) const { if (!needsProfileRT(Args)) return; @@ -363,12 +382,11 @@ // Sanitizer runtime libraries requires C++. AddCXXStdlibLibArgs(Args, CmdArgs); } - // ASan is not supported on watchOS. - assert(isTargetMacOS() || isTargetIOSSimulator()); - StringRef OS = isTargetMacOS() ? "osx" : "iossim"; + AddLinkRuntimeLib( Args, CmdArgs, - (Twine("libclang_rt.") + Sanitizer + "_" + OS + "_dynamic.dylib").str(), + (Twine("libclang_rt.") + Sanitizer + "_" + + getOSLibraryNameSuffix() + "_dynamic.dylib").str(), /*AlwaysLink*/ true, /*IsEmbedded*/ false, /*AddRPath*/ true); @@ -1220,8 +1238,7 @@ SanitizerMask Darwin::getSupportedSanitizers() const { SanitizerMask Res = ToolChain::getSupportedSanitizers(); - if (isTargetMacOS() || isTargetIOSSimulator()) - Res |= SanitizerKind::Address; + Res |= SanitizerKind::Address; if (isTargetMacOS()) { if (!isMacosxVersionLT(10, 9)) Res |= SanitizerKind::Vptr; Index: test/Driver/fsanitize.c =================================================================== --- test/Driver/fsanitize.c +++ test/Driver/fsanitize.c @@ -230,7 +230,7 @@ // CHECK-VPTR-DARWIN-NEW: -fsanitize=alignment,vptr // RUN: %clang -target armv7-apple-ios7 -miphoneos-version-min=7.0 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-IOS -// CHECK-ASAN-IOS: unsupported option '-fsanitize=address' for target 'arm-apple-ios7' +// CHECK-ASAN-IOS: -fsanitize=address // RUN: %clang -target i386-pc-openbsd -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-OPENBSD // CHECK-ASAN-OPENBSD: unsupported option '-fsanitize=address' for target 'i386-pc-openbsd'