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 <[email protected]>
Reported-by: Chuck Lever III <[email protected]>
Signed-off-by: Peter Oberparleiter <[email protected]>
---
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 <[email protected]>
> Reported-by: Chuck Lever III <[email protected]>
> Signed-off-by: Peter Oberparleiter <[email protected]>
> ---
> 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 <[email protected]>
--
Chuck Lever
On Mon, 10 Jun 2024 09:41:19 -0400 Chuck Lever <[email protected]> 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 <[email protected]>
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 <[email protected]> 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 <[email protected]>
>
> 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