Re: Float ABI confusion for armv7

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 15 Aug 2023 21:02:25 UTC
On Aug 15, 2023, at 13:54, Mark Millard <marklmi@yahoo.com> wrote:

> John F Carr <jfc_at_mit.edu> write on
> Date: Tue, 15 Aug 2023 13:51:24 UTC  :
>> 
>> Has something changed in llvm to cause soft float to be the default for armv7?
>> 
>> I am cross-compiling using poudriere on a 64 bit ARM host to target armv7.
>> This used to work. After updating my jail (poudriere jail -u -msrc=...) I get an
>> unnecessarily mysterious failure building pkg. Poudriere erases the evidence,
>> poudriere -i does not work as advertised, pkg's configure script spawns subshells
>> to prevent set -x from working, and the subshell directs error messages to /dev/null.
>> After getting past all that,
>> 
>> # cc -target armv7-freebsd -o /tmp/a.out autosetup/jimsh0.c 
>> 
>> in the pkg source directory results in undefined symbols such as __eqdf2.
>> 
>> # cc -target armv7-freebsd-gnueabihf -o /tmp/a.out autosetup/jimsh0.c
>> 
>> works fine.
>> 
>> # cc -v
>> FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)
>> Target: armv7-unknown-freebsd14.0
>> Thread model: posix
>> InstalledDir: /usr/bin
>> 
> 
> Exploring my context that does not get the problem . . .
> 
> # uname -apKU
> FreeBSD CA72-16Gp-ZFS 14.0-ALPHA1 FreeBSD 14.0-ALPHA1 aarch64 1400094 #107 main-n264683-6b405053c997-dirty: Sat Aug 12 23:43:37 PDT 2023     root@CA72-16Gp-ZFS:/usr/obj/BUILDs/main-CA72-nodbg-clang/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG-CA72 arm64 aarch64 1400094 1400094
> 
> So: aarch64
> 
> But . . . 
> 
> # poudriere jail -jmain-CA7-bulk_a -i
> Jail name:         main-CA7-bulk_a
> Jail version:      14.0-ALPHA1
> Jail arch:         arm.armv7
> Jail method:       null
> Jail mount:        /usr/obj/DESTDIRs/main-CA7-poud-bulk_a
> . . .
> 
> # chroot /usr/obj/DESTDIRs/main-CA7-poud-bulk_a uname -apKU
> FreeBSD CA72-16Gp-ZFS 14.0-ALPHA1 FreeBSD 14.0-ALPHA1 aarch64 1400094 #107 main-n264683-6b405053c997-dirty: Sat Aug 12 23:43:37 PDT 2023     root@CA72-16Gp-ZFS:/usr/obj/BUILDs/main-CA72-nodbg-clang/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG-CA72 arm armv7 1400094 1400094
> 
> So: an armv7 poudriere jail context on an aarch64 system.
> 
> . . .
> [00:00:09] [01] [00:00:00] Building ports-mgmt/pkg | pkg-1.20.4
> [00:03:05] [01] [00:02:56] Finished ports-mgmt/pkg | pkg-1.20.4: Success
> 
> Looking at the log file:
> 
> . . .
> =======================<phase: configure      >============================
> ===== env: NO_DEPENDS=yes USER=root UID=0 GID=0
> ===>  Configuring for pkg-1.20.4
> No installed jimsh or tclsh, building local bootstrap jimsh0
> Host System...armv7-unknown-freebsd14.0
> Build System...armv7-unknown-freebsd14.0
> . . . 
> 
> But:
> 
> # chroot /usr/obj/DESTDIRs/main-CA7-poud-bulk_a cc -v
> FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)
> Target: armv7-unknown-freebsd14.0-gnueabihf
> Thread model: posix
> InstalledDir: /usr/bin
> 
> 
> So my buildworld and installworld sequence into:
> 
> /usr/obj/DESTDIRs/main-CA7-poud-bulk_a
> 
> got clang for a default of: armv7-unknown-freebsd14.0-gnueabihf
> 
> The only thing that I know of that might contribute that is specific
> to my environment is that I cause use of -mcpu=cortex-a7 in the
> buildworld used to fill in /usr/obj/DESTDIRs/main-CA7-poud-bulk_a .
> 
> 

Never mind. I see Warner has fixed it and that my context somewhat
predates the bad commit (2023-Aug-12):

    • git: 0bc26e325450 - main - clang: Minor build simplification now that armv[45] is not supported Warner Losh

fixed by (2023-Aug-14):

    • git: 43b41bee90c7 - main - llvm: fix armv[67] after 0bc26e325450 Warner Losh


===
Mark Millard
marklmi at yahoo.com