[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: armhf ABI flag problems with fpc-built binaries



On 09/06/16 18:55, Steve McIntyre wrote:
Hi folks,

I'm one of the ARM porters, and I've recently run a scan of binaries
in the archive to check on the state of the binaries for armel and
armhf. As part of the ARM ABI, binaries (libraries and programs) are
expected to specify ELF flags to specify whether they're using the
hard-float or soft-float ABI (if they care specifically - some
don't). I've found a few fpc-using packages (both under your
maintenance and not) that appear to get this wrong, which suggests
that there might be a toolchain issue here in fpc and friends. My
scanner is telling me that the following armhf packages are broken:

doublecmd-plugins_0.7.1-2_armhf.deb        hf_flags_wrong:6
fp-compiler-3.0.0_3.0.0+dfsg-4_armhf.deb   hf_flags_wrong:4
fp-ide-3.0.0_3.0.0+dfsg-4_armhf.deb        hf_flags_wrong:1
fp-utils-3.0.0_3.0.0+dfsg-4_armhf.deb      hf_flags_wrong:28 no_hf_flags:2
gearhead_1.300-1_armhf.deb                 hf_flags_wrong:1
pasdoc_0.14.0-1_armhf.deb                  hf_flags_wrong:1

"hf_flags_wrong" here means that the package is targeting armhf, but
binaries within it claim to use the soft-float ABI. "no_hf_flags" is
the number of binaries that have no ABI float flags attached. To see
for yourself, you can use "readelf --file-header" to inspect the flags
on binaries - look for

   Flags:       0x5000202, has entry point, Version5 EABI, soft-float ABI

etc. armhf binaries should show

   Flags:       0x5000402, has entry point, Version5 EABI, hard-float ABI

instead. I'm not sure exactly where fpc would be setting flags like
this (if anywhere) or if it's calling binutils incorrectly maybe. Can
anybody help me dig into this please?

(See the attached list for details of the broken files.)
Most likely the place to start in the fpc code is compiler/arm/agarmgas.pas

If someone can tell me what needs to be done at an assembler level I can look into making fpc do it. (unfortunately infinity's paste referenced in the bug report has expired).


Reply to: