This might be of use to someone else trying to figure this out. I am
going to followup with a thread proposing some flags to consider for
building toolchains based around a minimum of VFP3 *AND* NEON (with some
emphasis on discussion about the latter), and Thumb2 interworking. But
for now, you might find this useful if you're trying to figure out which
way is up when it comes to some of the ARM ABI nomenclature.
ARM has had several ABIs over the years. Linux blazed a trail (OABI)
prior to the real ARM-backed standardization that is known as the
official "Application Binary Interface (ABI) for the ARM Architecture".
This is frequently referred to as EABI, though that is not its name and
there is only a minor reference to that in the docs. You really want to
look at the ABI documentation, of which there are many different levels:
There is an overview PDF document there, and also the specifics for ELF,
DWARF, and for the Procedure Call Standard for ARM Architecture (AAPCS).
To start reading, visit "ABI for the ARM Architecture (Base Standard)":
However. The real dirt you're looking for is documented in the AAPCS
(which replaced the APCS/even earlier stuff), which you can find here:
Specifically, section 6 alludes to "The Standard Variants" and talks
about modifications for improved performance on VFP. Basically, a
sub-variant of the AAPCS that is ABI incompatible with the base. This
seems to be referred to around the interwebs as aapcs-vfp, for example
by some of the gcc folks, though the official document on ARM's website
cunningly manages to avoid having any useful references to that name, or
to specifically calling out this as the official "hard float ABI".
Anyway, it seems when we're talking about "The hardfp ABI", what we
really mean is aapcs-vfp. Unless I'm smoking something, can we all
please use the real names for things so we give others a hope of
figuring this stuff out without trawling through piles of docs :) I
can't speak for other projects, but I'd like it if we did! Then I'd like
it if the official docs would be fixed to make this more clear too!