ABI List

glibc supports the following (architecture, ABI) combinations, with dynamic linker names as indicated. There may well be other cases of configure triplets and --with-fp / --without-fp options accepted by configure, but they are unlikely actually to work.

The expectation is that binaries and shared libraries from different ABIs on this list cannot be loaded in the same process, and if possible the dynamic linker should check compatibility and prevent attempts to load them, but that binaries and shared libraries from the same ABI will interoperate as long as the processor supports the instructions required by all relevant code. (It is possible that cases of mixed ABIs may appear to work sometimes, for example if functions with floating-point arguments and return values are not used and that is the only difference in the ABIs, but this is not considered a supported use of glibc.)

Unlike the Linaro list, this list includes only configurations supported in current glibc git, not those formerly supported or never supported in the official sources.

The entries for sparc are awaiting architecture maintainer confirmation that soft-float is not in use for that architecture. Architecture maintainers should check their entries, correct them as needed them remove references to their architectures in this paragraph.

Hurd

x86

Linux kernel

aarch64

(The ILP32 port is not yet in glibc.)

alpha

arm

(The ARM soft-float ABI can be used with both hard and soft-float code. ARM supports two variants of big-endian operation, (on newer processors) BE8 and (on older processors) BE32, which are the same at .o level but incompatible for linked executables and shared libraries.)

hppa

ia64

m68k

(The ColdFire ABI is the same for both hard and soft-float.)

microblaze

mips

powerpc

(The GCC distinction for 64-bit is actually ELFv1/ELFv2, but the BE ELFv2 and LE ELFv1 combinations aren't supported.)

s390

sh

sparc

tilegx

tilepro

x86 / x86_64

None: ABIList (last edited 2014-02-10 23:12:54 by JosephMyers)