pixman / tls link time issue

Dagobert Michelsen dam at opencsw.org
Wed Jun 22 09:43:40 CEST 2016


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.

> CONFIGURE_ARGS_5.9 += CFLAGS="$(CFLAGS) -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo" LDFLAGS="$(LDFLAGS) -lcairo"
> 
> This generates
> 
>  $ ./configure --prefix=/opt/csw --exec_prefix=/opt/csw --bindir=/opt/csw/bin --sbindir=/opt/csw/sbin --libexecdir=/opt/csw/libexec -
> -datadir=/opt/csw/share --sysconfdir=/etc/opt/csw --sharedstatedir=/opt/csw/share --localstatedir=/var/opt/csw --libdir=/opt/csw/lib -
> -infodir=/opt/csw/share/info --includedir=/opt/csw/include --mandir=/opt/csw/share/man --enable-graphics=cairo CFLAGS=-O2 -pipe -mcpu=
> v8 -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo LDFLAGS=-mcpu=v8 -L/opt/csw/lib -lcairo
> 
> 
> which looks fine to me
> 
> This seesm to work partially, since a configure test fails this way.
> 
> configure:2717: checking whether the C compiler works
> configure:2739: /opt/csw/bin/gcc-4.6 -O2 -pipe -mcpu=v8 -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo  -mcpu=v8 -L/opt/csw/lib
> -lcairo conftest.c  >&5
> Undefined                       first referenced
> symbol                             in file
> __tls_get_addr                      /opt/csw/lib/libpixman-1.so.0
> ld: fatal: Symbol referencing errors. No output written to a.out
> 
> pixman is surely pulled in by cairo.
> Apparently pixman needs tls but it is not there or it is not the right version?
> Or a TLS package should be installed on unstable9s and it isn't?
> 
> pkginfo shows:
> application CSWgnutls
> application CSWgnutlsdevel                   gnutls_devel - Legacy
> application CSWlibgnutls-dev                 libgnutls_dev -
> application CSWlibgnutls13                   libgnutls13 - Legacy GNU
> application CSWlibgnutls26                   libgnutls26 - GNU Transport Layer Security libraries and tools providing libgnutls*.so.26
> 
> ldd /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
> 
> 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.


Best regards

  — Dago


--
"You don't become great by trying to be great, you become great by wanting to do something,
and then doing it so hard that you become great in the process." - xkcd #896

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.opencsw.org/pipermail/maintainers/attachments/20160622/551f9199/attachment-0001.asc>


More information about the maintainers mailing list