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



Reply via email to