diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-09-14 12:14:52 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-09-15 16:02:37 +0200 |
| commit | 75ddf7ab901e1ecef20d30f276b9360363b1fee6 (patch) | |
| tree | fdd54914bd7c12fc487d8d1b0c3d819d268e6246 /sys/syz-sysgen | |
| parent | 487aa0d5371e9b020c69d2f9e4a955ed8e5b2555 (diff) | |
sys/syz-extract: switch to consolidated target info in sys package
Diffstat (limited to 'sys/syz-sysgen')
| -rw-r--r-- | sys/syz-sysgen/sysgen.go | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go index 920547297..ce88cb539 100644 --- a/sys/syz-sysgen/sysgen.go +++ b/sys/syz-sysgen/sysgen.go @@ -41,7 +41,6 @@ func main() { } type Job struct { - Arch string Target *sys.Target OK bool Errors []string @@ -49,14 +48,13 @@ func main() { ArchData []byte } var jobs []*Job - for arch, target := range archs { + for _, target := range archs { jobs = append(jobs, &Job{ - Arch: arch, Target: target, }) } sort.Slice(jobs, func(i, j int) bool { - return jobs[i].Arch < jobs[j].Arch + return jobs[i].Target.Arch < jobs[j].Target.Arch }) var wg sync.WaitGroup wg.Add(len(jobs)) @@ -68,7 +66,7 @@ func main() { eh := func(pos ast.Pos, msg string) { job.Errors = append(job.Errors, fmt.Sprintf("%v: %v\n", pos, msg)) } - consts := compiler.DeserializeConstsGlob(filepath.Join("sys", OS, "*_"+job.Arch+"\\.const"), eh) + consts := compiler.DeserializeConstsGlob(filepath.Join("sys", OS, "*_"+job.Target.Arch+"\\.const"), eh) if consts == nil { return } @@ -78,9 +76,9 @@ func main() { } job.Unsupported = prog.Unsupported - sysFile := filepath.Join("sys", OS, job.Arch+".go") + sysFile := filepath.Join("sys", OS, job.Target.Arch+".go") out := new(bytes.Buffer) - generate(OS, job.Arch, job.Target, prog, consts, out) + generate(job.Target, prog, consts, out) writeSource(sysFile, out.Bytes()) job.ArchData = generateExecutorSyscalls(job.Target, prog.Syscalls) @@ -92,7 +90,7 @@ func main() { var syscallArchs [][]byte unsupported := make(map[string]int) for _, job := range jobs { - fmt.Printf("generating %v/%v...\n", OS, job.Arch) + fmt.Printf("generating %v/%v...\n", job.Target.OS, job.Target.Arch) for _, msg := range job.Errors { fmt.Print(msg) } @@ -128,25 +126,25 @@ func main() { } } -func generate(OS, arch string, target *sys.Target, prg *compiler.Prog, consts map[string]uint64, out io.Writer) { +func generate(target *sys.Target, prg *compiler.Prog, consts map[string]uint64, out io.Writer) { fmt.Fprintf(out, "// AUTOGENERATED FILE\n") - fmt.Fprintf(out, "package %v\n\n", OS) + fmt.Fprintf(out, "package %v\n\n", target.OS) fmt.Fprintf(out, "import . \"github.com/google/syzkaller/prog\"\n\n") fmt.Fprintf(out, "func init() {\n") fmt.Fprintf(out, "\tinitArch(syscalls_%v, resources_%v, structDescs_%v, consts_%v, %q, %v)\n", - arch, arch, arch, arch, arch, target.PtrSize) + target.Arch, target.Arch, target.Arch, target.Arch, target.Arch, target.PtrSize) fmt.Fprintf(out, "}\n\n") - fmt.Fprintf(out, "var resources_%v = ", arch) + fmt.Fprintf(out, "var resources_%v = ", target.Arch) serializer.Write(out, prg.Resources) fmt.Fprintf(out, "\n\n") - fmt.Fprintf(out, "var structDescs_%v = ", arch) + fmt.Fprintf(out, "var structDescs_%v = ", target.Arch) serializer.Write(out, prg.StructDescs) fmt.Fprintf(out, "\n\n") - fmt.Fprintf(out, "var syscalls_%v = ", arch) + fmt.Fprintf(out, "var syscalls_%v = ", target.Arch) serializer.Write(out, prg.Syscalls) fmt.Fprintf(out, "\n\n") @@ -157,7 +155,7 @@ func generate(OS, arch string, target *sys.Target, prg *compiler.Prog, consts ma sort.Slice(constArr, func(i, j int) bool { return constArr[i].Name < constArr[j].Name }) - fmt.Fprintf(out, "var consts_%v = ", arch) + fmt.Fprintf(out, "var consts_%v = ", target.Arch) serializer.Write(out, constArr) fmt.Fprintf(out, "\n") } |
