[OpenAFS-devel] AIX build fails with missing symbol
.RXAFS_OpCodeIndex
Benjamin Kaduk
kaduk@mit.edu
Sat, 13 Aug 2022 13:47:58 -0700
On Sat, Aug 13, 2022 at 08:09:55PM +0000, Ben Huntsman wrote:
> Hi guys-
> Still trying to get the master branch to compile on AIX 6.1. I've gotten through a number of hurdles, but I'm stuck on this one:
>
> /bin/sh ../../libtool --quiet --mode=link --tag=CC xlc_r -static -L/project/openafs/lib -L/project/openafs/lib -O -DRXDEBUG -DFSSYNC_BUILD_SERVER -DSALVSYNC_BUILD_CLIENT -O -K -D_NONSTD_TYPES -D_MBI=void -I/project/openafs/src/config -I/project/openafs/include -I. -I. -DAFS_PTHREAD_ENV -o fileserver viced.o afsfileprocs.o host.o physio.o callback.o serialize_state.o fsstats.o buffer.o dir.o salvage.o vnode.o volume.o vutil.o partition.o fssync-server.o clone.o devname.o common.o ihandle.o listinodes.o namei_ops.o salvsync-client.o daemon_com.o vg_cache.o vg_scan.o afsint.ss.o ../../src/vlserver/liboafs_vldb.la ../../src/rxkad/liboafs_rxkad.la ../../src/rxstat/liboafs_rxstat.la ../../src/lwp/liboafs_lwpcompat.la ../../src/libacl/liboafs_acl.la ../../src/fsint/liboafs_fsint.la ../../src/cmd/liboafs_cmd.la ../../src/opr/liboafs_opr.la ../../src/util/liboafs_util.la -lafshcrypto -lrokenafs -lpthread -ldl
> ld: 0711-224 WARNING: Duplicate symbol: .icreate
> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
> ld: 0711-317 ERROR: Undefined symbol: .RXAFS_OpCodeIndex
> make: 1254-004 The error code from the last command is 8.
>
>
> Where does RXAFS_OpCodeIndex even come from? It's in the object file afsfileprocs.o, but not in afsfileprocs.c. Any hints at where I should start looking would be appreciated.
The RXAFS prefix indicates that it relates to the Rx RPC procedures, that
have C code generated during the build process using the rxgen tool (a fork
of rpcgen).
It may well be that that symbol needs to be added to the export list in
src/fsint/liboafs_fsint.la.sym; IIRC AIX is one of the few platforms that
heeds the export list even when statically linking.
-Ben