linking afs.ext.64 on AIX fails with missing symbol vprintf

Ben Huntsman <[email protected]> Sat, 13 Aug 2022 05:57:41 +0000
Newsgroups gmane.comp.file-systems.openafs.general
Message-ID <MWHPR0701MB3674039C4659C58B11EF9213A7669@MWHPR0701MB3674.namprd07.prod.outlook.com>
After a few tweaks to some of the source files (which I will submit later), I have all the code for afs.ext.64 compiling, but it fails to link due to a missing symbol .vprintf.  The AIX man pages show that this is included in /lib/libc.a, and nm confirms it.  Here is the error:

        /usr/bin/ld -b"binder:/usr/lib/bind glink:/usr/lib/glink64.o" -bnoentry -b h:4  -D0 -T512 -b64 -bloadmap:afs.ext.64.loadmap  -bmap:afs.ext.64.map -o afs.ext.64  sha256-kernel.o  rand-timer-kernel.o  afs_atomlist.o  afs_lhash.o  afs_analyze.o  afs_axscache.o   afs_buffer.o         afs_bypasscache.o  afs_callback.o       afs_cbqueue.o     afs_cell.o  afs_chunk.o               afs_conn.o  afs_daemons.o       afs_dcache.o  afs_dir.o                 afs_disconnected.o      afs_dynroot.o           afs_error.o  afs_icl.o  afs_init.o  afs_lock.o  afs_mariner.o  afs_memcache.o   afs_fetchstore.o        afs_osi.o               afs_osidnlc.o   afs_osi_alloc.o         afs_osi_pag.o  afs_osi_uio.o  afs_osi_vget.o  afs_osi_vm.o  afs_segments.o  afs_server.o  afs_stat.o  afs_syscall.o  afs_tokens.o  afs_user.o  afs_util.o  afs_vcache.o  afs_vnop_access.o  afs_vnop_attrs.o  afs_vnop_create.o  afs_vnop_dirops.o  afs_vnop_fid.o  afs_vnop_flock.o  afs_vnop_link.o  afs_vnop_lookup.o  afs_vnop_open.o  afs_vnop_read.o  afs_vnop_readdir.o  afs_vnop_remove.o  afs_vnop_rename.o  afs_vnop_strategy.o  afs_vnop_symlink.o  afs_vnop_write.o  afs_volume.o  afs_warn.o  xdr_update.o         xdr_refernce.o  Kvice.xdr.o     xdr_arrayn.o    xdr_array.o     xdr_int32.o     xdr_int64.o     Kvice.cs.o      fcrypt.o                rx.o            rx_call.o       rx_conn.o       rx_peer.o       rx_rdwr.o       rx_clock.o      rx_event.o      rx_globals.o    rx_identity.o   rx_kmutex.o     rx_knet.o       rx_kcommon.o    rx_misc.o       rx_null.o       rx_opaque.o     rx_getaddr.o    rx_packet.o     rx_multi.o      rx_stats.o      opr_rbtree.o    xdr_rx.o        xdr_mem.o       xdr_len.o       Kvldbint.cs.o   Kvldbint.xdr.o  Kcallback.ss.o  Krxstat.ss.o    Krxstat.xdr.o   rxstat.o        crypt_conn.o    AFS_component_version_number.o afs_exporter.o   rxkad_client.o  rxkad_common.o  xdr_afsuuid.o   xdr.o           Ktoken.xdr.o    md5.o           evp.o           evp-algs.o      rand-kernel.o    alloc-kernel.o         aes.o           rijndael-alg-fst.o  sha.o               n-fold.o        crypto.o        crypto-algs.o    crypto-aes.o   crypto-context.o  crypto-copy.o         crypto-ct.o     crypto-evp.o    crypto-data.o   crypto-keyblock.o  crypto-store-int.o  crypto-random.o  afs_uuid.o osi_assem.o  osi_config.o  osi_gcpags.o  osi_groups.o  osi_file.o  osi_inode.o  osi_misc.o  osi_sleep.o  osi_timeout.o  osi_vcache.o  osi_vm.o  rand-fortuna-kernel.o afs_call.o  afs_pioctl.o  osi_vfsops.o  osi_vnodeops.o   -m -eafs_config -bexport:/project/openafs/lib/afs.exp -bI:/lib/kernex.exp -bI:/lib/syscalls.exp -bI:/lib/sockets.exp  -bI:/lib/netinet.exp  -bI:/project/openafs/lib/extras.exp   -lsys -lcsys  -b64 -bI:/project/openafs/lib/export64.exp
ld: 0711-224 WARNING: Duplicate symbol: vnodefops
ld: 0711-224 WARNING: Duplicate symbol: .___memmove64
ld: 0711-224 WARNING: Duplicate symbol: ___memmove64
ld: 0711-224 WARNING: Duplicate symbol: .___memset64
ld: 0711-224 WARNING: Duplicate symbol: ___memset64
ld: 0711-224 WARNING: Duplicate symbol: .ip_stripoptions
ld: 0711-224 WARNING: Duplicate symbol: .soclose
ld: 0711-224 WARNING: Duplicate symbol: soclose
ld: 0711-224 WARNING: Duplicate symbol: Trconflag
ld: 0711-224 WARNING: Duplicate symbol: .sounlock
ld: 0711-224 WARNING: Duplicate symbol: sounlock
ld: 0711-224 WARNING: Duplicate symbol: .close
ld: 0711-224 WARNING: Duplicate symbol: close
ld: 0711-224 WARNING: Duplicate symbol: .___memcmp64
ld: 0711-224 WARNING: Duplicate symbol: ___memcmp64
ld: 0711-224 WARNING: Duplicate symbol: .kioctl
ld: 0711-224 WARNING: Duplicate symbol: .lookupname
ld: 0711-224 WARNING: Duplicate symbol: lookupname
ld: 0711-224 WARNING: Duplicate symbol: .socreate
ld: 0711-224 WARNING: Duplicate symbol: socreate
ld: 0711-224 WARNING: Duplicate symbol: .soreserve
ld: 0711-224 WARNING: Duplicate symbol: soreserve
ld: 0711-224 WARNING: Duplicate symbol: .sobind
ld: 0711-224 WARNING: Duplicate symbol: sobind
ld: 0711-344 See the loadmap file afs.ext.64.loadmap for more information.
ld: 0711-319 WARNING: Exported symbol not defined: afs_setTimeHost
ld: 0711-319 WARNING: Exported symbol not defined: rxevent_nFree
ld: 0711-319 WARNING: Exported symbol not defined: rxevent_nPosted
ld: 0711-319 WARNING: Exported symbol not defined: freeSQEList_lock
ld: 0711-319 WARNING: Exported symbol not defined: rxevent_lock
ld: 0711-317 ERROR: Undefined symbol: .vprintf
make: 1254-004 The error code from the last command is 8.

The reference is from src/rx/rx_kcommon.c:

void
osi_Msg(const char *fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
#if defined(AFS_LINUX_ENV)
    vprintk(fmt, ap);
#else
    vprintf(fmt, ap);
#endif
    va_end(ap);
}


Just as another sloppy fix I tried several variants of print functions that could substitute on AIX, but they all fail with a missing symbol.  How did this work on AIX in the past?

Thank you!

-Ben