Re: Float ABI confusion for armv7

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 15 Aug 2023 20:54:20 UTC
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 .


===
Mark Millard
marklmi at yahoo.com