From: Greg Kroah-Hartman Date: Tue, 17 Jul 2018 13:16:23 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.17.8~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1b130835ee971fdb6e7c6b11360bdf97aff73ae;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: kbuild-fix-escaping-in-.cmd-files-for-future-make.patch --- diff --git a/queue-4.4/kbuild-fix-escaping-in-.cmd-files-for-future-make.patch b/queue-4.4/kbuild-fix-escaping-in-.cmd-files-for-future-make.patch new file mode 100644 index 00000000000..8d772054e2a --- /dev/null +++ b/queue-4.4/kbuild-fix-escaping-in-.cmd-files-for-future-make.patch @@ -0,0 +1,114 @@ +From 9564a8cf422d7b58f6e857e3546d346fa970191e Mon Sep 17 00:00:00 2001 +From: Rasmus Villemoes +Date: Sun, 8 Apr 2018 23:35:28 +0200 +Subject: Kbuild: fix # escaping in .cmd files for future Make +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Rasmus Villemoes + +commit 9564a8cf422d7b58f6e857e3546d346fa970191e upstream. + +I tried building using a freshly built Make (4.2.1-69-g8a731d1), but +already the objtool build broke with + +orc_dump.c: In function ‘orc_dump’: +orc_dump.c:106:2: error: ‘elf_getshnum’ is deprecated [-Werror=deprecated-declarations] + if (elf_getshdrnum(elf, &nr_sections)) { + +Turns out that with that new Make, the backslash was not removed, so cpp +didn't see a #include directive, grep found nothing, and +-DLIBELF_USE_DEPRECATED was wrongly put in CFLAGS. + +Now, that new Make behaviour is documented in their NEWS file: + + * WARNING: Backward-incompatibility! + Number signs (#) appearing inside a macro reference or function invocation + no longer introduce comments and should not be escaped with backslashes: + thus a call such as: + foo := $(shell echo '#') + is legal. Previously the number sign needed to be escaped, for example: + foo := $(shell echo '\#') + Now this latter will resolve to "\#". If you want to write makefiles + portable to both versions, assign the number sign to a variable: + C := \# + foo := $(shell echo '$C') + This was claimed to be fixed in 3.81, but wasn't, for some reason. + To detect this change search for 'nocomment' in the .FEATURES variable. + +This also fixes up the two make-cmd instances to replace # with $(pound) +rather than with \#. There might very well be other places that need +similar fixup in preparation for whatever future Make release contains +the above change, but at least this builds an x86_64 defconfig with the +new make. + +Link: https://bugzilla.kernel.org/show_bug.cgi?id=197847 +Cc: Randy Dunlap +Signed-off-by: Rasmus Villemoes +Signed-off-by: Masahiro Yamada +Cc: Konstantin Khlebnikov +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/Kbuild.include | 5 +++-- + tools/build/Build.include | 5 +++-- + tools/scripts/Makefile.include | 2 ++ + 3 files changed, 8 insertions(+), 4 deletions(-) + +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -7,6 +7,7 @@ quote := " + squote := ' + empty := + space := $(empty) $(empty) ++pound := \# + + ### + # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +@@ -236,11 +237,11 @@ endif + + # Replace >$< with >$$< to preserve $ when reloading the .cmd file + # (needed for make) +-# Replace >#< with >\#< to avoid starting a comment in the .cmd file ++# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file + # (needed for make) + # Replace >'< with >'\''< to be able to enclose the whole string in '...' + # (needed for the shell) +-make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1))))) ++make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + + # Find any prerequisites that is newer than target or that does not exist. + # PHONY targets skipped in both cases. +--- a/tools/build/Build.include ++++ b/tools/build/Build.include +@@ -12,6 +12,7 @@ + # Convenient variables + comma := , + squote := ' ++pound := \# + + ### + # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +@@ -43,11 +44,11 @@ echo-cmd = $(if $($(quiet)cmd_$(1)),\ + ### + # Replace >$< with >$$< to preserve $ when reloading the .cmd file + # (needed for make) +-# Replace >#< with >\#< to avoid starting a comment in the .cmd file ++# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file + # (needed for make) + # Replace >'< with >'\''< to be able to enclose the whole string in '...' + # (needed for the shell) +-make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1))))) ++make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))) + + ### + # Find any prerequisites that is newer than target or that does not exist. +--- a/tools/scripts/Makefile.include ++++ b/tools/scripts/Makefile.include +@@ -92,3 +92,5 @@ ifneq ($(silent),1) + QUIET_INSTALL = @printf ' INSTALL %s\n' $1; + endif + endif ++ ++pound := \# diff --git a/queue-4.4/series b/queue-4.4/series new file mode 100644 index 00000000000..9dce20da67d --- /dev/null +++ b/queue-4.4/series @@ -0,0 +1 @@ +kbuild-fix-escaping-in-.cmd-files-for-future-make.patch