From c2faf9b2d5b583f53d01b8b483e26b61ed72cbbf Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Wed, 16 Jan 2019 14:50:43 +0100 Subject: all: detect extra coverage support Based on whether the kernel supports KCOV_REMOTE_ENABLE ioctl. --- sys/linux/gen/386.go | 3 ++- sys/linux/gen/amd64.go | 3 ++- sys/linux/gen/arm.go | 3 ++- sys/linux/gen/arm64.go | 3 ++- sys/linux/gen/ppc64le.go | 3 ++- sys/linux/init.go | 10 ++++++---- sys/linux/sys.txt | 3 +++ sys/linux/sys_386.const | 1 + sys/linux/sys_amd64.const | 1 + sys/linux/sys_arm.const | 1 + sys/linux/sys_arm64.const | 1 + sys/linux/sys_ppc64le.const | 1 + 12 files changed, 24 insertions(+), 9 deletions(-) (limited to 'sys/linux') diff --git a/sys/linux/gen/386.go b/sys/linux/gen/386.go index 44c7bf5b6..9f80d523a 100644 --- a/sys/linux/gen/386.go +++ b/sys/linux/gen/386.go @@ -41979,6 +41979,7 @@ var consts_386 = []ConstValue{ {Name: "KCOV_DISABLE", Value: 25445}, {Name: "KCOV_ENABLE", Value: 25444}, {Name: "KCOV_INIT_TRACE", Value: 2147771137}, + {Name: "KCOV_REMOTE_ENABLE", Value: 1075340134}, {Name: "KCOV_TRACE_CMP", Value: 1}, {Name: "KCOV_TRACE_PC"}, {Name: "KDADDIO", Value: 19252}, @@ -46827,4 +46828,4 @@ var consts_386 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_386 = "2add9eb5de33dbfa073790d7af2cb5a543062225" +const revision_386 = "1c5197fbb1cb70ac384135081dec18423f4e1bd1" diff --git a/sys/linux/gen/amd64.go b/sys/linux/gen/amd64.go index 9ba446de1..5c248531b 100644 --- a/sys/linux/gen/amd64.go +++ b/sys/linux/gen/amd64.go @@ -42744,6 +42744,7 @@ var consts_amd64 = []ConstValue{ {Name: "KCOV_DISABLE", Value: 25445}, {Name: "KCOV_ENABLE", Value: 25444}, {Name: "KCOV_INIT_TRACE", Value: 2148033281}, + {Name: "KCOV_REMOTE_ENABLE", Value: 1075340134}, {Name: "KCOV_TRACE_CMP", Value: 1}, {Name: "KCOV_TRACE_PC"}, {Name: "KDADDIO", Value: 19252}, @@ -47617,4 +47618,4 @@ var consts_amd64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_amd64 = "85924b0693363419c2ea4f8588a815526691dd50" +const revision_amd64 = "3f0e0ea59ae728d37a8cdd5e77a5beeb718a88f6" diff --git a/sys/linux/gen/arm.go b/sys/linux/gen/arm.go index d2d0274b1..4df935bbc 100644 --- a/sys/linux/gen/arm.go +++ b/sys/linux/gen/arm.go @@ -41871,6 +41871,7 @@ var consts_arm = []ConstValue{ {Name: "KCOV_DISABLE", Value: 25445}, {Name: "KCOV_ENABLE", Value: 25444}, {Name: "KCOV_INIT_TRACE", Value: 2147771137}, + {Name: "KCOV_REMOTE_ENABLE", Value: 1075340134}, {Name: "KCOV_TRACE_CMP", Value: 1}, {Name: "KCOV_TRACE_PC"}, {Name: "KDADDIO", Value: 19252}, @@ -46666,4 +46667,4 @@ var consts_arm = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm = "5fb6ba1fcab442e1305ff81004954b7ee140e165" +const revision_arm = "3391e0fa8ed2299b0beda67f40c24a913c0b6a5b" diff --git a/sys/linux/gen/arm64.go b/sys/linux/gen/arm64.go index 79c452772..b2b8e8155 100644 --- a/sys/linux/gen/arm64.go +++ b/sys/linux/gen/arm64.go @@ -42190,6 +42190,7 @@ var consts_arm64 = []ConstValue{ {Name: "KCOV_DISABLE", Value: 25445}, {Name: "KCOV_ENABLE", Value: 25444}, {Name: "KCOV_INIT_TRACE", Value: 2148033281}, + {Name: "KCOV_REMOTE_ENABLE", Value: 1075340134}, {Name: "KCOV_TRACE_CMP", Value: 1}, {Name: "KCOV_TRACE_PC"}, {Name: "KDADDIO", Value: 19252}, @@ -46975,4 +46976,4 @@ var consts_arm64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm64 = "7f0cf979fc6d1fc624ee0f2187d86f90279b0574" +const revision_arm64 = "d0d53f46334e628e33432e1655016df33dda9386" diff --git a/sys/linux/gen/ppc64le.go b/sys/linux/gen/ppc64le.go index d679f870b..9fd0f1500 100644 --- a/sys/linux/gen/ppc64le.go +++ b/sys/linux/gen/ppc64le.go @@ -40585,6 +40585,7 @@ var consts_ppc64le = []ConstValue{ {Name: "KCOV_DISABLE", Value: 536896357}, {Name: "KCOV_ENABLE", Value: 536896356}, {Name: "KCOV_INIT_TRACE", Value: 1074291457}, + {Name: "KCOV_REMOTE_ENABLE", Value: 1075340134}, {Name: "KCOV_TRACE_CMP", Value: 1}, {Name: "KCOV_TRACE_PC"}, {Name: "KDADDIO", Value: 19252}, @@ -44333,4 +44334,4 @@ var consts_ppc64le = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_ppc64le = "debbebfbc6525345884bd5c7595a0d8804bc46db" +const revision_ppc64le = "e8c9edb8f62f65ca64b9679162b4e5995ad2aaa9" diff --git a/sys/linux/init.go b/sys/linux/init.go index c5e4c810c..e0efe22c7 100644 --- a/sys/linux/init.go +++ b/sys/linux/init.go @@ -81,6 +81,7 @@ func InitTarget(target *prog.Target) { if target.Arch == runtime.GOARCH { KCOV_INIT_TRACE = uintptr(target.GetConst("KCOV_INIT_TRACE")) KCOV_ENABLE = uintptr(target.GetConst("KCOV_ENABLE")) + KCOV_REMOTE_ENABLE = uintptr(target.GetConst("KCOV_REMOTE_ENABLE")) KCOV_DISABLE = uintptr(target.GetConst("KCOV_DISABLE")) KCOV_TRACE_CMP = uintptr(target.GetConst("KCOV_TRACE_CMP")) } @@ -88,10 +89,11 @@ func InitTarget(target *prog.Target) { var ( // This should not be here, but for now we expose this for syz-fuzzer. - KCOV_INIT_TRACE uintptr - KCOV_ENABLE uintptr - KCOV_DISABLE uintptr - KCOV_TRACE_CMP uintptr + KCOV_INIT_TRACE uintptr + KCOV_ENABLE uintptr + KCOV_REMOTE_ENABLE uintptr + KCOV_DISABLE uintptr + KCOV_TRACE_CMP uintptr ) type arch struct { diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt index 2deeedae6..e9732266c 100644 --- a/sys/linux/sys.txt +++ b/sys/linux/sys.txt @@ -959,6 +959,9 @@ _ = ADJ_OFFSET, ADJ_FREQUENCY, ADJ_MAXERROR, ADJ_ESTERROR, ADJ_STATUS, ADJ_TIMEC # misc _ = KCOV_INIT_TRACE, KCOV_ENABLE, KCOV_DISABLE, KCOV_TRACE_PC, KCOV_TRACE_CMP, FIFREEZE, FAN_OPEN_PERM, FAN_ACCESS_PERM, PTRACE_TRACEME, __NR_mmap2 +# Hardcode KCOV_REMOTE_ENABLE value for amd64 until new kcov patches reach mainline. +define KCOV_REMOTE_ENABLE 1075340134 + # Not yet implemented syscalls #define __NR_umask 95 #define __NR_vhangup 153 diff --git a/sys/linux/sys_386.const b/sys/linux/sys_386.const index bffec1278..96f1db187 100644 --- a/sys/linux/sys_386.const +++ b/sys/linux/sys_386.const @@ -220,6 +220,7 @@ KCMP_VM = 1 KCOV_DISABLE = 25445 KCOV_ENABLE = 25444 KCOV_INIT_TRACE = 2147771137 +KCOV_REMOTE_ENABLE = 1075340134 KCOV_TRACE_CMP = 1 KCOV_TRACE_PC = 0 KEXEC_ARCH_386 = 196608 diff --git a/sys/linux/sys_amd64.const b/sys/linux/sys_amd64.const index a85e52ddb..696eb608d 100644 --- a/sys/linux/sys_amd64.const +++ b/sys/linux/sys_amd64.const @@ -220,6 +220,7 @@ KCMP_VM = 1 KCOV_DISABLE = 25445 KCOV_ENABLE = 25444 KCOV_INIT_TRACE = 2148033281 +KCOV_REMOTE_ENABLE = 1075340134 KCOV_TRACE_CMP = 1 KCOV_TRACE_PC = 0 KEXEC_ARCH_386 = 196608 diff --git a/sys/linux/sys_arm.const b/sys/linux/sys_arm.const index 0fafba993..dd79987f9 100644 --- a/sys/linux/sys_arm.const +++ b/sys/linux/sys_arm.const @@ -220,6 +220,7 @@ KCMP_VM = 1 KCOV_DISABLE = 25445 KCOV_ENABLE = 25444 KCOV_INIT_TRACE = 2147771137 +KCOV_REMOTE_ENABLE = 1075340134 KCOV_TRACE_CMP = 1 KCOV_TRACE_PC = 0 KEXEC_ARCH_386 = 196608 diff --git a/sys/linux/sys_arm64.const b/sys/linux/sys_arm64.const index 41966fc33..6ccf3e16d 100644 --- a/sys/linux/sys_arm64.const +++ b/sys/linux/sys_arm64.const @@ -220,6 +220,7 @@ KCMP_VM = 1 KCOV_DISABLE = 25445 KCOV_ENABLE = 25444 KCOV_INIT_TRACE = 2148033281 +KCOV_REMOTE_ENABLE = 1075340134 KCOV_TRACE_CMP = 1 KCOV_TRACE_PC = 0 KEXEC_ARCH_386 = 196608 diff --git a/sys/linux/sys_ppc64le.const b/sys/linux/sys_ppc64le.const index ef8a126b6..a3228131d 100644 --- a/sys/linux/sys_ppc64le.const +++ b/sys/linux/sys_ppc64le.const @@ -220,6 +220,7 @@ KCMP_VM = 1 KCOV_DISABLE = 536896357 KCOV_ENABLE = 536896356 KCOV_INIT_TRACE = 1074291457 +KCOV_REMOTE_ENABLE = 1075340134 KCOV_TRACE_CMP = 1 KCOV_TRACE_PC = 0 KEXEC_ARCH_386 = 196608 -- cgit mrf-deployment