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

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sat, 01 Nov 2025 18:26:37 UTC
On Nov 1, 2025, at 10:45, Mark Millard <marklmi@yahoo.com> wrote:

> On Nov 1, 2025, at 10:22, Adrian Chadd <adrian@freebsd.org> wrote:
> 
>> Here's my suggested solution:
>> 
>> ===
>> diff --git a/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c b/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
>> index 96c3a0db8aa5..7e105a6b3b77 100644
>> --- a/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
>> +++ b/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
>> @@ -628,7 +628,9 @@ free_pagelist(BULKINFO_T *bi, int actual)
>>        pagelist = bi->pagelist;
>> 
>>        vchiq_log_trace(vchiq_arm_log_level,
>> -               "free_pagelist - %zx, %d (%u bytes @%p)", (size_t)pagelist, actual, pagelist->length, bi->buf);
>> +           "free_pagelist - %zx, %d (%lu bytes @%p)",
>> +           (size_t)pagelist, (int)actual, (unsigned long)pagelist->length,
>> +           bi->buf);
>> 
>>        num_pages =
>>                (pagelist->length + pagelist->offset + PAGE_SIZE - 1) /
>> ===
>> 
>> The code /is/ being compiled on my arm64 and armv7 builds, I verified this by using #error in this source file. But the format strings aren't eliciting a type violation when I cross compile.
> 
> The CI builds are on the likes of butler4.nyi.freebsd.org which
> are amd64 as far as I know: also cross builds.
> 
> The CI build infrastructure may be public enough to check for if
> anything special is specified for those builds. For example, I do
> not know if they use /dev/null or empty files relative to the
> likes of environment variables:
> 
> __MAKE_CONF
> SRCCONF
> SRC_ENV_CONF
> 
> or what the related file content might be like otherwise.

In:

https://ci.freebsd.org/job/FreeBSD-main-armv7-build/26181/consoleFull

I see:

. . .
export 'MAKEOBJDIRPREFIX=/workspace/obj'
rm -fr /workspace/obj
. . .
sudo make -j 12 -DWITHOUT_CLEAN buildworld 'TARGET=arm' 'TARGET_ARCH=armv7' '__MAKE_CONF=/workspace/freebsd-ci/jobs/FreeBSD-main-armv7-build/make.conf' 'SRCCONF=/dev/null'
. . .
sudo make -j 12 -DWITHOUT_CLEAN buildkernel 'TARGET=arm' 'TARGET_ARCH=armv7' '__MAKE_CONF=/workspace/freebsd-ci/jobs/FreeBSD-main-armv7-build/make.conf' 'SRCCONF=/dev/null'
. . .

In:

https://github.com/freebsd/freebsd-ci/blob/main/jobs/FreeBSD-main-armv7-build/make.conf

I see just:

QUOTE
KERNCONF=GENERIC GENERIC-MMCCAM
END QUOTE

I do not see anything explicit related to what SRC_ENV_CONF is for
binding to, so a default context for that binding.


===
Mark Millard
marklmi at yahoo.com