cURL / Mailing Lists / curl-library / Single Mail

curl-library

AIX test 509 autobuild

From: Tor Arntsen <tor_at_spacetec.no>
Date: Thu, 22 Apr 2004 16:31:38 +0200

Just a quick note on the failing 509 test for AIX 5.x: The test actually
passes, the problem is that the relinking command fails to relink the
lt-lib509 program correctly (the runtime path is missing the ssl directory,
so 'ldd .libs/lt-lib509' says "Cannot load module libssl.a(libssl.so.0").
I have relinked it manually and the test then passed ok.

Which means that the 'Test' column for today's autobuilds should really
be all green..

This may as well be a problem with libtool (what a mess that progam is),
or it could be that we're not using it correctly. I'm still struggling to
figure this out. In fact the relinking command for lt-curl is also wrong,
it just happens to work because of some undocumented feature with the AIX
ld program (if the ssl calls are in a *library* instead of in .o files,
then the compile time path (the standard -L.. stuff) is used during
runtime *anyway*, even if the documentation says its ignored if a runtime
path is explicitly set. The funny thing is that if libtool hadn't bothered
with setting the runtime path, then everything would have been just fine,
as AIX ld uses the compile time paths for library look-up if no runtime
path is specified. This would have been just fine for the test programs.)

Here's some stripped down output from 'sh -x lib509' in the tests/libtest
directory:
 relink_command=(cd /home/tor/build/cvs-curl/test/tests/libtest; \
 xlc -g -o $progdir/$file lib509.o first.o -L/usr/local/ssl/lib \
 -L../../lib/.libs -lcurl -lssl -lcrypto -lz \
 -Wl,-blibpath:/home/tor/build/cvs-curl/test/lib/.libs:\
 /usr/local/lib:/usr/lib:/lib)

The runtime directory specification is set with -blibpath in AIX, and there
are two ways of fixing the problem:

1) Remove -Wl,-blibpath altogether
2) Add /usr/local/ssl/lib to -blibpath

Libtool has this:
hardcode_libdir_flag_spec="\${wl}-blibpath:\$libdir:/usr/lib:/lib

so it looks like "$libdir" is replaced with
 /home/tor/build/cvs-curl/test/lib/.libs:/usr/local/lib
when the libtest/lib509 program is created. But I haven't found out how
this happens, or where it's set.

-Tor
Received on 2004-04-22