aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-01-05 14:16:07 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-01-09 20:20:48 +0100
commit94b38efc1d80ae2854d29af44c6d5918a2cb40cd (patch)
tree401943d29621eeb485b016e74e3062178091e12a /sys
parentb5aa8b45061e01c79cf78fe3a634abf5dc6d3f46 (diff)
sys: allow to specify number of pages for vma type
Allows to write vma[4] or vma[5-10] to specify desired number of pages.
Diffstat (limited to 'sys')
-rw-r--r--sys/README.md3
-rw-r--r--sys/decl.go2
-rw-r--r--sys/test.txt4
3 files changed, 8 insertions, 1 deletions
diff --git a/sys/README.md b/sys/README.md
index 259a1c1f5..6e2ecb75c 100644
--- a/sys/README.md
+++ b/sys/README.md
@@ -54,7 +54,8 @@ rest of the type-options are type-specific:
argname of the object
"bytesize": similar to "len", but always denotes the size in bytes, type-options:
argname of the object
- "vma": a pointer to a set of pages (used as input for mmap/munmap/mremap/madvise)
+ "vma": a pointer to a set of pages (used as input for mmap/munmap/mremap/madvise), type-options:
+ optional number of pages (e.g. vma[7]), or a range of pages (e.g. vma[2-4])
"proc": per process int (see description below), type-options:
underlying type, value range start, how many values per process
```
diff --git a/sys/decl.go b/sys/decl.go
index 63fca61b7..322158b92 100644
--- a/sys/decl.go
+++ b/sys/decl.go
@@ -143,6 +143,8 @@ func (t *BufferType) Align() uintptr {
type VmaType struct {
TypeCommon
+ RangeBegin int64 // in pages
+ RangeEnd int64
}
func (t *VmaType) Size() uintptr {
diff --git a/sys/test.txt b/sys/test.txt
index 2c0c489a1..b48ca8f5f 100644
--- a/sys/test.txt
+++ b/sys/test.txt
@@ -199,6 +199,10 @@ syz_end_var_struct {
f2 flags[syz_end_flags, int64be]
} [packed]
+# Vma type.
+
+syz_test$vma0(v0 vma, l0 len[v0], v1 vma[5], l1 len[v1], v2 vma[7:9], l2 len[v2])
+
# Regression tests.
syz_test$regression0(a0 ptr[inout, syz_regression0_struct])