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
This commit is contained in:
parent
8a0c55046c
commit
335d196498
7 changed files with 0 additions and 142 deletions
|
@ -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,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -63,7 +63,6 @@ mod freebsd_base;
|
||||||
mod fuchsia_base;
|
mod fuchsia_base;
|
||||||
mod haiku_base;
|
mod haiku_base;
|
||||||
mod hermit_base;
|
mod hermit_base;
|
||||||
mod hermit_kernel_base;
|
|
||||||
mod illumos_base;
|
mod illumos_base;
|
||||||
mod l4re_base;
|
mod l4re_base;
|
||||||
mod linux_base;
|
mod linux_base;
|
||||||
|
@ -971,9 +970,6 @@ supported_targets! {
|
||||||
("aarch64-unknown-hermit", aarch64_unknown_hermit),
|
("aarch64-unknown-hermit", aarch64_unknown_hermit),
|
||||||
("x86_64-unknown-hermit", x86_64_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),
|
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
|
||||||
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
|
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
|
||||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||||
|
|
|
@ -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,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -17,7 +17,6 @@
|
||||||
- [aarch64-apple-ios-sim](platform-support/aarch64-apple-ios-sim.md)
|
- [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-uclibceabi](platform-support/armv7-unknown-linux-uclibceabi.md)
|
||||||
- [armv7-unknown-linux-uclibceabihf](platform-support/armv7-unknown-linux-uclibceabihf.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)
|
- [\*-kmc-solid_\*](platform-support/kmc-solid.md)
|
||||||
- [*-unknown-openbsd](platform-support/openbsd.md)
|
- [*-unknown-openbsd](platform-support/openbsd.md)
|
||||||
- [x86_64-unknown-none](platform-support/x86_64-unknown-none.md)
|
- [x86_64-unknown-none](platform-support/x86_64-unknown-none.md)
|
||||||
|
|
|
@ -207,7 +207,6 @@ target | std | host | notes
|
||||||
[`aarch64-kmc-solid_asp3`](platform-support/kmc-solid.md) | ✓ | | ARM64 SOLID with TOPPERS/ASP3
|
[`aarch64-kmc-solid_asp3`](platform-support/kmc-solid.md) | ✓ | | ARM64 SOLID with TOPPERS/ASP3
|
||||||
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
|
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
|
||||||
`aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore
|
`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-uefi` | * | | ARM64 UEFI
|
||||||
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
|
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
|
||||||
`aarch64-unknown-netbsd` | ✓ | ✓ |
|
`aarch64-unknown-netbsd` | ✓ | ✓ |
|
||||||
|
@ -293,7 +292,6 @@ target | std | host | notes
|
||||||
`x86_64-unknown-hermit` | ✓ | | HermitCore
|
`x86_64-unknown-hermit` | ✓ | | HermitCore
|
||||||
`x86_64-unknown-l4re-uclibc` | ? | |
|
`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`](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-none-linuxkernel` | * | | Linux kernel modules
|
||||||
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
||||||
`x86_64-unknown-uefi` | * | | 64-bit UEFI
|
`x86_64-unknown-uefi` | * | | 64-bit UEFI
|
||||||
|
|
|
@ -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.
|
|
Loading…
Add table
Add a link
Reference in a new issue