Em Mon, Jun 10, 2019 at 12:21:51AM -0700, Ivan Babrou escreveu: > Looks like 4.19.49 received some patches for GCC 9+, but unfortunately > perf still doesn't want to compile: > > [07:15:32]In file included from /usr/include/string.h:635, > [07:15:32] from util/debug.h:7, > [07:15:32] from builtin-help.c:15: > [07:15:32]In function 'strncpy', > [07:15:32] inlined from 'add_man_viewer' at builtin-help.c:192:2, > [07:15:32] inlined from 'perf_help_config' at builtin-help.c:284:3: > [07:15:32]/usr/include/x86_64-linux-gnu/bits/string3.h:126:10: error: > '__builtin_strncpy' output truncated before terminating nul copying as > many bytes from a string as its length [-Werror=stringop-truncation] > [07:15:32] 126 | return __builtin___strncpy_chk (__dest, __src, __len, > __bos (__dest)); > [07:15:32] | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > [07:15:32]builtin-help.c: In function 'perf_help_config': > [07:15:32]builtin-help.c:187:15: note: length computed here > [07:15:32] 187 | size_t len = strlen(name); > [07:15:32] | ^~~~~~~~~~~~ > [07:15:32]cc1: all warnings being treated as errors The patch below should've taken care of that, and it has a Fixes: tag, i.e. the stable scripts should've noticed that, and it was noticed with gcc 8.2. - Arnaldo commit b6313899f4ed2e76b8375cf8069556f5b94fbff0 Author: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> Date: Thu Dec 6 11:20:21 2018 -0300 perf help: Remove needless use of strncpy() Since we make sure the destination buffer has at least strlen(orig) + 1, no need to do a strncpy(dest, orig, strlen(orig)), just use strcpy(dest, orig). This silences this gcc 8.2 warning on Alpine Linux: In function 'add_man_viewer', inlined from 'perf_help_config' at builtin-help.c:284:3: builtin-help.c:192:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation] strncpy((*p)->name, name, len); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ builtin-help.c: In function 'perf_help_config': builtin-help.c:187:15: note: length computed here size_t len = strlen(name); ^~~~~~~~~~~~ Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> Cc: Jiri Olsa <jolsa@xxxxxxxxxx> Cc: Namhyung Kim <namhyung@xxxxxxxxxx> Fixes: 078006012401 ("perf_counter tools: add in basic glue from Git") Link: https://lkml.kernel.org/n/tip-2f69l7drca427ob4km8i7kvo@xxxxxxxxxxxxxx Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > On Fri, May 17, 2019 at 11:27 AM Arnaldo Carvalho de Melo > <arnaldo.melo@xxxxxxxxx> wrote: > > > > 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 > > -- - Arnaldo