On 03/25/2018 03:32 PM, Rasmus Villemoes wrote: > I tried building using a freshly built Make (4.2.1-69-g8a731d1), but 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. > > There are likely other places in the tree that will need fixing, so > cc-ing Kbuild, but with this at least a x86-64 defconfig builds. Hi, For one of these patches, can we say: Fixes https://bugzilla.kernel.org/show_bug.cgi?id=197847 ? Thanks. > Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> > --- > tools/objtool/Makefile | 2 +- > tools/scripts/Makefile.include | 2 ++ > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile > index e6acc281dd37..8ae824dbfca3 100644 > --- a/tools/objtool/Makefile > +++ b/tools/objtool/Makefile > @@ -35,7 +35,7 @@ CFLAGS += -Wall -Werror $(WARNINGS) -fomit-frame-pointer -O2 -g $(INCLUDES) > LDFLAGS += -lelf $(LIBSUBCMD) > > # Allow old libelf to be used: > -elfshdr := $(shell echo '\#include <libelf.h>' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr) > +elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr) > CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) > > AWK = awk > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include > index dd614463d4d6..495066bafbe3 100644 > --- a/tools/scripts/Makefile.include > +++ b/tools/scripts/Makefile.include > @@ -120,3 +120,5 @@ ifneq ($(silent),1) > QUIET_UNINST = @printf ' UNINST %s\n' $1; > endif > endif > + > +pound := \# > -- ~Randy -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html