Re: Linux 4.19 and GCC 9

From: Ivan Babrou
Date: Fri May 17 2019 - 13:25:33 EST


On Fri, May 17, 2019 at 8:22 AM Arnaldo Carvalho de Melo
<arnaldo.melo@xxxxxxxxx> wrote:
>
> Em Fri, May 17, 2019 at 11:01:45AM +0200, Miguel Ojeda escreveu:
> > On Fri, May 17, 2019 at 10:51 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > On Fri, May 17, 2019 at 10:35:29AM +0200, Miguel Ojeda wrote:
> > > > On Fri, May 17, 2019 at 9:38 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > > > >
> > > > > Right; if there is anything you can reproduce on linus.git I'll happily
> > > > > have a look. If it doesn't reproduce all you have to do is find the
> > > > > patches that make it work and ask Greg.
> > > >
> > > > Just to clarify: Linus' master is clean of these issues with GCC 9.1.1.
> > >
> > > Great! Care to find the patches that did that work and send me the git
> > > commit ids so that I can queue them up? I don't have gcc9 here yet on
> > > my systems, so I can not test for this.
> >
> > I am unsure about the perf and the objtools parts (Peter/Josh?), but
>
> I'm not noticing these while building upstream perf with gcc 9.1.1 on at
> least fedora:30.
>
> 33 fedora:30 : Ok gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1)

I've tried to replicate this in fedora:30 docker container and it's there:

[root@linuxkit-025000000001 perf]# gcc --version
gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1)

[root@linuxkit-025000000001 perf]# pwd
/tmp/linux-4.19.44/tools/perf

[root@linuxkit-025000000001 perf]# make -j1
...
trace/beauty/ioctl.c: In function âioctl__scnprintf_kvm_cmdâ:
trace/beauty/ioctl.c:85:82: error: array subscript [-2147483648, -1]
is outside array bounds of âconst char *[0]â [-Werror=array-bounds]
85 | if (nr < strarray__kvm_ioctl_cmds.nr_entries &&
strarray__kvm_ioctl_cmds.entries[nr] != NULL)
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
In file included from trace/beauty/ioctl.c:82:
/tmp/linux-4.19.44/tools/perf/trace/beauty/generated/ioctl/kvm_ioctl_array.c:1:20:
note: while referencing âkvm_ioctl_cmdsâ
1 | static const char *kvm_ioctl_cmds[] = {
| ^~~~~~~~~~~~~~
In file included from /usr/include/string.h:494,
from util/debug.h:7,
from builtin-help.c:15:
In function âstrncpyâ,
inlined from âadd_man_viewerâ at builtin-help.c:192:2,
inlined from âperf_help_configâ at builtin-help.c:284:3:
/usr/include/bits/string_fortified.h:106:10: error:
â__builtin_strncpyâ output truncated before terminating nul copying as
many bytes from a string as its length [-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
builtin-help.c: In function âperf_help_configâ:
builtin-help.c:187:15: note: length computed here
187 | size_t len = strlen(name);
| ^~~~~~~~~~~~
trace/beauty/ioctl.c: In function âioctl__scnprintf_perf_cmdâ:
trace/beauty/ioctl.c:109:84: error: array subscript [-2147483648, -1]
is outside array bounds of âconst char *[0]â [-Werror=array-bounds]
109 | if (nr < strarray__perf_ioctl_cmds.nr_entries &&
strarray__perf_ioctl_cmds.entries[nr] != NULL)
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
In file included from trace/beauty/ioctl.c:106:
/tmp/linux-4.19.44/tools/perf/trace/beauty/generated/ioctl/perf_ioctl_array.c:1:20:
note: while referencing âperf_ioctl_cmdsâ
1 | static const char *perf_ioctl_cmds[] = {
| ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

> > about the -Wmissing-attributes I cleaned, they were these:
>
> > a6e60d84989f ("include/linux/module.h: copy __init/__exit attrs to
> > init/cleanup_module")
> > c0d9782f5b6d ("Compiler Attributes: add support for __copy (gcc >= 9)")
> > ff98e20ef208 ("lib/crc32.c: mark crc32_le_base/__crc32c_le_base
> > aliases as __pure")
> >
> > Cheers,
> > Miguel
>
> --
>
> - Arnaldo