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
        libm.so.1 =>     /usr/lib/libm.so.1
        libc.so.1 =>     /usr/lib/libc.so.1
        libdl.so.1 =>    /usr/lib/libdl.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