Add Nintendo Switch tier 3 target

This commit is contained in:
jam1garner 2021-09-15 13:56:20 -04:00 committed by leo60228
parent 74621c764e
commit e6aedf6056
No known key found for this signature in database
GPG Key ID: AC6F4BA078E67833
3 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,39 @@
use super::{LinkerFlavor, LldFlavor, PanicStrategy, RelroLevel, Target, TargetOptions};
/// A base target for Nintendo Switch devices using a pure LLVM toolchain.
pub fn target() -> Target {
let mut opts = TargetOptions {
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
linker: Some("rust-lld".into()),
os: "horizon".into(),
max_atomic_width: Some(128),
panic_strategy: PanicStrategy::Abort,
position_independent_executables: true,
crt_static_default: false,
crt_static_respected: false,
dynamic_linking: true,
executables: true,
has_elf_tls: false,
has_rpath: false,
relro_level: RelroLevel::Off,
..Default::default()
};
opts.pre_link_args.insert(
LinkerFlavor::Lld(LldFlavor::Ld),
vec![],
);
opts.post_link_args.insert(
LinkerFlavor::Lld(LldFlavor::Ld),
vec!["--no-gc-sections".to_string(), "--eh-frame-hdr".to_string()],
);
Target {
llvm_target: "aarch64-unknown-none".into(),
pointer_width: 64,
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
arch: "aarch64".into(),
options: opts,
}
}

View File

@ -1035,6 +1035,8 @@ fn $module() {
("armv6k-nintendo-3ds", armv6k_nintendo_3ds),
("aarch64-nintendo-switch", aarch64_nintendo_switch),
("armv7-unknown-linux-uclibceabi", armv7_unknown_linux_uclibceabi),
("armv7-unknown-linux-uclibceabihf", armv7_unknown_linux_uclibceabihf),

View File

@ -209,6 +209,7 @@ target | std | host | notes
`aarch64-apple-tvos` | * | | ARM64 tvOS
[`aarch64-apple-watchos-sim`](platform-support/apple-watchos.md) | ✓ | | ARM64 Apple WatchOS Simulator
[`aarch64-kmc-solid_asp3`](platform-support/kmc-solid.md) | ✓ | | ARM64 SOLID with TOPPERS/ASP3
`aarch64-nintendo-switch` | * | | ARM64 Nintendo Switch, Horizon
[`aarch64-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | ✓ |
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
`aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore