Re: FYI: Unable to build -r501994 ports' lang/gcc8 on clang 8 based powerpc64 system (no -O1 use): "does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or ..."

Mark Millard via freebsd-toolchain <[email protected]>
Newsgroups gmane.os.freebsd.devel.toolchain,gmane.os.freebsd.devel.ppc,gmane.os.freebsd.devel.ports
Message-ID <[email protected]>
[It built with GNU ld (GNU Binutils) 2.32 as ld.]

On 2019-May-18, at 21:42, Mark Millard <marklmi at yahoo.com> wrote:

> On 2019-May-18, at 21:11, Mark Millard <marklmi at yahoo.com> wrote:
> 
>> This was in a poudriere bulk build on a head -r347549 based powerpc64
>> system with system clang 8 for cc and c++ and base/binutils
>> for ld. I was attempting a build with the -O1 changes disabled. (Note:
>> the system is self hosting for buildworld buildkernel via the clang 8
>> and base/binutils combination.)
>> 
>> So having issues with building lang/gcc8 is not limited  to gcc 4.2.1's
>> tool chain for powerpc64. (I've not yet tested -O1 use as the bulk build
>> still has lots of other things to build.)
>> 
>> . . .
>> c++: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
>> /usr/bin/ld: libbackend.a(ipa-inline.o)(.text+0x540): sibling call optimization to `_ZN16function_summaryIP14ipa_fn_summaryE3getEP11cgraph_node' does not allow automatic multiple TOCs; recompile with 
>> -mminimal-toc or -fno-optimize-sibling-calls, or make `_ZN16function_summaryIP14ipa_fn_summaryE3getEP11cgraph_node' extern
>> /usr/bin/ld: libbackend.a(ipa-inline.o)(.text+0xa58): sibling call optimization to `_ZN16function_summaryIP14ipa_fn_summaryE3getEP11cgraph_node' does not allow automatic multiple TOCs; recompile with 
>> -mminimal-toc or -fno-optimize-sibling-calls, or make `_ZN16function_summaryIP14ipa_fn_summaryE3getEP11cgraph_node' extern
>> . . .
>> /usr/bin/ld: libbackend.a(ipa-inline.o)(.text+0x1150): sibling call optimization to `_ZN10hash_tableIN8hash_mapI8int_hashIiLi0ELin1EEP16ipa_call_summary21simple_hashmap_traitsI19default_hash_traitsIS2
>> _ES4_EE10hash_entryE11xcallocatorE19find_slot_with_hashERKij13insert_option' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `_ZN10hash_tab
>> leIN8hash_mapI8int_hashIiLi0ELin1EEP16ipa_call_summary21simple_hashmap_traitsI19default_hash_traitsIS2_ES4_EE10hash_entryE11xcallocatorE19find_slot_with_hashERKij13insert_option' extern
>> /usr/bin/ld: libbackend.a(ipa-inline.o)(.text+0x1224): sibling call optimization to `_ZN10hash_tableIN8hash_mapI8int_hashIiLi0ELin1EEP16ipa_call_summary21simple_hashmap_traitsI19default_hash_traitsIS2
>> _ES4_EE10hash_entryE11xcallocatorE19find_slot_with_hashERKij13insert_option' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `_ZN10hash_tab
>> leIN8hash_mapI8int_hashIiLi0ELin1EEP16ipa_call_summary21simple_hashmap_traitsI19default_hash_traitsIS2_ES4_EE10hash_entryE11xcallocatorE19find_slot_with_hashERKij13insert_option' extern
>> . . .
>> 
>> 
>> For reference . . .
>> 
>> # cc -v
>> FreeBSD clang version 8.0.0 (tags/RELEASE_800/final 356365) (based on LLVM 8.0.0)
>> Target: powerpc64-unknown-freebsd13.0
>> Thread model: posix
>> InstalledDir: /usr/bin
>> 
>> # c++ -v
>> FreeBSD clang version 8.0.0 (tags/RELEASE_800/final 356365) (based on LLVM 8.0.0)
>> Target: powerpc64-unknown-freebsd13.0
>> Thread model: posix
>> InstalledDir: /usr/bin
>> 
>> # ld -v
>> GNU ld (GNU Binutils) 2.32
>> 
>> 
>> I used:
>> 
>> # svnlite diff /usr/ports/lang/gcc8/ | more
>> Index: /usr/ports/lang/gcc8/Makefile
>> ===================================================================
>> --- /usr/ports/lang/gcc8/Makefile       (revision 501994)
>> +++ /usr/ports/lang/gcc8/Makefile       (working copy)
>> @@ -62,7 +62,7 @@
>> 
>> .elif ${ARCH} == powerpc64
>> CONFIGURE_ENV+=        UNAME_m="powerpc64"
>> -MAKE_ARGS+=    CFLAGS_FOR_TARGET="-O1" CXXFLAGS_FOR_TARGET="-O1" BOOT_CFLAGS="-O1" # PR235975
>> +#MAKE_ARGS+=   CFLAGS_FOR_TARGET="-O1" CXXFLAGS_FOR_TARGET="-O1" BOOT_CFLAGS="-O1" # PR235975
>> 
>> .elif ${ARCH} == powerpcspe
>> CONFIGURE_ARGS+=       --with-cpu=8548 --enable-e500_double --without-fp
>> @@ -80,7 +80,7 @@
>> CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
>> ALL_TARGET=    bootstrap-lean
>> .endif
>> -INSTALL_TARGET=        install-strip
>> +#INSTALL_TARGET=       install-strip
>> .if ${UID} != 0
>> BINMODE=       755
>> .endif
>> 
> 
> I managed to not have poudriere using base/binutils but instead:
> 
> # /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin/ld -v
> GNU ld 2.17.50 [FreeBSD] 2007-07-03
> 
> cc and c++ were as they should have been:
> 
> # /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin/cc -v
> FreeBSD clang version 8.0.0 (tags/RELEASE_800/final 356365) (based on LLVM 8.0.0)
> Target: powerpc64-unknown-freebsd13.0
> Thread model: posix
> InstalledDir: /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin
> 
> # /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin/c++ -v
> FreeBSD clang version 8.0.0 (tags/RELEASE_800/final 356365) (based on LLVM 8.0.0)
> Target: powerpc64-unknown-freebsd13.0
> Thread model: posix
> InstalledDir: /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin
> 
> So I was not testing the tools combination that I thought/intended.


Sure enough, with the originally intended linker:

# /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud/usr/bin/ld -v                                                                                                                  GNU ld (GNU Binutils) 2.32

lang/gcc8 then fine via poudriere bulk.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.