aboutsummaryrefslogtreecommitdiffstats
path: root/prog
diff options
context:
space:
mode:
authorFlorent Revest <revest@chromium.org>2023-07-05 14:26:23 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-02-01 10:12:21 +0000
commitc40f278e4d854c3b6341ec272dd3eb9b84fcff54 (patch)
tree0bc92397d6480c0f5d15e60f6e861adc3cea7019 /prog
parent818c77dd7818d3c56513a0ef417fd61bb8bb5927 (diff)
sys/syz-sysgen: save flags's possible values
This extends Target to contain a map of possible values for each int flag.
Diffstat (limited to 'prog')
-rw-r--r--prog/target.go7
-rw-r--r--prog/types.go5
2 files changed, 12 insertions, 0 deletions
diff --git a/prog/target.go b/prog/target.go
index 2889b8bf0..be2db51c5 100644
--- a/prog/target.go
+++ b/prog/target.go
@@ -26,6 +26,7 @@ type Target struct {
Syscalls []*Syscall
Resources []*ResourceDesc
Consts []ConstValue
+ Flags []FlagDesc
// MakeDataMmap creates calls that mmaps target data memory range.
MakeDataMmap func() []*Call
@@ -63,6 +64,7 @@ type Target struct {
// Filled by prog package:
SyscallMap map[string]*Syscall
ConstMap map[string]uint64
+ FlagsMap map[string][]string
init sync.Once
initArch func(target *Target)
@@ -167,6 +169,11 @@ func (target *Target) initTarget() {
target.SyscallMap[c.Name] = c
}
+ target.FlagsMap = make(map[string][]string)
+ for _, c := range target.Flags {
+ target.FlagsMap[c.Name] = c.Values
+ }
+
target.populateResourceCtors()
target.resourceCtors = make(map[string][]ResourceCtor)
for _, res := range target.Resources {
diff --git a/prog/types.go b/prog/types.go
index 51f5e0cbe..ce02d2d21 100644
--- a/prog/types.go
+++ b/prog/types.go
@@ -241,6 +241,11 @@ func (t *TypeCommon) Alignment() uint64 {
return t.TypeAlign
}
+type FlagDesc struct {
+ Name string
+ Values []string
+}
+
type ResourceDesc struct {
Name string
Kind []string