Re: Buildkernel fails in /usr/obj/usr/src/arm.armv7/sys/GENERIC/vchiq_shim.o

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.current,gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On Nov 1, 2025, at 08:57, Adrian Chadd <[email protected]> wrote:

> There's obviously something wrong with my cross building, because when I try cross building armv7 on my laptop it succeeds
> 
> Anyone have any ideas what I'm doing wrong here? thanks!

My guess is that you have something disabling some more strict
type matching checks: you are not getting -Werror,-Wformat

Later notes below somewhat support this as a possibility,
given the error message references -Werror,-Wformat .

> ```
> #!/bin/sh
> 
> OBJ_BASE="/home/adrian/work/freebsd/head/freebsd-obj-arm"
> SRC_BASE="/home/adrian/work/freebsd/head/freebsd-src-arm"
> PORTS_BASE="/home/adrian/work/freebsd/head/freebsd-ports-arm"
> MAKE_FLAGS="-j8 -s"
> X_TARGET_ARCH="armv7"
> KERN_CONFIG="GENERIC"
> BUILD_FLAGS="NO_CLEAN=1"

Do your build logs show the relevant source being compiled?
Use of NO_CLEAN=1 for validation build activity has some
risks. (I'm guessing that this is not the problem.)

> env MAKEOBJDIRPREFIX="${OBJ_BASE}" make ${MAKE_FLAGS} buildkernel KERNCONF=${KERN_CONFIG} ${BUILD_FLAGS} TARGET_ARCH=${X_TARGET_ARCH}
> ```
> 
> On Sat, 1 Nov 2025 at 08:18, bob prohaska <[email protected]> wrote:
> A Raspberry Pi 2 v1.1 is failing buildkernel with 
> Building /usr/obj/usr/src/arm.armv7/sys/GENERIC/vchiq_shim.o
> --- vchiq_2835_arm.o ---
> /usr/src/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c:549:71: error: format specifies type 'unsigned int' but the argument has type 'unsigned long' [-Werror,-Wformat]
>   549 |                 "free_pagelist - %zx, %d (%u bytes @%p)", (size_t)pagelist, actual, pagelist->length, bi->buf);
>       |                                           ~~                                        ^~~~~~~~~~~~~~~~
>       |                                           %lu
> /usr/src/sys/contrib/vchiq/interface/vchiq_arm/vchiq_core.h:73:39: note: expanded from macro 'vchiq_log_trace'
>    73 |                 printf(VCHIQ_LOG_PREFIX fmt "\n", ##__VA_ARGS__); } while (0)
>       |                                         ~~~         ^~~~~~~~~~~
> 1 error generated.
> *** [vchiq_2835_arm.o] Error code 1

https://cgit.freebsd.org/src/tree/sys/contrib/vchiq/interface/vchiq_arm/vchiq_pagelist.h

shows:

typedef struct pagelist_struct {
        unsigned long length;
. . .

in agreement with the error report's "unsigned long" reference.
 "man arch" reports:

     On all supported architectures:

           Type         Size
           . . .
           int          4

         Architecture   long   void *   long double   time_t
           . . .
           armv7          4      4        8             8

So it is not a actual-size problem. So it is more of a
strict type checking notice.


Side note:

FreeBSD has "Variables of types unsigned long and
size_t have the same representation" but also has
examples like:

           Architecture   long   void *   long double   time_t
           . . .
           aarch64c       8      16       16            8
           . . .
           riscv64c       8      16       16            8

Thus the (size_t)pagelist use looks to be definitely
Machine Dependent code. Any reason that %p and (void*)
were not used? (Not that vchiq use would necessarily
be likely on aarch64c or riscv64c .)

> uname -a reports
> FreeBSD pelorus.zefox.org 16.0-CURRENT FreeBSD 16.0-CURRENT #1 main-n281567-8d5a88ac95b2: Wed Oct 29 18:14:25 PDT 2025     [email protected]:/usr/obj/usr/src/arm.armv7/sys/GENERIC arm
> 
> Git reset --hard reported
> HEAD is now at c6e02892bbca bsd-family-tree: add macOS 26
> 
> This has been going on for a couple of days at least. 
> 




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