Skip to content

Commit 55b5c7b

Browse files
committed
Auto merge of #115695 - tmiasko:compiletest-supported-sanitizers, r=oli-obk
compiletest: load supported sanitizers from target spec
2 parents e4133ba + 9090ed8 commit 55b5c7b

File tree

10 files changed

+191
-220
lines changed

10 files changed

+191
-220
lines changed

Diff for: src/tools/compiletest/src/common.rs

+20
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,22 @@ impl PanicStrategy {
141141
}
142142
}
143143

144+
#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
145+
#[serde(rename_all = "kebab-case")]
146+
pub enum Sanitizer {
147+
Address,
148+
Cfi,
149+
Kcfi,
150+
KernelAddress,
151+
Leak,
152+
Memory,
153+
Memtag,
154+
Safestack,
155+
ShadowCallStack,
156+
Thread,
157+
Hwaddress,
158+
}
159+
144160
/// Configuration for compiletest
145161
#[derive(Debug, Default, Clone)]
146162
pub struct Config {
@@ -560,6 +576,10 @@ pub struct TargetCfg {
560576
pub(crate) panic: PanicStrategy,
561577
#[serde(default)]
562578
pub(crate) dynamic_linking: bool,
579+
#[serde(rename = "supported-sanitizers", default)]
580+
pub(crate) sanitizers: Vec<Sanitizer>,
581+
#[serde(rename = "supports-xray", default)]
582+
pub(crate) xray: bool,
563583
}
564584

565585
impl TargetCfg {

Diff for: src/tools/compiletest/src/header/needs.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use crate::common::{Config, Debugger};
1+
use crate::common::{Config, Debugger, Sanitizer};
22
use crate::header::IgnoreDecision;
3-
use crate::util;
43

54
pub(super) fn handle_needs(
65
cache: &CachedNeedsConditions,
@@ -220,21 +219,22 @@ impl CachedNeedsConditions {
220219
path.iter().any(|dir| dir.join("x86_64-w64-mingw32-dlltool").is_file());
221220

222221
let target = &&*config.target;
222+
let sanitizers = &config.target_cfg().sanitizers;
223223
Self {
224224
sanitizer_support: std::env::var_os("RUSTC_SANITIZER_SUPPORT").is_some(),
225-
sanitizer_address: util::ASAN_SUPPORTED_TARGETS.contains(target),
226-
sanitizer_cfi: util::CFI_SUPPORTED_TARGETS.contains(target),
227-
sanitizer_kcfi: util::KCFI_SUPPORTED_TARGETS.contains(target),
228-
sanitizer_kasan: util::KASAN_SUPPORTED_TARGETS.contains(target),
229-
sanitizer_leak: util::LSAN_SUPPORTED_TARGETS.contains(target),
230-
sanitizer_memory: util::MSAN_SUPPORTED_TARGETS.contains(target),
231-
sanitizer_thread: util::TSAN_SUPPORTED_TARGETS.contains(target),
232-
sanitizer_hwaddress: util::HWASAN_SUPPORTED_TARGETS.contains(target),
233-
sanitizer_memtag: util::MEMTAG_SUPPORTED_TARGETS.contains(target),
234-
sanitizer_shadow_call_stack: util::SHADOWCALLSTACK_SUPPORTED_TARGETS.contains(target),
235-
sanitizer_safestack: util::SAFESTACK_SUPPORTED_TARGETS.contains(target),
225+
sanitizer_address: sanitizers.contains(&Sanitizer::Address),
226+
sanitizer_cfi: sanitizers.contains(&Sanitizer::Cfi),
227+
sanitizer_kcfi: sanitizers.contains(&Sanitizer::Kcfi),
228+
sanitizer_kasan: sanitizers.contains(&Sanitizer::KernelAddress),
229+
sanitizer_leak: sanitizers.contains(&Sanitizer::Leak),
230+
sanitizer_memory: sanitizers.contains(&Sanitizer::Memory),
231+
sanitizer_thread: sanitizers.contains(&Sanitizer::Thread),
232+
sanitizer_hwaddress: sanitizers.contains(&Sanitizer::Hwaddress),
233+
sanitizer_memtag: sanitizers.contains(&Sanitizer::Memtag),
234+
sanitizer_shadow_call_stack: sanitizers.contains(&Sanitizer::ShadowCallStack),
235+
sanitizer_safestack: sanitizers.contains(&Sanitizer::Safestack),
236236
profiler_support: std::env::var_os("RUSTC_PROFILER_SUPPORT").is_some(),
237-
xray: util::XRAY_SUPPORTED_TARGETS.contains(target),
237+
xray: config.target_cfg().xray,
238238

239239
// For tests using the `needs-rust-lld` directive (e.g. for `-Zgcc-ld=lld`), we need to find
240240
// whether `rust-lld` is present in the compiler under test.

0 commit comments

Comments
 (0)