Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2013-05

ARM V7 Hard float issue

4 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Johan Kotze

Hi

I am trying to build fpc and Lazarus for ARMHF for a pcDuino. The processor is an AllWinner A10. I used fpc 2.6.2 to build fpc 2.7.1 from source. When I compile a test program with the following parameters

fpc -dFPC_ARMHF -Caeabihf -Cparmv6 -Cfvfpv3_d16 test.pas

I get the following output from readelf -a (just showing last bit)

Attribute Section: aeabi
File Attributes
Tag_CPU_name: "6"
Tag_CPU_arch: v6
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: VFPv3-D16
Tag_DIV_use: Not allowed

The output of readelf -a /bin/ls is as follows:

Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3-D16
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int
Tag_ABI_HardFP_use: SP and DP
Tag_ABI_VFP_args: VFP registers
Tag_CPU_unaligned_access: v6
Tag_DIV_use: Not allowed

It seems that fpc in fact does not produce ARMHF executables with the parameters that I use. Am I using the wrong parameters or is something broken in the ARMHF support ?

Johan

Reply by email

Jonas Maebe
to Johan Kotze
Johan Kotze wrote 6 lines
I am trying to build fpc and Lazarus for ARMHF for a pcDuino. The processor is an AllWinner A10. I used fpc 2.6.2 to build fpc 2.7.1 from source. When I compile a test program with the following parameters fpc -dFPC_ARMHF -Caeabihf -Cparmv6 -Cfvfpv3_d16 test.pas

FPC's ARM supported is implemented such that you have to specify the kind of ABI you want to support when building the compiler binary itself. You can do so via the OPT="xx" make option. So add OPT="- dFPC_ARMHF" when building FPC 2.7.1, and you will get an ARM compiler that generates ARMHF code/binaries. Adding -dFPC_ARMHF when compiling a program will not change anything.

We should give an error if you try to use any -Ca* parameter with the ARM compiler (other than for the ABI for which the compiler has been built), since it will never work properly anyway. Or fix the ARM compiler to correctly deal with different ABIs at compile time rather than only at compiler build time, but other developers don't like that.

Jonas

Reply by email

Jonas Maebe
to Jonas Maebe
Jonas Maebe wrote
We should give an error if you try to use any -Ca* parameter with the ARM compiler (other than for the ABI for which the compiler has been built), since it will never work properly anyway.

I've implemented this now. "fpc -i" will now also only display the ABIs actually supported by the compiler binary.

Jonas

Reply by email