Skip to content

Commit 9ec944b

Browse files
committed
Add aarch64_be-unknown-linux-musl target
1 parent 4b596bb commit 9ec944b

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1943,6 +1943,7 @@ supported_targets! {
19431943
("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf),
19441944
("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu),
19451945
("aarch64-unknown-linux-musl", aarch64_unknown_linux_musl),
1946+
("aarch64_be-unknown-linux-musl", aarch64_be_unknown_linux_musl),
19461947
("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
19471948
("i686-unknown-linux-musl", i686_unknown_linux_musl),
19481949
("i586-unknown-linux-musl", i586_unknown_linux_musl),
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use rustc_abi::Endian;
2+
3+
use crate::spec::{SanitizerSet, StackProbeType, Target, TargetMetadata, TargetOptions, base};
4+
5+
pub(crate) fn target() -> Target {
6+
let mut base = base::linux_musl::opts();
7+
base.max_atomic_width = Some(128);
8+
base.supports_xray = true;
9+
base.features = "+v8a".into();
10+
base.stack_probes = StackProbeType::Inline;
11+
base.supported_sanitizers = SanitizerSet::ADDRESS
12+
| SanitizerSet::CFI
13+
| SanitizerSet::LEAK
14+
| SanitizerSet::MEMORY
15+
| SanitizerSet::THREAD;
16+
17+
// FIXME(compiler-team#422): musl targets should be dynamically linked by default.
18+
base.crt_static_default = true;
19+
20+
Target {
21+
llvm_target: "aarch64_be-unknown-linux-musl".into(),
22+
metadata: TargetMetadata {
23+
description: Some("ARM64 Linux with musl 1.2.3 (big-endian)".into()),
24+
tier: Some(3),
25+
host_tools: Some(true),
26+
std: Some(true),
27+
},
28+
pointer_width: 64,
29+
data_layout: "E-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
30+
arch: "aarch64".into(),
31+
options: TargetOptions {
32+
mcount: "\u{1}_mcount".into(),
33+
endian: Endian::Big,
34+
..base
35+
},
36+
}
37+
}

tests/assembly-llvm/targets/targets-elf.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
//@ revisions: aarch64_be_unknown_linux_gnu_ilp32
88
//@ [aarch64_be_unknown_linux_gnu_ilp32] compile-flags: --target aarch64_be-unknown-linux-gnu_ilp32
99
//@ [aarch64_be_unknown_linux_gnu_ilp32] needs-llvm-components: aarch64
10+
//@ revisions: aarch64_be_unknown_linux_musl
11+
//@ [aarch64_be_unknown_linux_musl] compile-flags: --target aarch64_be-unknown-linux-musl
12+
//@ [aarch64_be_unknown_linux_musl] needs-llvm-components: aarch64
1013
//@ revisions: aarch64_be_unknown_netbsd
1114
//@ [aarch64_be_unknown_netbsd] compile-flags: --target aarch64_be-unknown-netbsd
1215
//@ [aarch64_be_unknown_netbsd] needs-llvm-components: aarch64

0 commit comments

Comments
 (0)