HEADS UP: The default ABI has changed
andrew at fubar.geek.nz
Tue Jul 16 19:25:31 UTC 2013
As of r253396 the default ABI on FreeBSD/ARM is the ARM EABI. If you
run FreeBSD HEAD on an ARM CPU this will apply to you.
If you are currently using the ARM EABI nothing should change for you
other than you no longer need to set WITH_ARM_EABI as it is the default.
If you are not sure what ABI you are running it is most likely the OABI.
People currently running OABI have two options:
1. Stay on OABI by setting WITHOUT_ARM_EABI in make.conf, src.conf or
on the command line. This option will be removed sometime in the
2. Move to ARM EABI by following the instructions below.
By changing to EABI you will need to reinstall everything. This
includes your kernel, world and ports/packages (i.e. everything). This
is because the ABIs are incompatible with each other. Also not that an
EABI kernel is unable to run OABI binaries and vice versa.
The suggested way to upgrade to the ARM EABI is to rebuild your kernel
and world with a second build machine then upgrade all ports and
packages. Building and installing an ARM EABI kernel and world on an
OABI system is not guaranteed to work, and it is almost certain to fail.
Advantages of ARM EABI:
- The main advantage is we are now more compatible with third party
software that relies on the ABI.
- Compatible with future toolchains. The OABI will likely get less
testing as less people use it outside of FreeBSD.
- Improved structure alignment rules.
- Allow future work to enable Thumb-2 by updating the syscall
- Allow future work to enable the hard float variant of the ARM EABI.
This will provide a performance improvement for code using floating
There is a known issue with pkg where it will detect the wrong ABI.
This is fixed upstream and will be available soon.
More information about the freebsd-arm