Skip to content

Commit

Permalink
gcov: add support for GCC 10.1
Browse files Browse the repository at this point in the history
Using gcov to collect coverage data for kernels compiled with GCC 10.1
causes random malfunctions and kernel crashes.  This is the result of a
changed GCOV_COUNTERS value in GCC 10.1 that causes a mismatch between
the layout of the gcov_info structure created by GCC profiling code and
the related structure used by the kernel.

Fix this by updating the in-kernel GCOV_COUNTERS value.  Also re-enable
config GCOV_KERNEL for use with GCC 10.

Reported-by: Colin Ian King <[email protected]>
Reported-by: Leon Romanovsky <[email protected]>
Signed-off-by: Peter Oberparleiter <[email protected]>
Tested-by: Leon Romanovsky <[email protected]>
Tested-and-Acked-by: Colin Ian King <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
oberpar authored and torvalds committed Sep 11, 2020
1 parent 581cb3a commit 40249c6
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
1 change: 0 additions & 1 deletion kernel/gcov/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ menu "GCOV-based kernel profiling"
config GCOV_KERNEL
bool "Enable gcov-based kernel profiling"
depends on DEBUG_FS
depends on !CC_IS_GCC || GCC_VERSION < 100000
select CONSTRUCTORS if !UML
default n
help
Expand Down
4 changes: 3 additions & 1 deletion kernel/gcov/gcc_4_7.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
#include <linux/vmalloc.h>
#include "gcov.h"

#if (__GNUC__ >= 7)
#if (__GNUC__ >= 10)
#define GCOV_COUNTERS 8
#elif (__GNUC__ >= 7)
#define GCOV_COUNTERS 9
#elif (__GNUC__ > 5) || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)
#define GCOV_COUNTERS 10
Expand Down

0 comments on commit 40249c6

Please sign in to comment.