github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/tools/kfuzztest-gen/main.go (about) 1 // Copyright 2025 syzkaller project authors. All rights reserved. 2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 // Small tool for systematically outputting syzlang descriptions of KFuzzTest 5 // of a vmlinux binary. 6 package main 7 8 import ( 9 "fmt" 10 "io" 11 "os" 12 13 "github.com/google/syzkaller/pkg/kfuzztest" 14 "github.com/google/syzkaller/pkg/log" 15 "github.com/google/syzkaller/pkg/tool" 16 ) 17 18 func main() { 19 usage := func(w io.Writer) { 20 fmt.Fprintln(w, "usage: ./kfuzztest-gen /path/to/vmlinux") 21 } 22 if len(os.Args) != 2 { 23 usage(os.Stderr) 24 os.Exit(1) 25 } 26 27 extractor, err := kfuzztest.NewExtractor(os.Args[1]) 28 if err != nil { 29 tool.Fail(err) 30 } 31 defer extractor.Close() 32 33 log.Log(0, "extracting ELF data") 34 res, err := extractor.ExtractAll() 35 if err != nil { 36 tool.Fail(err) 37 } 38 log.Log(0, res.String()) 39 40 builder := kfuzztest.NewBuilder(res.Funcs, res.Structs, res.Constraints, res.Annotations) 41 desc, err := builder.EmitSyzlangDescription() 42 if err != nil { 43 tool.Fail(err) 44 } 45 log.Logf(0, "emitting syzlang description") 46 fmt.Println(desc) 47 }