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>
