mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Add Trusty OS as tier 3 target
This commit is contained in:
parent
eef00c8be8
commit
681a866067
@ -1750,6 +1750,9 @@ supported_targets! {
|
||||
|
||||
("x86_64-unikraft-linux-musl", x86_64_unikraft_linux_musl),
|
||||
|
||||
("armv7-unknown-trusty", armv7_unknown_trusty),
|
||||
("aarch64-unknown-trusty", aarch64_unknown_trusty),
|
||||
|
||||
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
|
||||
("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf),
|
||||
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
|
||||
|
@ -0,0 +1,34 @@
|
||||
// Trusty OS target for AArch64.
|
||||
|
||||
use crate::spec::{LinkSelfContainedDefault, PanicStrategy, RelroLevel, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
Target {
|
||||
llvm_target: "aarch64-unknown-unknown-musl".into(),
|
||||
metadata: crate::spec::TargetMetadata {
|
||||
description: Some("ARM64 Trusty".into()),
|
||||
tier: Some(2),
|
||||
host_tools: Some(false),
|
||||
std: Some(false),
|
||||
},
|
||||
pointer_width: 64,
|
||||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
|
||||
arch: "aarch64".into(),
|
||||
options: TargetOptions {
|
||||
features: "+neon,+fp-armv8,+reserve-x18".into(),
|
||||
executables: true,
|
||||
max_atomic_width: Some(128),
|
||||
panic_strategy: PanicStrategy::Abort,
|
||||
os: "trusty".into(),
|
||||
position_independent_executables: true,
|
||||
static_position_independent_executables: true,
|
||||
crt_static_default: true,
|
||||
crt_static_respected: true,
|
||||
dynamic_linking: false,
|
||||
link_self_contained: LinkSelfContainedDefault::InferredForMusl,
|
||||
relro_level: RelroLevel::Full,
|
||||
mcount: "\u{1}_mcount".into(),
|
||||
..Default::default()
|
||||
},
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
use crate::spec::{LinkSelfContainedDefault, PanicStrategy, RelroLevel, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
Target {
|
||||
// It's important we use "gnueabi" and not "musleabi" here. LLVM uses it
|
||||
// to determine the calling convention and float ABI, and it doesn't
|
||||
// support the "musleabi" value.
|
||||
llvm_target: "armv7-unknown-unknown-gnueabi".into(),
|
||||
metadata: crate::spec::TargetMetadata {
|
||||
description: Some("Armv7-A Trusty".into()),
|
||||
tier: Some(2),
|
||||
host_tools: Some(false),
|
||||
std: Some(false),
|
||||
},
|
||||
pointer_width: 32,
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: "arm".into(),
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
features: "+v7,+thumb2,+soft-float,-neon,+reserve-x18".into(),
|
||||
max_atomic_width: Some(64),
|
||||
mcount: "\u{1}mcount".into(),
|
||||
os: "trusty".into(),
|
||||
link_self_contained: LinkSelfContainedDefault::InferredForMusl,
|
||||
dynamic_linking: false,
|
||||
executables: true,
|
||||
crt_static_default: true,
|
||||
crt_static_respected: true,
|
||||
relro_level: RelroLevel::Full,
|
||||
panic_strategy: PanicStrategy::Abort,
|
||||
position_independent_executables: true,
|
||||
static_position_independent_executables: true,
|
||||
|
||||
..Default::default()
|
||||
},
|
||||
}
|
||||
}
|
@ -49,6 +49,7 @@
|
||||
- [aarch64-unknown-teeos](platform-support/aarch64-unknown-teeos.md)
|
||||
- [\*-espidf](platform-support/esp-idf.md)
|
||||
- [\*-unknown-fuchsia](platform-support/fuchsia.md)
|
||||
- [\*-unknown-trusty](platform-support/trusty.md)
|
||||
- [\*-kmc-solid_\*](platform-support/kmc-solid.md)
|
||||
- [csky-unknown-linux-gnuabiv2\*](platform-support/csky-unknown-linux-gnuabiv2.md)
|
||||
- [hexagon-unknown-linux-musl](platform-support/hexagon-unknown-linux-musl.md)
|
||||
|
@ -264,6 +264,7 @@ target | std | host | notes
|
||||
[`aarch64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | ARM64 NetBSD
|
||||
[`aarch64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | ARM64 OpenBSD
|
||||
[`aarch64-unknown-redox`](platform-support/redox.md) | ✓ | | ARM64 Redox OS
|
||||
[`aarch64-unknown-trusty`](platform-support/trusty.md) | ? | |
|
||||
`aarch64-uwp-windows-msvc` | ✓ | |
|
||||
[`aarch64-wrs-vxworks`](platform-support/vxworks.md) | ✓ | | ARM64 VxWorks OS
|
||||
`aarch64_be-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (big-endian, ILP32 ABI)
|
||||
@ -283,6 +284,7 @@ target | std | host | notes
|
||||
[`armv7-unknown-linux-uclibceabihf`](platform-support/armv7-unknown-linux-uclibceabihf.md) | ✓ | ? | Armv7-A Linux with uClibc, hardfloat
|
||||
`armv7-unknown-freebsd` | ✓ | ✓ | Armv7-A FreeBSD
|
||||
[`armv7-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | Armv7-A NetBSD w/hard-float
|
||||
[`armv7-unknown-trusty`](platform-support/trusty.md) | ? | |
|
||||
[`armv7-wrs-vxworks-eabihf`](platform-support/vxworks.md) | ✓ | | Armv7-A for VxWorks
|
||||
[`armv7a-kmc-solid_asp3-eabi`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3
|
||||
[`armv7a-kmc-solid_asp3-eabihf`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3, hardfloat
|
||||
|
53
src/doc/rustc/src/platform-support/trusty.md
Normal file
53
src/doc/rustc/src/platform-support/trusty.md
Normal file
@ -0,0 +1,53 @@
|
||||
# `aarch64-unknown-trusty` and `armv7-unknown-trusty`
|
||||
|
||||
**Tier: 3**
|
||||
|
||||
[Trusty] is a secure Operating System that provides a Trusted Execution
|
||||
Environment (TEE) for Android.
|
||||
|
||||
## Target maintainers
|
||||
|
||||
- Nicole LeGare (@randomPoison)
|
||||
- Stephen Crane (@rinon)
|
||||
- As a fallback trusty-dev-team@google.com can be contacted
|
||||
|
||||
## Requirements
|
||||
|
||||
This target is cross-compiled. It has no special requirements for the host.
|
||||
|
||||
It fully supports alloc with the default allocator, and partially supports std.
|
||||
Notably, most I/O functionality is not supported, e.g. filesystem support and
|
||||
networking support are not present and any APIs that rely on them will panic at
|
||||
runtime.
|
||||
|
||||
Trusty uses the ELF file format.
|
||||
|
||||
## Building the target
|
||||
|
||||
The targets can be built by enabling them for a `rustc` build, for example:
|
||||
|
||||
```toml
|
||||
[build]
|
||||
build-stage = 1
|
||||
target = ["aarch64-unknown-trusty", "armv7-unknown-trusty"]
|
||||
```
|
||||
|
||||
## Building Rust programs
|
||||
|
||||
There is currently no supported way to build a Trusty app with Cargo. You can
|
||||
follow the [Trusty build instructions] to build the Trusty kernel along with any
|
||||
Rust apps that are setup in the project.
|
||||
|
||||
## Testing
|
||||
|
||||
See the [Trusty build instructions] for information on how to build Rust code
|
||||
within the main Trusty project. The main project also includes infrastructure
|
||||
for testing Rust applications within a QEMU emulator.
|
||||
|
||||
## Cross-compilation toolchains and C code
|
||||
|
||||
See the [Trusty build instructions] for information on how C code is built
|
||||
within Trusty.
|
||||
|
||||
[Trusty]: https://source.android.com/docs/security/features/trusty
|
||||
[Trusty build instructions]: https://source.android.com/docs/security/features/trusty/download-and-build
|
@ -66,6 +66,9 @@
|
||||
//@ revisions: aarch64_unknown_teeos
|
||||
//@ [aarch64_unknown_teeos] compile-flags: --target aarch64-unknown-teeos
|
||||
//@ [aarch64_unknown_teeos] needs-llvm-components: aarch64
|
||||
//@ revisions: aarch64_unknown_trusty
|
||||
//@ [aarch64_unknown_trusty] compile-flags: --target aarch64-unknown-trusty
|
||||
//@ [aarch64_unknown_trusty] needs-llvm-components: aarch64
|
||||
//@ revisions: aarch64_wrs_vxworks
|
||||
//@ [aarch64_wrs_vxworks] compile-flags: --target aarch64-wrs-vxworks
|
||||
//@ [aarch64_wrs_vxworks] needs-llvm-components: aarch64
|
||||
@ -153,6 +156,9 @@
|
||||
//@ revisions: armv7_unknown_netbsd_eabihf
|
||||
//@ [armv7_unknown_netbsd_eabihf] compile-flags: --target armv7-unknown-netbsd-eabihf
|
||||
//@ [armv7_unknown_netbsd_eabihf] needs-llvm-components: arm
|
||||
//@ revisions: armv7_unknown_trusty
|
||||
//@ [armv7_unknown_trusty] compile-flags: --target armv7-unknown-trusty
|
||||
//@ [armv7_unknown_trusty] needs-llvm-components: arm
|
||||
//@ revisions: armv7_wrs_vxworks_eabihf
|
||||
//@ [armv7_wrs_vxworks_eabihf] compile-flags: --target armv7-wrs-vxworks-eabihf
|
||||
//@ [armv7_wrs_vxworks_eabihf] needs-llvm-components: arm
|
||||
|
@ -201,7 +201,7 @@ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
|
||||
LL | target_os = "_UNEXPECTED_VALUE",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: expected values for `target_os` are: `aix`, `android`, `cuda`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `redox`, `solaris`, `solid_asp3`, `teeos`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm`
|
||||
= note: expected values for `target_os` are: `aix`, `android`, `cuda`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `redox`, `solaris`, `solid_asp3`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm`
|
||||
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
|
||||
@ -285,7 +285,7 @@ LL | #[cfg(target_os = "linuz")] // testing that we suggest `linux`
|
||||
| |
|
||||
| help: there is a expected value with a similar name: `"linux"`
|
||||
|
|
||||
= note: expected values for `target_os` are: `aix`, `android`, `cuda`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `redox`, `solaris`, `solid_asp3`, `teeos`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm`
|
||||
= note: expected values for `target_os` are: `aix`, `android`, `cuda`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `redox`, `solaris`, `solid_asp3`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm`
|
||||
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
||||
|
||||
warning: 29 warnings emitted
|
||||
|
Loading…
Reference in New Issue
Block a user