What kernel version is expected to be used when doing 'make extract'? Running against
current upstream on Fedora 42 with gcc 15.2.1, I've got:
$ make extract TARGETOS=linux SOURCEDIR=/home/antipov/projects/kernel/sources/upstream
Makefile:31: run command via tools/syz-env for best compatibility, see:
Makefile:32:
https://github.com/google/syzkaller/blob/master/docs/contributing.md#using-syz-env
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X
github.com/google/syzkaller/prog.GitRevision=b6605ba8b96835063c5eb766c38d27fac98b84d4 -X
github.com/google/syzkaller/prog.gitRevisionDate=20251013-102005" -o bin/syz-extract ./sys/syz-extract
bin/syz-extract -build -os=linux -sourcedir=/home/antipov/projects/kernel/sources/upstream
generating linux/386...
acpi_thermal_rel.txt: failed to run compiler: x86_64-linux-gnu-gcc [-nostdinc -w -fmessage-length=0 -O3 -I. -D__KERNEL__ -DKBUILD_MODNAME="-" -DKBUILD_MODFILE="-" -D__LINUX_ARM_ARCH__=7
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include -I/tmp/syzkaller-kernel-build4095482670/arch/x86/include/generated/uapi
-I/tmp/syzkaller-kernel-build4095482670/arch/x86/include/generated -I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/asm/mach-malta
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/asm/mach-generic -I/tmp/syzkaller-kernel-build4095482670/include -I/home/antipov/projects/kernel/sources/upstream/include
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/uapi -I/home/antipov/projects/kernel/sources/upstream/include/uapi -I/tmp/syzkaller-kernel-build4095482670/include/generated/uapi
-I/home/antipov/projects/kernel/sources/upstream -I/home/antipov/projects/kernel/sources/upstream/include/linux -I/tmp/syzkaller-kernel-build4095482670/syzkaller -include
/home/antipov/projects/kernel/sources/upstream/include/linux/kconfig.h -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wframe-larger-than=16384]
exit status 1
In file included from /home/antipov/projects/kernel/sources/upstream/include/uapi/linux/posix_types.h:5,
from /home/antipov/projects/kernel/sources/upstream/include/uapi/linux/types.h:14,
from /home/antipov/projects/kernel/sources/upstream/include/linux/types.h:6,
from /home/antipov/projects/kernel/sources/upstream/include/linux/kasan-checks.h:5,
from /home/antipov/projects/kernel/sources/upstream/include/asm-generic/rwonce.h:26,
from /tmp/syzkaller-kernel-build4095482670/arch/x86/include/generated/asm/rwonce.h:1,
from /home/antipov/projects/kernel/sources/upstream/include/linux/compiler.h:382,
from /home/antipov/projects/kernel/sources/upstream/include/linux/build_bug.h:5,
from /home/antipov/projects/kernel/sources/upstream/include/linux/bits.h:30,
from /home/antipov/projects/kernel/sources/upstream/include/linux/ioport.h:13,
from /home/antipov/projects/kernel/sources/upstream/include/linux/acpi.h:12,
from <stdin>:7:
/home/antipov/projects/kernel/sources/upstream/include/linux/stddef.h:11:9: error: cannot use keyword ‘false’ as enumeration constant
11 | false = 0,
| ^~~~~
/home/antipov/projects/kernel/sources/upstream/include/linux/stddef.h:11:9: note: ‘false’ is a keyword with ‘-std=c23’ onwards
/home/antipov/projects/kernel/sources/upstream/include/linux/types.h:35:33: error: ‘bool’ cannot be defined via ‘typedef’
35 | typedef _Bool bool;
| ^~~~
/home/antipov/projects/kernel/sources/upstream/include/linux/types.h:35:33: note: ‘bool’ is a keyword with ‘-std=c23’ onwards
This is (almost) obvious since the kernel's Makefile explicitly requires '-std=gnu11'. So, after
diff --git a/sys/syz-extract/linux.go b/sys/syz-extract/linux.go
index 28354dcbb..a030b4a14 100644
--- a/sys/syz-extract/linux.go
+++ b/sys/syz-extract/linux.go
@@ -134,6 +134,7 @@ func (*linux) processFile(arch *Arch, info *compiler.ConstInfo) (map[string]uint
args := []string{
// This makes the build completely hermetic, only kernel headers are used.
"-nostdinc",
+ "-std=gnu11",
"-w", "-fmessage-length=0",
"-O3", // required to get expected values for some __builtin_constant_p
"-I.",
the next thing is:
$ make extract TARGETOS=linux SOURCEDIR=/home/antipov/projects/kernel/sources/upstream
Makefile:31: run command via tools/syz-env for best compatibility, see:
Makefile:32:
https://github.com/google/syzkaller/blob/master/docs/contributing.md#using-syz-env
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X
github.com/google/syzkaller/prog.GitRevision=b6605ba8b96835063c5eb766c38d27fac98b84d4+ -X
github.com/google/syzkaller/prog.gitRevisionDate=20251013-102005" -o bin/syz-extract ./sys/syz-extract
bin/syz-extract -build -os=linux -sourcedir=/home/antipov/projects/kernel/sources/upstream
generating linux/386...
sys.txt: failed to run compiler: x86_64-linux-gnu-gcc [-nostdinc -std=gnu11 -w -fmessage-length=0 -O3 -I. -D__KERNEL__ -DKBUILD_MODNAME="-" -DKBUILD_MODFILE="-" -D__LINUX_ARM_ARCH__=7
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include -I/tmp/syzkaller-kernel-build696475947/arch/x86/include/generated/uapi
-I/tmp/syzkaller-kernel-build696475947/arch/x86/include/generated -I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/asm/mach-malta
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/asm/mach-generic -I/tmp/syzkaller-kernel-build696475947/include -I/home/antipov/projects/kernel/sources/upstream/include
-I/home/antipov/projects/kernel/sources/upstream/arch/x86/include/uapi -I/home/antipov/projects/kernel/sources/upstream/include/uapi -I/tmp/syzkaller-kernel-build696475947/include/generated/uapi
-I/home/antipov/projects/kernel/sources/upstream -I/home/antipov/projects/kernel/sources/upstream/include/linux -I/tmp/syzkaller-kernel-build696475947/syzkaller -include
/home/antipov/projects/kernel/sources/upstream/include/linux/kconfig.h -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wframe-larger-than=16384]
exit status 1
In file included from <stdin>:93:
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h: In function ‘ovl_do_getxattr’:
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h:283:15: error: implicit declaration of function ‘vfs_getxattr’; did you mean ‘vfs_getattr’? [-Wimplicit-function-declaration]
283 | err = vfs_getxattr(mnt_idmap(path->mnt), path->dentry,
| ^~~~~~~~~~~~
| vfs_getattr
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h: In function ‘ovl_do_setxattr’:
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h:317:19: error: implicit declaration of function ‘vfs_setxattr’; did you mean ‘vfs_getattr’? [-Wimplicit-function-declaration]
317 | int err = vfs_setxattr(ovl_upper_mnt_idmap(ofs), dentry, name,
| ^~~~~~~~~~~~
| vfs_getattr
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h: In function ‘ovl_do_removexattr’:
/home/antipov/projects/kernel/sources/upstream/fs/overlayfs/overlayfs.h:335:19: error: implicit declaration of function ‘vfs_removexattr’; did you mean ‘vfs_remove_acl’? [-Wimplicit-function-declaration]
335 | int err = vfs_removexattr(ovl_upper_mnt_idmap(ofs), dentry, name);
| ^~~~~~~~~~~~~~~
| vfs_remove_acl
...
Dmitry