cc -O2 -pipe -fno-common -I/work/src.svn/stand/i386/btx/lib -nostdinc -I/work/obj/work/src.svn/amd64.amd64/stand/libsa32 -I/work/src.svn/stand/libsa -D_STANDALONE -I/work/src.svn/sys -Ddouble=jagged-little-pill -Dfloat=floaty-mcfloatface -ffunction-sections -fdata-sections -DLOADER_GELI_SUPPORT -I/work/src.svn/stand/libsa/geli -DLOADER_DISK_SUPPORT -m32 -ffreestanding -mno-mmx -mno-sse -mno-avx -mno-avx2 -msoft-float -march=i386 -mno-relax -I. -Iinclude -DBOOTPROG=\"zfsboot\" -O1 -DBOOT2 -DLOADER_GPT_SUPPORT -DLOADER_MBR_SUPPORT -DLOADER_ZFS_SUPPORT -DLOADER_UFS_SUPPORT -DSIOPRT=0x3f8 -DSIOFMT=0x3 -DSIOSPD=9600 -I/work/src.svn/stand/common -I/work/src.svn/stand/i386/common -I/work/src.svn/stand/i386/libi386 -I/work/src.svn/stand/libsa/zfs -I/work/src.svn/sys/crypto/skein -I/work/src.svn/sys/cddl/boot/zfs -I/work/src.svn/sys/contrib/openzfs/include -I/work/src.svn/sys/contrib/openzfs/include/os/freebsd/spl -I/work/src.svn/sys/contrib/openzfs/include/os/freebsd/zfs -I/work/src.svn/sys/cddl/contrib/opensolaris/common/lz4 -I/work/src.svn/stand/i386/boot2 -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings -g -MD -MF.depend.zfsboot.o -MTzfsboot.o -std=gnu99 -Wno-format-zero-length -nobuiltininc -idirafter /usr/lib/clang/9.0.1/include -Wsystem-headers -Werror -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses -Oz -Qunused-arguments -c /work/src.svn/stand/i386/zfsboot/zfsboot.c -o zfsboot.o /work/src.svn/stand/i386/zfsboot/zfsboot.c:165:1: error: no previous prototype for function 'main' [-Werror,-Wmissing-prototypes] main(void) ^ /work/src.svn/stand/i386/zfsboot/zfsboot.c:164:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int ^ static 1 error generated. *** Error code 1 Stop. make: stopped in /work/src.svn/stand/i386/zfsboot I'd suggest to add the main() declaration much like it's in gptboot.
Revision: 367699
# cat /etc/src.conf WITHOUT_ATM=ok WITH_BSD_GREP=ok WITHOUT_CROSS_COMPILER=ok WITH_CTF=ok WITHOUT_DMAGENT=ok WITH_EXTRA_TCP_STACKS=ok WITHOUT_FLOPPY=ok WITHOUT_GNU_DIFF=ok WITHOUT_GNU_GREP=ok WITHOUT_LIB32=ok WITHOUT_LLVM_TARGET_ALL=ok WITH_LOADER_LUA=ok WITHOUT_MAIL=ok WITHOUT_REPRODUCIBLE_BUILD=ok # cat /etc/make.conf MALLOC_PRODUCTION=true
what compiler do you have? because I do not get this error: root@freebsd-2:/usr/src/stand/i386/zfsboot # make cc -O2 -pipe -fno-common -I/usr/src/stand/i386/btx/lib -nostdinc -I/usr/obj/usr/src/amd64.amd64/stand/libsa32 -I/usr/src/stand/libsa -D_STANDALONE -I/usr/src/sys -Ddouble=jagged-little-pill -Dfloat=floaty-mcfloatface -ffunction-sections -fdata-sections -DLOADER_GELI_SUPPORT -I/usr/src/stand/libsa/geli -DLOADER_DISK_SUPPORT -m32 -ffreestanding -mno-mmx -mno-sse -mno-avx -mno-avx2 -msoft-float -march=i386 -mno-relax -I. -Iinclude -DBOOTPROG=\"zfsboot\" -O1 -DBOOT2 -DLOADER_GPT_SUPPORT -DLOADER_MBR_SUPPORT -DLOADER_ZFS_SUPPORT -DLOADER_UFS_SUPPORT -DSIOPRT=0x3f8 -DSIOFMT=0x3 -DSIOSPD=9600 -I/usr/src/stand/common -I/usr/src/stand/i386/common -I/usr/src/stand/i386/libi386 -I/usr/src/stand/libsa/zfs -I/usr/src/sys/crypto/skein -I/usr/src/sys/cddl/boot/zfs -I/usr/src/sys/contrib/openzfs/include -I/usr/src/sys/contrib/openzfs/include/os/freebsd/spl -I/usr/src/sys/contrib/openzfs/include/os/freebsd/zfs -I/usr/src/sys/cddl/contrib/opensolaris/common/lz4 -I/usr/src/stand/i386/boot2 -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings -g -MD -MF.depend.zfsboot.o -MTzfsboot.o -std=gnu99 -Wno-format-zero-length -Wsystem-headers -Werror -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses -Oz -Qunused-arguments -c /usr/src/stand/i386/zfsboot/zfsboot.c -o zfsboot.o ld -m elf_i386_fbsd -static -N --gc-sections --defsym ORG=0x2000 -T /usr/src/stand/i386/boot.ldscript -o zfsboot.out /usr/obj/usr/src/amd64.amd64/stand/i386/btx/lib/crt0.o zfsboot.o sio.o cons.o bcache.o devopen.o disk.o part.o zfs_cmd.o /usr/obj/usr/src/amd64.amd64/stand/i386/libi386/libi386.a /usr/obj/usr/src/amd64.amd64/stand/libsa32/libsa32.a objcopy -S -O binary zfsboot.out zfsboot.bin btxld -v -E 0x2000 -f bin -b /usr/obj/usr/src/amd64.amd64/stand/i386/btx/btx/btx -l zfsboot.ldr -o zfsboot.ld -P 1 zfsboot.bin kernel: ver=1.02 size=6b0 load=9000 entry=9010 map=16M pgctl=1:1 client: fmt=bin size=27f84 text=0 data=0 bss=0 entry=0 output: fmt=bin size=28634 text=0 data=28634 org=0 entry=0 96716 bytes available dd status=none if=zfsboot.ld of=zfsboot2 bs=262144 conv=sync cat zfsboot1 zfsboot2 > zfsboot root@freebsd-2:/usr/src/stand/i386/zfsboot # cc -v FreeBSD clang version 11.0.0 (git@github.com:llvm/llvm-project.git llvmorg-11.0.0-rc5-0-g60a25202a7d) Target: x86_64-unknown-freebsd13.0 Thread model: posix InstalledDir: /usr/bin root@freebsd-2:/usr/src/stand/i386/zfsboot # Of course we can add this prototype, but I'd like to understand why you have this error and I do not.
I compiled it with a clang dating before Mar 2020.
A commit references this bug: Author: tsoome Date: Sun Nov 15 14:04:27 UTC 2020 New revision: 367710 URL: https://svnweb.freebsd.org/changeset/base/367710 Log: zfsboot: add prototype for main() Some compilers are complaining about missing prototype. PR: 251150 Reported by: markiyan.kushnir@gmail.com Changes: head/stand/i386/zfsboot/zfsboot.c
A commit in branch stable/12 references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=b180a5b75cb95c6316f668b811bfffc071e2325f commit b180a5b75cb95c6316f668b811bfffc071e2325f Author: Toomas Soome <tsoome@FreeBSD.org> AuthorDate: 2020-11-15 14:04:27 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2021-10-08 05:24:28 +0000 zfsboot: add prototype for main() Some compilers are complaining about missing prototype. PR: 251150 (cherry picked from commit fc7cf7241f89a3d3ccc20cb49c5bf61e154b7a1b) stand/i386/zfsboot/zfsboot.c | 2 ++ 1 file changed, 2 insertions(+)