Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 616102

Summary: =dev-lang/tk-8.6.6 fails to build with LTO -- libtk8.6.so: error: undefined reference to 'tclStubsPtr'
Product: Gentoo Linux Reporter: Petross404(Petros S) <petross404>
Component: Current packagesAssignee: TCL/TK Project <tcltk>
Status: RESOLVED WORKSFORME    
Severity: normal CC: chaoscrawler, gentoo, paolo.pedroni
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 618550    
Attachments: build.log
emerge --info

Description Petross404(Petros S) 2017-04-20 10:54:46 UTC
Created attachment 470460 [details]
build.log

dev-lang/tk can't play nice with GCC6.3 and LTO : 

/tmp/portage/dev-lang/tk-8.6.6/temp/cc8sLhEC.lto.o
/tmp/portage/dev-lang/tk-8.6.6/work/tk8.6.6/unix-abi_x86_64.amd64/libtk8.6.so: error: undefined reference to 'tclStubsPtr'
/tmp/portage/dev-lang/tk-8.6.6/work/tk8.6.6/unix-abi_x86_64.amd64/libtk8.6.so: error: undefined reference to 'Tcl_InitStubs'
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: initial tasks run time: (user: 0.010000 sys: 0.010000 wall: 0.160000)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: middle tasks run time: (user: 0.000000 sys: 0.000000 wall: 0.000000)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: final tasks run time: (user: 0.000000 sys: 0.000000 wall: 0.000000)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total run time: (user: 0.010000 sys: 0.010000 wall: 0.170000)
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total space allocated by malloc: 6406144 bytes
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total bytes mapped for read: 22246866
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: maximum bytes mapped for read at one time: 22246866
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: archive libraries: 12
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total archive members: 1128
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: loaded archive members: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: lib groups: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total lib groups members: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: loaded lib groups members: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: output file size: 11896 bytes
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: symbol table entries: 9284; buckets: 28411
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: symbol table stringpool entries: 6325; buckets: 28411
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: symbol table stringpool Stringdata structures: 97
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: section name pool entries: 30; buckets: 47
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: section name pool Stringdata structures: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: output symbol name pool entries: 35; buckets: 59
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: output symbol name pool Stringdata structures: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: dynamic name pool entries: 31; buckets: 59
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: dynamic name pool Stringdata structures: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .rodata merged constants size: 4; input: 1; output: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .rodata merged strings input bytes: 28
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .rodata merged strings input strings: 3
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .rodata merged strings entries: 3; buckets: 5
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .rodata merged strings Stringdata structures: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .comment merged strings input bytes: 192
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .comment merged strings input strings: 6
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .comment merged strings entries: 2; buckets: 5
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: .comment merged strings Stringdata structures: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total free lists: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: total free list nodes: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: calls to Free_list::remove: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: nodes visited: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: calls to Free_list::allocate: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: nodes visited: 0
collect2: error: ld returned 1 exit status
make: *** [Makefile:618: wish] Error 1
Comment 1 Petross404(Petros S) 2017-04-20 10:55:32 UTC
Created attachment 470462 [details]
emerge --info
Comment 2 curious 2017-04-30 22:43:32 UTC
i do confirm this problem exist also with gcc-5.4.0 
to resolve you have to rebuild tcl without lto , then emerge tk again.
Comment 3 Paolo Pedroni 2017-05-16 08:07:02 UTC
(In reply to curious from comment #2)
> i do confirm this problem exist also with gcc-5.4.0 
> to resolve you have to rebuild tcl without lto , then emerge tk again.

I can confirm both the bug (with both gcc-5.4.0 and gcc-6.3.0) and the workaround.
Comment 4 Jason Lamb 2017-08-17 00:51:05 UTC
As previously stated, when trying to emerge dev-lang/tk-8.6.6 with LTO, it was necessary to first emerge dev-lang/tcl-8.6.6 without LTO, and then emerge dev-lang/tk-8.6.6 with LTO, to avoid this error and emerge failure.

However, with the update to dev-lang/tcl-8.6.7 and dev-lang/tk-8.6.7, this no longer worked. It was actually necessary to emerge both without LTO to avoid this error emerging dev-lang/tk-8.6.7.
Comment 5 Tupone Alfredo gentoo-dev 2018-09-20 06:41:27 UTC
Adding those to make.conf:

AR="gcc-ar"
NM="gcc-nm"
RANLIB="gcc-ranlib"


make me build it succesfully