lkml.org 
[lkml]   [2017]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules
+++ Josh Poimboeuf [15/02/17 12:21 -0600]:
>When building a CONFIG_STACK_VALIDATION enabled kernel without the
>libelf devel package installed, the Makefile prints a warning:
>
> "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
>
>But when building an out-of-tree module, the warning doesn't show.
>Instead it tries to use objtool, and the build fails with:
>
> /bin/sh: ./tools/objtool/objtool: No such file or directory
>
>Make sure the warning and the disabling of objtool occur in all cases,
>by moving the CONFIG_STACK_VALIDATION checks outside the 'ifeq
>($(KBUILD_EXTMOD),)' block in the Makefile.
>
>Reported-by: Marc MERLIN <marc@merlins.org>
>Suggested-by: Jessica Yu <jeyu@redhat.com>
>Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build")
>Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>

With this patch the warning now prints for OOT modules, and more
importantly, the build no longer breaks for them, so:

Reviewed-by: Jessica Yu <jeyu@redhat.com>

>---
> Makefile | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
>diff --git a/Makefile b/Makefile
>index 8e223e0..bcf7036 100644
>--- a/Makefile
>+++ b/Makefile
>@@ -908,6 +908,18 @@ mod_sign_cmd = true
> endif
> export mod_sign_cmd
>
>+ifdef CONFIG_STACK_VALIDATION
>+ has_libelf := $(call try-run,\
>+ echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
>+ ifeq ($(has_libelf),1)
>+ objtool_target := tools/objtool FORCE
>+ else
>+ $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
>+ SKIP_STACK_VALIDATION := 1
>+ export SKIP_STACK_VALIDATION
>+ endif
>+endif
>+
>
> ifeq ($(KBUILD_EXTMOD),)
> core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
>@@ -1035,18 +1047,6 @@ prepare0: archprepare gcc-plugins
> # All the preparing..
> prepare: prepare0 prepare-objtool
>
>-ifdef CONFIG_STACK_VALIDATION
>- has_libelf := $(call try-run,\
>- echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
>- ifeq ($(has_libelf),1)
>- objtool_target := tools/objtool FORCE
>- else
>- $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
>- SKIP_STACK_VALIDATION := 1
>- export SKIP_STACK_VALIDATION
>- endif
>-endif
>-
> PHONY += prepare-objtool
> prepare-objtool: $(objtool_target)
>
>--
>2.7.4
>

\
 
 \ /
  Last update: 2017-02-15 20:00    [W:0.097 / U:0.376 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site