Automatic selection of FP ABI

In order to simplify and add safety to the process of selecting the correct floating-point ABI, the assembler will automatically infer the correct .gnu_attribute 4, n directive based on command-line options and .module overrides. Where an explicit .gnu_attribute 4, n directive has been seen then a warning will be raised if it does not match an inferred setting.

The floating-point ABI is inferred as follows. If ‘-msoft-float’ has been used the module will be marked as soft-float. If ‘-msingle-float’ has been used then the module will be marked as single-precision. The remaining ABIs are then selected based on the FP register width. Double-precision is selected if the width of GP and FP registers match and the special double-precision variants for 32-bit ABIs are then selected depending on ‘-mfpxx’, ‘-mfp64’ and ‘-mno-odd-spreg’.