Enable ASAN/LSAN/TSAN for *-apple-ios-macabi

The -macabi targets are iOS running on MacOS, and they use the runtime
libraries for MacOS, thus they have the same sanitizers available as the
*-apple-darwin targets.
This commit is contained in:
danakj 2023-09-07 10:18:05 -04:00
parent 078eb1120a
commit 4eb1b52794
5 changed files with 13 additions and 2 deletions

View File

@ -1,5 +1,5 @@
use super::apple_base::{opts, Arch}; use super::apple_base::{opts, Arch};
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, Target, TargetOptions}; use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target { pub fn target() -> Target {
let llvm_target = "arm64-apple-ios14.0-macabi"; let llvm_target = "arm64-apple-ios14.0-macabi";
@ -7,6 +7,7 @@ pub fn target() -> Target {
let arch = Arch::Arm64_macabi; let arch = Arch::Arm64_macabi;
let mut base = opts("ios", arch); let mut base = opts("ios", arch);
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]); base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
Target { Target {
llvm_target: llvm_target.into(), llvm_target: llvm_target.into(),

View File

@ -1,5 +1,5 @@
use super::apple_base::{opts, Arch}; use super::apple_base::{opts, Arch};
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions}; use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target, TargetOptions};
pub fn target() -> Target { pub fn target() -> Target {
let llvm_target = "x86_64-apple-ios14.0-macabi"; let llvm_target = "x86_64-apple-ios14.0-macabi";
@ -7,6 +7,7 @@ pub fn target() -> Target {
let arch = Arch::X86_64_macabi; let arch = Arch::X86_64_macabi;
let mut base = opts("ios", arch); let mut base = opts("ios", arch);
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]); base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::THREAD;
Target { Target {
llvm_target: llvm_target.into(), llvm_target: llvm_target.into(),

View File

@ -574,7 +574,9 @@ fn copy_sanitizers(
|| target == "aarch64-apple-darwin" || target == "aarch64-apple-darwin"
|| target == "aarch64-apple-ios" || target == "aarch64-apple-ios"
|| target == "aarch64-apple-ios-sim" || target == "aarch64-apple-ios-sim"
|| target == "aarch64-apple-ios-catalyst"
|| target == "x86_64-apple-ios" || target == "x86_64-apple-ios"
|| target == "x86_64-apple-ios-catalyst"
{ {
// Update the librarys install name to reflect that it has been renamed. // Update the librarys install name to reflect that it has been renamed.
apple_darwin_update_library_name(&dst, &format!("@rpath/{}", &runtime.name)); apple_darwin_update_library_name(&dst, &format!("@rpath/{}", &runtime.name));

View File

@ -1063,6 +1063,7 @@ fn supported_sanitizers(
"aarch64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]), "aarch64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
"aarch64-apple-ios" => darwin_libs("ios", &["asan", "tsan"]), "aarch64-apple-ios" => darwin_libs("ios", &["asan", "tsan"]),
"aarch64-apple-ios-sim" => darwin_libs("iossim", &["asan", "tsan"]), "aarch64-apple-ios-sim" => darwin_libs("iossim", &["asan", "tsan"]),
"aarch64-apple-ios-macabi" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
"aarch64-unknown-fuchsia" => common_libs("fuchsia", "aarch64", &["asan"]), "aarch64-unknown-fuchsia" => common_libs("fuchsia", "aarch64", &["asan"]),
"aarch64-unknown-linux-gnu" => { "aarch64-unknown-linux-gnu" => {
common_libs("linux", "aarch64", &["asan", "lsan", "msan", "tsan", "hwasan"]) common_libs("linux", "aarch64", &["asan", "lsan", "msan", "tsan", "hwasan"])
@ -1073,6 +1074,7 @@ fn supported_sanitizers(
"x86_64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]), "x86_64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
"x86_64-unknown-fuchsia" => common_libs("fuchsia", "x86_64", &["asan"]), "x86_64-unknown-fuchsia" => common_libs("fuchsia", "x86_64", &["asan"]),
"x86_64-apple-ios" => darwin_libs("iossim", &["asan", "tsan"]), "x86_64-apple-ios" => darwin_libs("iossim", &["asan", "tsan"]),
"x86_64-apple-ios-macabi" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
"x86_64-unknown-freebsd" => common_libs("freebsd", "x86_64", &["asan", "msan", "tsan"]), "x86_64-unknown-freebsd" => common_libs("freebsd", "x86_64", &["asan", "msan", "tsan"]),
"x86_64-unknown-netbsd" => { "x86_64-unknown-netbsd" => {
common_libs("netbsd", "x86_64", &["asan", "lsan", "msan", "tsan"]) common_libs("netbsd", "x86_64", &["asan", "lsan", "msan", "tsan"])

View File

@ -13,6 +13,7 @@ pub const ASAN_SUPPORTED_TARGETS: &[&str] = &[
"aarch64-apple-darwin", "aarch64-apple-darwin",
"aarch64-apple-ios", "aarch64-apple-ios",
"aarch64-apple-ios-sim", "aarch64-apple-ios-sim",
"aarch64-apple-ios-macabi",
"aarch64-unknown-fuchsia", "aarch64-unknown-fuchsia",
"aarch64-linux-android", "aarch64-linux-android",
"aarch64-unknown-linux-gnu", "aarch64-unknown-linux-gnu",
@ -22,6 +23,7 @@ pub const ASAN_SUPPORTED_TARGETS: &[&str] = &[
"i686-unknown-linux-gnu", "i686-unknown-linux-gnu",
"x86_64-apple-darwin", "x86_64-apple-darwin",
"x86_64-apple-ios", "x86_64-apple-ios",
"x86_64-apple-ios-macabi",
"x86_64-unknown-fuchsia", "x86_64-unknown-fuchsia",
"x86_64-linux-android", "x86_64-linux-android",
"x86_64-unknown-freebsd", "x86_64-unknown-freebsd",
@ -60,6 +62,7 @@ pub const LSAN_SUPPORTED_TARGETS: &[&str] = &[
// "aarch64-apple-darwin", // "aarch64-apple-darwin",
"aarch64-unknown-linux-gnu", "aarch64-unknown-linux-gnu",
"x86_64-apple-darwin", "x86_64-apple-darwin",
"x86_64-apple-ios-macabi",
"x86_64-unknown-linux-gnu", "x86_64-unknown-linux-gnu",
"s390x-unknown-linux-gnu", "s390x-unknown-linux-gnu",
]; ];
@ -75,9 +78,11 @@ pub const TSAN_SUPPORTED_TARGETS: &[&str] = &[
"aarch64-apple-darwin", "aarch64-apple-darwin",
"aarch64-apple-ios", "aarch64-apple-ios",
"aarch64-apple-ios-sim", "aarch64-apple-ios-sim",
"aarch64-apple-ios-macabi",
"aarch64-unknown-linux-gnu", "aarch64-unknown-linux-gnu",
"x86_64-apple-darwin", "x86_64-apple-darwin",
"x86_64-apple-ios", "x86_64-apple-ios",
"x86_64-apple-ios-macabi",
"x86_64-unknown-freebsd", "x86_64-unknown-freebsd",
"x86_64-unknown-linux-gnu", "x86_64-unknown-linux-gnu",
"s390x-unknown-linux-gnu", "s390x-unknown-linux-gnu",