Loading Documentation/dev-tools/gcov.rst +14 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,6 @@ Configure the kernel with:: CONFIG_DEBUG_FS=y CONFIG_GCOV_KERNEL=y select the gcc's gcov format, default is autodetect based on gcc version:: CONFIG_GCOV_FORMAT_AUTODETECT=y and to get coverage data for the entire kernel:: CONFIG_GCOV_PROFILE_ALL=y Loading Loading @@ -169,6 +165,20 @@ b) gcov is run on the BUILD machine [user@build] gcov -o /tmp/coverage/tmp/out/init main.c Note on compilers ----------------- GCC and LLVM gcov tools are not necessarily compatible. Use gcov_ to work with GCC-generated .gcno and .gcda files, and use llvm-cov_ for Clang. .. _gcov: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html .. _llvm-cov: https://llvm.org/docs/CommandGuide/llvm-cov.html Build differences between GCC and Clang gcov are handled by Kconfig. It automatically selects the appropriate gcov format depending on the detected toolchain. Troubleshooting --------------- Loading Makefile +4 −2 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 9 SUBLEVEL = 178 SUBLEVEL = 179 EXTRAVERSION = NAME = Roaring Lionus Loading Loading @@ -662,7 +662,9 @@ all: vmlinux KBUILD_CFLAGS += $(call cc-option,-fno-PIE) KBUILD_AFLAGS += $(call cc-option,-fno-PIE) CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,) CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \ $(call cc-option,-fno-tree-loop-im) \ $(call cc-disable-warning,maybe-uninitialized,) CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,) export CFLAGS_GCOV CFLAGS_KCOV Loading arch/arm/kvm/arm.c +8 −3 Original line number Diff line number Diff line Loading @@ -801,7 +801,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level, static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, const struct kvm_vcpu_init *init) { unsigned int i; unsigned int i, ret; int phys_target = kvm_target_cpu(); if (init->target != phys_target) Loading Loading @@ -836,9 +836,14 @@ static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, vcpu->arch.target = phys_target; /* Now we know what it is, we can reset it. */ return kvm_reset_vcpu(vcpu); ret = kvm_reset_vcpu(vcpu); if (ret) { vcpu->arch.target = -1; bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES); } return ret; } static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init) Loading arch/parisc/include/asm/assembly.h +3 −3 Original line number Diff line number Diff line Loading @@ -59,14 +59,14 @@ #define LDCW ldcw,co #define BL b,l # ifdef CONFIG_64BIT # define LEVEL 2.0w # define PA_ASM_LEVEL 2.0w # else # define LEVEL 2.0 # define PA_ASM_LEVEL 2.0 # endif #else #define LDCW ldcw #define BL bl #define LEVEL 1.1 #define PA_ASM_LEVEL 1.1 #endif #ifdef __ASSEMBLY__ Loading arch/parisc/kernel/head.S +2 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <linux/linkage.h> #include <linux/init.h> .level LEVEL .level PA_ASM_LEVEL __INITDATA ENTRY(boot_args) Loading Loading @@ -254,7 +254,7 @@ stext_pdc_ret: ldo R%PA(fault_vector_11)(%r10),%r10 $is_pa20: .level LEVEL /* restore 1.1 || 2.0w */ .level PA_ASM_LEVEL /* restore 1.1 || 2.0w */ #endif /*!CONFIG_64BIT*/ load32 PA(fault_vector_20),%r10 Loading Loading
Documentation/dev-tools/gcov.rst +14 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,6 @@ Configure the kernel with:: CONFIG_DEBUG_FS=y CONFIG_GCOV_KERNEL=y select the gcc's gcov format, default is autodetect based on gcc version:: CONFIG_GCOV_FORMAT_AUTODETECT=y and to get coverage data for the entire kernel:: CONFIG_GCOV_PROFILE_ALL=y Loading Loading @@ -169,6 +165,20 @@ b) gcov is run on the BUILD machine [user@build] gcov -o /tmp/coverage/tmp/out/init main.c Note on compilers ----------------- GCC and LLVM gcov tools are not necessarily compatible. Use gcov_ to work with GCC-generated .gcno and .gcda files, and use llvm-cov_ for Clang. .. _gcov: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html .. _llvm-cov: https://llvm.org/docs/CommandGuide/llvm-cov.html Build differences between GCC and Clang gcov are handled by Kconfig. It automatically selects the appropriate gcov format depending on the detected toolchain. Troubleshooting --------------- Loading
Makefile +4 −2 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 9 SUBLEVEL = 178 SUBLEVEL = 179 EXTRAVERSION = NAME = Roaring Lionus Loading Loading @@ -662,7 +662,9 @@ all: vmlinux KBUILD_CFLAGS += $(call cc-option,-fno-PIE) KBUILD_AFLAGS += $(call cc-option,-fno-PIE) CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,) CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \ $(call cc-option,-fno-tree-loop-im) \ $(call cc-disable-warning,maybe-uninitialized,) CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,) export CFLAGS_GCOV CFLAGS_KCOV Loading
arch/arm/kvm/arm.c +8 −3 Original line number Diff line number Diff line Loading @@ -801,7 +801,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level, static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, const struct kvm_vcpu_init *init) { unsigned int i; unsigned int i, ret; int phys_target = kvm_target_cpu(); if (init->target != phys_target) Loading Loading @@ -836,9 +836,14 @@ static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, vcpu->arch.target = phys_target; /* Now we know what it is, we can reset it. */ return kvm_reset_vcpu(vcpu); ret = kvm_reset_vcpu(vcpu); if (ret) { vcpu->arch.target = -1; bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES); } return ret; } static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init) Loading
arch/parisc/include/asm/assembly.h +3 −3 Original line number Diff line number Diff line Loading @@ -59,14 +59,14 @@ #define LDCW ldcw,co #define BL b,l # ifdef CONFIG_64BIT # define LEVEL 2.0w # define PA_ASM_LEVEL 2.0w # else # define LEVEL 2.0 # define PA_ASM_LEVEL 2.0 # endif #else #define LDCW ldcw #define BL bl #define LEVEL 1.1 #define PA_ASM_LEVEL 1.1 #endif #ifdef __ASSEMBLY__ Loading
arch/parisc/kernel/head.S +2 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <linux/linkage.h> #include <linux/init.h> .level LEVEL .level PA_ASM_LEVEL __INITDATA ENTRY(boot_args) Loading Loading @@ -254,7 +254,7 @@ stext_pdc_ret: ldo R%PA(fault_vector_11)(%r10),%r10 $is_pa20: .level LEVEL /* restore 1.1 || 2.0w */ .level PA_ASM_LEVEL /* restore 1.1 || 2.0w */ #endif /*!CONFIG_64BIT*/ load32 PA(fault_vector_20),%r10 Loading