From 7553c19941cd79256162135700218d625917712a Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 14 Oct 2017 18:36:17 +0200 Subject: [PATCH] sys/syz-extract: support akaros --- sys/syz-extract/akaros.go | 34 ++++++++++++++++++++++++++++++++++ sys/syz-extract/extract.go | 1 + sys/syz-extract/fetch.go | 1 + 3 files changed, 36 insertions(+) create mode 100644 sys/syz-extract/akaros.go diff --git a/sys/syz-extract/akaros.go b/sys/syz-extract/akaros.go new file mode 100644 index 00000000..12e6747e --- /dev/null +++ b/sys/syz-extract/akaros.go @@ -0,0 +1,34 @@ +// Copyright 2017 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "path/filepath" + + "github.com/google/syzkaller/pkg/compiler" +) + +type akaros struct{} + +func (*akaros) prepare(sourcedir string, build bool, arches []string) error { + if sourcedir == "" { + return fmt.Errorf("provide path to kernel checkout via -sourcedir flag (or make extract SOURCEDIR)") + } + return nil +} + +func (*akaros) prepareArch(arch *Arch) error { + return nil +} + +func (*akaros) processFile(arch *Arch, info *compiler.ConstInfo) (map[string]uint64, map[string]bool, error) { + dir := arch.sourceDir + syscallH := filepath.Join(dir, "kern", "include", "ros", "bits", "syscall.h") + args := []string{"-fmessage-length=0", "--include", syscallH} + for _, incdir := range info.Incdirs { + args = append(args, "-I"+filepath.Join(dir, incdir)) + } + return extract(info, "gcc", args, "") +} diff --git a/sys/syz-extract/extract.go b/sys/syz-extract/extract.go index 17b4728a..bc82aaf1 100644 --- a/sys/syz-extract/extract.go +++ b/sys/syz-extract/extract.go @@ -52,6 +52,7 @@ type OS interface { } var oses = map[string]OS{ + "akaros": new(akaros), "linux": new(linux), "freebsd": new(freebsd), "android": new(linux), diff --git a/sys/syz-extract/fetch.go b/sys/syz-extract/fetch.go index 6b5b4667..55f1093d 100644 --- a/sys/syz-extract/fetch.go +++ b/sys/syz-extract/fetch.go @@ -36,6 +36,7 @@ func extract(info *compiler.ConstInfo, cc string, args []string, addSource strin } for _, errMsg := range []string{ "error: ‘([a-zA-Z0-9_]+)’ undeclared", + "error: '([a-zA-Z0-9_]+)' undeclared", "note: in expansion of macro ‘([a-zA-Z0-9_]+)’", } { re := regexp.MustCompile(errMsg)