The MIPS ABIs support a variety of different floating-point extensions where calling-convention and register sizes vary for floating-point data. The extensions exist to support a wide variety of optional architecture features. The resulting ABI variants are generally incompatible with each other and must be tracked carefully.
Traditionally the use of an explicit .gnu_attribute 4,
n
directive is used to indicate which ABI is in use by a specific module.
It was then left to the user to ensure that command-line options and the
selected ABI were compatible with some potential for inconsistencies.