Skip to content

Commit 64af7ea

Browse files
committed
Move SanitizerSet to rustc_target
1 parent 23fa536 commit 64af7ea

File tree

14 files changed

+109
-116
lines changed

14 files changed

+109
-116
lines changed

compiler/rustc_codegen_llvm/src/attributes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
1111
use rustc_middle::ty::layout::HasTyCtxt;
1212
use rustc_middle::ty::query::Providers;
1313
use rustc_middle::ty::{self, TyCtxt};
14-
use rustc_session::config::{OptLevel, SanitizerSet};
14+
use rustc_session::config::OptLevel;
1515
use rustc_session::Session;
16-
use rustc_target::spec::StackProbeType;
16+
use rustc_target::spec::{SanitizerSet, StackProbeType};
1717

1818
use crate::attributes;
1919
use crate::llvm::AttributePlace::Function;

compiler/rustc_codegen_llvm/src/back/write.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ use rustc_fs_util::{link_or_copy, path_to_c_string};
2323
use rustc_hir::def_id::LOCAL_CRATE;
2424
use rustc_middle::bug;
2525
use rustc_middle::ty::TyCtxt;
26-
use rustc_session::config::{self, Lto, OutputType, Passes, SanitizerSet, SwitchWithOptPath};
26+
use rustc_session::config::{self, Lto, OutputType, Passes, SwitchWithOptPath};
2727
use rustc_session::Session;
2828
use rustc_span::symbol::sym;
2929
use rustc_span::InnerSpan;
30-
use rustc_target::spec::{CodeModel, RelocModel, SplitDebuginfo};
30+
use rustc_target::spec::{CodeModel, RelocModel, SanitizerSet, SplitDebuginfo};
3131
use tracing::debug;
3232

3333
use libc::{c_char, c_int, c_uint, c_void, size_t};

compiler/rustc_codegen_llvm/src/base.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ use rustc_middle::middle::cstore::EncodedMetadata;
3232
use rustc_middle::middle::exported_symbols;
3333
use rustc_middle::mir::mono::{Linkage, Visibility};
3434
use rustc_middle::ty::TyCtxt;
35-
use rustc_session::config::{DebugInfo, SanitizerSet};
35+
use rustc_session::config::DebugInfo;
3636
use rustc_span::symbol::Symbol;
37+
use rustc_target::spec::SanitizerSet;
3738

3839
use std::ffi::CString;
3940
use std::time::Instant;

compiler/rustc_codegen_ssa/src/back/link.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_hir::def_id::CrateNum;
66
use rustc_middle::middle::cstore::{EncodedMetadata, LibSource};
77
use rustc_middle::middle::dependency_format::Linkage;
88
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo};
9-
use rustc_session::config::{OutputFilenames, OutputType, PrintRequest, SanitizerSet};
9+
use rustc_session::config::{OutputFilenames, OutputType, PrintRequest};
1010
use rustc_session::output::{check_file_is_writeable, invalid_output_for_target, out_filename};
1111
use rustc_session::search_paths::PathKind;
1212
use rustc_session::utils::NativeLibKind;
@@ -16,7 +16,7 @@ use rustc_session::{filesearch, Session};
1616
use rustc_span::symbol::Symbol;
1717
use rustc_target::spec::crt_objects::{CrtObjects, CrtObjectsFallback};
1818
use rustc_target::spec::{LinkOutputKind, LinkerFlavor, LldFlavor, SplitDebuginfo};
19-
use rustc_target::spec::{PanicStrategy, RelocModel, RelroLevel, Target};
19+
use rustc_target::spec::{PanicStrategy, RelocModel, RelroLevel, SanitizerSet, Target};
2020

2121
use super::archive::ArchiveBuilder;
2222
use super::command::Command;

compiler/rustc_codegen_ssa/src/back/symbol_export.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use rustc_middle::ty::query::Providers;
1515
use rustc_middle::ty::subst::{GenericArgKind, SubstsRef};
1616
use rustc_middle::ty::Instance;
1717
use rustc_middle::ty::{SymbolName, TyCtxt};
18-
use rustc_session::config::{CrateType, SanitizerSet};
18+
use rustc_session::config::CrateType;
19+
use rustc_target::spec::SanitizerSet;
1920

2021
pub fn threshold(tcx: TyCtxt<'_>) -> SymbolExportLevel {
2122
crates_export_threshold(&tcx.sess.crate_types())

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ use rustc_middle::middle::exported_symbols::SymbolExportLevel;
2727
use rustc_middle::ty::TyCtxt;
2828
use rustc_session::cgu_reuse_tracker::CguReuseTracker;
2929
use rustc_session::config::{self, CrateType, Lto, OutputFilenames, OutputType};
30-
use rustc_session::config::{Passes, SanitizerSet, SwitchWithOptPath};
30+
use rustc_session::config::{Passes, SwitchWithOptPath};
3131
use rustc_session::Session;
3232
use rustc_span::source_map::SourceMap;
3333
use rustc_span::symbol::{sym, Symbol};
3434
use rustc_span::{BytePos, FileName, InnerSpan, Pos, Span};
35-
use rustc_target::spec::{MergeFunctions, PanicStrategy};
35+
use rustc_target::spec::{MergeFunctions, PanicStrategy, SanitizerSet};
3636

3737
use std::any::Any;
3838
use std::fs;

compiler/rustc_interface/src/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_session::config::{build_configuration, build_session_options, to_crate
88
use rustc_session::config::{rustc_optgroups, ErrorOutputType, ExternLocation, Options, Passes};
99
use rustc_session::config::{CFGuard, ExternEntry, LinkerPluginLto, LtoCli, SwitchWithOptPath};
1010
use rustc_session::config::{
11-
Externs, OutputType, OutputTypes, SanitizerSet, SymbolManglingVersion, WasiExecModel,
11+
Externs, OutputType, OutputTypes, SymbolManglingVersion, WasiExecModel,
1212
};
1313
use rustc_session::lint::Level;
1414
use rustc_session::search_paths::SearchPath;
@@ -18,7 +18,7 @@ use rustc_span::edition::{Edition, DEFAULT_EDITION};
1818
use rustc_span::symbol::sym;
1919
use rustc_span::SourceFileHashAlgorithm;
2020
use rustc_target::spec::{CodeModel, LinkerFlavor, MergeFunctions, PanicStrategy};
21-
use rustc_target::spec::{RelocModel, RelroLevel, SplitDebuginfo, TlsModel};
21+
use rustc_target::spec::{RelocModel, RelroLevel, SanitizerSet, SplitDebuginfo, TlsModel};
2222
use std::collections::{BTreeMap, BTreeSet};
2323
use std::iter::FromIterator;
2424
use std::num::NonZeroUsize;

compiler/rustc_middle/src/middle/codegen_fn_attrs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::mir::mono::Linkage;
22
use rustc_attr::{InlineAttr, InstructionSetAttr, OptimizeAttr};
3-
use rustc_session::config::SanitizerSet;
43
use rustc_span::symbol::Symbol;
4+
use rustc_target::spec::SanitizerSet;
55

66
#[derive(Clone, TyEncodable, TyDecodable, HashStable, Debug)]
77
pub struct CodegenFnAttrs {

compiler/rustc_session/src/config.rs

Lines changed: 3 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use crate::{early_error, early_warn, Session};
1010

1111
use rustc_data_structures::fx::FxHashSet;
1212
use rustc_data_structures::impl_stable_hash_via_hash;
13-
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
1413

1514
use rustc_target::abi::{Align, TargetDataLayout};
1615
use rustc_target::spec::{SplitDebuginfo, Target, TargetTriple};
@@ -36,66 +35,6 @@ use std::iter::{self, FromIterator};
3635
use std::path::{Path, PathBuf};
3736
use std::str::{self, FromStr};
3837

39-
bitflags! {
40-
#[derive(Default, Encodable, Decodable)]
41-
pub struct SanitizerSet: u8 {
42-
const ADDRESS = 1 << 0;
43-
const LEAK = 1 << 1;
44-
const MEMORY = 1 << 2;
45-
const THREAD = 1 << 3;
46-
const HWADDRESS = 1 << 4;
47-
}
48-
}
49-
50-
/// Formats a sanitizer set as a comma separated list of sanitizers' names.
51-
impl fmt::Display for SanitizerSet {
52-
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
53-
let mut first = true;
54-
for s in *self {
55-
let name = match s {
56-
SanitizerSet::ADDRESS => "address",
57-
SanitizerSet::LEAK => "leak",
58-
SanitizerSet::MEMORY => "memory",
59-
SanitizerSet::THREAD => "thread",
60-
SanitizerSet::HWADDRESS => "hwaddress",
61-
_ => panic!("unrecognized sanitizer {:?}", s),
62-
};
63-
if !first {
64-
f.write_str(",")?;
65-
}
66-
f.write_str(name)?;
67-
first = false;
68-
}
69-
Ok(())
70-
}
71-
}
72-
73-
impl IntoIterator for SanitizerSet {
74-
type Item = SanitizerSet;
75-
type IntoIter = std::vec::IntoIter<SanitizerSet>;
76-
77-
fn into_iter(self) -> Self::IntoIter {
78-
[
79-
SanitizerSet::ADDRESS,
80-
SanitizerSet::LEAK,
81-
SanitizerSet::MEMORY,
82-
SanitizerSet::THREAD,
83-
SanitizerSet::HWADDRESS,
84-
]
85-
.iter()
86-
.copied()
87-
.filter(|&s| self.contains(s))
88-
.collect::<Vec<_>>()
89-
.into_iter()
90-
}
91-
}
92-
93-
impl<CTX> HashStable<CTX> for SanitizerSet {
94-
fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) {
95-
self.bits().hash_stable(ctx, hasher);
96-
}
97-
}
98-
9938
/// The different settings that the `-Z strip` flag can have.
10039
#[derive(Clone, Copy, PartialEq, Hash, Debug)]
10140
pub enum Strip {
@@ -2308,16 +2247,16 @@ impl PpMode {
23082247
crate mod dep_tracking {
23092248
use super::{
23102249
CFGuard, CrateType, DebugInfo, ErrorOutputType, InstrumentCoverage, LinkerPluginLto,
2311-
LtoCli, OptLevel, OutputTypes, Passes, SanitizerSet, SourceFileHashAlgorithm,
2312-
SwitchWithOptPath, SymbolManglingVersion, TrimmedDefPaths,
2250+
LtoCli, OptLevel, OutputTypes, Passes, SourceFileHashAlgorithm, SwitchWithOptPath,
2251+
SymbolManglingVersion, TrimmedDefPaths,
23132252
};
23142253
use crate::lint;
23152254
use crate::options::WasiExecModel;
23162255
use crate::utils::NativeLibKind;
23172256
use rustc_feature::UnstableFeatures;
23182257
use rustc_span::edition::Edition;
23192258
use rustc_target::spec::{CodeModel, MergeFunctions, PanicStrategy, RelocModel};
2320-
use rustc_target::spec::{RelroLevel, SplitDebuginfo, TargetTriple, TlsModel};
2259+
use rustc_target::spec::{RelroLevel, SanitizerSet, SplitDebuginfo, TargetTriple, TlsModel};
23212260
use std::collections::hash_map::DefaultHasher;
23222261
use std::collections::BTreeMap;
23232262
use std::hash::Hash;

compiler/rustc_session/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
#![cfg_attr(bootstrap, feature(or_patterns))]
44
#![recursion_limit = "256"]
55

6-
#[macro_use]
7-
extern crate bitflags;
86
#[macro_use]
97
extern crate rustc_macros;
108

compiler/rustc_session/src/options.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::lint;
55
use crate::search_paths::SearchPath;
66
use crate::utils::NativeLibKind;
77

8-
use rustc_target::spec::{CodeModel, LinkerFlavor, MergeFunctions, PanicStrategy};
8+
use rustc_target::spec::{CodeModel, LinkerFlavor, MergeFunctions, PanicStrategy, SanitizerSet};
99
use rustc_target::spec::{RelocModel, RelroLevel, SplitDebuginfo, TargetTriple, TlsModel};
1010

1111
use rustc_feature::UnstableFeatures;

compiler/rustc_session/src/session.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::cgu_reuse_tracker::CguReuseTracker;
22
use crate::code_stats::CodeStats;
33
pub use crate::code_stats::{DataTypeKind, FieldInfo, SizeKind, VariantInfo};
4-
use crate::config::{self, CrateType, OutputType, PrintRequest, SanitizerSet, SwitchWithOptPath};
4+
use crate::config::{self, CrateType, OutputType, PrintRequest, SwitchWithOptPath};
55
use crate::filesearch;
66
use crate::lint::{self, LintId};
77
use crate::parse::ParseSess;
@@ -28,7 +28,7 @@ use rustc_span::source_map::{FileLoader, MultiSpan, RealFileLoader, SourceMap, S
2828
use rustc_span::{sym, SourceFileHashAlgorithm, Symbol};
2929
use rustc_target::asm::InlineAsmArch;
3030
use rustc_target::spec::{CodeModel, PanicStrategy, RelocModel, RelroLevel};
31-
use rustc_target::spec::{SplitDebuginfo, Target, TargetTriple, TlsModel};
31+
use rustc_target::spec::{SanitizerSet, SplitDebuginfo, Target, TargetTriple, TlsModel};
3232

3333
use std::cell::{self, RefCell};
3434
use std::env;

compiler/rustc_target/src/spec/mod.rs

Lines changed: 87 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
use crate::abi::Endian;
3838
use crate::spec::abi::{lookup as lookup_abi, Abi};
3939
use crate::spec::crt_objects::{CrtObjects, CrtObjectsFallback};
40+
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
4041
use rustc_serialize::json::{Json, ToJson};
4142
use rustc_span::symbol::{sym, Symbol};
4243
use std::collections::BTreeMap;
@@ -511,38 +512,6 @@ impl fmt::Display for SplitDebuginfo {
511512
}
512513
}
513514

514-
macro_rules! supported_targets {
515-
( $(($( $triple:literal, )+ $module:ident ),)+ ) => {
516-
$(mod $module;)+
517-
518-
/// List of supported targets
519-
pub const TARGETS: &[&str] = &[$($($triple),+),+];
520-
521-
fn load_builtin(target: &str) -> Option<Target> {
522-
let mut t = match target {
523-
$( $($triple)|+ => $module::target(), )+
524-
_ => return None,
525-
};
526-
t.is_builtin = true;
527-
debug!("got builtin target: {:?}", t);
528-
Some(t)
529-
}
530-
531-
#[cfg(test)]
532-
mod tests {
533-
mod tests_impl;
534-
535-
// Cannot put this into a separate file without duplication, make an exception.
536-
$(
537-
#[test] // `#[test]`
538-
fn $module() {
539-
tests_impl::test_target(super::$module::target());
540-
}
541-
)+
542-
}
543-
};
544-
}
545-
546515
#[derive(Clone, Debug, PartialEq, Eq)]
547516
pub enum StackProbeType {
548517
/// Don't emit any stack probes.
@@ -620,6 +589,92 @@ impl ToJson for StackProbeType {
620589
}
621590
}
622591

592+
bitflags::bitflags! {
593+
#[derive(Default, Encodable, Decodable)]
594+
pub struct SanitizerSet: u8 {
595+
const ADDRESS = 1 << 0;
596+
const LEAK = 1 << 1;
597+
const MEMORY = 1 << 2;
598+
const THREAD = 1 << 3;
599+
const HWADDRESS = 1 << 4;
600+
}
601+
}
602+
603+
/// Formats a sanitizer set as a comma separated list of sanitizers' names.
604+
impl fmt::Display for SanitizerSet {
605+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
606+
let mut first = true;
607+
for s in *self {
608+
let name = match s {
609+
SanitizerSet::ADDRESS => "address",
610+
SanitizerSet::LEAK => "leak",
611+
SanitizerSet::MEMORY => "memory",
612+
SanitizerSet::THREAD => "thread",
613+
SanitizerSet::HWADDRESS => "hwaddress",
614+
_ => panic!("unrecognized sanitizer {:?}", s),
615+
};
616+
if !first {
617+
f.write_str(",")?;
618+
}
619+
f.write_str(name)?;
620+
first = false;
621+
}
622+
Ok(())
623+
}
624+
}
625+
626+
impl IntoIterator for SanitizerSet {
627+
type Item = SanitizerSet;
628+
type IntoIter = std::vec::IntoIter<SanitizerSet>;
629+
630+
fn into_iter(self) -> Self::IntoIter {
631+
[SanitizerSet::ADDRESS, SanitizerSet::LEAK, SanitizerSet::MEMORY, SanitizerSet::THREAD, SanitizerSet::HWADDRESS]
632+
.iter()
633+
.copied()
634+
.filter(|&s| self.contains(s))
635+
.collect::<Vec<_>>()
636+
.into_iter()
637+
}
638+
}
639+
640+
impl<CTX> HashStable<CTX> for SanitizerSet {
641+
fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) {
642+
self.bits().hash_stable(ctx, hasher);
643+
}
644+
}
645+
646+
macro_rules! supported_targets {
647+
( $(($( $triple:literal, )+ $module:ident ),)+ ) => {
648+
$(mod $module;)+
649+
650+
/// List of supported targets
651+
pub const TARGETS: &[&str] = &[$($($triple),+),+];
652+
653+
fn load_builtin(target: &str) -> Option<Target> {
654+
let mut t = match target {
655+
$( $($triple)|+ => $module::target(), )+
656+
_ => return None,
657+
};
658+
t.is_builtin = true;
659+
debug!("got builtin target: {:?}", t);
660+
Some(t)
661+
}
662+
663+
#[cfg(test)]
664+
mod tests {
665+
mod tests_impl;
666+
667+
// Cannot put this into a separate file without duplication, make an exception.
668+
$(
669+
#[test] // `#[test]`
670+
fn $module() {
671+
tests_impl::test_target(super::$module::target());
672+
}
673+
)+
674+
}
675+
};
676+
}
677+
623678
supported_targets! {
624679
("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
625680
("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),

compiler/rustc_typeck/src/collect.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,11 @@ use rustc_middle::ty::util::Discr;
4343
use rustc_middle::ty::util::IntTypeExt;
4444
use rustc_middle::ty::{self, AdtKind, Const, DefIdTree, ToPolyTraitRef, Ty, TyCtxt};
4545
use rustc_middle::ty::{ReprOptions, ToPredicate, WithConstness};
46-
use rustc_session::config::SanitizerSet;
4746
use rustc_session::lint;
4847
use rustc_session::parse::feature_err;
4948
use rustc_span::symbol::{kw, sym, Ident, Symbol};
5049
use rustc_span::{Span, DUMMY_SP};
51-
use rustc_target::spec::abi;
50+
use rustc_target::spec::{abi, SanitizerSet};
5251
use rustc_trait_selection::traits::error_reporting::suggestions::NextTypeParamName;
5352
use std::iter;
5453

0 commit comments

Comments
 (0)