aboutsummaryrefslogtreecommitdiffstats
path: root/sys/syz-sysgen
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-09-14 12:14:52 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-09-15 16:02:37 +0200
commit75ddf7ab901e1ecef20d30f276b9360363b1fee6 (patch)
treefdd54914bd7c12fc487d8d1b0c3d819d268e6246 /sys/syz-sysgen
parent487aa0d5371e9b020c69d2f9e4a955ed8e5b2555 (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.go28
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")
}