aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/kconfig/kconfig.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-10-28 21:32:41 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-10-29 18:02:20 +0100
commita0c7169a00e97fc53358f90c9d9c6f8fffddf904 (patch)
treea980a4ebb36d73565486e3fb9af7868153f5ac51 /pkg/kconfig/kconfig.go
parent36e8b020cd7e97bc2ca3a306f48d4c62ece8fc34 (diff)
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).
Diffstat (limited to 'pkg/kconfig/kconfig.go')
-rw-r--r--pkg/kconfig/kconfig.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/pkg/kconfig/kconfig.go b/pkg/kconfig/kconfig.go
index a4786711e..40e19b9af 100644
--- a/pkg/kconfig/kconfig.go
+++ b/pkg/kconfig/kconfig.go
@@ -12,6 +12,8 @@ import (
"path/filepath"
"strings"
"sync"
+
+ "github.com/google/syzkaller/sys/targets"
)
// KConfig represents a parsed Kconfig file (including includes).
@@ -107,6 +109,7 @@ func (m *Menu) Prompt() string {
type kconfigParser struct {
*parser
+ target *targets.Target
includes []*parser
stack []*Menu
cur *Menu
@@ -114,17 +117,18 @@ type kconfigParser struct {
helpIdent int
}
-func Parse(file string) (*KConfig, error) {
+func Parse(target *targets.Target, file string) (*KConfig, error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return nil, fmt.Errorf("failed to open Kconfig file %v: %v", file, err)
}
- return ParseData(data, file)
+ return ParseData(target, data, file)
}
-func ParseData(data []byte, file string) (*KConfig, error) {
+func ParseData(target *targets.Target, data []byte, file string) (*KConfig, error) {
kp := &kconfigParser{
parser: newParser(data, file),
+ target: target,
baseDir: filepath.Dir(file),
}
kp.parseFile()
@@ -403,5 +407,5 @@ func (kp *kconfigParser) parseDefaultValue() {
}
func (kp *kconfigParser) expandString(str string) string {
- return strings.Replace(str, "$(SRCARCH)", "x86", -1)
+ return strings.Replace(str, "$(SRCARCH)", kp.target.KernelHeaderArch, -1)
}