Date: Tue, 17 Jun 2003 16:41:08 -0700 (PDT) From: Julian Elischer <julian@elischer.org> To: Marcel Moolenaar <marcel@xcllnt.net> Cc: FreeBSD current users <current@freebsd.org> Subject: Re: __thread support in -current.. Message-ID: <Pine.BSF.4.21.0306171640490.31025-100000@InterJet.elischer.org> In-Reply-To: <20030617224545.GC57040@ns1.xcllnt.net>
next in thread | previous in thread | raw e-mail | index | archive | help
see my answer to you there.. On Tue, 17 Jun 2003, Marcel Moolenaar wrote: > On Tue, Jun 17, 2003 at 03:34:15PM -0700, Julian Elischer wrote: > > > > Ok, so having thrashed out what is required on the threads list > > (and severely strained (but hopefully not permanently) our relations > > with the OpenGL folks) we've figured out that we do need to support > > __thread (if we don't we'll miss out on alot). > > > > I have basicaly worked out what we need to do > > (Generarlly we do the same as solaris does) to support this.. > > The question is, what do we need to do for gcc and the loader > > to support this..? > > > > I guess the support is in gcc as Linux and solaris use it, but > > is our linker close enough to what they use to be able to benefit at all > > from them? > > >From my posting to threads@: > > \begin{quote} > ... To support the __thread > keyword, our thread library needs to create the TLS as defined in the > binary and its dependent shared libraries by virtue of the .tdata and > .tbss sections/segments, based on the image of the TLS as constructed > by the RTLD for the initial set of modules (created for the initial > thread) and amended by TLS space defined in the dynamicly loaded > libraries; and the TLS has to be created for every new thread at the > time the thread itself is created. This TLS allocation has to be made > accessable in accordance with runtime specifications for the supported > architectures (libthr: i386 & ia64; libkse: i386 currently -- more to > follow) and in line with the access sequences created by the compiler, > and using the static relocations known to the static linker and dynamic > relocations of which the support needs to be added to RTLD. > > The static TLS model requires the least amount of work: add support > to allocate the TLS image for every thread creation and point the > thread pointer to it in a way compatible with the runtime spec. > > The dynamic TLS model requires more substantial changes and involves > RTLD as well. This is the model that requires __tls_get_addr(). > \end{quote} > > HTH, > > -- > Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0306171640490.31025-100000>