Re: [PATCH][PPC32] Makefile cleanups and gcc-3.4+binutils-2.14 check

Tom Rini
2004-07-28T22:07:46Z

On Wed, Jul 28, 2004 at 03:00:52PM -0700, Andrew Morton wrote:

> Tom Rini <trini@kernel.crashing.org> wrote:
> >
> > The following patch does three things. First, it removes all instances
> > of:
> > ifeq ($(CONFIG_FOO),y)
> > AFLAGS += -Wa,-mfoo
> > endif
> >
> > and makes us set them once in arch/ppc/Makefile, via
> > aflags-$(CONFIG_FOO), just like we do for CFLAGS. Next it adds a test
> > for gcc-3.4 and binutils-2.14. The problem with this combination is
> > that the -many flag is broken in binutils-2.14 and gcc-3.4 will pass it
> > down, causing other flags to be overridden and the compile to fail.
> > Changing gcc or binutils versions fixes this. Finally, it changes
> > places in the Makefiles where we did:
> > ifeq ($(CONFIG_FOO),y)
> > obj-$(CONFIG_BAR) += foo_bar.o
> > endif
> > into
> > obj-$(CONFIG_FOO) += $(bar-y)
> > bar-$(CONFIG_BAR) += foo_bar.o
>
> Unfortunately this has significant clashes with the mpc52xx bk tree
> which I'm carrying.
>
> That patch has been sitting around for several weeks now - can we get it
> merged up first?

I talked with Kumar Gala at OLS, and I believe everyone (ppc) is happy
with mpc52xx stuff. So yes, that can go out.

I've taken the binutils-2.14+gcc-3.4 bit out (and none of the other
cleanups) as it seems like we get 1-2 reports a week from this bad tools
combination:

Signed-off-by: Tom Rini <trini@kernel.crashing.org>
===== arch/ppc/Makefile 1.55 vs edited =====
--- 1.55/arch/ppc/Makefile 2004-07-05 03:27:10 -07:00
+++ edited/arch/ppc/Makefile 2004-07-15 07:20:40 -07:00
@@ -106,17 +106,24 @@
else
NEW_AS := 0
endif
+# gcc-3.4 and binutils-2.14 are a fatal combination.
+GCC_VERSION := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
+BAD_GCC_AS := $(shell echo mftb 5 | $(AS) -mppc -many -o /dev/null >/dev/null 2>&1 && echo 0 || echo 1)

-ifneq ($(NEW_AS),0)
checkbin:
+ifeq ($(GCC_VERSION)$(BAD_GCC_AS),03041)
+ @echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '
+ @echo 'correctly with gcc-3.4 and your version of binutils.'
+ @echo '*** Please upgrade your binutils or downgrade your gcc'
+ @false
+endif
+ifneq ($(NEW_AS),0)
@echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '
@echo 'correctly with old versions of binutils.'
@echo '*** Please upgrade your binutils to ${GOODVER} or newer'
@false
-else
-checkbin:
- @true
endif
+ @true

CLEAN_FILES += include/asm-$(ARCH)/offsets.h \
arch/$(ARCH)/kernel/asm-offsets.s

--
Tom Rini