NetBSD Problem Report #57514
From taca@back-street.net Sat Jul 8 07:30:30 2023
Return-Path: <taca@back-street.net>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 754821A9242
for <gnats-bugs@gnats.NetBSD.org>; Sat, 8 Jul 2023 07:30:30 +0000 (UTC)
Message-Id: <20230708061310.90D5A768304@m2utm.a.back-street.net>
Date: Sat, 8 Jul 2023 15:13:10 +0900 (JST)
From: taca@back-street.net
Reply-To: taca@back-street.net
To: gnats-bugs@NetBSD.org
Subject: Self build fails on evbarm-aarch64
X-Send-Pr-Version: 3.95
>Number: 57514
>Category: kern
>Synopsis: Self build fails on evbarm-aarch64
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jul 08 07:35:00 +0000 2023
>Last-Modified: Mon Jul 10 11:10:01 +0000 2023
>Originator: Takahiro Kambe
>Release: NetBSD 10.99.4
>Organization:
>Environment:
System: NetBSD m2utm.a.back-street.net 10.99.4 NetBSD 10.99.4 (GENERIC64) #6: Fri Jul 7 23:40:33 JST 2023 taca@m2utm.a.back-street.net:/data/current/evbarm/obj/sys/arch/evbarm/compile/GENERIC64 evbarm
Architecture: aarch64
Machine: evbarm
>Description:
Self build fails on evbarm-aarch64.
>How-To-Repeat:
Build kernel on NetBSD-10.99.4-evbarm.
I tested NetBSD 10.99.4 running on UTM 4.3.0 (https://getutm.app/)
under macOS 13.4.1 / MacBook Air M2. (Yes, it might be problem of
UTM 4.3.0 / qemu 8.0.0.)
% sh build.sh -X /usr/xsrc -x -D /data/current/evbarm/tree -O /data/current/evbarm/obj -R /data/current/release -N1 -a aarch64 -m evbarm -U -x -u -j1 kernel=GENERIC64
...
===> Building kernel without building new tools
===> Building kernel: GENERIC64
...
compile GENERIC64/uvm_bio.o
/usr/src/sys/uvm/uvm_bio.c: In function 'ubc_fault':
/usr/src/sys/uvm/uvm_bio.c:308:1: error: stack usage might be unbounded [-Werror=stack-usage=]
308 | ubc_fault(struct uvm_faultinfo *ufi, vaddr_t ign1, struct vm_page **ign2,
| ^~~~~~~~~
/usr/src/sys/uvm/uvm_bio.c: In function 'ubc_uiomove':
/usr/src/sys/uvm/uvm_bio.c:740:1: error: stack usage might be unbounded [-Werror=stack-usage=]
740 | ubc_uiomove(struct uvm_object *uobj, struct uio *uio, vsize_t todo, int advice,
| ^~~~~~~~~~~
/usr/src/sys/uvm/uvm_bio.c: In function 'ubc_zerorange':
/usr/src/sys/uvm/uvm_bio.c:807:1: error: stack usage might be unbounded [-Werror=stack-usage=]
807 | ubc_zerorange(struct uvm_object *uobj, off_t off, size_t len, int flags)
| ^~~~~~~~~~~~~
/usr/src/sys/uvm/uvm_bio.c: In function 'ubc_uiomove_direct':
/usr/src/sys/uvm/uvm_bio.c:980:1: error: stack usage might be unbounded [-Werror=stack-usage=]
980 | ubc_uiomove_direct(struct uvm_object *uobj, struct uio *uio, vsize_t todo, int advice,
| ^~~~~~~~~~~~~~~~~~
/usr/src/sys/uvm/uvm_bio.c: In function 'ubc_zerorange_direct':
/usr/src/sys/uvm/uvm_bio.c:1050:1: error: stack usage might be unbounded [-Werror=stack-usage=]
1050 | ubc_zerorange_direct(struct uvm_object *uobj, off_t off, size_t todo, int flags)
| ^~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
*** Failed target: uvm_bio.o
*** Failed commands:
${NORMAL_C}
=> @echo ' ' "compile GENERIC64/uvm_bio.o" && : echo /data/current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/aarch64--netbsd-gcc -Wno-stack-protector -march=armv8-a+nofp+nosimd -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffreestanding -fno-zero-initialized-in-bss -fno-delete-null-pointer-checks -g -pipe -pipe -fstack-usage -Wstack-usage=3584 -fno-strict-aliasing -fno-common -Wno-stack-protector -std=gnu99 -Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -Wno-unreachable-code -Wno-pointer-sign -Wno-attributes -Wno-type-limits -Wno-sign-compare -Wno-address-of-packed-member -Walloca --sysroot=/data/current/evbarm/tree -I. -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/acpica/dist -I/usr/src/sys/../common/lib/libx86emu -I/usr/src/sys/../common/lib/libc/misc -I/usr/src/sys/../common/include -I/usr/src/sys/ar
ch -I/usr/src/sys -nostdinc -DCOMPAT_UTILS -DAARCH64 -DARM_GENERIC_TODR -DFPU_VFP -D__HAVE_PCI_CONF_HOOK -D__HAVE_PCI_MSI_MSIX -DCOMPAT_44 -DDIAGNOSTIC -DARMV81_PAN -D_KERNEL -D_KERNEL_OPT -std=gnu99 -I/usr/src/sys/lib/libkern/../../../common/lib/libc/quad -I/usr/src/sys/lib/libkern/../../../common/lib/libc/string -I/usr/src/sys/lib/libkern/../../../common/lib/libc/arch/aarch64/string -I/usr/src/sys/lib/libkern/../../../common/lib/libc/arch/aarch64/atomic -I/usr/src/sys/lib/libkern/../../../common/lib/libc/hash/sha3 -I/usr/src/sys/external/bsd -I/usr/src/sys/external/bsd/common/include -I/usr/src/sys/external/bsd/dwc2/dist -I/usr/src/sys/external/bsd/libfdt/dist -I/usr/src/sys/external/bsd/acpica/dist/include -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/vchiq/dist -I/usr/src/sys/external/bsd/common/include -DVCOS_VERIFY_BKPTS=1 -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000 -DVCHIQ_ENABLE_DEBUG=1 -DVCHIQ_LOG_DEFAULT=5 -c /usr/src/sys/uvm/uvm_bio.c -o uvm
_bio.o && /data/current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/aarch64--netbsd-gcc -Wno-stack-protector -march=armv8-a+nofp+nosimd -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffreestanding -fno-zero-initialized-in-bss -fno-delete-null-pointer-checks -g -pipe -pipe -fstack-usage -Wstack-usage=3584 -fno-strict-aliasing -fno-common -Wno-stack-protector -std=gnu99 -Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -Wno-unreachable-code -Wno-pointer-sign -Wno-attributes -Wno-type-limits -Wno-sign-compare -Wno-address-of-packed-member -Walloca --sysroot=/data/current/evbarm/tree -I. -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/acpica/dist -I/usr/src/sys/../common/lib/libx86emu -I/usr/src/sys/../common/lib/libc/misc -I/usr/src/sys/../common/include -I/usr/src/sys/arch -I/usr/src/sys -nostdinc -DCOMPAT_UTILS
-DAARCH64 -DARM_GENERIC_TODR -DFPU_VFP -D__HAVE_PCI_CONF_HOOK -D__HAVE_PCI_MSI_MSIX -DCOMPAT_44 -DDIAGNOSTIC -DARMV81_PAN -D_KERNEL -D_KERNEL_OPT -std=gnu99 -I/usr/src/sys/lib/libkern/../../../common/lib/libc/quad -I/usr/src/sys/lib/libkern/../../../common/lib/libc/string -I/usr/src/sys/lib/libkern/../../../common/lib/libc/arch/aarch64/string -I/usr/src/sys/lib/libkern/../../../common/lib/libc/arch/aarch64/atomic -I/usr/src/sys/lib/libkern/../../../common/lib/libc/hash/sha3 -I/usr/src/sys/external/bsd -I/usr/src/sys/external/bsd/common/include -I/usr/src/sys/external/bsd/dwc2/dist -I/usr/src/sys/external/bsd/libfdt/dist -I/usr/src/sys/external/bsd/acpica/dist/include -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/vchiq/dist -I/usr/src/sys/external/bsd/common/include -DVCOS_VERIFY_BKPTS=1 -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000 -DVCHIQ_ENABLE_DEBUG=1 -DVCHIQ_LOG_DEFAULT=5 -c /usr/src/sys/uvm/uvm_bio.c -o uvm_bio.o && : echo /data/current/evbarm/obj/t
ooldir-NetBSD-10.99.4-evbarm/bin/nbctfconvert -g -L VERSION -g uvm_bio.o && /data/current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/nbctfconvert -g -L VERSION -g uvm_bio.o
*** [uvm_bio.o] Error code 1
nbmake: stopped in /data/current/evbarm/obj/sys/arch/evbarm/compile/GENERIC64
1 error
nbmake: stopped in /data/current/evbarm/obj/sys/arch/evbarm/compile/GENERIC64
ERROR: Failed to make all in "/data/current/evbarm/obj/sys/arch/evbarm/compile/GENERIC64"
*** BUILD ABORTED ***
>Fix:
Below change solve the problem.
I don't know where come from a magic number 3584...
diff --git a/sys/conf/Makefile.kern.inc b/sys/conf/Makefile.kern.inc
index 210c1739b2..4b53913b7c 100644
--- a/sys/conf/Makefile.kern.inc
+++ b/sys/conf/Makefile.kern.inc
@@ -113,7 +113,7 @@ AFLAGS+= -D_LOCORE -Wa,--fatal-warnings
# find . -name \*.su | xargs awk '{ printf "%6d %s\n", $2, $1 }' | sort -n
.if ${MACHINE} != "vax"
# GCC/vax 8.4 does not support -fstack-usage.
-CFLAGS+= ${${ACTIVE_CC} == "gcc":? -fstack-usage -Wstack-usage=3584 :}
+#CFLAGS+= ${${ACTIVE_CC} == "gcc":? -fstack-usage -Wstack-usage=3584 :}
.endif
CWARNFLAGS+= -Walloca
>Audit-Trail:
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Sat, 8 Jul 2023 15:54:39 +0200
On Sat, Jul 08, 2023 at 07:35:00AM +0000, taca@back-street.net wrote:
> Below change solve the problem.
> I don't know where come from a magic number 3584...
In your kernel compile directory you will find *.su files, e.g.
my uvm_bio.su file looks like:
../../../../uvm/uvm_bio.c:973:1:ubc_zerorange_process 16 static
../../../../uvm/uvm_bio.c:965:1:ubc_uiomove_process 16 static
../../../../uvm/uvm_bio.c:845:1:ubc_alloc_direct 144 static
../../../../uvm/uvm_bio.c:931:1:ubc_direct_release 80 static
../../../../uvm/uvm_bio.c:980:1:ubc_uiomove_direct 256 static
../../../../uvm/uvm_bio.c:1050:1:ubc_zerorange_direct 208 static
../../../../uvm/uvm_bio.c:643:1:ubc_release 160 static
../../../../uvm/uvm_bio.c:1115:1:ubchash_stats 48 static
../../../../uvm/uvm_bio.c:482:1:ubc_alloc.constprop 144 static
../../../../uvm/uvm_bio.c:308:1:ubc_fault 272 static
../../../../uvm/uvm_bio.c:166:1:ubc_init 32 static
../../../../uvm/uvm_bio.c:225:1:ubchist_init 16 static
../../../../uvm/uvm_bio.c:740:1:ubc_uiomove 240 static
../../../../uvm/uvm_bio.c:807:1:ubc_zerorange 224 static
../../../../uvm/uvm_bio.c:1085:1:ubc_purge 96 static
and the 2nd column is the stack size in byte for the function in the
first column.
cat *.su | sort -n -r -k2 | head
will display the functions with the biggest stack usage in that kernel:
../../../../arch/arm/broadcom/bcm283x_platform.c:896:1:rpi_fb_get_edid_mode.isra 3280 static
../../../../arch/aarch64/aarch64/db_machdep.c:338:1:show_cpuinfo 2608 static
../../../../dev/acpi/acpi_mcfg.c:769:1:acpimcfg_configure_bus 2512 static
../../../../arch/aarch64/aarch64/db_machdep.c:416:1:db_md_lwp_cmd.part.0 1744 static
../../../../crypto/blake2/blake2s.c:294:1:blake2s_selftest 1488 static
../../../../arch/aarch64/aarch64/db_trace.c:681:1:db_stack_trace_print 1392 static
../../../../dev/usb/usb.c:1289:1:usb_add_event 1360 static
../../../../nfs/nfs_serv.c:1899:1:nfsrv_rename 1328 static
acpi_cpu_md.c:199:1:acpicpu_md_pstate_sysctl_available 1296 static
acpi_cpu.c:266:1:acpicpu_start 1280 static
However, I have no idea why gcc gets the stack usage wrong in your build,
but not in a cross compile.
Martin
From: Takahiro Kambe <taca@back-street.net>
To: gnats-bugs@netbsd.org, martin@duskware.de
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Sat, 08 Jul 2023 23:56:19 +0900 (JST)
In message <20230708135502.1080D1A9241@mollari.NetBSD.org>
on Sat, 8 Jul 2023 13:55:02 +0000 (UTC),
Martin Husemann <martin@duskware.de> wrote:
> On Sat, Jul 08, 2023 at 07:35:00AM +0000, taca@back-street.net wrote:
> > Below change solve the problem.
> > I don't know where come from a magic number 3584...
>
> In your kernel compile directory you will find *.su files, e.g.
> my uvm_bio.su file looks like:
>
> ../../../../uvm/uvm_bio.c:973:1:ubc_zerorange_process 16 static
> ../../../../uvm/uvm_bio.c:965:1:ubc_uiomove_process 16 static
> ../../../../uvm/uvm_bio.c:845:1:ubc_alloc_direct 144 static
> ../../../../uvm/uvm_bio.c:931:1:ubc_direct_release 80 static
> ../../../../uvm/uvm_bio.c:980:1:ubc_uiomove_direct 256 static
> ../../../../uvm/uvm_bio.c:1050:1:ubc_zerorange_direct 208 static
> ../../../../uvm/uvm_bio.c:643:1:ubc_release 160 static
> ../../../../uvm/uvm_bio.c:1115:1:ubchash_stats 48 static
> ../../../../uvm/uvm_bio.c:482:1:ubc_alloc.constprop 144 static
> ../../../../uvm/uvm_bio.c:308:1:ubc_fault 272 static
> ../../../../uvm/uvm_bio.c:166:1:ubc_init 32 static
> ../../../../uvm/uvm_bio.c:225:1:ubchist_init 16 static
> ../../../../uvm/uvm_bio.c:740:1:ubc_uiomove 240 static
> ../../../../uvm/uvm_bio.c:807:1:ubc_zerorange 224 static
> ../../../../uvm/uvm_bio.c:1085:1:ubc_purge 96 static
>
>
> and the 2nd column is the stack size in byte for the function in the
> first column.
Here is my case:
/usr/src/sys/uvm/uvm_fault_i.h:44:1:uvmfault_unlockmaps 32 static
/usr/src/sys/uvm/uvm_fault_i.h:72:1:uvmfault_unlockall 48 static
/usr/src/sys/uvm/uvm_bio.c:166:1:ubc_init 48 static
/usr/src/sys/uvm/uvm_bio.c:225:1:ubchist_init 16 static
/usr/src/sys/uvm/uvm_bio.c:239:1:ubc_fault_page 112 static
/usr/src/sys/uvm/uvm_bio.c:308:1:ubc_fault 176 dynamic
/usr/src/sys/uvm/uvm_bio.c:460:1:ubc_find_mapping 48 static
/usr/src/sys/uvm/uvm_bio.c:482:1:ubc_alloc 160 static
/usr/src/sys/uvm/uvm_bio.c:643:1:ubc_release 128 static
/usr/src/sys/uvm/uvm_bio.c:740:1:ubc_uiomove 128 dynamic
/usr/src/sys/uvm/uvm_bio.c:807:1:ubc_zerorange 112 dynamic
/usr/src/sys/uvm/uvm_bio.c:845:1:ubc_alloc_direct 112 static
/usr/src/sys/uvm/uvm_bio.c:931:1:ubc_direct_release 64 static
/usr/src/sys/uvm/uvm_bio.c:965:1:ubc_uiomove_process 64 static
/usr/src/sys/uvm/uvm_bio.c:973:1:ubc_zerorange_process 48 static
/usr/src/sys/uvm/uvm_bio.c:980:1:ubc_uiomove_direct 144 dynamic
/usr/src/sys/uvm/uvm_bio.c:1050:1:ubc_zerorange_direct 96 dynamic
/usr/src/sys/uvm/uvm_bio.c:1085:1:ubc_purge 48 static
/usr/src/sys/uvm/uvm_bio.c:1115:1:ubchash_stats 64 static
> cat *.su | sort -n -r -k2 | head
>
> will display the functions with the biggest stack usage in that kernel:
Here is my result.
/usr/src/sys/arch/arm/broadcom/bcm283x_platform.c:896:1:rpi_fb_get_edid_mode 3280 static
/usr/src/sys/dev/pci/if_wm.c:6550:1:wm_update_stats 2896 static
/usr/src/sys/arch/aarch64/aarch64/db_machdep.c:338:1:show_cpuinfo 2608 static
/usr/src/sys/dev/acpi/acpi_mcfg.c:769:1:acpimcfg_configure_bus 2480 static
/usr/src/sys/dev/pci/ixgbe/ixgbe.c:1617:1:ixgbe_update_stats_counters 2416 static
/usr/src/sys/dev/pci/if_wm.c:6735:1:wm_clear_evcnt 1808 static
/usr/src/sys/arch/aarch64/aarch64/db_machdep.c:416:1:db_md_lwp_cmd 1776 static
/usr/src/sys/crypto/aes/arch/arm/aes_neon.c:687:1:aes_neon_dec2 1664 static
/usr/src/sys/dev/pci/ixgbe/ixgbe.c:2116:1:ixgbe_clear_evcnt 1504 static
/usr/src/sys/crypto/aes/arch/arm/aes_neon.c:595:1:aes_neon_enc2 1408 static
> However, I have no idea why gcc gets the stack usage wrong in your build,
> but not in a cross compile.
I noticed that cross build on arm64 fails as the same error now.
--
Takahiro Kambe <taca@back-street.net>
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Sat, 8 Jul 2023 17:06:34 +0200
Do you have any local changes (e.g. something that makes MIN_PAGE_SIZE
not const)?
Or do you compile with unusual optimization flags (like -O0)?
The only thing that could be dynamic in ubc_uiomove() is
struct vm_page *pgs[howmany(ubc_winsize, MIN_PAGE_SIZE)];
but that is all compile time const and usually properly evaluated by gcc.
Martin
From: Takahiro Kambe <taca@back-street.net>
To: gnats-bugs@netbsd.org, martin@duskware.de
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Sun, 09 Jul 2023 01:08:59 +0900 (JST)
In message <20230708151002.80D2D1A9241@mollari.NetBSD.org>
on Sat, 8 Jul 2023 15:10:02 +0000 (UTC),
Martin Husemann <martin@duskware.de> wrote:
> Do you have any local changes (e.g. something that makes MIN_PAGE_SIZE
> not const)?
> Or do you compile with unusual optimization flags (like -O0)?
Oh, I found that there is no optimization flag was specified.
> The only thing that could be dynamic in ubc_uiomove() is
>
> struct vm_page *pgs[howmany(ubc_winsize, MIN_PAGE_SIZE)];
>
> but that is all compile time const and usually properly evaluated by gcc.
It is great hint, thank you!
I don't find what was wrong, but it is surely my local problem.
Please close this PR.
In anyway, what is 3584 number?
CFLAGS+= ${${ACTIVE_CC} == "gcc":? -fstack-usage -Wstack-usage=3584 :}
--
Takahiro Kambe <taca@back-street.net>
From: Martin Husemann <martin@duskware.de>
To: Takahiro Kambe <taca@back-street.net>
Cc: gnats-bugs@netbsd.org
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Sat, 8 Jul 2023 19:46:03 +0200
On Sun, Jul 09, 2023 at 01:08:59AM +0900, Takahiro Kambe wrote:
> In anyway, what is 3584 number?
>
> CFLAGS+= ${${ACTIVE_CC} == "gcc":? -fstack-usage -Wstack-usage=3584 :}
From the sort output we talked about before, it is the biggest number in
an older kernel build (or close to it) when someone fixed that big stack
using function. We could make it lower a bit now.
Martin
From: Rin Okuyama <rokuyama.rk@gmail.com>
To: gnats-bugs@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Mon, 10 Jul 2023 16:25:03 +0900
Hi,
Where did you set ``-march=3Darmv8-a+nofp+nosimd''? For this purpose, you s=
hould
use CPUFLAGS; see mk.conf(5) for more details. In this case, standard
optimization
flags seem to be override by this MD flag.
Note that diagnostic features of GCC precisely depend on optimization
flags, target
machines, etc., etc., and untested combination often results in
surprising result...
Thanks,
rin
2023=E5=B9=B47=E6=9C=888=E6=97=A5(=E5=9C=9F) 16:35 <taca@back-street.net>:
>
> >Number: 57514
> >Category: kern
> >Synopsis: Self build fails on evbarm-aarch64
> >Confidential: no
> >Severity: serious
> >Priority: medium
> >Responsible: kern-bug-people
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Sat Jul 08 07:35:00 +0000 2023
> >Originator: Takahiro Kambe
> >Release: NetBSD 10.99.4
> >Organization:
>
> >Environment:
>
>
> System: NetBSD m2utm.a.back-street.net 10.99.4 NetBSD 10.99.4 (GENERIC64)=
#6: Fri Jul 7 23:40:33 JST 2023 taca@m2utm.a.back-street.net:/data/current=
/evbarm/obj/sys/arch/evbarm/compile/GENERIC64 evbarm
> Architecture: aarch64
> Machine: evbarm
> >Description:
> Self build fails on evbarm-aarch64.
>
> >How-To-Repeat:
> Build kernel on NetBSD-10.99.4-evbarm.
>
> I tested NetBSD 10.99.4 running on UTM 4.3.0 (https://getutm.app/=
)
> under macOS 13.4.1 / MacBook Air M2. (Yes, it might be problem o=
f
> UTM 4.3.0 / qemu 8.0.0.)
>
> % sh build.sh -X /usr/xsrc -x -D /data/current/evbarm/tree -O /data/curre=
nt/evbarm/obj -R /data/current/release -N1 -a aarch64 -m evbarm -U -x -u -j=
1 kernel=3DGENERIC64
> ...
> =3D=3D=3D> Building kernel without building new tools
> =3D=3D=3D> Building kernel: GENERIC64
> ...
> compile GENERIC64/uvm_bio.o
> /usr/src/sys/uvm/uvm_bio.c: In function 'ubc_fault':
> /usr/src/sys/uvm/uvm_bio.c:308:1: error: stack usage might be unbounded [=
-Werror=3Dstack-usage=3D]
> 308 | ubc_fault(struct uvm_faultinfo *ufi, vaddr_t ign1, struct vm_page=
**ign2,
> | ^~~~~~~~~
> /usr/src/sys/uvm/uvm_bio.c: In function 'ubc_uiomove':
> /usr/src/sys/uvm/uvm_bio.c:740:1: error: stack usage might be unbounded [=
-Werror=3Dstack-usage=3D]
> 740 | ubc_uiomove(struct uvm_object *uobj, struct uio *uio, vsize_t tod=
o, int advice,
> | ^~~~~~~~~~~
> /usr/src/sys/uvm/uvm_bio.c: In function 'ubc_zerorange':
> /usr/src/sys/uvm/uvm_bio.c:807:1: error: stack usage might be unbounded [=
-Werror=3Dstack-usage=3D]
> 807 | ubc_zerorange(struct uvm_object *uobj, off_t off, size_t len, int=
flags)
> | ^~~~~~~~~~~~~
> /usr/src/sys/uvm/uvm_bio.c: In function 'ubc_uiomove_direct':
> /usr/src/sys/uvm/uvm_bio.c:980:1: error: stack usage might be unbounded [=
-Werror=3Dstack-usage=3D]
> 980 | ubc_uiomove_direct(struct uvm_object *uobj, struct uio *uio, vsiz=
e_t todo, int advice,
> | ^~~~~~~~~~~~~~~~~~
> /usr/src/sys/uvm/uvm_bio.c: In function 'ubc_zerorange_direct':
> /usr/src/sys/uvm/uvm_bio.c:1050:1: error: stack usage might be unbounded =
[-Werror=3Dstack-usage=3D]
> 1050 | ubc_zerorange_direct(struct uvm_object *uobj, off_t off, size_t t=
odo, int flags)
> | ^~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
>
> *** Failed target: uvm_bio.o
> *** Failed commands:
> ${NORMAL_C}
> =3D> @echo ' ' "compile GENERIC64/uvm_bio.o" && : echo /data/=
current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/aarch64--netbsd-gcc -W=
no-stack-protector -march=3Darmv8-a+nofp+nosimd -fno-omit-frame-pointer -=
mno-omit-leaf-frame-pointer -ffreestanding -fno-zero-initialized-in-bss -f=
no-delete-null-pointer-checks -g -pipe -pipe -fstack-usage -Wstack-usage=
=3D3584 -fno-strict-aliasing -fno-common -Wno-stack-protector -std=3Dg=
nu99 -Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith -Wmi=
ssing-prototypes -Wstrict-prototypes -Wold-style-definition -Wswitch -Wshad=
ow -Wcast-qual -Wwrite-strings -Wno-unreachable-code -Wno-pointer-sign -Wno=
-attributes -Wno-type-limits -Wno-sign-compare -Wno-address-of-packed-me=
mber -Walloca --sysroot=3D/data/current/evbarm/tree -I. -I/usr/src/sys=
/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/acpica/dist -I/usr/src=
/sys/../common/lib/libx86emu -I/usr/src/sys/../common/lib/libc/misc -I/usr/=
src/sys/../common/include -I/usr/src/sys/ar
> ch -I/usr/src/sys -nostdinc -DCOMPAT_UTILS -DAARCH64 -DARM_GENERIC_TO=
DR -DFPU_VFP -D__HAVE_PCI_CONF_HOOK -D__HAVE_PCI_MSI_MSIX -DCOMPAT_44 =
-DDIAGNOSTIC -DARMV81_PAN -D_KERNEL -D_KERNEL_OPT -std=3Dgnu99 -I/usr/src/=
sys/lib/libkern/../../../common/lib/libc/quad -I/usr/src/sys/lib/libkern/..=
/../../common/lib/libc/string -I/usr/src/sys/lib/libkern/../../../common/li=
b/libc/arch/aarch64/string -I/usr/src/sys/lib/libkern/../../../common/lib/l=
ibc/arch/aarch64/atomic -I/usr/src/sys/lib/libkern/../../../common/lib/libc=
/hash/sha3 -I/usr/src/sys/external/bsd -I/usr/src/sys/external/bsd/common=
/include -I/usr/src/sys/external/bsd/dwc2/dist -I/usr/src/sys/external/bsd/=
libfdt/dist -I/usr/src/sys/external/bsd/acpica/dist/include -I/usr/src/sys/=
external/bsd/libnv/dist -I/usr/src/sys/external/bsd/vchiq/dist -I/usr/src/s=
ys/external/bsd/common/include -DVCOS_VERIFY_BKPTS=3D1 -DUSE_VCHIQ_ARM -D__=
VCCOREVER__=3D0x04000000 -DVCHIQ_ENABLE_DEBUG=3D1 -DVCHIQ_LOG_DEFAULT=3D5 -=
c /usr/src/sys/uvm/uvm_bio.c -o uvm
> _bio.o && /data/current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/a=
arch64--netbsd-gcc -Wno-stack-protector -march=3Darmv8-a+nofp+nosimd -fno=
-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffreestanding -fno-zero-i=
nitialized-in-bss -fno-delete-null-pointer-checks -g -pipe -pipe -fstack=
-usage -Wstack-usage=3D3584 -fno-strict-aliasing -fno-common -Wno-stack-pr=
otector -std=3Dgnu99 -Werror -Wall -Wno-main -Wno-format-zero-length =
-Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wold-style-defini=
tion -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -Wno-unreachable-code -W=
no-pointer-sign -Wno-attributes -Wno-type-limits -Wno-sign-compare -Wno-=
address-of-packed-member -Walloca --sysroot=3D/data/current/evbarm/tre=
e -I. -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/external/bsd/ac=
pica/dist -I/usr/src/sys/../common/lib/libx86emu -I/usr/src/sys/../common/l=
ib/libc/misc -I/usr/src/sys/../common/include -I/usr/src/sys/arch -I/usr/s=
rc/sys -nostdinc -DCOMPAT_UTILS
> -DAARCH64 -DARM_GENERIC_TODR -DFPU_VFP -D__HAVE_PCI_CONF_HOOK -D__HA=
VE_PCI_MSI_MSIX -DCOMPAT_44 -DDIAGNOSTIC -DARMV81_PAN -D_KERNEL -D_KERNE=
L_OPT -std=3Dgnu99 -I/usr/src/sys/lib/libkern/../../../common/lib/libc/quad=
-I/usr/src/sys/lib/libkern/../../../common/lib/libc/string -I/usr/src/sys/=
lib/libkern/../../../common/lib/libc/arch/aarch64/string -I/usr/src/sys/lib=
/libkern/../../../common/lib/libc/arch/aarch64/atomic -I/usr/src/sys/lib/li=
bkern/../../../common/lib/libc/hash/sha3 -I/usr/src/sys/external/bsd -I/u=
sr/src/sys/external/bsd/common/include -I/usr/src/sys/external/bsd/dwc2/dis=
t -I/usr/src/sys/external/bsd/libfdt/dist -I/usr/src/sys/external/bsd/acpic=
a/dist/include -I/usr/src/sys/external/bsd/libnv/dist -I/usr/src/sys/extern=
al/bsd/vchiq/dist -I/usr/src/sys/external/bsd/common/include -DVCOS_VERIFY_=
BKPTS=3D1 -DUSE_VCHIQ_ARM -D__VCCOREVER__=3D0x04000000 -DVCHIQ_ENABLE_DEBUG=
=3D1 -DVCHIQ_LOG_DEFAULT=3D5 -c /usr/src/sys/uvm/uvm_bio.c -o uvm_bio.o &&=
: echo /data/current/evbarm/obj/t
> ooldir-NetBSD-10.99.4-evbarm/bin/nbctfconvert -g -L VERSION -g uvm_bio.o=
&& /data/current/evbarm/obj/tooldir-NetBSD-10.99.4-evbarm/bin/nbctfconver=
t -g -L VERSION -g uvm_bio.o
> *** [uvm_bio.o] Error code 1
>
> nbmake: stopped in /data/current/evbarm/obj/sys/arch/evbarm/compile/GENER=
IC64
> 1 error
>
> nbmake: stopped in /data/current/evbarm/obj/sys/arch/evbarm/compile/GENER=
IC64
>
> ERROR: Failed to make all in "/data/current/evbarm/obj/sys/arch/evbarm/co=
mpile/GENERIC64"
>
> *** BUILD ABORTED ***
>
> >Fix:
> Below change solve the problem.
> I don't know where come from a magic number 3584...
>
> diff --git a/sys/conf/Makefile.kern.inc b/sys/conf/Makefile.kern.inc
> index 210c1739b2..4b53913b7c 100644
> --- a/sys/conf/Makefile.kern.inc
> +++ b/sys/conf/Makefile.kern.inc
> @@ -113,7 +113,7 @@ AFLAGS+=3D -D_LOCORE -Wa,--fatal-warnings
> # find . -name \*.su | xargs awk '{ printf "%6d %s\n", $2, $1 }' | so=
rt -n
> .if ${MACHINE} !=3D "vax"
> # GCC/vax 8.4 does not support -fstack-usage.
> -CFLAGS+=3D ${${ACTIVE_CC} =3D=3D "gcc":? -fstack-usage -Wstack-usa=
ge=3D3584 :}
> +#CFLAGS+=3D ${${ACTIVE_CC} =3D=3D "gcc":? -fstack-usage -Wstack-usa=
ge=3D3584 :}
> .endif
> CWARNFLAGS+=3D -Walloca
>
>
> >Unformatted:
>
>
>
From: Valery Ushakov <uwe@stderr.spb.ru>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Mon, 10 Jul 2023 12:44:09 +0300
> Where did you set ``-march=armv8-a+nofp+nosimd''? For this purpose,
> you should use CPUFLAGS; see mk.conf(5) for more details. In this
> case, standard optimization flags seem to be override by this MD
> flag.
I think it's exactly this.
There's a bug in the kernel makefiles that is so old it became a
feature. share/mk uses COPTS as "additional flags to the compiler",
but the kernel makefiles use COPTS as its own private variable not
intended to be set by the user and conf/Makefile.kern.inc has
DEFCOPTS?= -O2
COPTS?= ${DEFCOPTS}
DBG= # might contain unwanted -Ofoo
So when people habitually set COPTS they use -O2 and their kernels
stop fitting the boot media, etc...
-uwe
From: Takahiro Kambe <taca@back-street.net>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Mon, 10 Jul 2023 18:56:28 +0900 (JST)
In message <20230710094502.706F41A923E@mollari.NetBSD.org>
on Mon, 10 Jul 2023 09:45:02 +0000 (UTC),
Valery Ushakov <uwe@stderr.spb.ru> wrote:
> > Where did you set ``-march=armv8-a+nofp+nosimd''? For this purpose,
> > you should use CPUFLAGS; see mk.conf(5) for more details. In this
> > case, standard optimization flags seem to be override by this MD
> > flag.
I have never changed machine dependent compiler options.
> There's a bug in the kernel makefiles that is so old it became a
> feature. share/mk uses COPTS as "additional flags to the compiler",
> but the kernel makefiles use COPTS as its own private variable not
> intended to be set by the user and conf/Makefile.kern.inc has
>
> DEFCOPTS?= -O2
> COPTS?= ${DEFCOPTS}
> DBG= # might contain unwanted -Ofoo
>
> So when people habitually set COPTS they use -O2 and their kernels
> stop fitting the boot media, etc...
Oh, that's my case.
My old /etc/mk.conf contains:
COPTS+= -pipe
Removing this line solve the problem.
--
Takahiro Kambe <taca@back-street.net>
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/57514: Self build fails on evbarm-aarch64
Date: Mon, 10 Jul 2023 13:07:06 +0200
On Mon, Jul 10, 2023 at 10:00:03AM +0000, Takahiro Kambe wrote:
> My old /etc/mk.conf contains:
>
> COPTS+= -pipe
>
> Removing this line solve the problem.
Try this instead:
.if ! ${CFLAGS:M-pipe}
CFLAGS+= -pipe
.endif
(but I'm not sure that is totally safe either)
Martin
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2023
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.