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

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sat, 23 Dec 2023 07:08:27 UTC
On Dec 22, 2023, at 20:26, Mark Millard <marklmi@yahoo.com> wrote:

> On Dec 17, 2023, at 23:34, Alex Samorukov <samm@freebsd.org> 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     root@releng1.nyi.freebsd.org:/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     root@releng1.nyi.freebsd.org:/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

FYI:

# env UNAME_p=armv6 chroot /mnt/
# uname -p
armv6

> # 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