linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] objtool: fix build with future Make
@ 2018-03-25 22:32 Rasmus Villemoes
  2018-03-25 23:09 ` [PATCH 2/1] Kbuild: fix # escaping in .cmd files for " Rasmus Villemoes
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Rasmus Villemoes @ 2018-03-25 22:32 UTC (permalink / raw)
  To: Josh Poimboeuf, Peter Zijlstra
  Cc: linux-kbuild, Masahiro Yamada, Michal Marek, Rasmus Villemoes,
	linux-kernel

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.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 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 := \#
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-04-09 13:32 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-25 22:32 [PATCH] objtool: fix build with future Make Rasmus Villemoes
2018-03-25 23:09 ` [PATCH 2/1] Kbuild: fix # escaping in .cmd files for " Rasmus Villemoes
2018-03-26 11:48   ` Masahiro Yamada
2018-04-05 21:43     ` Rasmus Villemoes
2018-04-06  3:53       ` Masahiro Yamada
2018-04-08 21:35         ` [PATCH v2] " Rasmus Villemoes
2018-04-09 13:31           ` Masahiro Yamada
2018-03-25 23:42 ` [PATCH] objtool: fix build with " Randy Dunlap
2018-03-27  5:44 ` Masahiro Yamada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).