aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/kconfig
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/kconfig')
-rw-r--r--pkg/kconfig/fuzz.go6
-rw-r--r--pkg/kconfig/kconfig.go12
-rw-r--r--pkg/kconfig/kconfig_test.go5
-rw-r--r--pkg/kconfig/minimize_test.go4
4 files changed, 20 insertions, 7 deletions
diff --git a/pkg/kconfig/fuzz.go b/pkg/kconfig/fuzz.go
index 953e750a5..554ad8afd 100644
--- a/pkg/kconfig/fuzz.go
+++ b/pkg/kconfig/fuzz.go
@@ -3,8 +3,12 @@
package kconfig
+import (
+ "github.com/google/syzkaller/sys/targets"
+)
+
func FuzzParseKConfig(data []byte) int {
- ParseData(data, "kconfig")
+ ParseData(targets.Get("linux", "amd64"), data, "kconfig")
return 0
}
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)
}
diff --git a/pkg/kconfig/kconfig_test.go b/pkg/kconfig/kconfig_test.go
index e3bdd8668..994f1856f 100644
--- a/pkg/kconfig/kconfig_test.go
+++ b/pkg/kconfig/kconfig_test.go
@@ -6,6 +6,8 @@ package kconfig
import (
"fmt"
"testing"
+
+ "github.com/google/syzkaller/sys/targets"
)
func TestParseKConfig(t *testing.T) {
@@ -21,9 +23,10 @@ config FOO
`,
},
}
+ target := targets.Get("linux", "amd64")
for i, test := range tests {
t.Run(fmt.Sprint(i), func(t *testing.T) {
- kconf, err := ParseData([]byte(test.in), "Kconfig")
+ kconf, err := ParseData(target, []byte(test.in), "Kconfig")
if err != nil {
t.Fatal(err)
}
diff --git a/pkg/kconfig/minimize_test.go b/pkg/kconfig/minimize_test.go
index 877df89b5..24738ebeb 100644
--- a/pkg/kconfig/minimize_test.go
+++ b/pkg/kconfig/minimize_test.go
@@ -7,6 +7,8 @@ import (
"bytes"
"fmt"
"testing"
+
+ "github.com/google/syzkaller/sys/targets"
)
func TestMinimize(t *testing.T) {
@@ -62,7 +64,7 @@ CONFIG_C=y
`,
},
}
- kconf, err := ParseData([]byte(kconfig), "kconf")
+ kconf, err := ParseData(targets.Get("linux", "amd64"), []byte(kconfig), "kconf")
if err != nil {
t.Fatal(err)
}