powerpc: change .fixup test to a GCC version test
authorScott Wood <scottwood@freescale.com>
Fri, 21 Sep 2012 00:10:01 +0000 (19:10 -0500)
committerScott Wood <scottwood@freescale.com>
Mon, 26 Nov 2012 21:41:22 +0000 (15:41 -0600)
This was introduced by commit 244615197469dd6fe75ae082f38424b97c79aeaf, but it
fails in a minimal SPL build where the only thing in arch/powerpc/lib is
cache.c, which apparently doesn't generate any fixup records.

The problem is reported to occur with GCC 3.x, so insist on GCC 4.0 or newer.
Patterned after checkthumb as suggested by Tom Rini.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Cc: Peter Tyser <ptyser@xes-inc.com>
Cc: Tom Rini <trini@ti.com>
--
v2: test gcc version instead of testing nothing

Makefile
arch/powerpc/config.mk
arch/powerpc/lib/Makefile

index 5f8b02c36a5ea624c9f590838737aedb2ec2f328..5a3cfba0cd3b5fce9c797f951ac352962c04524c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -643,6 +643,16 @@ checkthumb:
                echo '*** Your board is configured for THUMB mode.'; \
                false; \
        fi
+
+# GCC 3.x is reported to have problems generating the type of relocation
+# that U-Boot wants.
+# See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html
+checkgcc4:
+       @if test $(call cc-version) -lt 0400; then \
+               echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \
+               false; \
+       fi
+
 #
 # Auto-generate the autoconf.mk file (which is included by all makefiles)
 #
index a30715459de952a543cd85d6fe21eac74260ac0c..b7062818bbf45c458ebf34c713eedaefa7939c06 100644 (file)
@@ -42,3 +42,8 @@ endif
 ifeq ($(CROSS_COMPILE),powerpc-openbsd-)
 PLATFORM_CPPFLAGS+= -D__PPC__
 endif
+
+# Only test once
+ifneq ($(CONFIG_SPL_BUILD),y)
+ALL-y += checkgcc4
+endif
index 808021c42ef11ef805a9fb5f5ff6cf701e7c822a..4a4163532a47bfb2c9b17a0fa082e3c19bd2b22e 100644 (file)
@@ -75,12 +75,6 @@ TARGETS += $(LIB)
 all: $(TARGETS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       @if ! $(CROSS_COMPILE)readelf -S $(OBJS) | grep -q '\.fixup.*PROGBITS';\
-       then \
-               echo "ERROR: Your compiler doesn't generate .fixup sections!";\
-               echo "       Upgrade to a recent toolchain."; \
-               exit 1; \
-       fi;
        $(call cmd_link_o_target, $(OBJS))
 
 $(LIBGCC): $(obj).depend $(LGOBJS)