[Mono-bugs] [Bug 54694][Min] Changed - compilation failure (__tls_get_addr) [SOLUTION][GENTOO]

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
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 firefly@diku.dk.


--- 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 @@
 Priority: Minor
 Component: misc
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: vargaz@freemail.hu               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
+URL: http://www.diku.dk/hjemmesider/studerende/firefly/
 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 mikko.korkalo@f-solutions.net  2004-07-15 14:35 -------
 Happends on a fresh fedora core 2 installation too.
 ------- Additional Comments From mikko.korkalo@f-solutions.net  2004-07-15 14:37 -------
 glibc-2.3.3-27 that is
+------- Additional Comments From firefly@diku.dk  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
+in them).
+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.