pixman / tls link time issue

Riccardo Mottola rmottola at opencsw.org
Wed Jun 22 14:54:36 CEST 2016


Hi,

Dagobert Michelsen wrote:
> Hi Riccardo,
>
> Am 21.06.2016 um 12:48 schrieb Riccardo Mottola <rmottola at opencsw.org>:
>> in gnustep-back I am trying to compileagainst the cairo library both on solaris 9 and solaris 10. Since pkg-config doesn't appear to work too well, I added manually CFLAGS and LDFLAGS this way:
>
> I strongly suggest fixing the .pc file.

the .pc file from cairo? this wizardry is hard to fix ...

>
>> I see no linkage to tls!
>
> unstable9s% ldd -r /opt/csw/lib/libpixman-1.so
>          /usr/lib/secure/s9_preload.so.1
>          libm.so.1 =>     /usr/lib/libm.so.1
>          libc.so.1 =>     /usr/lib/libc.so.1
>          libdl.so.1 =>    /usr/lib/libdl.so.1
>          /usr/platform/SUNW,SPARC-Enterprise-T5220/lib/libc_psr.so.1
>          symbol not found: __tls_get_addr                (/opt/csw/lib/libpixman-1.so)
>
> So libpixman-1.so needs the symbol, but does not link against it. __tls_get_addr is not
> from GnuTLS (Transport Layer Security), but from a multithreading library (Thread Local Store).
> I don’t know where this comes from, 1 minute Googling didn’t bring up anything reasonable
> and I can’t remember to have seen this before. You may need to investigate.


thanks for the TLS poiter and the -r flag, it is thus a lazy symbol.

I tried to rebuild pixman (without any update) and I notice that the 
work/solaris9-sparc/build-isa-sparcv9/pixman-0.22.2/pixman/.libs/libpixman-1.so

already has that issue. I then changed the receipe to build with GCC 
instead of sun studio, but no fix.

This is ldd -r on Solaris sparc 10
ldd -r /opt/csw/lib/libpixman-1.so
         libm.so.1 =>     /lib/libm.so.1
         libc.so.1 =>     /lib/libc.so.1
         /platform/SUNW,SPARC-Enterprise-T5220/lib/libc_psr.so.1
         libm.so.2 =>     /lib/libm.so.2


this on 9:ldd -r  /opt/csw/lib/libpixman-1.so
         /usr/lib/secure/s9_preload.so.1
         libm.so.1 =>     /usr/lib/libm.so.1
         libc.so.1 =>     /usr/lib/libc.so.1
         libdl.so.1 =>    /usr/lib/libdl.so.1
         /usr/platform/SUNW,SPARC-Enterprise-T5220/lib/libc_psr.so.1
         symbol not found: __tls_get_addr 
(/opt/csw/lib/libpixman-1.so)


I notice there is an extra "dl" library!

Darn. I found of several people who have a similarproblem, but 
absolutely no solution. some peoplce cited the -z linker flag, but it 
needs an option which I don't know which is correct.

Riccardo


More information about the maintainers mailing list