__emutls_get_address is a hidden symbol and for some reason, recent mpfr ebuilds contain a reference to it, which breaks the rebuild of mpc during `emerge -e system`. I worked around this by installing dev-libs/mpfr-3.0.1_p4-r1 (with some minor changes to make the ebuild support prefix) during a manual bootstrap. I subsequently found the same issue to break breaks x11-libs/pixman-0.30.2 when trying to build firefox. I tried fiddling with this manually, but I have not nailed down what is causing this to break yet. $ x86_64-pc-solaris2.11-gcc -O2 -pipe -Wall -fno-strict-aliasing -fvisibility=hidden -o .libs/prng-test prng-test.o ./.libs/libutils.a ../pixman/.libs/libpixman-1.so -lm -Wl,-rpath -Wl,/home/richard/gentoo/usr/lib /home/richard/gentoo/usr/lib/gcc/x86_64-pc-solaris2.11/4.7.2/../../../../x86_64-pc-solaris2.11/bin/ld: .libs/prng-test: hidden symbol `__emutls_get_address' in /home/richard/gentoo/usr/lib/gcc/x86_64-pc-solaris2.11/4.7.2/libgcc_eh.a(emutls.o) is referenced by DSO /home/richard/gentoo/usr/lib/gcc/x86_64-pc-solaris2.11/4.7.2/../../../../x86_64-pc-solaris2.11/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status There is some very subtle thing wrong with the toolchain. I did not spot any significant difference upon a cursory comparisonw ith Linux.
I wonder if this is solved by the care that the bootstrap takes to build some compilers to understand the symbols.
I believe this has been fixed by a commit to binutils that made symbol versioning working again