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).