aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/aflow/action.go6
-rw-r--r--pkg/aflow/flow/repro/repro.go6
-rw-r--r--pkg/aflow/tool/syzlang/descriptions.go21
-rw-r--r--pkg/aflow/tool/syzlang/descriptions_test.go16
4 files changed, 49 insertions, 0 deletions
diff --git a/pkg/aflow/action.go b/pkg/aflow/action.go
index 741758845..2e6f8a0d0 100644
--- a/pkg/aflow/action.go
+++ b/pkg/aflow/action.go
@@ -35,3 +35,9 @@ func (p *pipeline) verify(ctx *verifyContext) {
a.verify(ctx)
}
}
+
+func Provide[T any](value T) Action {
+ return NewFuncAction("provide-var", func(*Context, struct{}) (T, error) {
+ return value, nil
+ })
+}
diff --git a/pkg/aflow/flow/repro/repro.go b/pkg/aflow/flow/repro/repro.go
index a8aba30f6..ea2fd7955 100644
--- a/pkg/aflow/flow/repro/repro.go
+++ b/pkg/aflow/flow/repro/repro.go
@@ -7,6 +7,7 @@ import (
"github.com/google/syzkaller/pkg/aflow"
"github.com/google/syzkaller/pkg/aflow/action/kernel"
"github.com/google/syzkaller/pkg/aflow/ai"
+ "github.com/google/syzkaller/pkg/aflow/tool/syzlang"
)
type ReproInputs struct {
@@ -25,6 +26,7 @@ func init() {
"reproduce a kernel crash and generate a syzlang program",
&aflow.Flow{
Root: aflow.Pipeline(
+ aflow.Provide(struct{ DescriptionFiles []string }{syzlang.DescriptionFiles()}),
kernel.Checkout,
kernel.Build,
&aflow.LLMAgent{
@@ -55,4 +57,8 @@ Bug Title: {{.BugTitle}}
Original Crash Report:
{{.CrashReport}}
+
+The list of existing description files:
+{{range $file := .DescriptionFiles}}{{$file}}
+{{end}}
`
diff --git a/pkg/aflow/tool/syzlang/descriptions.go b/pkg/aflow/tool/syzlang/descriptions.go
new file mode 100644
index 000000000..9af410c3c
--- /dev/null
+++ b/pkg/aflow/tool/syzlang/descriptions.go
@@ -0,0 +1,21 @@
+// Copyright 2026 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package syzlang
+
+import (
+ "github.com/google/syzkaller/sys"
+ "github.com/google/syzkaller/sys/targets"
+)
+
+func DescriptionFiles() []string {
+ entries, err := sys.Files.ReadDir(targets.Linux)
+ if err != nil {
+ panic(err)
+ }
+ var files []string
+ for _, ent := range entries {
+ files = append(files, ent.Name())
+ }
+ return files
+}
diff --git a/pkg/aflow/tool/syzlang/descriptions_test.go b/pkg/aflow/tool/syzlang/descriptions_test.go
new file mode 100644
index 000000000..23ca890e2
--- /dev/null
+++ b/pkg/aflow/tool/syzlang/descriptions_test.go
@@ -0,0 +1,16 @@
+// Copyright 2026 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package syzlang
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestDescriptionFiles(t *testing.T) {
+ files := DescriptionFiles()
+ require.Greater(t, len(files), 50)
+ require.Contains(t, files, "sys.txt")
+}