mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
powerpc: Enable kcov
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, plus some additional exclusions which appear necessary to boot on book3e machines. Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Acked-by: Dmitry Vyukov <dvyukov@google.com> Tested-by: Daniel Axtens <dja@axtens.net> # e6500 Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
8f54a6f740
commit
fb0b0a73b2
@ -130,6 +130,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
|
||||
|
@ -143,19 +143,29 @@ 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
|
||||
|
||||
# Necessary for booting with kcov enabled on book3e machines
|
||||
KCOV_INSTRUMENT_cputable.o := n
|
||||
KCOV_INSTRUMENT_setup_64.o := n
|
||||
KCOV_INSTRUMENT_paca.o := n
|
||||
|
||||
extra-$(CONFIG_PPC_FPU) += fpu.o
|
||||
extra-$(CONFIG_ALTIVEC) += vector.o
|
||||
extra-$(CONFIG_PPC64) += entry_64.o
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -47,3 +47,8 @@ obj-$(CONFIG_PPC_COPRO_BASE) += copro_fault.o
|
||||
obj-$(CONFIG_SPAPR_TCE_IOMMU) += mmu_context_iommu.o
|
||||
obj-$(CONFIG_PPC_PTDUMP) += ptdump/
|
||||
obj-$(CONFIG_PPC_MEM_KEYS) += pkeys.o
|
||||
|
||||
# Disable kcov instrumentation on sensitive code
|
||||
# This is necessary for booting with kcov enabled on book3e machines
|
||||
KCOV_INSTRUMENT_tlb_nohash.o := n
|
||||
KCOV_INSTRUMENT_fsl_booke_mmu.o := n
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user