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 安装指南

构建目标

作为二级目标,该目标由 Rust 项目构建。

您可以像这样配置 rustbuild

[build]
build-stage = 1
target = ["x86_64-fortanix-unknown-sgx"]

构建 Rust 程序

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

测试

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

交叉编译工具链和 C 代码

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