ILP32
简体中文

编译器

GCC 14.3

glibc 和 musl 的主要工具链。GCC 15 把 -mabi=ilp32 标为弃用(GCC 16、17 仍保留,只会给出警告), 所以我们继续使用 GCC 14:我们自己的工具链是 14.3,Debian 软件包使用 Debian 的 14.2。我们所有的工具链 都包含一个 libgcc 修复,让 C++ 异常和回溯能正确穿过经 clang 的 pac-ret 签名的函数。 工具链脚本:test-ilp32。

clang 22

上游 LLVM 只部分支持 GNU ILP32:clang 前端一直没有完成,后端传递指针的方式也与 GCC 不兼容。我们的补丁让 clang 能编译 aarch64-linux-gnu_ilp32 和 aarch64-linux-musl_ilp32,与 GCC 编译的代码互通,并去掉了许多不必要的指针扩展。 clang 还能为 ILP32 做返回地址签名(-mbranch-protection=pac-ret),GCC 做不到。

补丁、编译方式与测量:github.com/ilp32-a64/llvm-ilp32。