Re: Float ABI confusion for armv7

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.