Skip to content

Commit e6aedf6

Browse files
jam1garnerleo60228
authored andcommitted
Add Nintendo Switch tier 3 target
1 parent 74621c7 commit e6aedf6

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
use super::{LinkerFlavor, LldFlavor, PanicStrategy, RelroLevel, Target, TargetOptions};
2+
3+
/// A base target for Nintendo Switch devices using a pure LLVM toolchain.
4+
pub fn target() -> Target {
5+
let mut opts = TargetOptions {
6+
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
7+
linker: Some("rust-lld".into()),
8+
os: "horizon".into(),
9+
max_atomic_width: Some(128),
10+
panic_strategy: PanicStrategy::Abort,
11+
position_independent_executables: true,
12+
crt_static_default: false,
13+
crt_static_respected: false,
14+
dynamic_linking: true,
15+
executables: true,
16+
has_elf_tls: false,
17+
has_rpath: false,
18+
relro_level: RelroLevel::Off,
19+
..Default::default()
20+
};
21+
22+
opts.pre_link_args.insert(
23+
LinkerFlavor::Lld(LldFlavor::Ld),
24+
vec![],
25+
);
26+
27+
opts.post_link_args.insert(
28+
LinkerFlavor::Lld(LldFlavor::Ld),
29+
vec!["--no-gc-sections".to_string(), "--eh-frame-hdr".to_string()],
30+
);
31+
32+
Target {
33+
llvm_target: "aarch64-unknown-none".into(),
34+
pointer_width: 64,
35+
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
36+
arch: "aarch64".into(),
37+
options: opts,
38+
}
39+
}

compiler/rustc_target/src/spec/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,8 @@ supported_targets! {
10351035

10361036
("armv6k-nintendo-3ds", armv6k_nintendo_3ds),
10371037

1038+
("aarch64-nintendo-switch", aarch64_nintendo_switch),
1039+
10381040
("armv7-unknown-linux-uclibceabi", armv7_unknown_linux_uclibceabi),
10391041
("armv7-unknown-linux-uclibceabihf", armv7_unknown_linux_uclibceabihf),
10401042

src/doc/rustc/src/platform-support.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ target | std | host | notes
209209
`aarch64-apple-tvos` | * | | ARM64 tvOS
210210
[`aarch64-apple-watchos-sim`](platform-support/apple-watchos.md) | ✓ | | ARM64 Apple WatchOS Simulator
211211
[`aarch64-kmc-solid_asp3`](platform-support/kmc-solid.md) | ✓ | | ARM64 SOLID with TOPPERS/ASP3
212+
`aarch64-nintendo-switch` | * | | ARM64 Nintendo Switch, Horizon
212213
[`aarch64-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | ✓ |
213214
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
214215
`aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore

0 commit comments

Comments
 (0)