Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1349388
| From | tip-bot for Josh Poimboeuf <tipbot@zytor.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [tip:core/objtool] objtool: Support CROSS_COMPILE |
| Date | 2016-03-03 18:10 +0100 |
| Message-ID | <r8EVc-1Ta-3@gated-at.bofh.it> (permalink) |
| References | <r8pCO-7yT-19@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Commit-ID: c1d45c3abd49b5bf9447e435099c1b000dcde752
Gitweb: http://git.kernel.org/tip/c1d45c3abd49b5bf9447e435099c1b000dcde752
Author: Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Wed, 2 Mar 2016 18:39:37 -0600
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 3 Mar 2016 16:13:00 +0100
objtool: Support CROSS_COMPILE
When building with CONFIG_STACK_VALIDATION on a ppc64le host with an x86
cross-compiler, Stephen Rothwell saw the following objtool build errors:
DESCEND objtool
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/builtin-check.o
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/special.o
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/elf.o
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/objtool.o
MKDIR /home/sfr/next/x86_64_allmodconfig/tools/objtool/arch/x86/insn/
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/libstring.o
elf.c:22:23: fatal error: sys/types.h: No such file or directory
compilation terminated.
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/exec-cmd.o
CC /home/sfr/next/x86_64_allmodconfig/tools/objtool/help.o
builtin-check.c:28:20: fatal error: string.h: No such file or directory
compilation terminated.
objtool.c:28:19: fatal error: stdio.h: No such file or directory
compilation terminated.
It fails to build because it tries to compile objtool with the
cross-compiler instead of the host compiler.
Ensure that it always uses the host compiler by ignoring CROSS_COMPILE.
In order to do that properly, the libsubcmd.a library needs to be built
in tools/objtool/ rather than tools/lib/subcmd/. The latter directory
contains the cross-compiled version which is needed for perf and
possibly other tools.
Note that cross-compiling for x86 on a _big_ endian system would result
in a bunch of false positive objtool warnings during the kernel build
because it isn't endian-aware. But that's generally a rare edge case
and there haven't been any reports of anybody needing that.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/55b63eefc347f1bb28573f972d8d1adbf1f1c31d.1456962210.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
tools/lib/subcmd/Makefile | 6 ++++--
tools/objtool/Makefile | 17 ++++++++++-------
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/tools/lib/subcmd/Makefile b/tools/lib/subcmd/Makefile
index 629cf8c..1faecb8 100644
--- a/tools/lib/subcmd/Makefile
+++ b/tools/lib/subcmd/Makefile
@@ -8,8 +8,10 @@ srctree := $(patsubst %/,%,$(dir $(srctree)))
#$(info Determined 'srctree' to be $(srctree))
endif
-CC = $(CROSS_COMPILE)gcc
-AR = $(CROSS_COMPILE)ar
+CC ?= $(CROSS_COMPILE)gcc
+LD ?= $(CROSS_COMPILE)ld
+AR ?= $(CROSS_COMPILE)ar
+
RM = rm -f
MAKEFLAGS += --no-print-directory
diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
index c4f0713..e4a6bd5 100644
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
@@ -7,13 +7,19 @@ ARCH := x86
endif
endif
+# always use the host compiler
+CC = gcc
+LD = ld
+AR = ar
+
ifeq ($(srctree),)
srctree := $(patsubst %/,%,$(dir $(shell pwd)))
srctree := $(patsubst %/,%,$(dir $(srctree)))
endif
-SUBCMD_SRCDIR = $(srctree)/tools/lib/subcmd/
-LIBSUBCMD = $(if $(OUTPUT),$(OUTPUT),$(SUBCMD_SRCDIR))libsubcmd.a
+SUBCMD_SRCDIR = $(srctree)/tools/lib/subcmd/
+LIBSUBCMD_OUTPUT = $(if $(OUTPUT),$(OUTPUT),$(PWD)/)
+LIBSUBCMD = $(LIBSUBCMD_OUTPUT)libsubcmd.a
OBJTOOL := $(OUTPUT)objtool
OBJTOOL_IN := $(OBJTOOL)-in.o
@@ -45,12 +51,9 @@ $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN)
$(LIBSUBCMD): fixdep FORCE
- $(Q)$(MAKE) -C $(SUBCMD_SRCDIR)
-
-$(LIBSUBCMD)-clean:
- $(Q)$(MAKE) -C $(SUBCMD_SRCDIR) clean > /dev/null
+ $(Q)$(MAKE) -C $(SUBCMD_SRCDIR) OUTPUT=$(LIBSUBCMD_OUTPUT)
-clean: $(LIBSUBCMD)-clean
+clean:
$(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL)
$(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
$(Q)$(RM) $(OUTPUT)arch/x86/insn/inat-tables.c $(OUTPUT)fixdep
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
linux-next: build failure after merge of the tip tree Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-01 02:30 +0100
Re: linux-next: build failure after merge of the tip tree Ingo Molnar <mingo@kernel.org> - 2016-03-01 08:10 +0100
Re: linux-next: build failure after merge of the tip tree Sedat Dilek <sedat.dilek@gmail.com> - 2016-03-01 08:30 +0100
Re: linux-next: build failure after merge of the tip tree "H. Peter Anvin" <hpa@zytor.com> - 2016-03-01 08:50 +0100
Re: linux-next: build failure after merge of the tip tree Sedat Dilek <sedat.dilek@gmail.com> - 2016-03-01 09:50 +0100
Re: linux-next: build failure after merge of the tip tree Ingo Molnar <mingo@kernel.org> - 2016-03-01 10:50 +0100
Re: linux-next: build failure after merge of the tip tree Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-01 10:50 +0100
[PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-01 23:00 +0100
Re: [PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-02 03:30 +0100
Re: [PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-02 22:20 +0100
Re: [PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-02 23:30 +0100
[PATCH 0/2] objtool: Cross-compilation support Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 01:50 +0100
[PATCH 1/2] x86/asm/decoder: Use explicitly signed chars Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 01:50 +0100
[tip:core/objtool] x86/asm/decoder: Use explicitly signed chars tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-03-03 18:00 +0100
Re: [tip:core/objtool] x86/asm/decoder: Use explicitly signed chars "H. Peter Anvin" <hpa@zytor.com> - 2016-03-03 20:10 +0100
[PATCH 2/2] objtool: Support CROSS_COMPILE Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 01:50 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-03 03:50 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 04:30 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-03 04:40 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 04:50 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Ingo Molnar <mingo@kernel.org> - 2016-03-03 16:20 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-04 00:10 +0100
Re: [PATCH 2/2] objtool: Support CROSS_COMPILE "H. Peter Anvin" <hpa@zytor.com> - 2016-03-03 16:30 +0100
[tip:core/objtool] objtool: Support CROSS_COMPILE tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-03-03 18:10 +0100
Re: [PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Sedat Dilek <sedat.dilek@gmail.com> - 2016-03-03 08:40 +0100
Re: [PATCH] objtool: Disable stack validation when CROSS_COMPILE is used Stephen Rothwell <sfr@canb.auug.org.au> - 2016-03-03 09:00 +0100
csiph-web