On Thu, 2012-06-21 at 16:24 +1000, Benjamin Herrenschmidt wrote:
> On Thu, 2012-06-21 at 15:36 +1000, Michael Ellerman wrote:
> > 
> > powerpc64-linux-ld: 
> > /src/next/net/openvswitch/vport-netdev.c:189:(.text+0x89b990): 
> >         sibling call optimization to `_restgpr0_28' does not allow 
> > automatic multiple TOCs;
> >         recompile with -mminimal-toc or -fno-optimize-sibling-calls, or 
> > make `_restgpr0_28' extern
> > 
> > 
> > And those are generated calls so I don't see how we can fix them.
> 
> Is this a module ? We should really be linking that stuff directly with the 
> module....

No, it's builtin.

> The interesting thing is that we do build everything except a handful of
> files with -mminimal-toc unless something's wrong with our main Makefile....

Yeah, the top arch Makefile sets it, though we do override it in a few
places. I tried removing those overrides and it didn't seem to make any
difference.

> Can you show the full build command that triggers the above ?

Well that would be a few MBs of log, but here's an excerpt:

make -f scripts/Makefile.build obj=net/openvswitch
  /opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc -m64 
-Wp,-MD,net/openvswitch/.vport-netdev.o.d  -nostdinc -isystem 
/opt/cross/gcc-4.6.3-nolibc/powerpc64-linux/lib/gcc/powerpc64-linux/4.6.3/include
 -I/home/michael/src/kmk/next/arch/powerpc/include 
-Iarch/powerpc/include/generated -Iinclude  -include 
/home/michael/src/kmk/next/include/linux/kconfig.h -D__KERNEL__ -Iarch/powerpc 
-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing 
-fno-common -Werror-implicit-function-declaration -Wno-format-security 
-fno-delete-null-pointer-checks -Os -msoft-float -pipe -Iarch/powerpc 
-mminimal-toc -mtraceback=no -mcall-aixdesc -mtune=power7 -mtune=cell 
-mno-altivec -mno-vsx -mno-spe -mspe=no -funit-at-a-time -fno-dwarf2-cfi-asm 
-mno-string -mno-sched-epilog -Wa,-maltivec -fno-reorder-blocks 
-fno-ipa-cp-clone -fno-partial-inlining -Wframe-larger-than=2048 
-fno-stack-protector -Wno-unused-but-set-variable -g 
-femit-struct-debug-baseonly -pg -fno-inline-functions-call
 ed-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow 
-fconserve-stack -DCC_HAVE_ASM_GOTO  -fprofile-arcs -ftest-coverage    
-D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vport_netdev)"  
-D"KBUILD_MODNAME=KBUILD_STR(openvswitch)" -c -o 
net/openvswitch/.tmp_vport-netdev.o net/openvswitch/vport-netdev.c
  if [ "-pg" = "-pg" ]; then set -e ; perl 
/home/michael/src/kmk/next/scripts/recordmcount.pl "powerpc" "little" "64" 
"/opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-objdump" 
"/opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-objcopy" 
"/opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc -m64 -Wall 
-Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common 
-Werror-implicit-function-declaration -Wno-format-security 
-fno-delete-null-pointer-checks -Os -msoft-float -pipe -Iarch/powerpc 
-mminimal-toc -mtraceback=no -mcall-aixdesc -mtune=power7 -mtune=cell 
-mno-altivec -mno-vsx -mno-spe -mspe=no -funit-at-a-time -fno-dwarf2-cfi-asm 
-mno-string -mno-sched-epilog -Wa,-maltivec -fno-reorder-blocks 
-fno-ipa-cp-clone -fno-partial-inlining -Wframe-larger-than=2048  
-fno-stack-protector -Wno-unused-but-set-variable -g  
-femit-struct-debug-baseonly -pg  -fno-inline-functions-called-once 
-Wdeclaration-after-statement -Wno-pointer-sign -fno-s
 trict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO" 
"/opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-ld -m elf64ppc" 
"/opt/cross/gcc-4.6-nolibc/powerpc64-linux/bin/powerpc64-linux-nm --synthetic" 
"" "" "0" "net/openvswitch/vport-netdev.o"; fi;

And then a whole bunch of calls to ld.

So we are at least building that file with -mminimal-toc.

cheers

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to