From a0c7169a00e97fc53358f90c9d9c6f8fffddf904 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 28 Oct 2020 21:32:41 +0100 Subject: pkg/kconfig: accept target when parsing Kconfig Kconfig depends on the target arch. Add target argument for Kconfig parsing. Resolve $(SRCARCH) properly (previously we always assumed x86_64). --- tools/syz-kconf/kconf.go | 8 +++----- tools/syz-minconfig/minconfig.go | 5 ++++- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'tools') diff --git a/tools/syz-kconf/kconf.go b/tools/syz-kconf/kconf.go index 862e4ff45..e4a68998f 100644 --- a/tools/syz-kconf/kconf.go +++ b/tools/syz-kconf/kconf.go @@ -71,10 +71,6 @@ func main() { failf("failed to checkout %v/%v: %v", inst.Kernel.Repo, inst.Kernel.Tag, err) } } - kconf, err := kconfig.Parse(filepath.Join(*flagSourceDir, "Kconfig")) - if err != nil { - fail(err) - } releaseTag, err := repo.ReleaseTag("HEAD") if err != nil { fail(err) @@ -95,7 +91,6 @@ func main() { ConfigDir: filepath.Dir(*flagConfig), SourceDir: *flagSourceDir, ReleaseTag: releaseTag, - Kconf: kconf, } go func() { if err := ctx.generate(); err != nil { @@ -139,6 +134,9 @@ func (ctx *Context) generate() error { if err := ctx.setTarget(); err != nil { return err } + if ctx.Kconf, err = kconfig.Parse(ctx.Target, filepath.Join(ctx.SourceDir, "Kconfig")); err != nil { + return err + } if err := ctx.setReleaseFeatures(); err != nil { return err } diff --git a/tools/syz-minconfig/minconfig.go b/tools/syz-minconfig/minconfig.go index b68c183eb..91a26cdd1 100644 --- a/tools/syz-minconfig/minconfig.go +++ b/tools/syz-minconfig/minconfig.go @@ -13,9 +13,11 @@ import ( "fmt" "os" "path/filepath" + "runtime" "strings" "github.com/google/syzkaller/pkg/kconfig" + "github.com/google/syzkaller/sys/targets" ) func main() { @@ -24,9 +26,10 @@ func main() { flagBase = flag.String("base", "", "baseline config") flagFull = flag.String("full", "", "full config") flagConfigs = flag.String("configs", "", "comma-separated list of configs for the crash predicate") + flagArch = flag.String("arch", runtime.GOARCH, "kernel arch") ) flag.Parse() - kconf, err := kconfig.Parse(filepath.Join(*flagSourceDir, "Kconfig")) + kconf, err := kconfig.Parse(targets.Get("linux", *flagArch), filepath.Join(*flagSourceDir, "Kconfig")) if err != nil { failf("%v", err) } -- cgit mrf-deployment