mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
compiletest: load supported sanitizers from target spec
This commit is contained in:
@@ -141,6 +141,22 @@ pub(crate) fn for_miropt_test_tools(&self) -> miropt_test_tools::PanicStrategy {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
pub enum Sanitizer {
|
||||
Address,
|
||||
Cfi,
|
||||
Kcfi,
|
||||
KernelAddress,
|
||||
Leak,
|
||||
Memory,
|
||||
Memtag,
|
||||
Safestack,
|
||||
ShadowCallStack,
|
||||
Thread,
|
||||
Hwaddress,
|
||||
}
|
||||
|
||||
/// Configuration for compiletest
|
||||
#[derive(Debug, Default, Clone)]
|
||||
pub struct Config {
|
||||
@@ -560,6 +576,8 @@ pub struct TargetCfg {
|
||||
pub(crate) panic: PanicStrategy,
|
||||
#[serde(default)]
|
||||
pub(crate) dynamic_linking: bool,
|
||||
#[serde(rename = "supported-sanitizers", default)]
|
||||
pub(crate) sanitizers: Vec<Sanitizer>,
|
||||
}
|
||||
|
||||
impl TargetCfg {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::common::{Config, Debugger};
|
||||
use crate::common::{Config, Debugger, Sanitizer};
|
||||
use crate::header::IgnoreDecision;
|
||||
use crate::util;
|
||||
|
||||
@@ -220,19 +220,20 @@ pub(super) fn load(config: &Config) -> Self {
|
||||
path.iter().any(|dir| dir.join("x86_64-w64-mingw32-dlltool").is_file());
|
||||
|
||||
let target = &&*config.target;
|
||||
let sanitizers = &config.target_cfg().sanitizers;
|
||||
Self {
|
||||
sanitizer_support: std::env::var_os("RUSTC_SANITIZER_SUPPORT").is_some(),
|
||||
sanitizer_address: util::ASAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_cfi: util::CFI_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_kcfi: util::KCFI_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_kasan: util::KASAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_leak: util::LSAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_memory: util::MSAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_thread: util::TSAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_hwaddress: util::HWASAN_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_memtag: util::MEMTAG_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_shadow_call_stack: util::SHADOWCALLSTACK_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_safestack: util::SAFESTACK_SUPPORTED_TARGETS.contains(target),
|
||||
sanitizer_address: sanitizers.contains(&Sanitizer::Address),
|
||||
sanitizer_cfi: sanitizers.contains(&Sanitizer::Cfi),
|
||||
sanitizer_kcfi: sanitizers.contains(&Sanitizer::Kcfi),
|
||||
sanitizer_kasan: sanitizers.contains(&Sanitizer::KernelAddress),
|
||||
sanitizer_leak: sanitizers.contains(&Sanitizer::Leak),
|
||||
sanitizer_memory: sanitizers.contains(&Sanitizer::Memory),
|
||||
sanitizer_thread: sanitizers.contains(&Sanitizer::Thread),
|
||||
sanitizer_hwaddress: sanitizers.contains(&Sanitizer::Hwaddress),
|
||||
sanitizer_memtag: sanitizers.contains(&Sanitizer::Memtag),
|
||||
sanitizer_shadow_call_stack: sanitizers.contains(&Sanitizer::ShadowCallStack),
|
||||
sanitizer_safestack: sanitizers.contains(&Sanitizer::Safestack),
|
||||
profiler_support: std::env::var_os("RUSTC_PROFILER_SUPPORT").is_some(),
|
||||
xray: util::XRAY_SUPPORTED_TARGETS.contains(target),
|
||||
|
||||
|
||||
@@ -9,93 +9,6 @@
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
pub const ASAN_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-apple-darwin",
|
||||
"aarch64-apple-ios",
|
||||
"aarch64-apple-ios-sim",
|
||||
"aarch64-apple-ios-macabi",
|
||||
"aarch64-unknown-fuchsia",
|
||||
"aarch64-linux-android",
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"arm-linux-androideabi",
|
||||
"armv7-linux-androideabi",
|
||||
"i686-linux-android",
|
||||
"i686-unknown-linux-gnu",
|
||||
"x86_64-apple-darwin",
|
||||
"x86_64-apple-ios",
|
||||
"x86_64-apple-ios-macabi",
|
||||
"x86_64-unknown-fuchsia",
|
||||
"x86_64-linux-android",
|
||||
"x86_64-unknown-freebsd",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"s390x-unknown-linux-gnu",
|
||||
];
|
||||
|
||||
// FIXME(rcvalle): More targets are likely supported.
|
||||
pub const CFI_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-apple-darwin",
|
||||
"aarch64-unknown-fuchsia",
|
||||
"aarch64-linux-android",
|
||||
"aarch64-unknown-freebsd",
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"x86_64-apple-darwin",
|
||||
"x86_64-unknown-fuchsia",
|
||||
"x86_64-pc-solaris",
|
||||
"x86_64-unknown-freebsd",
|
||||
"x86_64-unknown-illumos",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"x86_64-unknown-linux-musl",
|
||||
"x86_64-unknown-netbsd",
|
||||
];
|
||||
|
||||
pub const KCFI_SUPPORTED_TARGETS: &[&str] = &["aarch64-linux-none", "x86_64-linux-none"];
|
||||
|
||||
pub const KASAN_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-unknown-none",
|
||||
"riscv64gc-unknown-none-elf",
|
||||
"riscv64imac-unknown-none-elf",
|
||||
"x86_64-unknown-none",
|
||||
];
|
||||
|
||||
pub const LSAN_SUPPORTED_TARGETS: &[&str] = &[
|
||||
// FIXME: currently broken, see #88132
|
||||
// "aarch64-apple-darwin",
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"x86_64-apple-darwin",
|
||||
"x86_64-apple-ios-macabi",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"s390x-unknown-linux-gnu",
|
||||
];
|
||||
|
||||
pub const MSAN_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"x86_64-unknown-freebsd",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"s390x-unknown-linux-gnu",
|
||||
];
|
||||
|
||||
pub const TSAN_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-apple-darwin",
|
||||
"aarch64-apple-ios",
|
||||
"aarch64-apple-ios-sim",
|
||||
"aarch64-apple-ios-macabi",
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"x86_64-apple-darwin",
|
||||
"x86_64-apple-ios",
|
||||
"x86_64-apple-ios-macabi",
|
||||
"x86_64-unknown-freebsd",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"s390x-unknown-linux-gnu",
|
||||
];
|
||||
|
||||
pub const HWASAN_SUPPORTED_TARGETS: &[&str] =
|
||||
&["aarch64-linux-android", "aarch64-unknown-linux-gnu"];
|
||||
|
||||
pub const MEMTAG_SUPPORTED_TARGETS: &[&str] =
|
||||
&["aarch64-linux-android", "aarch64-unknown-linux-gnu"];
|
||||
|
||||
pub const SHADOWCALLSTACK_SUPPORTED_TARGETS: &[&str] = &["aarch64-linux-android"];
|
||||
|
||||
pub const XRAY_SUPPORTED_TARGETS: &[&str] = &[
|
||||
"aarch64-linux-android",
|
||||
"aarch64-unknown-linux-gnu",
|
||||
@@ -109,8 +22,6 @@
|
||||
"x86_64-unknown-openbsd",
|
||||
];
|
||||
|
||||
pub const SAFESTACK_SUPPORTED_TARGETS: &[&str] = &["x86_64-unknown-linux-gnu"];
|
||||
|
||||
pub fn make_new_path(path: &str) -> String {
|
||||
assert!(cfg!(windows));
|
||||
// Windows just uses PATH as the library search path, so we have to
|
||||
|
||||
Reference in New Issue
Block a user