compiler: Add *-unknown-hermit
documentation
Signed-off-by: Martin Kröning <martin.kroening@eonerc.rwth-aachen.de>
This commit is contained in:
parent
3003fe2d80
commit
ab4d65e11d
@ -42,6 +42,7 @@
|
|||||||
- [sparc-unknown-none-elf](./platform-support/sparc-unknown-none-elf.md)
|
- [sparc-unknown-none-elf](./platform-support/sparc-unknown-none-elf.md)
|
||||||
- [*-pc-windows-gnullvm](platform-support/pc-windows-gnullvm.md)
|
- [*-pc-windows-gnullvm](platform-support/pc-windows-gnullvm.md)
|
||||||
- [\*-nto-qnx-\*](platform-support/nto-qnx.md)
|
- [\*-nto-qnx-\*](platform-support/nto-qnx.md)
|
||||||
|
- [*-unknown-hermit](platform-support/hermit.md)
|
||||||
- [\*-unknown-netbsd\*](platform-support/netbsd.md)
|
- [\*-unknown-netbsd\*](platform-support/netbsd.md)
|
||||||
- [*-unknown-openbsd](platform-support/openbsd.md)
|
- [*-unknown-openbsd](platform-support/openbsd.md)
|
||||||
- [\*-unknown-uefi](platform-support/unknown-uefi.md)
|
- [\*-unknown-uefi](platform-support/unknown-uefi.md)
|
||||||
|
@ -223,7 +223,7 @@ target | std | host | notes
|
|||||||
[`aarch64-unknown-linux-ohos`](platform-support/openharmony.md) | ✓ | | ARM64 OpenHarmony |
|
[`aarch64-unknown-linux-ohos`](platform-support/openharmony.md) | ✓ | | ARM64 OpenHarmony |
|
||||||
[`aarch64-unknown-nto-qnx710`](platform-support/nto-qnx.md) | ✓ | | ARM64 QNX Neutrino 7.1 RTOS |
|
[`aarch64-unknown-nto-qnx710`](platform-support/nto-qnx.md) | ✓ | | ARM64 QNX Neutrino 7.1 RTOS |
|
||||||
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
|
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
|
||||||
`aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore
|
[`aarch64-unknown-hermit`](platform-support/hermit.md) | ✓ | | ARM64 Hermit
|
||||||
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
|
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
|
||||||
[`aarch64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | ARM64 NetBSD
|
[`aarch64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | ARM64 NetBSD
|
||||||
[`aarch64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | ARM64 OpenBSD
|
[`aarch64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | ARM64 OpenBSD
|
||||||
@ -303,6 +303,7 @@ target | std | host | notes
|
|||||||
[`riscv32imac-unknown-xous-elf`](platform-support/riscv32imac-unknown-xous-elf.md) | ? | | RISC-V Xous (RV32IMAC ISA)
|
[`riscv32imac-unknown-xous-elf`](platform-support/riscv32imac-unknown-xous-elf.md) | ? | | RISC-V Xous (RV32IMAC ISA)
|
||||||
[`riscv32imc-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
[`riscv32imc-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
||||||
[`riscv32imac-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
[`riscv32imac-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
||||||
|
[`riscv64gc-unknown-hermit`](platform-support/hermit.md) | ✓ | | RISC-V Hermit
|
||||||
`riscv64gc-unknown-freebsd` | | | RISC-V FreeBSD
|
`riscv64gc-unknown-freebsd` | | | RISC-V FreeBSD
|
||||||
`riscv64gc-unknown-fuchsia` | | | RISC-V Fuchsia
|
`riscv64gc-unknown-fuchsia` | | | RISC-V Fuchsia
|
||||||
`riscv64gc-unknown-linux-musl` | | | RISC-V Linux (kernel 4.20, musl 1.2.0)
|
`riscv64gc-unknown-linux-musl` | | | RISC-V Linux (kernel 4.20, musl 1.2.0)
|
||||||
@ -327,7 +328,7 @@ target | std | host | notes
|
|||||||
`x86_64-sun-solaris` | ? | | Deprecated target for 64-bit Solaris 10/11, illumos
|
`x86_64-sun-solaris` | ? | | Deprecated target for 64-bit Solaris 10/11, illumos
|
||||||
`x86_64-unknown-dragonfly` | ✓ | ✓ | 64-bit DragonFlyBSD
|
`x86_64-unknown-dragonfly` | ✓ | ✓ | 64-bit DragonFlyBSD
|
||||||
`x86_64-unknown-haiku` | ✓ | ✓ | 64-bit Haiku
|
`x86_64-unknown-haiku` | ✓ | ✓ | 64-bit Haiku
|
||||||
`x86_64-unknown-hermit` | ✓ | | HermitCore
|
[`x86_64-unknown-hermit`](platform-support/hermit.md) | ✓ | | x86_64 Hermit
|
||||||
`x86_64-unknown-l4re-uclibc` | ? | |
|
`x86_64-unknown-l4re-uclibc` | ? | |
|
||||||
[`x86_64-unknown-linux-ohos`](platform-support/openharmony.md) | ✓ | | x86_64 OpenHarmony |
|
[`x86_64-unknown-linux-ohos`](platform-support/openharmony.md) | ✓ | | x86_64 OpenHarmony |
|
||||||
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
||||||
|
75
src/doc/rustc/src/platform-support/hermit.md
Normal file
75
src/doc/rustc/src/platform-support/hermit.md
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# `*-unknown-hermit`
|
||||||
|
|
||||||
|
**Tier: 3**
|
||||||
|
|
||||||
|
The [Hermit] unikernel target allows compiling your applications into self-contained, specialized unikernel images that can be run in small virtual machines.
|
||||||
|
|
||||||
|
[Hermit]: https://github.com/hermitcore
|
||||||
|
|
||||||
|
Target triplets available so far:
|
||||||
|
|
||||||
|
- `x86_64-unknown-hermit`
|
||||||
|
- `aarch64-unknown-hermit`
|
||||||
|
- `riscv64gc-unknown-hermit`
|
||||||
|
|
||||||
|
## Target maintainers
|
||||||
|
|
||||||
|
- Stefan Lankes ([@stlankes](https://github.com/stlankes))
|
||||||
|
- Martin Kröning ([@mkroening](https://github.com/mkroening))
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
These targets only support cross-compilation.
|
||||||
|
The targets do support std.
|
||||||
|
|
||||||
|
When building binaries for this target, the Hermit unikernel is built from scratch.
|
||||||
|
The application developer themselves specializes the target and sets corresponding expectations.
|
||||||
|
|
||||||
|
The Hermit targets follow Linux's `extern "C"` calling convention.
|
||||||
|
|
||||||
|
Hermit binaries have the ELF format.
|
||||||
|
|
||||||
|
## Building the target
|
||||||
|
|
||||||
|
You can build Rust with support for the targets by adding it to the `target` list in `config.toml`.
|
||||||
|
To run the Hermit build scripts, you also have to enable your host target.
|
||||||
|
The build scripts rely on `llvm-tools` and binaries are linked using `rust-lld`, so those have to be enabled as well.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[build]
|
||||||
|
build-stage = 1
|
||||||
|
target = [
|
||||||
|
"<HOST_TARGET>",
|
||||||
|
"x86_64-unknown-hermit",
|
||||||
|
"aarch64-unknown-hermit",
|
||||||
|
"riscv64gc-unknown-hermit",
|
||||||
|
]
|
||||||
|
|
||||||
|
[rust]
|
||||||
|
lld = true
|
||||||
|
llvm-tools = true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building Rust programs
|
||||||
|
|
||||||
|
Rust does not yet ship pre-compiled artifacts for these targets.
|
||||||
|
To compile for these targets, you will either need to build Rust with the targets enabled
|
||||||
|
(see “Building the targets” above), or build your own copy of `core` by using `build-std` or similar.
|
||||||
|
|
||||||
|
Building Rust programs can be done by following the tutorial in our starter application [rusty-demo].
|
||||||
|
|
||||||
|
[rusty-demo]: https://github.com/hermitcore/rusty-demo
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
The targets support running binaries in the form of self-contained unikernel images.
|
||||||
|
These images can be chainloaded by Hermit's [loader] or hypervisor ([Uhyve]).
|
||||||
|
QEMU can be used to boot Hermit binaries using the loader on any architecture.
|
||||||
|
The targets do not support running the Rust test suite.
|
||||||
|
|
||||||
|
[loader]: https://github.com/hermitcore/rusty-loader
|
||||||
|
[Uhyve]: https://github.com/hermitcore/uhyve
|
||||||
|
|
||||||
|
## Cross-compilation toolchains and C code
|
||||||
|
|
||||||
|
The targets do not yet support C code and Rust code at the same time.
|
Loading…
Reference in New Issue
Block a user