In den Codebasis von GCC, die zur Bildung des GCC 15-Zweigs verwendet wird, wurde eine Änderung vorgenommen, die die Unterstützung von ABI ARM64 ILP32 (-mabi=ilp32) als veraltet erklärt. ILP32 ähnelt der Subarchitektur x32 für x86_64-Systeme und ermöglicht die Verwendung von 32-Bit-Zeigern sowie einem 32-Bit-Speichermodell, während der Prozessor im 64-Bit-Modus mit Unterstützung für 64-Bit-Register und erweiterte Instruktionen arbeitet. Eine Einschränkung von ABI ILP32 ist die Unfähigkeit, aus einer Anwendung mehr als 4 GB Speicher zu adressieren.
Ursprünglich wurde ABI ILP32 entwickelt, um die Portierung von 32-Bit-Anwendungen auf 64-Bit-Prozessoren der Architektur AArch64 zu erleichtern, erhielt jedoch nicht die gewünschte Verbreitung. Die Unterstützung von ILP32 wurde nie im Linux-Kernel und in der Systembibliothek Glibc akzeptiert. Die Linaro- und Debian-Ports für ILP32 wurden separat entwickelt, befinden sich jedoch seit über fünf Jahren im Ruhezustand. Von den wenigen Systemen, die ILP32 unterstützen, ist das Betriebssystem watchOS, das in Apple Watch-Geräten verwendet wird, erwähnt, aber GCC wird für dieses OS nicht unterstützt.
Quelle: opennet.ru
