Skip to content

Commit 6bbec80

Browse files
committed
Support sanitizers on aarch64-unknown-linux-gnu
1 parent bae11ff commit 6bbec80

File tree

5 files changed

+26
-16
lines changed

5 files changed

+26
-16
lines changed

src/librustc_codegen_ssa/back/link.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,10 @@ fn link_sanitizer_runtime(sess: &Session, crate_type: CrateType, linker: &mut dy
752752
linker.args(&["-Wl,-rpath", "-Xlinker", rpath]);
753753
linker.link_dylib(Symbol::intern(&libname));
754754
}
755-
"x86_64-unknown-linux-gnu" | "x86_64-fuchsia" | "aarch64-fuchsia" => {
755+
"aarch64-fuchsia"
756+
| "aarch64-unknown-linux-gnu"
757+
| "x86_64-fuchsia"
758+
| "x86_64-unknown-linux-gnu" => {
756759
let filename = format!("librustc{}_rt.{}.a", channel, name);
757760
let path = default_tlib.join(&filename);
758761
linker.link_whole_rlib(&path);

src/librustc_session/session.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,16 +1356,18 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
13561356
// Sanitizers can only be used on some tested platforms.
13571357
if let Some(ref sanitizer) = sess.opts.debugging_opts.sanitizer {
13581358
const ASAN_SUPPORTED_TARGETS: &[&str] = &[
1359-
"x86_64-unknown-linux-gnu",
1359+
"aarch64-fuchsia",
1360+
"aarch64-unknown-linux-gnu",
13601361
"x86_64-apple-darwin",
13611362
"x86_64-fuchsia",
1362-
"aarch64-fuchsia",
1363+
"x86_64-unknown-linux-gnu",
13631364
];
13641365
const TSAN_SUPPORTED_TARGETS: &[&str] =
1365-
&["x86_64-unknown-linux-gnu", "x86_64-apple-darwin"];
1366+
&["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
13661367
const LSAN_SUPPORTED_TARGETS: &[&str] =
1367-
&["x86_64-unknown-linux-gnu", "x86_64-apple-darwin"];
1368-
const MSAN_SUPPORTED_TARGETS: &[&str] = &["x86_64-unknown-linux-gnu"];
1368+
&["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
1369+
const MSAN_SUPPORTED_TARGETS: &[&str] =
1370+
&["aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu"];
13691371

13701372
let supported_targets = match *sanitizer {
13711373
Sanitizer::Address => ASAN_SUPPORTED_TARGETS,
@@ -1376,9 +1378,9 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
13761378

13771379
if !supported_targets.contains(&&*sess.opts.target_triple.triple()) {
13781380
sess.err(&format!(
1379-
"{:?}Sanitizer only works with the `{}` target",
1381+
"{:?}Sanitizer only works with targets: {}",
13801382
sanitizer,
1381-
supported_targets.join("` or `")
1383+
supported_targets.join(", ")
13821384
));
13831385
}
13841386
}

src/test/ui/sanitize/unsupported-target.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// ignore-tidy-linelength
21
// compile-flags: -Z sanitizer=leak --target i686-unknown-linux-gnu
3-
// error-pattern: error: LeakSanitizer only works with the `x86_64-unknown-linux-gnu` or `x86_64-apple-darwin` target
2+
// error-pattern: error: LeakSanitizer only works with targets:
43

54
#![feature(no_core)]
65
#![no_core]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error: LeakSanitizer only works with the `x86_64-unknown-linux-gnu` or `x86_64-apple-darwin` target
1+
error: LeakSanitizer only works with targets: aarch64-unknown-linux-gnu, x86_64-apple-darwin, x86_64-unknown-linux-gnu
22

33
error: aborting due to previous error
44

src/tools/compiletest/src/util.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,22 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
8181
("xcore", "xcore"),
8282
];
8383

84-
pub const ASAN_SUPPORTED_TARGETS: &'static [&'static str] =
85-
&["aarch64-fuchsia", "x86_64-apple-darwin", "x86_64-fuchsia", "x86_64-unknown-linux-gnu"];
84+
pub const ASAN_SUPPORTED_TARGETS: &'static [&'static str] = &[
85+
"aarch64-fuchsia",
86+
"aarch64-unknown-linux-gnu",
87+
"x86_64-apple-darwin",
88+
"x86_64-fuchsia",
89+
"x86_64-unknown-linux-gnu",
90+
];
8691

8792
pub const LSAN_SUPPORTED_TARGETS: &'static [&'static str] =
88-
&["x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
93+
&["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
8994

90-
pub const MSAN_SUPPORTED_TARGETS: &'static [&'static str] = &["x86_64-unknown-linux-gnu"];
95+
pub const MSAN_SUPPORTED_TARGETS: &'static [&'static str] =
96+
&["aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu"];
9197

9298
pub const TSAN_SUPPORTED_TARGETS: &'static [&'static str] =
93-
&["x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
99+
&["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
94100

95101
pub fn matches_os(triple: &str, name: &str) -> bool {
96102
// For the wasm32 bare target we ignore anything also ignored on emscripten

0 commit comments

Comments
 (0)