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). --- pkg/bisect/bisect.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'pkg/bisect') diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go index 9360bbab1..129a6686e 100644 --- a/pkg/bisect/bisect.go +++ b/pkg/bisect/bisect.go @@ -16,6 +16,7 @@ import ( "github.com/google/syzkaller/pkg/osutil" "github.com/google/syzkaller/pkg/report" "github.com/google/syzkaller/pkg/vcs" + "github.com/google/syzkaller/sys/targets" ) type Config struct { @@ -62,6 +63,7 @@ type ReproConfig struct { type env struct { cfg *Config + target *targets.Target repo vcs.Repo bisecter vcs.Bisecter minimizer vcs.ConfigMinimizer @@ -132,8 +134,13 @@ func runImpl(cfg *Config, repo vcs.Repo, inst instance.Env) (*Result, error) { if !ok && len(cfg.Kernel.BaselineConfig) != 0 { return nil, fmt.Errorf("config minimization is not implemented for %v", cfg.Manager.TargetOS) } + target := targets.Get(cfg.Manager.TargetOS, cfg.Manager.TargetVMArch) + if target == nil { + return nil, fmt.Errorf("unknown target %v/%v", cfg.Manager.TargetOS, cfg.Manager.TargetVMArch) + } env := &env{ cfg: cfg, + target: target, repo: repo, bisecter: bisecter, minimizer: minimizer, @@ -298,7 +305,7 @@ func (env *env) minimizeConfig() (*testResult, error) { testResults[hash.Hash(test)] = testRes return testRes.verdict, err } - minConfig, err := env.minimizer.Minimize(env.cfg.Kernel.Config, + minConfig, err := env.minimizer.Minimize(env.target, env.cfg.Kernel.Config, env.cfg.Kernel.BaselineConfig, env.cfg.Trace, predMinimize) if err != nil { return nil, err -- cgit mrf-deployment