Hi Riccardo, Am 11.07.2016 um 14:20 schrieb Dagobert Michelsen <[email protected]>: >>> What happens? >> >> On solaris9 sparc, after the succesful build, to an ldd: >> >> ldd -r >> work/solaris9-sparc/build-isa-sparcv9/pixman-0.22.2/pixman/.libs/libpixman-1.so >> /usr/lib/secure/64/s9_preload.so.1 >> libm.so.1 => /usr/lib/64/libm.so.1 >> libc.so.1 => /usr/lib/64/libc.so.1 >> libdl.so.1 => /usr/lib/64/libdl.so.1 >> /usr/platform/SUNW,SPARC-Enterprise-T5220/lib/sparcv9/libc_psr.so.1 >> symbol not found: __tls_get_addr >> (work/solaris9-sparc/build-isa-sparcv9/pixman-0.22.2/pixman/.libs/libpixman-1.so) >> >> ldd -r >> work/solaris9-sparc/build-isa-sparcv8/pixman-0.22.2/pixman/.libs/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 >> (work/solaris9-sparc/build-isa-sparcv8/pixman-0.22.2/pixman/.libs/libpixman-1.so) >> >> >> On the partial build on solaris9x, where i386 built, it is consistent: >> ldd -r >> work/solaris9-i386/build-isa-i386/pixman-0.22.2/pixman/.libs/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 >> (work/solaris9-i386/build-isa-i386/pixman-0.22.2/pixman/.libs/libpixman-1.so) >> >> As a test, I compiled everything with GCC - but I get the same error. >> Perhaps we are missing some linker flag? I tried to look on the internet, >> other had this problem also on non-solaris, but found no solutions. >> >> I'm weary to update pixman: I don't want to enter a dependency hell updating >> stuff on solaris9. First rebuilding this package "fixed" would be >> preferrable! >> >> A "fresh" rebuild on solaris10s is perfectly fine... >> >> ldd -r >> work/solaris10-sparc/build-isa-sparcv9/pixman-0.22.2/pixman/.libs/libpixman-1.so >> libm.so.2 => /lib/64/libm.so.2 >> libc.so.1 => /lib/64/libc.so.1 >> /platform/SUNW,SPARC-Enterprise-T5220/lib/sparcv9/libc_psr.so.1 > > You need to get deeper in multithreading on Solaris 9, I haven’t looked into > it > in more detail, feel free to do more investigation.
The symbol is defined in /usr/lib/lwp/libthread.so.1 > dam@unstable9x :/home/dam/mgar/pkg/pixman/trunk > nm -D > /usr/lib/lwp/libthread.so.1 | grep __tls_get_addr > [391] | 84304| 45|FUNC |GLOB |0 |10 |___tls_get_addr > [364] | 84288| 61|FUNC |GLOB |0 |10 |__tls_get_addr Please see also threads(3thr) and the documentation from the Multithreading Programming Guide at https://docs.oracle.com/cd/E19455-01/806-5257/6je9h033l/index.html We had a wrapper around pigz, please see the comments: > dam@unstable9x :/home/dam/mgar/pkg > more pigz/trunk/files/pigz-wrapper > #!/bin/sh > > # Needed on native Solaris 8 > # See http://www.opencsw.org/bugtrack/view.php?id=3879 > # and http://developers.sun.com/solaris/articles/alt_thread_lib.html > # Unfortunately the path can not be compiled an as libthread.so.1 > # gets pulled in from the pthread library which brings in his own > # ideas of link path ordering. > LD_LIBRARY_PATH=/usr/lib/lwp > export LD_LIBRARY_PATH > exec /opt/csw/libexec/pigz "$@„ Adding this explicitly to the testsuite works: > dam@unstable9x > :/home/dam/mgar/pkg/pixman/trunk/work/solaris9-i386/build-isa-i386/pixman-0.22.2/test > > LD_PRELOAD_32=/usr/lib/lwp/libthread.so.1 ./a1-trap-test > dam@unstable9x > :/home/dam/mgar/pkg/pixman/trunk/work/solaris9-i386/build-isa-i386/pixman-0.22.2/test > > > ^——— No error! Howver, neither adding -R/usr/lib/lwp as suggested from the docs works nor using POSIX threads by adding an extra -lpthread. Feel free to continue from here. 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
signature.asc
Description: Message signed with OpenPGP using GPGMail
