From ca9c302d807f47a55552d0a20a2dfcdb0fcc6e28 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 24 Jan 2018 11:35:22 +0100 Subject: pkg/compiler, prog: fix template parent lens It's possible that a struct can have 2+ parents, which is the same template (differs only by arguments). See the new test case. Support such case. --- sys/test/32.go | 82 ++++++++++++++++++++++++++++++++++--------------------- sys/test/64.go | 82 ++++++++++++++++++++++++++++++++++--------------------- sys/test/test.txt | 16 +++++++++++ 3 files changed, 118 insertions(+), 62 deletions(-) (limited to 'sys') diff --git a/sys/test/32.go b/sys/test/32.go index 81e2bd184..31b691cdc 100644 --- a/sys/test/32.go +++ b/sys/test/32.go @@ -14,9 +14,26 @@ var resources_32 = []*ResourceDesc{ } var structDescs_32 = []*KeyedStruct{ + {Key: StructKey{Name: "len_nontemp4"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp4", TypeSize: 4}, Fields: []Type{ + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f1", TypeSize: 4}}, Buf: "len_temp3"}, + }}}, + {Key: StructKey{Name: "len_nontemp5"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp5", TypeSize: 24}, Fields: []Type{ + &StructType{Key: StructKey{Name: "len_temp3[int8]"}, FldName: "f1"}, + &StructType{Key: StructKey{Name: "len_temp3[int64]"}, FldName: "f2"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true}, + }}}, {Key: StructKey{Name: "len_temp2[int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp2[int16]", TypeSize: 3}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "data", TypeSize: 2}}}, - &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1[int8, int16]"}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1"}, + }}}, + {Key: StructKey{Name: "len_temp3[int64]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int64]", TypeSize: 12}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}}, + &StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"}, + }}}, + {Key: StructKey{Name: "len_temp3[int8]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int8]", TypeSize: 8}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true}, + &StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"}, }}}, {Key: StructKey{Name: "len_templ1[int8, int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_templ1[int8, int16]", TypeSize: 6}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "data", TypeSize: 1}}}, @@ -564,91 +581,94 @@ var syscalls_32 = []*Syscall{ {ID: 52, Name: "syz_test$length23", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "len_templ1[int8, int16]"}}}, }}, - {ID: 53, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{ + {ID: 53, Name: "syz_test$length24", CallName: "syz_test", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "len_nontemp5"}}}, + }}, + {ID: 54, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}}, }}, - {ID: 54, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{ + {ID: 55, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_len2_struct"}}}, }}, - {ID: 55, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{ + {ID: 56, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_parent_struct"}}}, }}, - {ID: 56, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{ + {ID: 57, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_array_struct"}}}, }}, - {ID: 57, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{ + {ID: 58, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_array2_struct"}}}, }}, - {ID: 58, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{ + {ID: 59, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_complex_struct"}}}, }}, - {ID: 59, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{ + {ID: 60, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_vma_struct"}}}, }}, - {ID: 60, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, - {ID: 61, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{ + {ID: 61, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, + {ID: 62, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 4, IsOptional: true}}}, }}, - {ID: 62, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{ + {ID: 63, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4, IsOptional: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", TypeSize: 4}}}}, }}, - {ID: 63, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{ + {ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 4, IsOptional: true}}, }}, - {ID: 64, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{ + {ID: 65, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{ &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a0", TypeSize: 4, IsOptional: true}}, ValuesStart: 100, ValuesPerProc: 4}, }}, - {ID: 65, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{ + {ID: 66, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_0", Dir: 2}}}, }}, - {ID: 66, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{ + {ID: 67, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_1", Dir: 2}}}, }}, - {ID: 67, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{ + {ID: 68, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_2", Dir: 2}}}, }}, - {ID: 68, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{ + {ID: 69, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_regression0_struct", Dir: 2}}}, }}, - {ID: 69, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{ + {ID: 70, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "syz_regression1_struct"}}}}, }}, - {ID: 70, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{ + {ID: 71, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", TypeSize: 16}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: 1, RangeBegin: 4, RangeEnd: 4}}, }}, - {ID: 71, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, - {ID: 72, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{ + {ID: 72, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, + {ID: 73, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}}, }}, - {ID: 73, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{ + {ID: 74, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_struct0"}}}, }}, - {ID: 74, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{ + {ID: 75, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 1}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"}, }}, - {ID: 75, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{ + {ID: 76, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 2}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"}, }}, - {ID: 76, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{ + {ID: 77, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 3}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"}, }}, - {ID: 77, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{ + {ID: 78, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"}, }}, - {ID: 78, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{ + {ID: 79, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union0_struct"}}}, }}, - {ID: 79, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{ + {ID: 80, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union1_struct"}}}, }}, - {ID: 80, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{ + {ID: 81, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union2_struct"}}}, }}, - {ID: 81, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{ + {ID: 82, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v0", TypeSize: 4}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "l0", TypeSize: 4}}, Buf: "v0"}, &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v1", TypeSize: 4}, RangeBegin: 5, RangeEnd: 5}, @@ -665,4 +685,4 @@ var consts_32 = []ConstValue{ {Name: "ONLY_32BITS_CONST", Value: 1}, } -const revision_32 = "b9cbeaf95275aebd2bf6f299b1071f67344453a5" +const revision_32 = "bbf8d8ed4354030a23f6bde2600005f3f6c9bb91" diff --git a/sys/test/64.go b/sys/test/64.go index 5bb5f68e5..e39ea5184 100644 --- a/sys/test/64.go +++ b/sys/test/64.go @@ -14,9 +14,26 @@ var resources_64 = []*ResourceDesc{ } var structDescs_64 = []*KeyedStruct{ + {Key: StructKey{Name: "len_nontemp4"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp4", TypeSize: 4}, Fields: []Type{ + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f1", TypeSize: 4}}, Buf: "len_temp3"}, + }}}, + {Key: StructKey{Name: "len_nontemp5"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp5", TypeSize: 24}, Fields: []Type{ + &StructType{Key: StructKey{Name: "len_temp3[int8]"}, FldName: "f1"}, + &StructType{Key: StructKey{Name: "len_temp3[int64]"}, FldName: "f2"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true}, + }}}, {Key: StructKey{Name: "len_temp2[int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp2[int16]", TypeSize: 3}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "data", TypeSize: 2}}}, - &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1[int8, int16]"}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1"}, + }}}, + {Key: StructKey{Name: "len_temp3[int64]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int64]", TypeSize: 12}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}}, + &StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"}, + }}}, + {Key: StructKey{Name: "len_temp3[int8]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int8]", TypeSize: 8}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true}, + &StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"}, }}}, {Key: StructKey{Name: "len_templ1[int8, int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_templ1[int8, int16]", TypeSize: 6}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "data", TypeSize: 1}}}, @@ -563,91 +580,94 @@ var syscalls_64 = []*Syscall{ {ID: 52, Name: "syz_test$length23", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "len_templ1[int8, int16]"}}}, }}, - {ID: 53, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{ + {ID: 53, Name: "syz_test$length24", CallName: "syz_test", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "len_nontemp5"}}}, + }}, + {ID: 54, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}}, }}, - {ID: 54, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{ + {ID: 55, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_len2_struct"}}}, }}, - {ID: 55, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{ + {ID: 56, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_parent_struct"}}}, }}, - {ID: 56, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{ + {ID: 57, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_array_struct"}}}, }}, - {ID: 57, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{ + {ID: 58, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_array2_struct"}}}, }}, - {ID: 58, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{ + {ID: 59, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_complex_struct"}}}, }}, - {ID: 59, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{ + {ID: 60, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_vma_struct"}}}, }}, - {ID: 60, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, - {ID: 61, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{ + {ID: 61, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, + {ID: 62, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 8, IsOptional: true}}}, }}, - {ID: 62, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{ + {ID: 63, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8, IsOptional: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", TypeSize: 8}}}}, }}, - {ID: 63, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{ + {ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 8, IsOptional: true}}, }}, - {ID: 64, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{ + {ID: 65, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{ &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a0", TypeSize: 8, IsOptional: true}}, ValuesStart: 100, ValuesPerProc: 4}, }}, - {ID: 65, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{ + {ID: 66, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_0", Dir: 2}}}, }}, - {ID: 66, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{ + {ID: 67, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_1", Dir: 2}}}, }}, - {ID: 67, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{ + {ID: 68, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_2", Dir: 2}}}, }}, - {ID: 68, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{ + {ID: 69, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_regression0_struct", Dir: 2}}}, }}, - {ID: 69, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{ + {ID: 70, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "syz_regression1_struct"}}}}, }}, - {ID: 70, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{ + {ID: 71, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", TypeSize: 16}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: 1, RangeBegin: 4, RangeEnd: 4}}, }}, - {ID: 71, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, - {ID: 72, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{ + {ID: 72, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}}, + {ID: 73, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}}, }}, - {ID: 73, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{ + {ID: 74, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_struct0"}}}, }}, - {ID: 74, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{ + {ID: 75, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 1}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"}, }}, - {ID: 75, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{ + {ID: 76, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 2}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"}, }}, - {ID: 76, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{ + {ID: 77, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 3}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"}, }}, - {ID: 77, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{ + {ID: 78, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"}, }}, - {ID: 78, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{ + {ID: 79, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union0_struct"}}}, }}, - {ID: 79, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{ + {ID: 80, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union1_struct"}}}, }}, - {ID: 80, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{ + {ID: 81, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union2_struct"}}}, }}, - {ID: 81, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{ + {ID: 82, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v0", TypeSize: 8}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "l0", TypeSize: 8}}, Buf: "v0"}, &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v1", TypeSize: 8}, RangeBegin: 5, RangeEnd: 5}, @@ -663,4 +683,4 @@ var consts_64 = []ConstValue{ {Name: "IPPROTO_UDP", Value: 17}, } -const revision_64 = "ed5cfa6417cbae5ddc998f597dcdbb96fea761c3" +const revision_64 = "04defb49ad13778b83e2676461ef16d009d6128d" diff --git a/sys/test/test.txt b/sys/test/test.txt index 051c17ce6..b5b1fecf0 100644 --- a/sys/test/test.txt +++ b/sys/test/test.txt @@ -350,6 +350,22 @@ type len_temp2[DATA] { syz_test$length23(a ptr[in, len_templ1[int8, int16]]) +type len_temp3[DATA] { + f1 DATA + f2 len_nontemp4 +} + +len_nontemp4 { + f1 len[len_temp3, int32] +} + +len_nontemp5 { + f1 len_temp3[int8] + f2 len_temp3[int64] +} + +syz_test$length24(a ptr[in, len_nontemp5]) + # Big endian syz_test$end0(a0 ptr[in, syz_end_int_struct]) -- cgit mrf-deployment