[PATCH 00/11] [2nd resend] arm: Remove FPA support from gas/binutils

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Thu Jun 6 10:25:30 GMT 2024


On 06/06/2024 02:14, Alan Modra wrote:
> I didn't verify the exact commit, but I think this series is likely
> the culprit for the following fails:
> arm-elf  +FAIL: simple FP constants
> arm-elf  +FAIL: Tag_ABI_FP_16bit_format EABI attribute written for Arm alternative format.
> arm-elf  +FAIL: Tag_ABI_FP_16bit_format written for IEEE float16 format.
> arm-elf  +FAIL: Tag_ABI_FP_16bit_format EABI attribute not written when format not specified
> arm-elf  +FAIL: bad .bss / .struct data allocation directives
> arm-nto  +FAIL: simple FP constants
> arm-nto  +FAIL: Tag_ABI_FP_16bit_format EABI attribute written for Arm alternative format.
> arm-nto  +FAIL: Tag_ABI_FP_16bit_format written for IEEE float16 format.
> arm-nto  +FAIL: Tag_ABI_FP_16bit_format EABI attribute not written when format not specified
> arm-nto  +FAIL: bad .bss / .struct data allocation directives
> 

Yes it will be this patch set; it's a consequence of it adding a 
target-specific wrapper around the handling of floating-point data 
directives (.float, .double, etc).

The original FPA extension for Arm used a different, incompatible, 
floating-point data format from that used by the VFP extension[1] and 
these ports fall back to FPA format if there hasn't been an explicit 
option passed that says that VFP is in use.  Since I didn't want the 
tools to silently generate different code on an upgrade I chose to add a 
wrapper that faulted any fp-data directive when we were in a mode that 
would previously have treated the value in FPA format.  These failing 
tests are occurring because of that and because these ports were 
defaulting back to FPA format.

The arm-elf port is on my kill list. That used an ABI that was 
superseded 20 years ago now (give or take) by arm-eabi and really nobody 
should be using it any more (at least, not with current tools).  I'm 
less sure about arm-nto (QNX Neutrino), looking through the logs I don't 
see much in the way of port maintenance, but that could just be because 
it didn't need any.

It's pretty easy to fix "simple FP constants" - I already did that for 
arm-coff, and the float16 tests can also be easily skipped.  The tricky 
case might be the generic "bad .bss..." test as that has a general 
target list pattern in the test itself and I don't know if you can also 
have an exclusion list as well.

Anyway, I'll try to find some suitable fixes.

R.

[1] I think technically this difference only applies to types larger 
than .float, but I chose to wrap all the fp-related directives for 
consistency.


More information about the Binutils mailing list