All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Josh Poimboeuf <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: jpoimboe@redhat.com, peterz@infradead.org, hpa@zytor.com,
	mingo@kernel.org, tglx@linutronix.de, sudipm.mukherjee@gmail.com,
	sfr@canb.auug.org.au, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, akpm@linux-foundation.org
Subject: [tip:core/objtool] objtool: Detect and warn if libelf is missing anddon't break the build
Date: Fri, 4 Mar 2016 03:21:38 -0800	[thread overview]
Message-ID: <tip-d3a325df8e6636d912436ef4a2d16accf3b1fe7f@git.kernel.org> (raw)
In-Reply-To: <8c27fe00face60f42e888ddb3142c97e45223165.1457026550.git.jpoimboe@redhat.com>

Commit-ID:  d3a325df8e6636d912436ef4a2d16accf3b1fe7f
Gitweb:     http://git.kernel.org/tip/d3a325df8e6636d912436ef4a2d16accf3b1fe7f
Author:     Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Thu, 3 Mar 2016 11:39:30 -0600
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 4 Mar 2016 12:18:23 +0100

objtool: Detect and warn if libelf is missing anddon't break the build

With CONFIG_STACK_VALIDATION enabled, if the host system doesn't have
a development version of libelf installed, the build fails with errors
like:

  elf.h:22:18: fatal error: gelf.h: No such file or directory compilation terminated.

Instead of failing to build, instead just print a warning and disable
stack validation.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-next@vger.kernel.org
Cc: linux@roeck-us.net
Cc: live-patching@vger.kernel.org
Link: http://lkml.kernel.org/r/8c27fe00face60f42e888ddb3142c97e45223165.1457026550.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 Makefile               | 13 ++++++++++++-
 scripts/Makefile.build |  2 ++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 2c27a01..60b7295 100644
--- a/Makefile
+++ b/Makefile
@@ -995,8 +995,19 @@ prepare0: archprepare FORCE
 # All the preparing..
 prepare: prepare0 prepare-objtool
 
+ifdef CONFIG_STACK_VALIDATION
+  has_libelf := $(shell echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf - &> /dev/null && echo 1 || echo 0)
+  ifeq ($(has_libelf),1)
+    objtool_target := tools/objtool FORCE
+  else
+    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel")
+    SKIP_STACK_VALIDATION := 1
+    export SKIP_STACK_VALIDATION
+  endif
+endif
+
 PHONY += prepare-objtool
-prepare-objtool: $(if $(CONFIG_STACK_VALIDATION), tools/objtool FORCE)
+prepare-objtool: $(objtool_target)
 
 # Generate some files
 # ---------------------------------------------------------------------------
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 130a452..e1bc190 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -242,6 +242,7 @@ cmd_record_mcount =						\
 endif
 
 ifdef CONFIG_STACK_VALIDATION
+ifneq ($(SKIP_STACK_VALIDATION),1)
 
 __objtool_obj := $(objtree)/tools/objtool/objtool
 
@@ -260,6 +261,7 @@ objtool_obj = $(if $(patsubst y%,, \
 	$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
 	$(__objtool_obj))
 
+endif # SKIP_STACK_VALIDATION
 endif # CONFIG_STACK_VALIDATION
 
 define rule_cc_o_c

  reply	other threads:[~2016-03-04 11:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-03  6:09 linux-next: Tree for Mar 3 Stephen Rothwell
2016-03-03 11:00 ` Sudip Mukherjee
2016-03-03 11:18   ` Sudip Mukherjee
2016-03-03 14:35     ` Josh Poimboeuf
2016-03-03 14:53       ` [PATCH] tools: Support relative directory path for 'O=' Josh Poimboeuf
2016-03-03 16:52         ` [tip:core/objtool] " tip-bot for Josh Poimboeuf
2016-03-03 17:39       ` [PATCH] objtool: Warn if libelf is missing Josh Poimboeuf
2016-03-04 11:21         ` tip-bot for Josh Poimboeuf [this message]
2016-03-05  8:24         ` [tip:core/objtool] objtool: Detect and warn if libelf is missing and don't break the build tip-bot for Josh Poimboeuf
2016-03-03 12:04   ` linux-next: Tree for Mar 3 Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-d3a325df8e6636d912436ef4a2d16accf3b1fe7f@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sfr@canb.auug.org.au \
    --cc=sudipm.mukherjee@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.