x86_64-fortanix-unknown-sgx

层级:2

使用英特尔软件保护扩展 (SGX) 的安全飞地,基于 Fortanix 为飞地开发平台 (EDP) 定义的 ABI。

目标维护者

Fortanix 的 EDP 团队。

要求

该目标支持带有默认分配器的 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 程序

使用 cargorustc 的标准构建流程应该可以工作。

测试

如果正确配置了 cargo 运行器,Rust 测试套件以及自定义单元测试和集成测试将在启用英特尔 SGX 的硬件上运行,请参阅“要求”部分。

交叉编译工具链和 C 代码

通常不支持 C 代码,因为没有 libc。为 x86-64 在独立模式下使用 System V AMD64 ABI 编译的 C 代码可能可以工作。rs-libc crate 包含 libc 的一个子集,已知可与此目标一起使用。