kernel/gcov/gcc_4_7.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
Using gcov on kernels compiled with GCC 14 results in truncated 16-byte
long .gcda files with no usable data. To fix this, update GCOV_COUNTERS
to match the value defined by GCC 14.
Tested with GCC versions 14.1.0 and 13.2.0.
Reported-by: Allison Henderson <allison.henderson@oracle.com>
Reported-by: Chuck Lever III <chuck.lever@oracle.com>
Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
---
kernel/gcov/gcc_4_7.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c
index 74a4ef1da9ad..fd75b4a484d7 100644
--- a/kernel/gcov/gcc_4_7.c
+++ b/kernel/gcov/gcc_4_7.c
@@ -18,7 +18,9 @@
#include <linux/mm.h>
#include "gcov.h"
-#if (__GNUC__ >= 10)
+#if (__GNUC__ >= 14)
+#define GCOV_COUNTERS 9
+#elif (__GNUC__ >= 10)
#define GCOV_COUNTERS 8
#elif (__GNUC__ >= 7)
#define GCOV_COUNTERS 9
--
2.40.1
On Mon, Jun 10, 2024 at 11:27:43AM +0200, Peter Oberparleiter wrote: > Using gcov on kernels compiled with GCC 14 results in truncated 16-byte > long .gcda files with no usable data. To fix this, update GCOV_COUNTERS > to match the value defined by GCC 14. > > Tested with GCC versions 14.1.0 and 13.2.0. > > Reported-by: Allison Henderson <allison.henderson@oracle.com> > Reported-by: Chuck Lever III <chuck.lever@oracle.com> > Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com> > --- > kernel/gcov/gcc_4_7.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c > index 74a4ef1da9ad..fd75b4a484d7 100644 > --- a/kernel/gcov/gcc_4_7.c > +++ b/kernel/gcov/gcc_4_7.c > @@ -18,7 +18,9 @@ > #include <linux/mm.h> > #include "gcov.h" > > -#if (__GNUC__ >= 10) > +#if (__GNUC__ >= 14) > +#define GCOV_COUNTERS 9 > +#elif (__GNUC__ >= 10) > #define GCOV_COUNTERS 8 > #elif (__GNUC__ >= 7) > #define GCOV_COUNTERS 9 > -- > 2.40.1 > With "gcc (GCC) 14.1.1 20240522 (Red Hat 14.1.1-4)" on Fedora 40: lines: 58.2% (2350 out of 4036) functions: 72.2% (197 out of 273) branches: 35.5% (1037 out of 2923) calls: 0.0% (0 out of 0) All were 0% previously. Tested-by: Chuck Lever <chuck.lever@oracle.com> -- Chuck Lever
On Mon, 10 Jun 2024 09:41:19 -0400 Chuck Lever <chuck.lever@oracle.com> wrote: > On Mon, Jun 10, 2024 at 11:27:43AM +0200, Peter Oberparleiter wrote: > > Using gcov on kernels compiled with GCC 14 results in truncated 16-byte > > long .gcda files with no usable data. To fix this, update GCOV_COUNTERS > > to match the value defined by GCC 14. > > > > Tested with GCC versions 14.1.0 and 13.2.0. > > > > ... > > Tested-by: Chuck Lever <chuck.lever@oracle.com> I assume this problem will affect people who use gcc-14 to compile older kernels, so I have added cc:stable to this patch.
On 10.06.2024 19:45, Andrew Morton wrote: > On Mon, 10 Jun 2024 09:41:19 -0400 Chuck Lever <chuck.lever@oracle.com> wrote: >> On Mon, Jun 10, 2024 at 11:27:43AM +0200, Peter Oberparleiter wrote: >>> Using gcov on kernels compiled with GCC 14 results in truncated 16-byte >>> long .gcda files with no usable data. To fix this, update GCOV_COUNTERS >>> to match the value defined by GCC 14. >>> >>> Tested with GCC versions 14.1.0 and 13.2.0. >>> >> >> ... >> >> Tested-by: Chuck Lever <chuck.lever@oracle.com> > > I assume this problem will affect people who use gcc-14 to compile > older kernels, so I have added cc:stable to this patch. Yes, adding this fix also to stable kernels makes sense. -- Peter Oberparleiter Linux on IBM Z Development - IBM Germany R&D
© 2016 - 2026 Red Hat, Inc.