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