From: Greg Kroah-Hartman Date: Mon, 11 Apr 2022 12:55:55 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v4.9.310~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dee5bb6136d2107f1ca4c86ea3dec28cadf453b1;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: perf-build-don-t-use-ffat-lto-objects-in-the-python-feature-test-when-building-with-clang-13.patch perf-python-fix-probing-for-some-clang-command-line-options.patch tools-build-filter-out-options-and-warnings-not-supported-by-clang.patch tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch --- diff --git a/queue-5.15/perf-build-don-t-use-ffat-lto-objects-in-the-python-feature-test-when-building-with-clang-13.patch b/queue-5.15/perf-build-don-t-use-ffat-lto-objects-in-the-python-feature-test-when-building-with-clang-13.patch new file mode 100644 index 00000000000..50b692ce613 --- /dev/null +++ b/queue-5.15/perf-build-don-t-use-ffat-lto-objects-in-the-python-feature-test-when-building-with-clang-13.patch @@ -0,0 +1,61 @@ +From 3a8a0475861a443f02e3a9b57d044fe2a0a99291 Mon Sep 17 00:00:00 2001 +From: Arnaldo Carvalho de Melo +Date: Thu, 7 Apr 2022 11:04:20 -0300 +Subject: perf build: Don't use -ffat-lto-objects in the python feature test when building with clang-13 + +From: Arnaldo Carvalho de Melo + +commit 3a8a0475861a443f02e3a9b57d044fe2a0a99291 upstream. + +Using -ffat-lto-objects in the python feature test when building with +clang-13 results in: + + clang-13: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument] + error: command '/usr/sbin/clang' failed with exit code 1 + cp: cannot stat '/tmp/build/perf/python_ext_build/lib/perf*.so': No such file or directory + make[2]: *** [Makefile.perf:639: /tmp/build/perf/python/perf.so] Error 1 + +Noticed when building on a docker.io/library/archlinux:base container. + +Cc: Adrian Hunter +Cc: Fangrui Song +Cc: Florian Fainelli +Cc: Ian Rogers +Cc: Jiri Olsa +Cc: John Keeping +Cc: Leo Yan +Cc: Michael Petlan +Cc: Namhyung Kim +Cc: Nathan Chancellor +Cc: Nick Desaulniers +Cc: Sedat Dilek +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman +--- + tools/perf/Makefile.config | 3 +++ + tools/perf/util/setup.py | 2 ++ + 2 files changed, 5 insertions(+) + +--- a/tools/perf/Makefile.config ++++ b/tools/perf/Makefile.config +@@ -270,6 +270,9 @@ ifdef PYTHON_CONFIG + PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil + PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --includes 2>/dev/null) + FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) ++ ifeq ($(CC_NO_CLANG), 0) ++ PYTHON_EMBED_CCOPTS := $(filter-out -ffat-lto-objects, $(PYTHON_EMBED_CCOPTS)) ++ endif + endif + + FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS) +--- a/tools/perf/util/setup.py ++++ b/tools/perf/util/setup.py +@@ -23,6 +23,8 @@ if cc_is_clang: + vars[var] = sub("-fstack-protector-strong", "", vars[var]) + if not clang_has_option("-fno-semantic-interposition"): + vars[var] = sub("-fno-semantic-interposition", "", vars[var]) ++ if not clang_has_option("-ffat-lto-objects"): ++ vars[var] = sub("-ffat-lto-objects", "", vars[var]) + + from distutils.core import setup, Extension + diff --git a/queue-5.15/perf-python-fix-probing-for-some-clang-command-line-options.patch b/queue-5.15/perf-python-fix-probing-for-some-clang-command-line-options.patch new file mode 100644 index 00000000000..dee8e09b30a --- /dev/null +++ b/queue-5.15/perf-python-fix-probing-for-some-clang-command-line-options.patch @@ -0,0 +1,60 @@ +From dd6e1fe91cdd52774ca642d1da75b58a86356b56 Mon Sep 17 00:00:00 2001 +From: Arnaldo Carvalho de Melo +Date: Fri, 8 Apr 2022 10:08:07 -0300 +Subject: perf python: Fix probing for some clang command line options + +From: Arnaldo Carvalho de Melo + +commit dd6e1fe91cdd52774ca642d1da75b58a86356b56 upstream. + +The clang compiler complains about some options even without a source +file being available, while others require one, so use the simple +tools/build/feature/test-hello.c file. + +Then check for the "is not supported" string in its output, in addition +to the "unknown argument" already being looked for. + +This was noticed when building with clang-13 where -ffat-lto-objects +isn't supported and since we were looking just for "unknown argument" +and not providing a source code to clang, was mistakenly assumed as +being available and not being filtered to set of command line options +provided to clang, leading to a build failure. + +Cc: Adrian Hunter +Cc: Fangrui Song +Cc: Florian Fainelli +Cc: Ian Rogers +Cc: Jiri Olsa +Cc: John Keeping +Cc: Leo Yan +Cc: Michael Petlan +Cc: Namhyung Kim +Cc: Nathan Chancellor +Cc: Nick Desaulniers +Cc: Sedat Dilek +Link: http://lore.kernel.org/lkml/ +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman +--- + tools/perf/util/setup.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/tools/perf/util/setup.py ++++ b/tools/perf/util/setup.py +@@ -1,12 +1,14 @@ +-from os import getenv ++from os import getenv, path + from subprocess import Popen, PIPE + from re import sub + + cc = getenv("CC") + cc_is_clang = b"clang version" in Popen([cc.split()[0], "-v"], stderr=PIPE).stderr.readline() ++src_feature_tests = getenv('srctree') + '/tools/build/feature' + + def clang_has_option(option): +- return [o for o in Popen([cc, option], stderr=PIPE).stderr.readlines() if b"unknown argument" in o] == [ ] ++ cc_output = Popen([cc, option, path.join(src_feature_tests, "test-hello.c") ], stderr=PIPE).stderr.readlines() ++ return [o for o in cc_output if ((b"unknown argument" in o) or (b"is not supported" in o))] == [ ] + + if cc_is_clang: + from distutils.sysconfig import get_config_vars diff --git a/queue-5.15/series b/queue-5.15/series index 13edac9d4b1..fa281359ffa 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -253,3 +253,7 @@ selftests-bpf-fix-u8-narrow-load-checks-for-bpf_sk_lookup-remote_port.patch rtc-mc146818-lib-fix-signedness-bug-in-mc146818_get_time.patch sunrpc-don-t-call-connect-more-than-once-on-a-tcp-socket.patch revert-nbd-fix-possible-overflow-on-first_minor-in-nbd_dev_add.patch +perf-build-don-t-use-ffat-lto-objects-in-the-python-feature-test-when-building-with-clang-13.patch +perf-python-fix-probing-for-some-clang-command-line-options.patch +tools-build-filter-out-options-and-warnings-not-supported-by-clang.patch +tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch diff --git a/queue-5.15/tools-build-filter-out-options-and-warnings-not-supported-by-clang.patch b/queue-5.15/tools-build-filter-out-options-and-warnings-not-supported-by-clang.patch new file mode 100644 index 00000000000..15b62c3e6e3 --- /dev/null +++ b/queue-5.15/tools-build-filter-out-options-and-warnings-not-supported-by-clang.patch @@ -0,0 +1,133 @@ +From 41caff459a5b956b3e23ba9ca759dd0629ad3dda Mon Sep 17 00:00:00 2001 +From: Arnaldo Carvalho de Melo +Date: Tue, 5 Apr 2022 10:33:21 -0300 +Subject: tools build: Filter out options and warnings not supported by clang + +From: Arnaldo Carvalho de Melo + +commit 41caff459a5b956b3e23ba9ca759dd0629ad3dda upstream. + +These make the feature check fail when using clang, so remove them just +like is done in tools/perf/Makefile.config to build perf itself. + +Adding -Wno-compound-token-split-by-macro to tools/perf/Makefile.config +when building with clang is also necessary to avoid these warnings +turned into errors (-Werror): + + CC /tmp/build/perf/util/scripting-engines/trace-event-perl.o + In file included from util/scripting-engines/trace-event-perl.c:35: + In file included from /usr/lib64/perl5/CORE/perl.h:4085: + In file included from /usr/lib64/perl5/CORE/hv.h:659: + In file included from /usr/lib64/perl5/CORE/hv_func.h:34: + In file included from /usr/lib64/perl5/CORE/sbox32_hash.h:4: + /usr/lib64/perl5/CORE/zaphod32_hash.h:150:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro] + ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + /usr/lib64/perl5/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32' + #define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START { \ + ^~~~~~~~~~ + /usr/lib64/perl5/CORE/perl.h:737:29: note: expanded from macro 'STMT_START' + # define STMT_START (void)( /* gcc supports "({ STATEMENTS; })" */ + ^ + /usr/lib64/perl5/CORE/zaphod32_hash.h:150:5: note: '{' token is here + ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + /usr/lib64/perl5/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32' + #define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START { \ + ^ + /usr/lib64/perl5/CORE/zaphod32_hash.h:150:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro] + ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + /usr/lib64/perl5/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32' + v ^= (v>>23); \ + ^ + /usr/lib64/perl5/CORE/zaphod32_hash.h:150:5: note: ')' token is here + ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + /usr/lib64/perl5/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32' + } STMT_END + ^~~~~~~~ + /usr/lib64/perl5/CORE/perl.h:738:21: note: expanded from macro 'STMT_END' + # define STMT_END ) + ^ + +Please refer to the discussion on the Link: tag below, where Nathan +clarifies the situation: + + +acme> And then get to the problems at the end of this message, which seem +acme> similar to the problem described here: +acme> +acme> From Nathan Chancellor <> +acme> Subject [PATCH] mwifiex: Remove unnecessary braces from HostCmd_SET_SEQ_NO_BSS_INFO +acme> +acme> https://lkml.org/lkml/2020/9/1/135 +acme> +acme> So perhaps in this case its better to disable that +acme> -Werror,-Wcompound-token-split-by-macro when building with clang? + +Yes, I think that is probably the best solution. As far as I can tell, +at least in this file and context, the warning appears harmless, as the +"create a GNU C statement expression from two different macros" is very +much intentional, based on the presence of PERL_USE_GCC_BRACE_GROUPS. +The warning is fixed in upstream Perl by just avoiding creating GNU C +statement expressions using STMT_START and STMT_END: + + https://github.com/Perl/perl5/issues/18780 + https://github.com/Perl/perl5/pull/18984 + +If I am reading the source code correctly, an alternative to disabling +the warning would be specifying -DPERL_GCC_BRACE_GROUPS_FORBIDDEN but it +seems like that might end up impacting more than just this site, +according to the issue discussion above. + + +Based-on-a-patch-by: Sedat Dilek +Tested-by: Sedat Dilek # Debian/Selfmade LLVM-14 (x86-64) +Cc: Adrian Hunter +Cc: Fangrui Song +Cc: Florian Fainelli +Cc: Ian Rogers +Cc: Jiri Olsa +Cc: John Keeping +Cc: Leo Yan +Cc: Michael Petlan +Cc: Namhyung Kim +Cc: Nathan Chancellor +Cc: Nick Desaulniers +Link: http://lore.kernel.org/lkml/YkxWcYzph5pC1EK8@kernel.org +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman +--- + tools/build/feature/Makefile | 7 +++++++ + tools/perf/Makefile.config | 3 +++ + 2 files changed, 10 insertions(+) + +--- a/tools/build/feature/Makefile ++++ b/tools/build/feature/Makefile +@@ -216,6 +216,13 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(P + PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` + FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) + ++ifeq ($(CC_NO_CLANG), 0) ++ PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS)) ++ PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS)) ++ PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS)) ++ FLAGS_PERL_EMBED += -Wno-compound-token-split-by-macro ++endif ++ + $(OUTPUT)test-libperl.bin: + $(BUILD) $(FLAGS_PERL_EMBED) + +--- a/tools/perf/Makefile.config ++++ b/tools/perf/Makefile.config +@@ -788,6 +788,9 @@ else + LDFLAGS += $(PERL_EMBED_LDFLAGS) + EXTLIBS += $(PERL_EMBED_LIBADD) + CFLAGS += -DHAVE_LIBPERL_SUPPORT ++ ifeq ($(CC_NO_CLANG), 0) ++ CFLAGS += -Wno-compound-token-split-by-macro ++ endif + $(call detected,CONFIG_LIBPERL) + endif + endif diff --git a/queue-5.15/tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch b/queue-5.15/tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch new file mode 100644 index 00000000000..2377cad6e57 --- /dev/null +++ b/queue-5.15/tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch @@ -0,0 +1,48 @@ +From 541f695cbcb6932c22638b06e0cbe1d56177e2e9 Mon Sep 17 00:00:00 2001 +From: Arnaldo Carvalho de Melo +Date: Mon, 4 Apr 2022 17:28:48 -0300 +Subject: tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts + +From: Arnaldo Carvalho de Melo + +commit 541f695cbcb6932c22638b06e0cbe1d56177e2e9 upstream. + +Just like its done for ldopts and for both in tools/perf/Makefile.config. + +Using `` to initialize PERL_EMBED_CCOPTS somehow precludes using: + + $(filter-out SOMETHING_TO_FILTER,$(PERL_EMBED_CCOPTS)) + +And we need to do it to allow for building with versions of clang where +some gcc options selected by distros are not available. + +Tested-by: Sedat Dilek # Debian/Selfmade LLVM-14 (x86-64) +Cc: Adrian Hunter +Cc: Fangrui Song +Cc: Florian Fainelli +Cc: Ian Rogers +Cc: Jiri Olsa +Cc: John Keeping +Cc: Leo Yan +Cc: Michael Petlan +Cc: Namhyung Kim +Cc: Nathan Chancellor +Cc: Nick Desaulniers +Link: http://lore.kernel.org/lkml/YktYX2OnLtyobRYD@kernel.org +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman +--- + tools/build/feature/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/tools/build/feature/Makefile ++++ b/tools/build/feature/Makefile +@@ -213,7 +213,7 @@ strip-libs = $(filter-out -l%,$(1)) + PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) + PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) + PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) +-PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` ++PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null) + FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) + + ifeq ($(CC_NO_CLANG), 0)