Re: Linux 4.19 and GCC 9

From: Arnaldo Carvalho de Melo
Date: Fri May 17 2019 - 14:29:45 EST


On May 17, 2019 2:23:10 PM GMT-03:00, Ivan Babrou <ivan@xxxxxxxxxxxxxx> wrote:
>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
^^^^^^^^^^^^^^

That is not upstream perf, please look for patches from 4.19 to Linus' master Branch for fixes.

I'll triple check here in a f30 container just in case meanwhile.

Thanks,

- Arnaldo
>
>[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