blob: d03e35def0be54399aa6c6d10bfaddf2ac6758d6 [file] [log] [blame]
# Copyright 2018 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.
meta noextract
meta arches["32_shmem", "32_fork_shmem", "64", "64_fork"]
foo_0(a int8)
foo_1(a int8[C1:C2])
foo_2(a ptr[out, array[int32]])
foo_3(a union_arg)
foo_4() r0
foo_5(a int8['a':'z'])
foo_6(a int8[-20:-10])
foo_7(a int8[-20:20])
foo_8(a ptr[in, strings])
foo_9(a ptr[out, ptr[in, string]])
foo_10(a ptr[out, buffer[in]])
foo_11(a int64[1:100, 2])
foo_12(a int64[0:-1, 0x1000])
foo_13() (disabled)
foo_14() r0 (timeout[100])
foo_15() r0 (disabled, timeout[C1], prog_timeout[C2])
resource r0[intptr]
union_arg [
f1 int8
f2 int64
f3 ptr[in, int32]
f4 r0
f5 const[1, intptr]
f6 flags[int_flags, int32]
f7 proc[0, 1, int16]
]
strings {
f1 string
f2 string["foo"]
f3 string["foo", 10]
f4 string[string_flags1, 10]
f5 stringnoz
f6 stringnoz["foo"]
f7 string[""]
f8 string["", 10]
f9 stringnoz[""]
f11 stringnoz[string_flags1]
f12 string[string_flags2]
f13 stringnoz[string_flags2]
f14 string[`abcdef`, 4]
f15 string[string_flags3, 4]
} [packed]
string_flags1 = "foo", "barbaz"
string_flags2 = ""
string_flags3 = "ab", `010203`, `de`
int_flags = 0, 1, 0xabc, 'x', -11
_ = 1, 2
_ = C1, C2
# Proc type.
proc_struct1 {
f1 proc[C0, 8, int8]
}
foo_proc1(a ptr[in, proc_struct1])
# Len/bytesize types.
type len_templ1[DATA1, DATA2] {
data DATA1
inner len_temp2[DATA2]
}
type len_temp2[DATA] {
data DATA
len len[len_templ1, int8]
}
foo_len_templ(a ptr[in, len_templ1[int8, int16]])
foo_len_var0(a ptr[in, array[string]], b len[a])
foo_len_var1(a ptr[in, array[string]], b ptr[in, len[a, int32]])
len_expr1 {
f11 len_expr2
f12 bytesize[syscall:b, int32]
}
len_expr2 {
f21 len_expr3
f22 len_expr4
f23 ptr[in, len_expr4]
f24 ptr[in, ptr[in, len_expr4]]
f25 len[f21:f31, int32]
}
len_expr3 {
f31 int32
f32 bytesize[len_expr2:f21, int32]
f33 bytesize[len_expr2:f22:f41, int32]
f34 bytesize[len_expr1:f11:f22:f41, int32]
f35 bytesize[len_expr2:f23:f41, int32]
f36 bytesize[len_expr2:f24:f41, int32]
f37 offsetof[f32, int32]
f38 offsetof[len_expr2:f21, int32]
}
len_expr4 {
f41 int32
}
foo_len_expr(a ptr[in, len_expr1], b ptr[in, array[int8, 3]])
# Pointer type.
foo_ptr(a ptr[in, int64])
foo_ptr64(a ptr64[in, int64])
foo_vma(a vma)
foo_vma64(a vma64)
# Void type.
void0 {
f void
}
void1 {
f1 void
f2 int8
}
void2 {
f1 void
f2 int8
}
void3 [
f1 void
f2 int8
]
void4 [
f1 void
f2 int8
] [varlen]
void5 {
f1 void
f2 void
}
struct_with_void0 {
f1 int8
f2 array[array[void]]
f3 int64
}
struct_with_void1 {
f1 int8
f2 array[void5]
f3 int64
f4 optional[int8]
}
foo_void0(a ptr[in, void0])
foo_void1(a ptr[in, void1])
foo_void2(a ptr[in, void2])
foo_void3(a ptr[in, void3])
foo_void4(a ptr[in, void4])
foo_void5(a ptr[in, void5])
foo_void6(a ptr[in, struct_with_void0])
foo_void7(a ptr[in, struct_with_void1])
foo_void8(a ptr[in, void])
# Bitfields.
bitfield0 {
f1 int8:1
f2 int8:2
f3 int16:8[-127:0]
f4 int16:8[0:255]
f5 int64:64[-1:1]
}
foo_bitfield0(a ptr[in, bitfield0])
# Type templates.
type type0 int8
type templ0[A, B] const[A, B]
type templ2[STR] string[STR]
type type3 templ2["a"]
type templ_struct0[A, B] {
len len[parent, int16]
typ const[A, int16]
data B
} [align[4]]
type templ_struct1[C] {
f1 const[C, int8]
f2 int8[0:C]
}
union_with_templ_struct [
f1 templ_struct0[C1, type0]
f2 templ_struct0[C2, struct0]
] [varlen]
struct0 {
f1 int8
f2 int16
}
type templ_base0[TYPE, CONST] {
f1 TYPE
f2 const[CONST, int32]
}
type templ_base1[TYPE, CONST] {
f2 const[CONST, int8]
f1 TYPE
}
type templ_templ[TMPL, CONST] {
f1 TMPL[int8, CONST]
f2 TMPL[int32, 0]
}
templ_templ_use {
f1 templ_templ[templ_base0, 0]
f2 templ_templ[templ_base1, 1]
}
type templ_struct2[A] templ_struct0[A, int8]
type templ_struct3 templ_struct2[C1]
type templ_struct4 templ_struct3
type templ_struct5 templ_struct0[C1, templ_struct0[C2, int8]]
type templ_struct6 templ_struct0[C1, templ_struct2[C2]]
type templ_union union_with_templ_struct
type templ_base3[BASE] BASE
type templ_base4[BASE] const[0, BASE]
type templ_base5[VAL, BASE] const[VAL, BASE]
foo_templ0(a templ0[42, int8])
foo_templ1(a ptr[in, templ_struct0[C2, int8]])
foo_templ2(a ptr[in, union_with_templ_struct])
foo_templ3(a ptr[in, templ_struct1[1]], b ptr[in, templ_struct1[2]])
foo_templ4(a ptr[in, templ_struct1[3]])
foo_templ5(a ptr[in, templ_struct1[3]])
foo_templ6(a ptr[in, templ_struct4])
foo_templ7(a ptr[in, templ_struct5], b ptr[in, templ_struct6], c ptr[in, templ_union], d ptr[in, type3])
foo_templ8(a ptr[in, templ_templ_use])
foo_templ9(a ptr[in, templ_base3[int64]])
foo_templ10(a ptr[in, templ_base4[int8]])
foo_templ11(a ptr[in, templ_base5[42, int8]])
foo_glob0(a ptr[in, glob["/sys/"]])
foo_glob1(a ptr[in, glob["/sys/**/*"]])
# Structs.
s0 {
f1 int8
} [size[64]]
s1 {
f1 int8
} [size[C2]]
s2 {
f1 int8
f2 s3
} [size[101]]
s3 {
f1 int8
} [size[100]]
s4 {
f1 fmt[hex, int32]
f2 int8
} [size[19]]
s5 {
f_in0 int32 (in)
f_in1 int32[0:1] (in)
f_out int32 (out)
f_inout0 int32 (inout)
f_inout1 int32[0:1] (inout)
}
s6 {
f0 int32
f1 r0
f2 int32 (out_overlay)
f3 r0
}
foo_s0(a ptr[in, s0], b ptr[in, s1], c ptr[in, s2], d ptr[in, s4], e ptr[in, s5], f ptr[in, s6])
# Unions.
u0 [
f1 int32
]
foo_u0(a ptr[in, u0])
# fmt
foo_fmt0(a ptr[in, fmt[dec, int32[1:10]]])
foo_fmt1(a ptr[in, fmt[hex, flags[int_flags]]])
foo_fmt2(a ptr[in, fmt[oct, len[b]]], b ptr[in, array[int8]])
foo_fmt3(a ptr[in, fmt[dec, proc[10, 20]]])
foo_fmt4(a ptr[in, fmt[dec, r0]])
foo_fmt5(a ptr[in, struct$fmt0])
foo_fmt6(a ptr[in, fmt[dec, flags[flags_with_one_value]]])
struct$fmt0 {
f0 fmt[dec, int8]
}
flags_with_one_value = 0