Clang (Open XL C 17.1+) on AIX

Ben Huntsman <[email protected]> Sat, 30 Nov 2024 22:52:56 +0000
Newsgroups gmane.comp.file-systems.openafs.devel
Message-ID <BYAPR07MB58798A94CE1C7BA4B74BC003A72B2@BYAPR07MB5879.namprd07.prod.outlook.com>
Hi everyone-
   The latest few versions of the XL C compiler on AIX are clang-based.  There are quite a few changes that need to be made in order for the kernel module to compile.  I made a few updates to the Makefiles to compensate for some command line argument differences.  The first error we encounter is this:

In file included from /home/build/openafs/src/external/heimdal/hcrypto/sha256.c:34:
In file included from /home/build/openafs/src/crypto/hcrypto/kernel/config.h:30:
In file included from /home/build/openafs/src/afs/sysincludes.h:276:
../sys/socketvar.h:158:57: error: array has incomplete element type 'struct free_sock_hash_bucket'
extern struct free_sock_hash_bucket free_sock_hash_table[];
                                                        ^
../sys/socketvar.h:158:15: note: forward declaration of 'struct free_sock_hash_bucket'
extern struct free_sock_hash_bucket free_sock_hash_table[];
              ^

   Unfortunately sys/socketvar.h is an AIX-supplied header file, so we can't change it.  I could open a bug report with IBM but even if they fix it in the future we still need to deal with this situation for this version.

   Any ideas for how to deal with this?  My initial thought is to use some macros to not include the header, and just copy over the bits from the system headers we need, for just the case of AIX 7.2+ with XLC 17.1+.  Does that sound like a reasonable approach?  And if so, is there a preference as to where the copied bits from the headers should go?  Or is there a better way to handle this situation?

Thank you very much!

-Ben