x86_64-fortanix-unknown-sgx
层级:2
使用英特尔软件保护扩展 (SGX) 的安全飞地,基于 Fortanix 为飞地开发平台 (EDP) 定义的 ABI。
目标维护者
Fortanix 的 EDP 团队。
- Jethro Beekman @jethrogb
- Raoul Strackx @raoulstrackx
- Mohsen Zohrevandi @mzohreva
要求
该目标支持带有默认分配器的 std
库。仅支持交叉编译。
二进制文件支持所有包含英特尔 SGX 的 CPU。仅支持 64 位模式。
并非所有 std
功能都受支持,详情请参阅 使用 Rust 的 std。
extern "C"
调用约定是 System V AMD64 ABI。
支持的 ABI 是 fortanix-sgx-abi。
编译器输出为 ELF 格式,但平台的原生格式是 SGX 流 (SGXS) 格式。需要像 ftxsgx-elf2sgxs 这样的转换器。
符合 Fortanix SGX ABI 的 SGXS 格式程序可以使用任何兼容的运行器运行,例如 ftxsgx-runner。
有关如何设置开发和运行时环境的建议,请参阅 EDP 安装指南。
构建目标
作为层级 2 目标,此目标由 Rust 项目构建。
你可以像这样配置引导程序
[build]
build-stage = 1
target = ["x86_64-fortanix-unknown-sgx"]
构建 Rust 程序
使用 cargo
或 rustc
的标准构建流程应该可以工作。
测试
如果正确配置了 cargo 运行器,Rust 测试套件以及自定义单元测试和集成测试将在启用英特尔 SGX 的硬件上运行,请参阅“要求”部分。
交叉编译工具链和 C 代码
通常不支持 C 代码,因为没有 libc。为 x86-64 在独立模式下使用 System V AMD64 ABI 编译的 C 代码可能可以工作。rs-libc
crate 包含 libc 的一个子集,已知可与此目标一起使用。