[Mono-bugs] [Bug 54694][Min] Changed - compilation failure (__tls_get_addr) [SOLUTION][GENTOO]
Sat, 17 Jul 2004 19:18:14 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by firstname.lastname@example.org.
--- shadow/54694 2004-07-15 14:37:49.000000000 -0400
+++ shadow/54694.tmp.12386 2004-07-17 19:18:14.000000000 -0400
@@ -9,14 +9,13 @@
Summary: compilation failure (__tls_get_addr) [SOLUTION][GENTOO]
Some users reported compilation failures like this:
/bin/sh ../../libtool --mode=link gcc -g -O2 -fno-strict-aliasing -g
@@ -99,6 +98,49 @@
------- Additional Comments From email@example.com 2004-07-15 14:35 -------
Happends on a fresh fedora core 2 installation too.
------- Additional Comments From firstname.lastname@example.org 2004-07-15 14:37 -------
glibc-2.3.3-27 that is
+------- Additional Comments From email@example.com 2004-07-17 19:18 -------
+You probably have a "non-i686" CPU [*].
+[this bug has been marked a duplicate of a bug that occurs with Fedora
+and Ximian's prebuilt RPMs -- I also ran into it in that situation but
+I think enough of my explanation will carry over to Gentoo for it to
+be useful here. I had a different, better version but Epiphany ate it
+when it crashed :/]
+This forces Fedora to not use its i686 version of the glibc package
+and fall back to its i386 version. The i386 version does not have
+NPTL (Native Posix Threading Library) but uses LinuxThreads instead.
+Unfortunately, it doesn't support TLS (Thread-Local Storage) either.
+As far as I know, TLS doesn't require much support from libc apart
+from asking the kernel to allocate some segments and loading the right
+segment selector values into the GS register -- but maybe there is a
+deep and good reason why TLS won't work with NPTL.
+NPTL, the new threading support, doesn't work with the 386 because it
+uses the CMPXCHG instruction for its internal spinlock implementation,
+which doesn't exist on the 386. There are other ways of coding this
+in userspace -- or one could still use the CMPXCHG instruction and
+have it emulated by the kernel. This will work well as long as there
+is only one 386 in the system (the 386 did not support SMP but Compaq
+and possibly a few others built some machines with more than one 386
+An other solution would be to have a glibc version compiled for the 486.
+It is possible to take an SRPM for FC2 glibc, change the specfile
+slightly, rebuild the RPM and install it. This makes Ximian's
+prebuilt Mono RPMs for FC2 work just fine on my Mobile Pentium MMX 233
+MHz laptop :) .... it did take 21h10m to build (and a week of
+detective work!) and required about 2.1G disk space.
+Anyway, the conclusion is that glibc is pre-broken in FC1 and FC2, at
+least if you don't have the right CPU.
+*: K6 and K6-2 are probably also considered non-i686 CPUs for the
+purposes of this bug report.