Re: problems on FreeBSD14 on armv6 board (RPI1-B)

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On Dec 17, 2023, at 23:34, Alex Samorukov <[email protected]> wrote:

> On 2023/12/18 01:41, Mark Millard wrote:
> 
>> I'll note that I've never done such "armv6-only processor" testing.
>> I'll not have access to any FreeBSD arm6, arm7, or aarch64 contexts
>> until after something like 2024-Jan-01.
> I also checked llvm compilation logs:
> 
> -- LLVM host triple: armv6-portbld-freebsd13.2-gnueabihf
> -- LLVM default target triple: armv6-portbld-freebsd13.2-gnueabihf
> 
> So I would expect it will not use armv7 instructions based on the "host" (jail) EABI.
> 
> Also, I see that rust is failing to build:
> 
> rust-1.74.1.log:=>> Ignoring lang/rust: is only for aarch64 amd64 armv7 i386 powerpc powerpc64 powerpc64le riscv64, while you are running armv6 (reason: requires prebuilt bootstrap compiler)
> 
> Not sure if it's done due to qemu problem or not, maybe will try to remove ignore later and rebuild

I got access to one of the RPi4B's, so looking for myself . . .

I used FreeBSD-14.0-STABLE-arm64-aarch64-RPI-20231216-2ef9079ece5a-266002.img
dd'd to media in order to boot:

# uname -apKU
FreeBSD generic 14.0-STABLE FreeBSD 14.0-STABLE #0 stable/14-n266002-2ef9079ece5a: Sat Dec 16 08:49:23 UTC 2023     [email protected]:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64 aarch64 1400501 1400501

I downloaded FreeBSD-13.2-STABLE-arm-armv6-RPI-B-20231216-9986fd59d855-256898.img
and dd'd it to media as well.

# mount -onoatime /dev/da1s2a /mnt

# file /mnt/bin/sh
/mnt/bin/sh: ELF 32-bit LSB executable, ARM, EABI5 version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, FreeBSD-style, for FreeBSD 13.2 (1302509), stripped

# chroot /mnt/

# uname -apKU
FreeBSD generic 14.0-STABLE FreeBSD 14.0-STABLE #0 stable/14-n266002-2ef9079ece5a: Sat Dec 16 08:49:23 UTC 2023     [email protected]:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm armv7 1400501 1302509

Note the "arm armv7". An aarch64 kernel can be built and booted
that makes that "arm armv6" so that more things work.

# uname -p
armv7

# make -V MACHINE_ARCH
armv6

That contradicts what man uname reports relative to "uname -p" and "MACHINE_ARCH":

     -p      Write the type of the machine processor architecture to standard
             output.  (make(1) uses it to set the MACHINE_ARCH variable.)

# c++ -v
FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)
Target: armv6-unknown-freebsd13.2-gnueabihf
Thread model: posix
InstalledDir: /usr/bin

So, without the adjusted kernel, an odd mix of armv6 and armv7.



As for rust vs. armv6: the lang/rust/Makefile has:

ONLY_FOR_ARCHS?= aarch64 amd64 armv7 i386 powerpc64 powerpc64le powerpc \
ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler

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