Subject: Re: Problems with allyesconfig kernel build

From: Segher Boessenkool <[email-masked]>
Date: Tue, 23 Oct 2007 11:09:04 +0200

> This was first noted with the -mm tree, but has now migrated into 
> Linus'
> tree.  An allyesconfig build dies in the link stage like this:
>
> /usr/bin/ld: arch/powerpc/kernel/head_64.o(.text+0x80c8): sibling call 
> optimization to `.text.init.refok' does not allow automatic multiple 
> TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or 
> make `.text.init.refok' extern
> /usr/bin/ld: arch/powerpc/kernel/head_64.o(.text+0x8160): sibling call 
> optimization to `.text.init.refok' does not allow automatic multiple 
> TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or 
> make `.text.init.refok' extern
> /usr/bin/ld: arch/powerpc/kernel/head_64.o(.text+0x81c4): sibling call 
> optimization to `.text.init.refok' does not allow automatic multiple 
> TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or 
> make `.text.init.refok' extern
> /usr/bin/ld: final link failed: Bad value

I just tried, and it works fine for me.

> Intuiting the obvious, I changed all the _INIT_STATIC and _INIT_GLOBAL
> uses in head_64.S back to _STATIC and _GLOBAL (which just moves the 
> code
> from .text.init.refok to .text).  Now the linker segfaults instead.  
> :-)

Tried that, too, and no segfault, everything happy.

> $ ld --version
> GNU ld (GNU Binutils for Debian) 2.18

I'm using CVS HEAD of binutils.  Could you try that, with the same
GCC version you are currently using?  Just to narrow things down...

Segher