You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Marc Girod <ma...@iona.com> on 2006/10/12 09:04:07 UTC

missing symbols on AIX (was: 1.4.0 Install on AIX, HP-UX and Solaris)

Thanks Daniel,

Daniel Rall <dlr <at> collab.net> writes:

> When attempting to create the 'svn' command-line binary, the linker
> can't find some functions which should be defined in
> libsvn_client-1.la.  There's not enough information listed above to
> say why -- I suggest you start by inspecting that libtool archive.

I am sorry and admit I didn't give enough of information.
I do understand what are symbols,
that they may be required by one object file,
and provided by an other, or a library.

My configure line was (similar to the one I used with success on HP-UX):

$ ./configure --prefix /vob/tools_AIX \
--with-apr=/vob/tools_AIX/bin/apr-config \
--with-apr-util=/vob/tools_AIX/bin/apu-config \
--with-neon=/vob/tools_AIX --with-ssl

I had in addition to set a CFLAGS environment variable to add an -I path.

I am not very familiar with libtool. Here is the content of the archive
(I show it here to log the information, as I read it myself
--posting via gmane, which forces me to split some lines at 80 chars
boundaries: I add '\'s):

cat ./subversion/libsvn_client/libsvn_client-1.la
# libsvn_client-1.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# The name that we can dlopen(3).
dlname='libsvn_client-1.so.0.0.0'

# Names of this library.
library_names='libsvn_client-1.so.0.0.0 libsvn_client-1.so.0 libsvn_client-1.so'

# The name of the static archive.
old_library='libsvn_client-1.a'

# Libraries that this one depends upon.
dependency_libs=' -L/vob/tools_AIX/lib \
/vob/tools_src/subversion/subversion/libsvn_wc/libsvn_wc-1.la \
/vob/tools_src/subversion/subversion/libsvn_ra/libsvn_ra-1.la \
/vob/tools_src/subversion/subversion/libsvn_ra_local/libsvn_ra_local-1.la \
/vob/tools_src/subversion/subversion/libsvn_repos/libsvn_repos-1.la \
/vob/tools_src/subversion/subversion/libsvn_fs/libsvn_fs-1.la \
/vob/tools_src/subversion/subversion/libsvn_fs_fs/libsvn_fs_fs-1.la \
/vob/tools_src/subversion/subversion/libsvn_ra_svn/libsvn_ra_svn-1.la \
/vob/tools_src/subversion/subversion/libsvn_ra_dav/libsvn_ra_dav-1.la \
/vob/tools_AIX/lib/libneon.la \
/vob/tools_src/subversion/subversion/libsvn_delta/libsvn_delta-1.la \
/vob/tools_src/subversion/subversion/libsvn_diff/libsvn_diff-1.la \
/vob/tools_src/subversion/subversion/libsvn_subr/libsvn_subr-1.la \
/vob/tools_AIX/lib/libaprutil-0.la /vob/tools_AIX/lib/libexpat.la -liconv \
/vob/tools_AIX/lib/libapr-0.la -lm -lnsl -lpthread -lz     '

# Version information for libsvn_client-1.
current=0
age=0
revision=0

# Is this an already installed library?
installed=no

# Should we warn about portability when linking against -modules?
shouldnotlink=no

# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''

# Directory that this library needs to be installed in:
libdir='/vob/tools_AIX/lib'
relink_command="(cd /vob/tools_src/subversion/subversion/libsvn_client; \
/bin/sh /vob/tools_src/subversion/libtool  --tag=CC --silent \
--mode=relink cc -I/vob/tools_AIX/include -g -qHALT=E -D_LARGEFILE64_SOURCE \
-DNE_LFS -Wl,-brtl -L/vob/tools_AIX/lib -rpath /vob/tools_AIX/lib \
-o libsvn_client-1.la add.lo blame.lo cat.lo checkout.lo cleanup.lo commit.lo \
commit_util.lo compat_providers.lo copy.lo ctx.lo delete.lo diff.lo export.lo \
externals.lo info.lo list.lo locking_commands.lo log.lo prop_commands.lo ra.lo \
relocate.lo repos_diff.lo repos_diff_summarize.lo resolved.lo revert.lo \
revisions.lo status.lo switch.lo update.lo url.lo util.lo version.lo \
../../subversion/libsvn_wc/libsvn_wc-1.la \
../../subversion/libsvn_ra/libsvn_ra-1.la \
../../subversion/libsvn_delta/libsvn_delta-1.la \
../../subversion/libsvn_diff/libsvn_diff-1.la \
../../subversion/libsvn_subr/libsvn_subr-1.la \
/vob/tools_AIX/lib/libaprutil-0.la -lexpat -liconv \
/vob/tools_AIX/lib/libapr-0.la -lm -lnsl -lpthread -lz @inst_prefix_dir@)"

I must admit I see nothing special there.
I'll look at the symbols in the objects, with nm.

Thanks again... Back soon.
Marc

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: missing symbols on AIX (was: 1.4.0 Install on AIX, HP-UX and Solaris)

Posted by Marc Girod <ma...@iona.com>.
Thanks Peter,

Peter Samuelson <peter <at> p12n.org> writes:

> No, the AIX ABI specifies that _all_ code is PIC.

OK. Thanks.

I had got this impression from inspecting the contents of some .lo files, e.g.

$ cat ./subversion/libsvn_client/blame.lo
# subversion/libsvn_client/blame.lo - a libtool object file
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# Name of the PIC object.
pic_object='.libs/blame.o'

# Name of the non-PIC object.
non_pic_object='blame.o'

But this could just reinforce your statement below:

> I suspect your problem is that libtool doesn't support AIX very well at
> all.  This certainly used to be the case!  But I haven't heard anything
> recent about that.

Now, I had managed to build svn 1.3.2 on AIX -- without the support for
ssl. So, it wasn't *that* broken.

Also, I had found (http://svn.haxx.se/dev/archive-2004-01/0922.shtml) 
an allegation about the need to use an option such as -qlanglvl=extended
while building with xlc, and I didn't notice any effect.

Marc


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: missing symbols on AIX (was: 1.4.0 Install on AIX, HP-UX and Solaris)

Posted by Peter Samuelson <pe...@p12n.org>.
[Marc Girod]
> These are 'non-PIC' objects, for which there is no 'PIC' counterpart
> (I guess 'Position Independent Code', suitable for shared libraries).
> No '.lo' counterpart either.

No, the AIX ABI specifies that _all_ code is PIC.  So there is no need
for separately compiled PIC objects.  At least, that's what I remember
from my AIX 4.3.3 days.  Regardless, the code in subversion/svn/ does
not need to be in a library (that is just the 'svn' command line
client), so there's no point in compiling it twice anyway.

I suspect your problem is that libtool doesn't support AIX very well at
all.  This certainly used to be the case!  But I haven't heard anything
recent about that.

Re: missing symbols on AIX (was: 1.4.0 Install on AIX, HP-UX and Solaris)

Posted by Marc Girod <ma...@iona.com>.
Marc Girod <marc.girod <at> iona.com> writes:

> I'll look at the symbols in the objects, with nm.

$ nm -Au $(find . -name \*.o) | egrep \
'\.svn_client_(blame3|copy3|diff_summarize|diff_summarize_peg|list|log3|\
merge_peg2|merge2|move4)'
./subversion/svn/blame-cmd.o: .svn_client_blame3   U           -
./subversion/svn/copy-cmd.o: .svn_client_copy3    U           -
./subversion/svn/diff-cmd.o: .svn_client_diff_summarize U           -
./subversion/svn/diff-cmd.o: .svn_client_diff_summarize_peg U           -
./subversion/svn/list-cmd.o: .svn_client_list     U           -
./subversion/svn/log-cmd.o: .svn_client_log3     U           -
./subversion/svn/merge-cmd.o: .svn_client_merge2   U           -
./subversion/svn/merge-cmd.o: .svn_client_merge_peg2 U           -
./subversion/svn/move-cmd.o: .svn_client_move4    U           -
$ 

These are 'non-PIC' objects, for which there is no 'PIC' counterpart
(I guess 'Position Independent Code', suitable for shared libraries).
No '.lo' counterpart either.
The reason is obviously that they are meant to be linked exclusively into the
executables (svn or some other).

If I stick to the first missing symbol, and look into the shared libraries,
I get:

$ nm -A $(find . -type f -name libsvn_\*.so\*) | egrep '\.svn_client_blame3'
./subversion/libsvn_client/.libs/libsvn_client-1.so.0.0.0: .svn_client_blame3  
T       42280        1584
./subversion/libsvn_client/.libs/libsvn_client-1.so.0.0.0: .svn_client_blame3  
T       44544
./subversion/libsvn_client/.libs/libsvn_client-1.so.0.0.0: .svn_client_blame3  
t       44544          40
$ 

ON AIX, 'T' is 'global text' and 't' local, followed by the value and size.

[ On HP-UX, I get a similar list of symbols, without the leading '.':

$ nm -Au $(find . -name \*.o) | grep 'svn_client_blame3'
    ./subversion/svn/blame-cmd.o:svn_client_blame3
$ 

]

I send this as temporary report...
Marc

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org