Skip to content

Commit 8783d1a

Browse files
Amanieu d'AntrasAmanieu
Amanieu d'Antras
authored andcommitted
Add big-endian and ILP32 AArch64 targets
1 parent a112c4d commit 8783d1a

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use crate::abi::Endian;
2+
use crate::spec::{Target, TargetOptions};
3+
4+
pub fn target() -> Target {
5+
let mut base = super::linux_gnu_base::opts();
6+
base.max_atomic_width = Some(128);
7+
8+
Target {
9+
llvm_target: "aarch64_be-unknown-linux-gnu".to_string(),
10+
pointer_width: 64,
11+
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
12+
arch: "aarch64".to_string(),
13+
options: TargetOptions {
14+
unsupported_abis: super::arm_base::unsupported_abis(),
15+
mcount: "\u{1}_mcount".to_string(),
16+
endian: Endian::Big,
17+
..base
18+
},
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use crate::abi::Endian;
2+
use crate::spec::{Target, TargetOptions};
3+
4+
pub fn target() -> Target {
5+
let mut base = super::linux_gnu_base::opts();
6+
base.max_atomic_width = Some(128);
7+
8+
Target {
9+
llvm_target: "aarch64_be-unknown-linux-gnu_ilp32".to_string(),
10+
pointer_width: 32,
11+
data_layout: "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
12+
arch: "aarch64".to_string(),
13+
options: TargetOptions {
14+
unsupported_abis: super::arm_base::unsupported_abis(),
15+
mcount: "\u{1}_mcount".to_string(),
16+
endian: Endian::Big,
17+
..base
18+
},
19+
}
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use crate::spec::{Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
let mut base = super::linux_gnu_base::opts();
5+
base.max_atomic_width = Some(128);
6+
7+
Target {
8+
llvm_target: "aarch64-unknown-linux-gnu_ilp32".to_string(),
9+
pointer_width: 32,
10+
data_layout: "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
11+
arch: "aarch64".to_string(),
12+
options: TargetOptions {
13+
unsupported_abis: super::arm_base::unsupported_abis(),
14+
mcount: "\u{1}_mcount".to_string(),
15+
..base
16+
},
17+
}
18+
}

compiler/rustc_target/src/spec/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,10 @@ supported_targets! {
745745
("mipsel-sony-psp", mipsel_sony_psp),
746746
("mipsel-unknown-none", mipsel_unknown_none),
747747
("thumbv4t-none-eabi", thumbv4t_none_eabi),
748+
749+
("aarch64_be-unknown-linux-gnu", aarch64_be_unknown_linux_gnu),
750+
("aarch64-unknown-linux-gnu_ilp32", aarch64_unknown_linux_gnu_ilp32),
751+
("aarch64_be-unknown-linux-gnu_ilp32", aarch64_be_unknown_linux_gnu_ilp32),
748752
}
749753

750754
/// Everything `rustc` knows about how to compile for a specific target.

0 commit comments

Comments
 (0)