tls_get_addr on Solaris 8

71 views
Skip to first unread message

Thomas Schulz

unread,
Dec 17, 2008, 4:07:47 PM12/17/08
to
I may be trying to do the impossible. I am trying to build Firefox 3.0.4
on Solaris 8 using Sun's C 5.8 2005/10/13. It has become obvious that
Firefox 3.0.4 expects to be built on a newer operating system such as
Solaris 10. I have been able to find source for most of the functions
that Solaris 8 lacks (floorf, ceilf, roundf, strerror_r, etc.). The
show stopper right now is that the linker can not find __tls_get_addr,
which as far as I can tell is not in any library on Solaris 8.

It looks like it is the thread support in the compiler that wants
__tls_get_addr, there is no referance to __tls_get_addr in the Firefox
code. Can anyone tell me a way to tell the compiler not to create
code that needs __tls_get_addr? Any other ideas?

I know that Solaris 8 is ancient. We are still running Solaris 2.5.1
on some machines and still have a SunOS 4.1.3_U1 machine.
--
Tom Schulz
sch...@adi.com

Richard B. Gilbert

unread,
Dec 17, 2008, 5:57:36 PM12/17/08
to

Well, you can't always expect ancient operating systems to be able to
run the latest and greatest software! The newer systems try to do
things better and applications take advantage of fixes and new features.

There were sound technical reasons for releasing Solaris 8, 9, and 10.
I think Solaris 8 dates back to 1998-9 and that's three lifetimes in
computer years. . . .

roger.f...@sun.com

unread,
Dec 17, 2008, 10:38:41 PM12/17/08
to
On Dec 17, 4:07 pm, sch...@adi.com (Thomas Schulz) wrote:
[snip]

> The
> show stopper right now is that the linker can not find __tls_get_addr,
> which as far as I can tell is not in any library on Solaris 8.
>
> It looks like it is the thread support in the compiler that wants
> __tls_get_addr, there is no referance to __tls_get_addr in the Firefox
> code. Can anyone tell me a way to tell the compiler not to create
> code that needs __tls_get_addr? Any other ideas?
>
> I know that Solaris 8 is ancient. We are still running Solaris 2.5.1
> on some machines and still have a SunOS 4.1.3_U1 machine.
> --
> Tom Schulz
> sch...@adi.com

You can do it, but you need to use the alternate libthread,
not the default libthread, on Solaris 8.

See the Sol8 manual page threads(3THR), under the heading:
ALTERNATE IMPLEMENTATION
to see how this is done.

(The alternate libthread of Solaris 8 became the only libthread
of Solaris 9, and it was folded into libc in Solaris 10.)

Roger Faulkner
Sun Microsystems

Thomas Schulz

unread,
Dec 20, 2008, 11:58:51 AM12/20/08
to
In article <96adcb73-8699-4528...@f3g2000vbf.googlegroups.com>,

Assuming that I understood what the man page said, that did not help.
I first set LDFLAGS='-R/usr/lib/lwp' and reran confugure and rebuilt.
I next tried LDFLAGS='-L/usr/lib/lwp -R/usr/lib/lwp' and tried again.
Lastly I set LD_LIBRARY_PATH=/usr/lib/lwp in addition to the above.
I still get __tls_get_addr as an undefined symbol at link time.
As far as I can tell using nm, none of the libraries in /usr/lib/lwp
define __tls_get_addr.
--
Tom Schulz
sch...@adi.com

roger.f...@sun.com

unread,
Dec 20, 2008, 1:10:46 PM12/20/08
to
On Dec 20, 11:58 am, sch...@adi.com (Thomas Schulz) wrote:
> In article <96adcb73-8699-4528-b0c6-402960631...@f3g2000vbf.googlegroups.com>,
>
[snip]

> >You can do it, but you need to use the alternate libthread,
> >not the default libthread, on Solaris 8.
>
> >See the Sol8 manual page threads(3THR), under the heading:
> > ALTERNATE IMPLEMENTATION
> >to see how this is done.
>
> >(The alternate libthread of Solaris 8 became the only libthread
> >of Solaris 9, and it was folded into libc in Solaris 10.)
>
> >Roger Faulkner
> >Sun Microsystems
>
> Assuming that I understood what the man page said, that did not help.
> I first set LDFLAGS='-R/usr/lib/lwp' and reran confugure and rebuilt.
> I next tried LDFLAGS='-L/usr/lib/lwp -R/usr/lib/lwp' and tried again.
> Lastly I set LD_LIBRARY_PATH=/usr/lib/lwp in addition to the above.
> I still get __tls_get_addr as an undefined symbol at link time.
> As far as I can tell using nm, none of the libraries in /usr/lib/lwp
> define __tls_get_addr.
> --
> Tom Schulz
> sch...@adi.com

Ugh. Sorry.
You did all the right things, but unfortunately you do not have the
latest patches installed for the support of thread-local storage
(TLS).

The Solaris 8 patch was made in mid-2003.
Sorry, I don't know the patch-id.

Roger Faulkner
Sun Microsystems

Martin Paul

unread,
Dec 22, 2008, 5:27:41 AM12/22/08
to
roger.f...@sun.com wrote:
> You did all the right things, but unfortunately you do not have the
> latest patches installed for the support of thread-local storage
> (TLS).
>
> The Solaris 8 patch was made in mid-2003.
> Sorry, I don't know the patch-id.

Maybe 108993, which was obsoleted by 128624 in the meantime? It contains
fix 1209758 ("need thread local storage rather than just thread specific
data").

mp.
--
SysAdmin | Institute of Scientific Computing, University of Vienna
PCA | Analyze, download and install patches for Solaris
| http://www.par.univie.ac.at/solaris/pca/

Thomas Schulz

unread,
Dec 22, 2008, 5:52:18 PM12/22/08
to
In article <494f6b9d$0$11094$3b21...@usenet.univie.ac.at>,

Martin Paul <m...@par.univie.ac.at> wrote:
>roger.f...@sun.com wrote:
>> You did all the right things, but unfortunately you do not have the
>> latest patches installed for the support of thread-local storage
>> (TLS).
>>
>> The Solaris 8 patch was made in mid-2003.
>> Sorry, I don't know the patch-id.
>
>Maybe 108993, which was obsoleted by 128624 in the meantime? It contains
>fix 1209758 ("need thread local storage rather than just thread specific
>data").

I was able to get patch 128624-08. I have not had time to try it yet,
but nm shows that __tls_get_addr is defined in the new
usr/lib/lwp/libthread.so.1. That should do it.

>
>mp.
>--
>SysAdmin | Institute of Scientific Computing, University of Vienna
> PCA | Analyze, download and install patches for Solaris
> | http://www.par.univie.ac.at/solaris/pca/


--
Tom Schulz
sch...@adi.com

Reply all
Reply to author
Forward
0 new messages