From b431b2cc4c68297f3267543f1bbd4a91cd42d1e0 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 12 Jun 2018 18:06:44 +0200 Subject: sys/linux: add rseq syscall --- sys/linux/gen/386.go | 27 ++++++++++++++++++++++++++- sys/linux/gen/amd64.go | 26 +++++++++++++++++++++++++- sys/linux/gen/arm.go | 27 ++++++++++++++++++++++++++- sys/linux/gen/arm64.go | 5 ++++- sys/linux/gen/ppc64le.go | 26 +++++++++++++++++++++++++- sys/linux/sys.txt | 23 ++++++++++++++++++++++- sys/linux/sys_386.const | 4 ++++ sys/linux/sys_amd64.const | 4 ++++ sys/linux/sys_arm.const | 4 ++++ sys/linux/sys_arm64.const | 4 ++++ sys/linux/sys_ppc64le.const | 4 ++++ 11 files changed, 148 insertions(+), 6 deletions(-) (limited to 'sys/linux') diff --git a/sys/linux/gen/386.go b/sys/linux/gen/386.go index e32d29b33..b7fc00ae2 100644 --- a/sys/linux/gen/386.go +++ b/sys/linux/gen/386.go @@ -13355,6 +13355,21 @@ var structDescs_386 = []*KeyedStruct{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "futex_offset", TypeSize: 4, ArgDir: 1}}}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "list_op_pending", TypeSize: 4, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "robust_list"}}}, }}}, + {Key: StructKey{Name: "rseq"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id_start", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id", TypeSize: 4}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq_cs", TypeSize: 4, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "rseq_cs"}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 16}}, IsPad: true}, + }, AlignAttr: 32}}, + {Key: StructKey{Name: "rseq_cs"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq_cs", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 4}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "start_ip", TypeSize: 4}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "post_commit_offset", TypeSize: 4}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "abort_ip", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 12}}, IsPad: true}, + }, AlignAttr: 32}}, {Key: StructKey{Name: "rtentry_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rtentry_in", TypeSize: 112}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "rt_pad1", TypeSize: 8}}}, &StructType{Key: StructKey{Name: "sockaddr_in"}, FldName: "rt_dst"}, @@ -27217,6 +27232,12 @@ var syscalls_386 = []*Syscall{ {NR: 40, Name: "rmdir", CallName: "rmdir", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "path", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}}, }}, + {NR: 386, Name: "rseq", CallName: "rseq", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "rseq"}}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "rseq_len", TypeSize: 4}}, BitSize: 8, Buf: "rseq"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "flags", TypeSize: 4}}, Kind: 2, RangeEnd: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "sig", TypeSize: 4}}}, + }}, {NR: 174, Name: "rt_sigaction", CallName: "rt_sigaction", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "sig", TypeSize: 4}}, Kind: 2, RangeEnd: 65}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "act", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "sigaction"}}}, @@ -33701,6 +33722,9 @@ var consts_386 = []ConstValue{ {Name: "RNDCLEARPOOL", Value: 20998}, {Name: "RNDGETENTCNT", Value: 2147766784}, {Name: "RNDZAPENTCNT", Value: 20996}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE", Value: 4}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT", Value: 1}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL", Value: 2}, {Name: "RTA_DST", Value: 1}, {Name: "RTA_ENCAP", Value: 22}, {Name: "RTA_ENCAP_TYPE", Value: 21}, @@ -36556,6 +36580,7 @@ var consts_386 = []ConstValue{ {Name: "__NR_request_key", Value: 287}, {Name: "__NR_restart_syscall"}, {Name: "__NR_rmdir", Value: 40}, + {Name: "__NR_rseq", Value: 386}, {Name: "__NR_rt_sigaction", Value: 174}, {Name: "__NR_rt_sigpending", Value: 176}, {Name: "__NR_rt_sigprocmask", Value: 175}, @@ -36658,4 +36683,4 @@ var consts_386 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_386 = "955b3b5300af8efd38b4f547a3f09ad5fe151dbb" +const revision_386 = "bde06e23f09731bf5b0fdf0015b8501b8966e505" diff --git a/sys/linux/gen/amd64.go b/sys/linux/gen/amd64.go index 319ff806a..a79a9a6e6 100644 --- a/sys/linux/gen/amd64.go +++ b/sys/linux/gen/amd64.go @@ -13573,6 +13573,20 @@ var structDescs_amd64 = []*KeyedStruct{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "futex_offset", TypeSize: 8, ArgDir: 1}}}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "list_op_pending", TypeSize: 8, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "robust_list"}}}, }}}, + {Key: StructKey{Name: "rseq"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id_start", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id", TypeSize: 4}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq_cs", TypeSize: 8, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "rseq_cs"}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 12}}, IsPad: true}, + }, AlignAttr: 32}}, + {Key: StructKey{Name: "rseq_cs"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq_cs", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 4}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "start_ip", TypeSize: 8}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "post_commit_offset", TypeSize: 8}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "abort_ip", TypeSize: 8}}}, + }, AlignAttr: 32}}, {Key: StructKey{Name: "rtentry_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rtentry_in", TypeSize: 120}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "rt_pad1", TypeSize: 8}}}, &StructType{Key: StructKey{Name: "sockaddr_in"}, FldName: "rt_dst"}, @@ -27729,6 +27743,12 @@ var syscalls_amd64 = []*Syscall{ {NR: 84, Name: "rmdir", CallName: "rmdir", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "path", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}}, }}, + {NR: 334, Name: "rseq", CallName: "rseq", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "rseq"}}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "rseq_len", TypeSize: 8}}, BitSize: 8, Buf: "rseq"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "flags", TypeSize: 8}}, Kind: 2, RangeEnd: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "sig", TypeSize: 8}}}, + }}, {NR: 13, Name: "rt_sigaction", CallName: "rt_sigaction", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "sig", TypeSize: 4}}, Kind: 2, RangeEnd: 65}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "act", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sigaction"}}}, @@ -34362,6 +34382,9 @@ var consts_amd64 = []ConstValue{ {Name: "RNDCLEARPOOL", Value: 20998}, {Name: "RNDGETENTCNT", Value: 2147766784}, {Name: "RNDZAPENTCNT", Value: 20996}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE", Value: 4}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT", Value: 1}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL", Value: 2}, {Name: "RTA_DST", Value: 1}, {Name: "RTA_ENCAP", Value: 22}, {Name: "RTA_ENCAP_TYPE", Value: 21}, @@ -37235,6 +37258,7 @@ var consts_amd64 = []ConstValue{ {Name: "__NR_request_key", Value: 249}, {Name: "__NR_restart_syscall", Value: 219}, {Name: "__NR_rmdir", Value: 84}, + {Name: "__NR_rseq", Value: 334}, {Name: "__NR_rt_sigaction", Value: 13}, {Name: "__NR_rt_sigpending", Value: 127}, {Name: "__NR_rt_sigprocmask", Value: 14}, @@ -37344,4 +37368,4 @@ var consts_amd64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_amd64 = "7097498c6946c1eb9722af2ad0538f54e559ac58" +const revision_amd64 = "785dabbb3f7361d500be84940319f1447172ce8b" diff --git a/sys/linux/gen/arm.go b/sys/linux/gen/arm.go index d52ce7201..639cc238d 100644 --- a/sys/linux/gen/arm.go +++ b/sys/linux/gen/arm.go @@ -13198,6 +13198,21 @@ var structDescs_arm = []*KeyedStruct{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "futex_offset", TypeSize: 4, ArgDir: 1}}}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "list_op_pending", TypeSize: 4, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "robust_list"}}}, }}}, + {Key: StructKey{Name: "rseq"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id_start", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id", TypeSize: 4}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq_cs", TypeSize: 4, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "rseq_cs"}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 16}}, IsPad: true}, + }, AlignAttr: 32}}, + {Key: StructKey{Name: "rseq_cs"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq_cs", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 4}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "start_ip", TypeSize: 4}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "post_commit_offset", TypeSize: 4}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "abort_ip", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 12}}, IsPad: true}, + }, AlignAttr: 32}}, {Key: StructKey{Name: "rtentry_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rtentry_in", TypeSize: 112}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "rt_pad1", TypeSize: 8}}}, &StructType{Key: StructKey{Name: "sockaddr_in"}, FldName: "rt_dst"}, @@ -26993,6 +27008,12 @@ var syscalls_arm = []*Syscall{ {NR: 40, Name: "rmdir", CallName: "rmdir", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "path", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}}, }}, + {NR: 398, Name: "rseq", CallName: "rseq", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "rseq"}}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "rseq_len", TypeSize: 4}}, BitSize: 8, Buf: "rseq"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "flags", TypeSize: 4}}, Kind: 2, RangeEnd: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "sig", TypeSize: 4}}}, + }}, {NR: 174, Name: "rt_sigaction", CallName: "rt_sigaction", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "sig", TypeSize: 4}}, Kind: 2, RangeEnd: 65}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "act", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "sigaction"}}}, @@ -33561,6 +33582,9 @@ var consts_arm = []ConstValue{ {Name: "RNDCLEARPOOL", Value: 20998}, {Name: "RNDGETENTCNT", Value: 2147766784}, {Name: "RNDZAPENTCNT", Value: 20996}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE", Value: 4}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT", Value: 1}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL", Value: 2}, {Name: "RTA_DST", Value: 1}, {Name: "RTA_ENCAP", Value: 22}, {Name: "RTA_ENCAP_TYPE", Value: 21}, @@ -36411,6 +36435,7 @@ var consts_arm = []ConstValue{ {Name: "__NR_request_key", Value: 310}, {Name: "__NR_restart_syscall"}, {Name: "__NR_rmdir", Value: 40}, + {Name: "__NR_rseq", Value: 398}, {Name: "__NR_rt_sigaction", Value: 174}, {Name: "__NR_rt_sigpending", Value: 176}, {Name: "__NR_rt_sigprocmask", Value: 175}, @@ -36516,4 +36541,4 @@ var consts_arm = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm = "6b6722dfc791e76f8e5ea43bb5ed38f3cabaa311" +const revision_arm = "ee15ae72d74ca765e2db3496672f951a1b9bfaa1" diff --git a/sys/linux/gen/arm64.go b/sys/linux/gen/arm64.go index aaa6b3896..3ceef4936 100644 --- a/sys/linux/gen/arm64.go +++ b/sys/linux/gen/arm64.go @@ -33789,6 +33789,9 @@ var consts_arm64 = []ConstValue{ {Name: "RNDCLEARPOOL", Value: 20998}, {Name: "RNDGETENTCNT", Value: 2147766784}, {Name: "RNDZAPENTCNT", Value: 20996}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE", Value: 4}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT", Value: 1}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL", Value: 2}, {Name: "RTA_DST", Value: 1}, {Name: "RTA_ENCAP", Value: 22}, {Name: "RTA_ENCAP_TYPE", Value: 21}, @@ -36730,4 +36733,4 @@ var consts_arm64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm64 = "c62a27e289c952463593743f46ab30695095ad93" +const revision_arm64 = "3425b5fc030a24ba1be46429544418dd9b05de5c" diff --git a/sys/linux/gen/ppc64le.go b/sys/linux/gen/ppc64le.go index c3dab6c60..0bab02ff7 100644 --- a/sys/linux/gen/ppc64le.go +++ b/sys/linux/gen/ppc64le.go @@ -13330,6 +13330,20 @@ var structDescs_ppc64le = []*KeyedStruct{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "futex_offset", TypeSize: 8, ArgDir: 1}}}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "list_op_pending", TypeSize: 8, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "robust_list"}}}, }}}, + {Key: StructKey{Name: "rseq"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id_start", TypeSize: 4}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cpu_id", TypeSize: 4}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq_cs", TypeSize: 8, IsOptional: true}, Type: &StructType{Key: StructKey{Name: "rseq_cs"}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 12}}, IsPad: true}, + }, AlignAttr: 32}}, + {Key: StructKey{Name: "rseq_cs"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rseq_cs", TypeSize: 32}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 4}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "rseq_cs_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{1, 2, 4}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "start_ip", TypeSize: 8}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "post_commit_offset", TypeSize: 8}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "abort_ip", TypeSize: 8}}}, + }, AlignAttr: 32}}, {Key: StructKey{Name: "rtentry_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "rtentry_in", TypeSize: 120}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "rt_pad1", TypeSize: 8}}}, &StructType{Key: StructKey{Name: "sockaddr_in"}, FldName: "rt_dst"}, @@ -25802,6 +25816,12 @@ var syscalls_ppc64le = []*Syscall{ {NR: 40, Name: "rmdir", CallName: "rmdir", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "path", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}}, }}, + {NR: 387, Name: "rseq", CallName: "rseq", Args: []Type{ + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "rseq", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "rseq"}}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "rseq_len", TypeSize: 8}}, BitSize: 8, Buf: "rseq"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "flags", TypeSize: 8}}, Kind: 2, RangeEnd: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "sig", TypeSize: 8}}}, + }}, {NR: 173, Name: "rt_sigaction", CallName: "rt_sigaction", Args: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "sig", TypeSize: 4}}, Kind: 2, RangeEnd: 65}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "act", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sigaction"}}}, @@ -32134,6 +32154,9 @@ var consts_ppc64le = []ConstValue{ {Name: "RNDCLEARPOOL", Value: 536891910}, {Name: "RNDGETENTCNT", Value: 1074024960}, {Name: "RNDZAPENTCNT", Value: 536891908}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE", Value: 4}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT", Value: 1}, + {Name: "RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL", Value: 2}, {Name: "RTA_DST", Value: 1}, {Name: "RTA_ENCAP", Value: 22}, {Name: "RTA_ENCAP_TYPE", Value: 21}, @@ -34032,6 +34055,7 @@ var consts_ppc64le = []ConstValue{ {Name: "__NR_request_key", Value: 270}, {Name: "__NR_restart_syscall"}, {Name: "__NR_rmdir", Value: 40}, + {Name: "__NR_rseq", Value: 387}, {Name: "__NR_rt_sigaction", Value: 173}, {Name: "__NR_rt_sigpending", Value: 175}, {Name: "__NR_rt_sigprocmask", Value: 174}, @@ -34131,4 +34155,4 @@ var consts_ppc64le = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_ppc64le = "4d1d8966c4e9be19a8def1df7840f085c1e49434" +const revision_ppc64le = "ff218fc605d30d57dd34d66caa68cebc72b830f8" diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt index c688e81a6..92292a538 100644 --- a/sys/linux/sys.txt +++ b/sys/linux/sys.txt @@ -470,8 +470,30 @@ sched_getattr(pid pid, attr ptr[out, sched_attr], size len[attr], flags flags[sc sched_setattr(pid pid, attr ptr[in, sched_attr], flags flags[sched_attr_flags]) sched_yield() getrandom(buf buffer[out], len len[buf], flags flags[getrandom_flags]) + membarrier(cmd flags[membarrier_cmd], flags const[0]) +membarrier_cmd = MEMBARRIER_CMD_GLOBAL, MEMBARRIER_CMD_GLOBAL_EXPEDITED, MEMBARRIER_CMD_PRIVATE_EXPEDITED, MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED, MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE, MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE + +rseq(rseq ptr[in, rseq], rseq_len bytesize[rseq], flags boolptr, sig const[0]) + +rseq { + cpu_id_start const[0, int32] + cpu_id const[0, int32] + rseq_cs ptr[in, rseq_cs, opt] + flags flags[rseq_cs_flags, int32] +} [align_32] + +rseq_cs { + version const[0, int32] + flags flags[rseq_cs_flags, int32] + start_ip intptr + post_commit_offset intptr + abort_ip intptr +} [align_32] + +rseq_cs_flags = RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT, RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL, RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE + syz_open_procfs(pid pid, file ptr[in, string[procfs_file]]) fd procfs_file = "auxv", "cmdline", "environ", "autogroup", "cgroup", "clear_refs", "comm", "coredump_filter", "cpuset", "gid_map", "io", "limits", "loginuid", "maps", "mountinfo", "mounts", "mountstats", "numa_maps", "oom_adj", "oom_score", "oom_score_adj", "pagemap", "personality", "projid_map", "sched", "schedstat", "sessionid", "setgroups", "smaps", "smaps_rollup", "stack", "stat", "statm", "status", "syscall", "timers", "uid_map", "wchan", "map_files", "attr", "attr/current", "attr/exec", "attr/fscreate", "attr/keycreate", "attr/prev", "attr/sockcreate", "ns", "children", "task", "fd", "fd/3", "fd/4", "fdinfo", "fdinfo/3", "fdinfo/4", "net", "net/anycast6", "net/arp", "net/bnep", "net/connector", "net/dev", "net/dev_mcast", "net/dev_snmp6", "net/fib_trie", "net/fib_triestat", "net/hci", "net/icmp", "net/icmp6", "net/if_inet6", "net/igmp", "net/igmp6", "net/ip6_flowlabel", "net/ip6_mr_cache", "net/ip6_mr_vif", "net/ip6_tables_matches", "net/ip6_tables_names", "net/ip6_tables_targets", "net/ip_mr_cache", "net/ip_mr_vif", "net/ip_tables_matches", "net/ip_tables_names", "net/ip_tables_targets", "net/ipv6_route", "net/ipx", "net/l2cap", "net/llc", "net/mcfilter", "net/mcfilter6", "net/netfilter", "net/netlink", "net/netstat", "net/nfsfs", "net/packet", "net/protocols", "net/psched", "net/ptype", "net/raw", "net/raw6", "net/rfcomm", "net/route", "net/rpc", "net/rt6_stats", "net/rt_acct", "net/rt_cache", "net/sco", "net/sctp", "net/snmp", "net/snmp6", "net/sockstat", "net/sockstat6", "net/softnet_stat", "net/stat", "net/tcp", "net/tcp6", "net/udp", "net/udp6", "net/udplite", "net/udplite6", "net/unix", "net/wireless", "net/xfrm_stat", "net/ip_vs", "net/ip_vs_stats", "net/ip_vs_stats_percpu" @@ -1015,7 +1037,6 @@ fiemap_flags = FIEMAP_FLAG_SYNC, FIEMAP_FLAG_XATTR, FIEMAP_FLAG_CACHE fiemap_extent_flags = FIEMAP_EXTENT_LAST, FIEMAP_EXTENT_UNKNOWN, FIEMAP_EXTENT_DELALLOC, FIEMAP_EXTENT_ENCODED, FIEMAP_EXTENT_DATA_ENCRYPTED, FIEMAP_EXTENT_NOT_ALIGNED, FIEMAP_EXTENT_DATA_INLINE, FIEMAP_EXTENT_DATA_TAIL, FIEMAP_EXTENT_UNWRITTEN, FIEMAP_EXTENT_MERGED, FIEMAP_EXTENT_SHARED getrandom_flags = GRND_NONBLOCK, GRND_RANDOM clone_flags = CLONE_VM, CLONE_FS, CLONE_FILES, CLONE_SIGHAND, CLONE_PTRACE, CLONE_VFORK, CLONE_PARENT, CLONE_THREAD, CLONE_NEWNS, CLONE_SYSVSEM, CLONE_SETTLS, CLONE_PARENT_SETTID, CLONE_CHILD_CLEARTID, CLONE_UNTRACED, CLONE_CHILD_SETTID, CLONE_NEWCGROUP, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNET, CLONE_IO -membarrier_cmd = MEMBARRIER_CMD_GLOBAL, MEMBARRIER_CMD_GLOBAL_EXPEDITED, MEMBARRIER_CMD_PRIVATE_EXPEDITED, MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED, MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE, MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE kcov_ioctls = KCOV_INIT_TRACE, KCOV_ENABLE, KCOV_DISABLE kcov_modes = KCOV_TRACE_PC, KCOV_TRACE_CMP diff --git a/sys/linux/sys_386.const b/sys/linux/sys_386.const index 796ebd9aa..3a64913b6 100644 --- a/sys/linux/sys_386.const +++ b/sys/linux/sys_386.const @@ -493,6 +493,9 @@ RLIMIT_RTPRIO = 14 RLIMIT_RTTIME = 15 RLIMIT_SIGPENDING = 11 RLIMIT_STACK = 3 +RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4 +RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1 +RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 RUSAGE_THREAD = 1 @@ -751,6 +754,7 @@ __NR_renameat = 302 __NR_renameat2 = 353 __NR_restart_syscall = 0 __NR_rmdir = 40 +__NR_rseq = 386 __NR_rt_sigaction = 174 __NR_rt_sigpending = 176 __NR_rt_sigprocmask = 175 diff --git a/sys/linux/sys_amd64.const b/sys/linux/sys_amd64.const index 2879c2bdd..a3bdb1484 100644 --- a/sys/linux/sys_amd64.const +++ b/sys/linux/sys_amd64.const @@ -493,6 +493,9 @@ RLIMIT_RTPRIO = 14 RLIMIT_RTTIME = 15 RLIMIT_SIGPENDING = 11 RLIMIT_STACK = 3 +RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4 +RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1 +RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 RUSAGE_THREAD = 1 @@ -751,6 +754,7 @@ __NR_renameat = 264 __NR_renameat2 = 316 __NR_restart_syscall = 219 __NR_rmdir = 84 +__NR_rseq = 334 __NR_rt_sigaction = 13 __NR_rt_sigpending = 127 __NR_rt_sigprocmask = 14 diff --git a/sys/linux/sys_arm.const b/sys/linux/sys_arm.const index 1ae1e3a54..6b1abbc45 100644 --- a/sys/linux/sys_arm.const +++ b/sys/linux/sys_arm.const @@ -493,6 +493,9 @@ RLIMIT_RTPRIO = 14 RLIMIT_RTTIME = 15 RLIMIT_SIGPENDING = 11 RLIMIT_STACK = 3 +RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4 +RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1 +RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 RUSAGE_THREAD = 1 @@ -751,6 +754,7 @@ __NR_renameat = 329 __NR_renameat2 = 382 __NR_restart_syscall = 0 __NR_rmdir = 40 +__NR_rseq = 398 __NR_rt_sigaction = 174 __NR_rt_sigpending = 176 __NR_rt_sigprocmask = 175 diff --git a/sys/linux/sys_arm64.const b/sys/linux/sys_arm64.const index 1e10a438a..5e0bf876d 100644 --- a/sys/linux/sys_arm64.const +++ b/sys/linux/sys_arm64.const @@ -493,6 +493,9 @@ RLIMIT_RTPRIO = 14 RLIMIT_RTTIME = 15 RLIMIT_SIGPENDING = 11 RLIMIT_STACK = 3 +RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4 +RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1 +RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 RUSAGE_THREAD = 1 @@ -751,6 +754,7 @@ __NR_renameat = 38 __NR_renameat2 = 276 __NR_restart_syscall = 128 # __NR_rmdir is not set +# __NR_rseq is not set __NR_rt_sigaction = 134 __NR_rt_sigpending = 136 __NR_rt_sigprocmask = 135 diff --git a/sys/linux/sys_ppc64le.const b/sys/linux/sys_ppc64le.const index 2f5f74620..94929773f 100644 --- a/sys/linux/sys_ppc64le.const +++ b/sys/linux/sys_ppc64le.const @@ -493,6 +493,9 @@ RLIMIT_RTPRIO = 14 RLIMIT_RTTIME = 15 RLIMIT_SIGPENDING = 11 RLIMIT_STACK = 3 +RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4 +RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1 +RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 RUSAGE_THREAD = 1 @@ -751,6 +754,7 @@ __NR_renameat = 293 __NR_renameat2 = 357 __NR_restart_syscall = 0 __NR_rmdir = 40 +__NR_rseq = 387 __NR_rt_sigaction = 173 __NR_rt_sigpending = 175 __NR_rt_sigprocmask = 174 -- cgit mrf-deployment