From 94b38efc1d80ae2854d29af44c6d5918a2cb40cd Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 5 Jan 2017 14:16:07 +0100 Subject: 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. --- sys/README.md | 3 ++- sys/decl.go | 2 ++ sys/test.txt | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'sys') 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]) -- cgit mrf-deployment