-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Trusty OS as tier 3 target #129490
Add Trusty OS as tier 3 target #129490
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() | ||
}, | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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".into(), | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @workingjubilee wrote in this comment:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looking at our targets many of them have It seems like our I therefore thinks the naming of this target is consistent with our existing targets. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, sure then. I was mostly curious I guess. |
||
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() | ||
}, | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# `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 | ||
|
||
These targets are cross-compiled. They have no special requirements for the host. | ||
|
||
Support for the standard library is work-in-progress. It is expected that | ||
they will support alloc with the default allocator, and partially support std. | ||
|
||
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a mistake. It's supposed to be tier 3, isn't it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed my bad, missed it during my review.
@randomPoison may I ask you to send a PR fixing the target tier here and in the other target.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yup this was a copy-paste error. I've put up #129712 to fix it.