diff options
| author | jam1garner <8260240+jam1garner@users.noreply.github.com> | 2021-09-15 13:56:20 -0400 |
|---|---|---|
| committer | leo60228 <leo@60228.dev> | 2022-07-14 15:55:58 -0400 |
| commit | e6aedf6056b8800a26b18e15a05e3dd166723c43 (patch) | |
| tree | a50b09cc4b78fa8fe7ad06fdf9a574842942a40d /compiler/rustc_target/src | |
| parent | 74621c764e737a1a430bac088b5507a8854ec460 (diff) | |
| download | rust-e6aedf6056b8800a26b18e15a05e3dd166723c43.tar.gz rust-e6aedf6056b8800a26b18e15a05e3dd166723c43.zip | |
Add Nintendo Switch tier 3 target
Diffstat (limited to 'compiler/rustc_target/src')
| -rw-r--r-- | compiler/rustc_target/src/spec/aarch64_nintendo_switch.rs | 39 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 2 |
2 files changed, 41 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/aarch64_nintendo_switch.rs b/compiler/rustc_target/src/spec/aarch64_nintendo_switch.rs new file mode 100644 index 00000000000..74ecba489c1 --- /dev/null +++ b/compiler/rustc_target/src/spec/aarch64_nintendo_switch.rs @@ -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, + } +} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index ef49fc8e968..a14a245480e 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1035,6 +1035,8 @@ supported_targets! { ("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), |
