diff options
| author | Joey Jiaojg <joeyjiaojg@gmail.com> | 2021-05-26 19:38:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-26 13:38:04 +0200 |
| commit | 3da9017c17c7d2432c4b76345c4d2efbeedd2935 (patch) | |
| tree | 47e9b10fc542a1f5a1c785027ec6d2fce1a7dfef /prog/target.go | |
| parent | 1f4e6ed95868861aae449b3630e6cfe5a2b96c93 (diff) | |
pkg/compiler: add glob type
* all: add new typename dirname
The current way to check files under sysfs or proc is:
- define a string to represent each file
- open the file
- pass the fd to write / read / close
The issues above are:
- Need to know what file present on target device
- Need to write openat for each file
With dirname added, which will open one file
in the directory randomly and then pass the fd to
write/read/close.
* all: use typename glob to match filename
Fixes #481
Diffstat (limited to 'prog/target.go')
| -rw-r--r-- | prog/target.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/prog/target.go b/prog/target.go index f2eaf6ead..974880c22 100644 --- a/prog/target.go +++ b/prog/target.go @@ -227,6 +227,31 @@ func (target *Target) DefaultChoiceTable() *ChoiceTable { return target.defaultChoiceTable } +func (target *Target) GetGlobs() []string { + var globs []string + ForeachType(target.Syscalls, func(typ Type, ctx TypeCtx) { + switch a := typ.(type) { + case *BufferType: + if a.Kind == BufferGlob && a.SubKind != "" { + globs = append(globs, a.SubKind) + } + } + }) + + return globs +} + +func (target *Target) UpdateGlobFilesForType(globFiles map[string][]string) { + ForeachType(target.Syscalls, func(typ Type, ctx TypeCtx) { + switch a := typ.(type) { + case *BufferType: + if a.Kind == BufferGlob && a.SubKind != "" { + a.Values = globFiles[a.SubKind] + } + } + }) +} + type Gen struct { r *randGen s *state |
