ILP32
繁體中文

編譯器

GCC 14.3

glibc 和 musl 的主要 toolchain。GCC 15 把 -mabi=ilp32 列為淘汰(GCC 16、17 仍保留,只會顯示警告), 所以我們維持使用 GCC 14:我們自己的 toolchain 是 14.3,Debian 套件用的是 Debian 的 14.2。我們所有的 toolchain 都包含一個 libgcc 修正,讓 C++ exception 和 backtrace 能正確穿過被 clang 的 pac-ret 簽章過的函式。 toolchain 腳本:test-ilp32。

clang 22

上游 LLVM 只部分支援 GNU ILP32:clang 前端一直沒有完成,後端傳遞指標的方式也跟 GCC 不相容。我們的 patch 讓 clang 能編譯 aarch64-linux-gnu_ilp32 和 aarch64-linux-musl_ilp32,與 GCC 編的程式互通,並省掉許多不必要的指標延伸。 clang 也能為 ILP32 做返回位址簽章(-mbranch-protection=pac-ret),GCC 做不到。

patch、編譯方式與量測:github.com/ilp32-a64/llvm-ilp32。