aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2021-09-13 13:30:11 +0000
committerAleksandr Nogikh <wp32pw@gmail.com>2021-09-13 18:50:12 +0200
commit58d094047fb1e61df8402ef854bd3bfb97826d6f (patch)
tree9ec3896b15f66f9d12d9bdbe20966f9d40bcb41f /sys
parent3ce60af85b4644bd7f2d2ef01a7d2b9a41545b76 (diff)
sys: skip kvm const extraction for non i386/amd64
It is impossible to compile a number of definitions in include/uapi/linux/kvm.h for other platforms, which leads to syz-extract failing to update constants. Skip processing of this file for all arches except i386 and amd64. This is a hacky and (hopefully) temporary solution until #2754 is implemented.
Diffstat (limited to 'sys')
-rw-r--r--sys/syz-extract/linux.go12
-rw-r--r--sys/syz-sysgen/sysgen.go4
2 files changed, 9 insertions, 7 deletions
diff --git a/sys/syz-extract/linux.go b/sys/syz-extract/linux.go
index e4f8d1bfe..c72e4b559 100644
--- a/sys/syz-extract/linux.go
+++ b/sys/syz-extract/linux.go
@@ -114,11 +114,13 @@ func (*linux) prepareArch(arch *Arch) error {
func (*linux) processFile(arch *Arch, info *compiler.ConstInfo) (map[string]uint64, map[string]bool, error) {
if strings.HasSuffix(info.File, "_kvm.txt") &&
- (arch.target.Arch == targets.ARM || arch.target.Arch == targets.RiscV64) {
- // Hack: KVM is not supported on ARM anymore. We may want some more official support
- // for marking descriptions arch-specific, but so far this combination is the only
- // one. For riscv64, KVM is not supported yet but might be in the future.
- // Note: syz-sysgen also ignores this file for arm and riscv64.
+ arch.target.Arch != targets.I386 && arch.target.Arch != targets.AMD64 {
+ // Hack:
+ // include/uapi/linux/kvm.h has definitions that can only be compiled under i386
+ // and amd64 (e.g. KVM_SET_CPUID). On all other arches they generate build errors
+ // and therefore this tool is not able to proceed.
+ // TODO: remove this once #2754 is resolved.
+ // Note: syz-sysgen also ignores this file.
return nil, nil, nil
}
headerArch := arch.target.KernelHeaderArch
diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go
index b30a1d060..dd64be8d4 100644
--- a/sys/syz-sysgen/sysgen.go
+++ b/sys/syz-sysgen/sysgen.go
@@ -117,8 +117,8 @@ func main() {
if OS == targets.Linux && (job.Target.Arch == targets.ARM || job.Target.Arch == targets.RiscV64) {
// Hack: KVM is not supported on ARM anymore. On riscv64 it
// is not supported yet but might be in the future.
- // Note: syz-extract also ignores this file for arm and
- // riscv64.
+ // Note: syz-extract ignores this file on all arches except
+ // i386 and amd64 (due to const extraction problems).
top = descriptions.Filter(func(n ast.Node) bool {
pos, _, _ := n.Info()
return !strings.HasSuffix(pos.File, "_kvm.txt")