lkml.org 
[lkml]   [2020]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 60/94] gcov: add support for GCC 10.1
    Date
    From: Peter Oberparleiter <oberpar@linux.ibm.com>

    [ Upstream commit 40249c6962075c040fd071339acae524f18bfac9 ]

    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 <colin.king@canonical.com>
    Reported-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Tested-by: Leon Romanovsky <leonro@nvidia.com>
    Tested-and-Acked-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/gcov/Kconfig | 1 -
    kernel/gcov/gcc_4_7.c | 4 +++-
    2 files changed, 3 insertions(+), 2 deletions(-)

    diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
    index 1d78ed19a3512..1276aabaab550 100644
    --- a/kernel/gcov/Kconfig
    +++ b/kernel/gcov/Kconfig
    @@ -3,7 +3,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---
    diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c
    index ca5e5c0ef8536..5b9e76117ded1 100644
    --- a/kernel/gcov/gcc_4_7.c
    +++ b/kernel/gcov/gcc_4_7.c
    @@ -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
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-09-21 18:41    [W:3.180 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site