powerpc: Detect broken or mismatched toolchains

Started by Sam Bobroff on Feb 22, 2016 · 3 messages from 2 authors · Last reply Feb 23, 2016

Subsystems (2)

Maintainers (2)

STALE3913d

open the first message on its own page

Message details and related content
It can currently be difficult to diagnose a build that fails due to
the compiler, linker or other parts of the toolchain being unable to
build binaries of the type required by the kernel config. For example
using a little endian toolchain to build a big endian kernel may
produce:

as: unrecognized option '-maltivec'

This patch adds a basic compile test and error message to
arch/powerpc/Makefile so that the above error becomes:

*** Sorry, your toolchain seems to be broken or incorrect. ***
Make sure it supports your kernel configuration (ppc64).

Signed-off-by: Sam Bobroff <redacted>
---

 arch/powerpc/Makefile | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 96efd82..0041cd2 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -355,6 +355,13 @@ TOUT	:= .tmp_gas_check
 # - Require gcc 4.0 or above on 64-bit
 # - gcc-4.2.0 has issues compiling modules on 64-bit
 checkbin:
+	@if test "$(call try-run,echo 'int _start(void) { return 0; }' > \"$$TMP\"; \
+	$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -x c -nostdlib \"$$TMP\" \
+	-o /dev/null,ok,broken)" = "broken" ; then \
+		echo "*** Sorry, your toolchain seems to be broken or incorrect. ***" ; \
+		echo "Make sure it supports your kernel configuration ($(UTS_MACHINE))." ; \
+		false; \
+	fi
 	@if test "$(cc-name)" != "clang" \
 	    && test "$(cc-version)" = "0304" ; then \
 		if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \
-- 
2.1.0
Message details and related content
On Mon, 2016-02-22 at 16:13 +1100, Sam Bobroff wrote:
It can currently be difficult to diagnose a build that fails due to
the compiler, linker or other parts of the toolchain being unable to
build binaries of the type required by the kernel config. For example
using a little endian toolchain to build a big endian kernel may
produce:

as: unrecognized option '-maltivec'

This patch adds a basic compile test and error message to
arch/powerpc/Makefile so that the above error becomes:

*** Sorry, your toolchain seems to be broken or incorrect. ***
Make sure it supports your kernel configuration (ppc64).

Signed-off-by: Sam Bobroff <redacted>
---
How is this more useful than getting to actually see the way in which the
toolchain (or the CFLAGS) is broken?

-Scott
Message details and related content
On Mon, Feb 22, 2016 at 08:05:01PM -0600, Scott Wood wrote:
On Mon, 2016-02-22 at 16:13 +1100, Sam Bobroff wrote:
quoted
It can currently be difficult to diagnose a build that fails due to
the compiler, linker or other parts of the toolchain being unable to
build binaries of the type required by the kernel config. For example
using a little endian toolchain to build a big endian kernel may
produce:

as: unrecognized option '-maltivec'

This patch adds a basic compile test and error message to
arch/powerpc/Makefile so that the above error becomes:

*** Sorry, your toolchain seems to be broken or incorrect. ***
Make sure it supports your kernel configuration (ppc64).

Signed-off-by: Sam Bobroff <redacted>
---
How is this more useful than getting to actually see the way in which the
toolchain (or the CFLAGS) is broken?
My reasoning was that it would be better because it happens at the start of the
build, rather than (possibly) a long way into it, and it indicates that the
problem is the toolchain setup (or config) itself rather than the file it's
trying to compile or link.

But I agree completely with what you're saying. I'll try re-working it in a way
that shows the command that fails and it's output.

Cheers,
Sam.
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help