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:

NetBSD Home
NetBSD PR Database Search

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