From 335d196498576ecd443e29a3c8388477938f1170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Fri, 25 Mar 2022 11:46:34 +0100 Subject: [PATCH] Remove hermitkernel targets RustyHermit now maintains custom json targets, which are distributed with the kernel. [1] [1]: https://github.com/hermitcore/libhermit-rs/pull/395 --- .../spec/aarch64_unknown_none_hermitkernel.rs | 16 ---- .../src/spec/hermit_kernel_base.rs | 21 ----- compiler/rustc_target/src/spec/mod.rs | 4 - .../spec/x86_64_unknown_none_hermitkernel.rs | 21 ----- src/doc/rustc/src/SUMMARY.md | 1 - src/doc/rustc/src/platform-support.md | 2 - .../aarch64-unknown-none-hermitkernel.md | 77 ------------------- 7 files changed, 142 deletions(-) delete mode 100644 compiler/rustc_target/src/spec/aarch64_unknown_none_hermitkernel.rs delete mode 100644 compiler/rustc_target/src/spec/hermit_kernel_base.rs delete mode 100644 compiler/rustc_target/src/spec/x86_64_unknown_none_hermitkernel.rs delete mode 100644 src/doc/rustc/src/platform-support/aarch64-unknown-none-hermitkernel.md diff --git a/compiler/rustc_target/src/spec/aarch64_unknown_none_hermitkernel.rs b/compiler/rustc_target/src/spec/aarch64_unknown_none_hermitkernel.rs deleted file mode 100644 index 6e9d6c6221ccc..0000000000000 --- a/compiler/rustc_target/src/spec/aarch64_unknown_none_hermitkernel.rs +++ /dev/null @@ -1,16 +0,0 @@ -use crate::spec::Target; - -pub fn target() -> Target { - let mut base = super::hermit_kernel_base::opts(); - base.max_atomic_width = Some(128); - base.abi = "softfloat".to_string(); - base.features = "+strict-align,-neon,-fp-armv8".to_string(); - - Target { - llvm_target: "aarch64-unknown-hermit".to_string(), - pointer_width: 64, - data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(), - arch: "aarch64".to_string(), - options: base, - } -} diff --git a/compiler/rustc_target/src/spec/hermit_kernel_base.rs b/compiler/rustc_target/src/spec/hermit_kernel_base.rs deleted file mode 100644 index ce3dad26458d0..0000000000000 --- a/compiler/rustc_target/src/spec/hermit_kernel_base.rs +++ /dev/null @@ -1,21 +0,0 @@ -use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, PanicStrategy, TargetOptions}; - -pub fn opts() -> TargetOptions { - let mut pre_link_args = LinkArgs::new(); - pre_link_args.insert( - LinkerFlavor::Lld(LldFlavor::Ld), - vec!["--build-id".to_string(), "--hash-style=gnu".to_string(), "--Bstatic".to_string()], - ); - - TargetOptions { - linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), - disable_redzone: true, - linker: Some("rust-lld".to_owned()), - executables: true, - pre_link_args, - panic_strategy: PanicStrategy::Abort, - position_independent_executables: true, - static_position_independent_executables: true, - ..Default::default() - } -} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 4f0c3bec1eecc..f2ca28ba5f935 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -63,7 +63,6 @@ mod freebsd_base; mod fuchsia_base; mod haiku_base; mod hermit_base; -mod hermit_kernel_base; mod illumos_base; mod l4re_base; mod linux_base; @@ -971,9 +970,6 @@ supported_targets! { ("aarch64-unknown-hermit", aarch64_unknown_hermit), ("x86_64-unknown-hermit", x86_64_unknown_hermit), - ("aarch64-unknown-none-hermitkernel", aarch64_unknown_none_hermitkernel), - ("x86_64-unknown-none-hermitkernel", x86_64_unknown_none_hermitkernel), - ("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf), ("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf), ("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf), diff --git a/compiler/rustc_target/src/spec/x86_64_unknown_none_hermitkernel.rs b/compiler/rustc_target/src/spec/x86_64_unknown_none_hermitkernel.rs deleted file mode 100644 index 359cb0f6881de..0000000000000 --- a/compiler/rustc_target/src/spec/x86_64_unknown_none_hermitkernel.rs +++ /dev/null @@ -1,21 +0,0 @@ -use crate::spec::{StackProbeType, Target}; - -pub fn target() -> Target { - let mut base = super::hermit_kernel_base::opts(); - base.cpu = "x86-64".to_string(); - base.max_atomic_width = Some(64); - base.features = - "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float" - .to_string(); - // don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved - base.stack_probes = StackProbeType::Call; - - Target { - llvm_target: "x86_64-unknown-hermit".to_string(), - pointer_width: 64, - data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" - .to_string(), - arch: "x86_64".to_string(), - options: base, - } -} diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md index aecd892ce8b3b..2cf2660327384 100644 --- a/src/doc/rustc/src/SUMMARY.md +++ b/src/doc/rustc/src/SUMMARY.md @@ -17,7 +17,6 @@ - [aarch64-apple-ios-sim](platform-support/aarch64-apple-ios-sim.md) - [armv7-unknown-linux-uclibceabi](platform-support/armv7-unknown-linux-uclibceabi.md) - [armv7-unknown-linux-uclibceabihf](platform-support/armv7-unknown-linux-uclibceabihf.md) - - [aarch64-unknown-none-hermitkernel](platform-support/aarch64-unknown-none-hermitkernel.md) - [\*-kmc-solid_\*](platform-support/kmc-solid.md) - [*-unknown-openbsd](platform-support/openbsd.md) - [x86_64-unknown-none](platform-support/x86_64-unknown-none.md) diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index cc92d273ed1c5..8fc5a0d312b06 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -207,7 +207,6 @@ target | std | host | notes [`aarch64-kmc-solid_asp3`](platform-support/kmc-solid.md) | ✓ | | ARM64 SOLID with TOPPERS/ASP3 `aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD `aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore -[`aarch64-unknown-none-hermitkernel`](platform-support/aarch64-unknown-none-hermitkernel.md) | * | | ARM64 HermitCore kernel `aarch64-unknown-uefi` | * | | ARM64 UEFI `aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI) `aarch64-unknown-netbsd` | ✓ | ✓ | @@ -293,7 +292,6 @@ target | std | host | notes `x86_64-unknown-hermit` | ✓ | | HermitCore `x86_64-unknown-l4re-uclibc` | ? | | [`x86_64-unknown-none`](platform-support/x86_64-unknown-none.md) | * | | Freestanding/bare-metal x86_64, softfloat -`x86_64-unknown-none-hermitkernel` | * | | HermitCore kernel `x86_64-unknown-none-linuxkernel` | * | | Linux kernel modules [`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD `x86_64-unknown-uefi` | * | | 64-bit UEFI diff --git a/src/doc/rustc/src/platform-support/aarch64-unknown-none-hermitkernel.md b/src/doc/rustc/src/platform-support/aarch64-unknown-none-hermitkernel.md deleted file mode 100644 index b8967f631878c..0000000000000 --- a/src/doc/rustc/src/platform-support/aarch64-unknown-none-hermitkernel.md +++ /dev/null @@ -1,77 +0,0 @@ -# `aarch64-unknown-none-hermitkernel` - -**Tier: 3** - -Required to build the kernel for [HermitCore](https://github.com/hermitcore/hermit-playground) -or [RustyHermit](https://github.com/hermitcore/rusty-hermit). -The result is a bare-metal aarch64 binary in ELF format. - -## Target maintainers - -- Stefan Lankes, https://github.com/stlankes - -## Requirements - -This target is cross-compiled. There is no support for `std`, but the -library operating system provides a simple allocator to use `alloc`. - -By default, Rust code generated for this target does not use any vector or -floating-point registers. This allows the generated code to build the library -operaring system, which may need to avoid the use of such -registers or which may have special considerations about the use of such -registers (e.g. saving and restoring them to avoid breaking userspace code -using the same registers). In contrast to `aarch64-unknown-none-softfloat`, -the target is completly relocatable, which is a required feature of RustyHermit. - -By default, code generated with this target should run on any `aarch64` -hardware; enabling additional target features may raise this baseline. -On `aarch64-unknown-none-hermitkernel`, `extern "C"` uses the [standard System V calling -convention](https://github.com/ARM-software/abi-aa/releases/download/2021Q3/sysvabi64.pdf), -without red zones. - -This target generated binaries in the ELF format. - -## Building the target - -Typical you should not use the target directly. The target `aarch64-unknown-hermit` -builds the _user space_ of RustyHermit and supports red zones and floating-point -operations. -To build and link the kernel to the application, the crate -[hermit-sys](https://github.com/hermitcore/rusty-hermit/tree/master/hermit-sys) -should be used by adding the following lines to the `Cargo.toml` file of -your application. - -```toml -[target.'cfg(target_os = "hermit")'.dependencies] -hermit-sys = "0.1.*" -``` - -The crate `hermit-sys` uses the target `aarch64-unknown-none-hermitkernel` -to build the kernel. - -## Building Rust programs - -Rust does not yet ship pre-compiled artifacts for this target. To compile for -this target, you need to build the crate `hermit-sys` (see -"Building the target" above). - -## Testing - -As `aarch64-unknown-none-hermitkernel` does not support `std` -and does not support running any Rust testsuite. - -## Cross-compilation toolchains and C code - -If you want to compile C code along with Rust you will need an -appropriate `aarch64` toolchain. - -Rust *may* be able to use an `aarch64-linux-gnu-` toolchain with appropriate -standalone flags to build for this toolchain (depending on the assumptions of -that toolchain, see below), or you may wish to use a separate -`aarch64-unknown-none` (or `aarch64-elf-`) toolchain. - -On some `aarch64` hosts that use ELF binaries, you *may* be able to use the host -C toolchain, if it does not introduce assumptions about the host environment -that don't match the expectations of a standalone environment. Otherwise, you -may need a separate toolchain for standalone/freestanding development, just as -when cross-compiling from a non-`aarch64` platform.