ILP32
Deutsch

Compiler

GCC 14.3

Die Haupt-Toolchain für glibc und musl. GCC 15 hat -mabi=ilp32 als veraltet markiert (in GCC 16 und 17 mit Warnung noch vorhanden), daher bleiben wir bei GCC 14 (14.3 für unsere Toolchains, Debians 14.2 für die Debian-Pakete). Alle unsere Toolchains enthalten eine libgcc-Korrektur, damit das Unwinding durch Funktionen funktioniert, die mit clangs pac-ret signiert sind (C++-Ausnahmen, Backtraces). Toolchain-Skripte: test-ilp32.

clang 22

Upstream-LLVM unterstützt GNU ILP32 nur teilweise: Das clang-Frontend wurde nie fertiggestellt, und das Backend übergibt Zeiger auf eine Weise, die nicht mit GCC kompatibel ist. Mit unseren Patches übersetzt clang aarch64-linux-gnu_ilp32 und aarch64-linux-musl_ilp32, kompatibel mit GCC-gebautem Code, und viele unnötige Zeigererweiterungen fallen weg. clang kann für ILP32 außerdem Rücksprungadressen signieren (-mbranch-protection=pac-ret), was GCC nicht kann.

Patches, Build und Messungen: github.com/ilp32-a64/llvm-ilp32.