[ppc64] newer gcc breaks kernel build?

Jakub Jelinek jakub at redhat.com
Thu Sep 17 19:31:52 UTC 2009


On Thu, Sep 17, 2009 at 03:25:51PM -0400, Kyle McMartin wrote:
> On Thu, Sep 17, 2009 at 09:04:33PM +0200, Jakub Jelinek wrote:
> > On Thu, Sep 17, 2009 at 01:44:42PM -0400, Kyle McMartin wrote:
> > > - fix ppc/ppc64 -mmultiple and out of line gpr/fpr saving bugs
> > >   (#519409, PR target/40677, PR target/41175)
> > > 
> > > My guess is this has broken the kernel build on powerpc64:
> > > init/built-in.o: In function `arch_disable_smp_support':
> > > /builddir/build/BUILD/kernel-2.6.31/linux-2.6.31.ppc64/init/main.c:139: undefined reference to `._savegpr0_31'
> > > /builddir/build/BUILD/kernel-2.6.31/linux-2.6.31.ppc64/init/main.c:139: undefined reference to `._restgpr0_31'
> > > 
> > > by generating calls to out of line handlers, which are only supplied for
> > > PPC32 in arch/powerpc/lib/.
> > > 
> > > Any thoughts? If it's not this, it must have been something hitting rawhide
> > > between:
> > > 2009-09-16 22:06:38	and
> > > 2009-09-17 15:25:47
> > 
> > For 64-bit code it is ld that is supposed to synthetize those symbols on the
> > fly.  gcc uses them (newly, starting with gcc 4.5 as of a few days ago
> > upstream and gcc-4.4.1-14 in rawhide) even for 64-bit code when -Os, as the
> > out of line savers/restorers are smaller than inline register
> > saving/restoring.
> > 
> 
> Ah, so it's a binutils bug? (Sorry, the only reason I fingered gcc was because
> binutils hadn't been updated recently.)

I've noticed the dot in front of the symbol, is kernel using still the for
years deprecated oldish ppc64 ABI instead of the new one (i.e. uses
-mcall-aixdesc instead of not using this option at all)?  Maybe it is broken
only in that case.

> Would a workaround be to switch ppc64 back to -O2 until ld is fixed?

Sure, at -O2 those aren't emitted.

	Jakub




More information about the Fedora-kernel-list mailing list