[Sorry to hijack this thread. ] On Tue, Jan 15, 2019 at 5:22 AM Andrew Donnellan <andrew.donnel...@au1.ibm.com> wrote: > > kcov provides kernel coverage data that's useful for fuzzing tools like > syzkaller. > > Wire up kcov support on powerpc. Disable kcov instrumentation on the same > files where we currently disable gcov and UBSan instrumentation. > > Signed-off-by: Andrew Donnellan <andrew.donnel...@au1.ibm.com> > > --- > > kcov looks like it's working okay, both kcovtrace and syzkaller seem to be > working. I did see some issues with compiling and booting kernels with gcc > 6.3 and earlier versions which disappeared when I upgraded to gcc 8.2, I > need to investigate that more.
This is also my setup. Would you be able to tell why I get a kconfig option loop when using gcc 8.2 which I cannot reproduce using gcc 6.3 ? gcc 6-3 is ok doing: $ make ARCH=powerpc custom_defconfig $ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- while gcc 8.2 leads to (linux/master): ... $ make ARCH=powerpc custom_defconfig $ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- GEN Makefile scripts/kconfig/conf --syncconfig Kconfig * * Restart config... * * * General architecture-dependent options * OProfile system profiling (OPROFILE) [M/n/y/?] m Kprobes (KPROBES) [Y/n/?] y Optimize very unlikely/likely branches (JUMP_LABEL) [N/y/?] n Stack Protector buffer overflow detection (STACKPROTECTOR) [Y/n/?] (NEW) ... I did check that `custom_defconfig` is the minimal defconfig generated by `savedefconfig` in both cases. Hints or comments welcome, thanks much. > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/kernel/Makefile | 7 ++++++- > arch/powerpc/kernel/trace/Makefile | 3 ++- > arch/powerpc/kernel/vdso32/Makefile | 1 + > arch/powerpc/kernel/vdso64/Makefile | 1 + > arch/powerpc/xmon/Makefile | 1 + > 6 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 2890d36eb531..d3698dae0e60 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -134,6 +134,7 @@ config PPC > select ARCH_HAS_ELF_RANDOMIZE > select ARCH_HAS_FORTIFY_SOURCE > select ARCH_HAS_GCOV_PROFILE_ALL > + select ARCH_HAS_KCOV > select ARCH_HAS_PHYS_TO_DMA > select ARCH_HAS_PMEM_API if PPC64 > select ARCH_HAS_PTE_SPECIAL > diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile > index cb7f0bb9ee71..961f44eabb65 100644 > --- a/arch/powerpc/kernel/Makefile > +++ b/arch/powerpc/kernel/Makefile > @@ -142,16 +142,21 @@ endif > obj-$(CONFIG_EPAPR_PARAVIRT) += epapr_paravirt.o epapr_hcalls.o > obj-$(CONFIG_KVM_GUEST) += kvm.o kvm_emul.o > > -# Disable GCOV & sanitizers in odd or sensitive code > +# Disable GCOV, KCOV & sanitizers in odd or sensitive code > GCOV_PROFILE_prom_init.o := n > +KCOV_INSTRUMENT_prom_init.o := n > UBSAN_SANITIZE_prom_init.o := n > GCOV_PROFILE_machine_kexec_64.o := n > +KCOV_INSTRUMENT_machine_kexec_64.o := n > UBSAN_SANITIZE_machine_kexec_64.o := n > GCOV_PROFILE_machine_kexec_32.o := n > +KCOV_INSTRUMENT_machine_kexec_32.o := n > UBSAN_SANITIZE_machine_kexec_32.o := n > GCOV_PROFILE_kprobes.o := n > +KCOV_INSTRUMENT_kprobes.o := n > UBSAN_SANITIZE_kprobes.o := n > GCOV_PROFILE_kprobes-ftrace.o := n > +KCOV_INSTRUMENT_kprobes-ftrace.o := n > UBSAN_SANITIZE_kprobes-ftrace.o := n > UBSAN_SANITIZE_vdso.o := n > > diff --git a/arch/powerpc/kernel/trace/Makefile > b/arch/powerpc/kernel/trace/Makefile > index b1725ad3e13d..858503775c58 100644 > --- a/arch/powerpc/kernel/trace/Makefile > +++ b/arch/powerpc/kernel/trace/Makefile > @@ -23,6 +23,7 @@ obj-$(CONFIG_TRACING) += trace_clock.o > obj-$(CONFIG_PPC64) += $(obj64-y) > obj-$(CONFIG_PPC32) += $(obj32-y) > > -# Disable GCOV & sanitizers in odd or sensitive code > +# Disable GCOV, KCOV & sanitizers in odd or sensitive code > GCOV_PROFILE_ftrace.o := n > +KCOV_INSTRUMENT_ftrace.o := n > UBSAN_SANITIZE_ftrace.o := n > diff --git a/arch/powerpc/kernel/vdso32/Makefile > b/arch/powerpc/kernel/vdso32/Makefile > index 50112d4473bb..ce199f6e4256 100644 > --- a/arch/powerpc/kernel/vdso32/Makefile > +++ b/arch/powerpc/kernel/vdso32/Makefile > @@ -23,6 +23,7 @@ targets := $(obj-vdso32) vdso32.so vdso32.so.dbg > obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32)) > > GCOV_PROFILE := n > +KCOV_INSTRUMENT := n > UBSAN_SANITIZE := n > > ccflags-y := -shared -fno-common -fno-builtin > diff --git a/arch/powerpc/kernel/vdso64/Makefile > b/arch/powerpc/kernel/vdso64/Makefile > index 69cecb346269..28e7d112aa2f 100644 > --- a/arch/powerpc/kernel/vdso64/Makefile > +++ b/arch/powerpc/kernel/vdso64/Makefile > @@ -9,6 +9,7 @@ targets := $(obj-vdso64) vdso64.so vdso64.so.dbg > obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) > > GCOV_PROFILE := n > +KCOV_INSTRUMENT := n > UBSAN_SANITIZE := n > > ccflags-y := -shared -fno-common -fno-builtin > diff --git a/arch/powerpc/xmon/Makefile b/arch/powerpc/xmon/Makefile > index 878f9c1d3615..3050f9323254 100644 > --- a/arch/powerpc/xmon/Makefile > +++ b/arch/powerpc/xmon/Makefile > @@ -5,6 +5,7 @@ > subdir-ccflags-y := $(call cc-disable-warning, builtin-requires-header) > > GCOV_PROFILE := n > +KCOV_INSTRUMENT := n > UBSAN_SANITIZE := n > > # Disable ftrace for the entire directory > -- > 2.11.0 >