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

Ben Huntsman <[email protected]> Sat, 13 Aug 2022 16:20:27 +0000
Newsgroups gmane.comp.file-systems.openafs.general
Message-ID <MWHPR0701MB367420F72B076B1AC707CF35A7669@MWHPR0701MB3674.namprd07.prod.outlook.com>
Ah, yes, that is what I thought.  The problem is that AIX's kernel doesn't have vprintf.  Only printf.  However, the change set you linked indicates that previously, osi_Msg used fprintf, and indeed that goes all the way back to the beginning.  That's why I wonder how it worked on AIX in the past.  With no vprintf in the kernel, what alternative should we use here?

Thank you!

-Ben



________________________________
From: Jeffrey E Altman
Sent: Saturday, August 13, 2022 2:23 AM
To: Ben Huntsman; [email protected]
Subject: Re: [OpenAFS] linking afs.ext.64 on AIX fails with missing symbol vprintf

On 8/13/2022 1:57 AM, Ben Huntsman ([email protected]<mailto:[email protected]>) wrote:
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.


libc is a userspace library.   The failure is when linking the kernel module and there is no vprintf in the kernel.


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?


The vprintf usage in kernel on AIX was introduced by


  https://gerrit.openafs.org/14791