Re: Does -CURRENT's gcc generate ___tls_get_addr under any circumstances

From: John Merryweather Cooper <johnmary_at_adelphia.net>
Date: Fri, 25 Jun 2004 20:03:25 -0700
On Fri, Jun 25, 2004 at 10:55:23PM -0400, Joe Marcus Clarke wrote:
> On Fri, 2004-06-25 at 21:08, John Merryweather Cooper wrote:
> > On Fri, Jun 25, 2004 at 05:09:08PM -0400, Joe Marcus Clarke wrote:
> > > On Fri, 2004-06-25 at 16:44, John Merryweather Cooper wrote:
> > > > I'm working on porting (and getting fully working) lang/mono
> > > > version 0.96, and I'm having a problem.  In one of my object
> > > > files--mini.lo--I'm getting an extern reference to
> > > > ___tls_get_addr.  I've been over the source code in mini.c
> > > > and all the included headers, and I can't find anything to
> > > > get rid of this reference or find a way to resolve it.  As
> > > > a result, the linking of the mono runtime binary fails with
> > > > this symbol unresolved.
> > > > 
> > > > Any and all clues are welcome!
> > > 
> > > As I recall, this is from boehm.  You'll have to tell boehm not to do
> > > thread-local storage.  Note: boehm is in the libgc subdirectory inside
> > > mono.
> > > 
> > > Joe
> > > 
> > > > 
> > > > jmc
> > > > _______________________________________________
> > > > freebsd-gnome_at_freebsd.org mailing list
> > > > http://lists.freebsd.org/mailman/listinfo/freebsd-gnome
> > > > To unsubscribe, send any mail to "freebsd-gnome-unsubscribe_at_freebsd.org"
> > > -- 
> > > PGP Key : http://www.marcuscom.com/pgp.asc
> > > 
> > > 
> > 
> > Hmmm . . .
> > 
> > Well, looking at the libgc code, I note that if it detects GCC 3.x it uses
> > pthreads for thread local storage.  The configure script doesn't provide
> > a means to turn off tls.
> > 
> > Just to be sure, I undefined USE_COMPILER_TLS on the command line with 
> > -UUSE_COMPILER_TLS.
> 
> I think you have to remove this from libgc's configure script.  You
> should be able to do a case statement, and match on freebsd.
> 
> > 
> > No dice, ___tls_get_addr still shows up in the mini.lo object which gets linked
> > into libmono.so which causes mono to fail to link with an undefined
> > symbol (see attached build script).
> > 
> > I've checked all the objects in libgc, and none of them are defining
> > this symbol.  It seems prettly clear that it comes into existance
> > during the compile of mini.c (it's in mini.lo), but I can't for the
> > life of me find were it is in mini.c or in it's includes.
> 
> I saw this, too, when I was testing an earlier version of mono.  I had
> actually enabled some additional options thinking they would help, but
> it turned out to be a bad idea.
> 
> See if you can hunt down the TLS options in libgc's configure, and
> remove them.
> 
> Joe
> 
> > 
> > jmc
> -- 
> PGP Key : http://www.marcuscom.com/pgp.asc

OK, I'll dive into libgc's configure.  I can confirm that this is
problem reoccurs with 0.97 (which I'm now working on) which has
become the release candidate.

jmc
Received on Sat Jun 26 2004 - 01:03:54 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:59 UTC