OpenAFS Master Repository branch, master, updated. openafs-devel-1_9_2-388-g0182fee
Gerrit Code Review
gerrit@openafs.org
Wed, 19 Nov 2025 00:23:07 -0500
The following commit has been merged in the master branch:
commit 0182fee3dce6d609775ab1a6c12a6597e52c9d8f
Author: Ben Huntsman <ben@huntsmans.net>
Date: Fri Dec 20 17:01:37 2024 -0800
AIX: Redefine broken EYEC_MBUFA
When building the kernel extension on AIX 7.2+ using the CLANG-based
Open XL C 17.1+ compiler, during the build of src/rx/AIX/rx_knet.c, the
following error is thrown:
/home/build/openafs/src/rx/AIX/rx_knet.c:378:6: error: expected expression
MGETHDR(m, M_DONTWAIT, MT_DATA);
^
../sys/mbuf_macro.h:389:25: note: expanded from macro 'MGETHDR'
(m)->m_eyecat = EYEC_MBUFA; \
^
../sys/mbuf_base.h:79:61: note: expanded from macro 'EYEC_MBUFA'
^
This happens because the system-provided header
/usr/include/sys/mbuf_base.h (included indirectly via socketvar.h)
provides an invalid definition for EYEC_MBUFA:
#define EYEC_MBUFA __EYEC8('m','b','u','f','A','L','L','')/* %mbufALL */
The final byte is specified as '', which XL C 16.1 and earlier interpret
as a NUL byte but which clang (correctly) treats as an error. This gets
expanded whenever we call MGETHDR(), and so causes a build error
whenever we call MGETHDR(), which we only do in rx_knet.c.
To work around this, redefine EYEC_MBUFA when we're building with clang
so the final byte is '\0'. Do this in rx_knet.c to try to reduce the
scope of this workaround, and because we must do this after system
headers have been included.
Change-Id: Ifc6d06b097ccb2ae70f2e7021d12bc595f81249b
Reviewed-on: https://gerrit.openafs.org/16574
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Ben Huntsman <ben@huntsmans.net>
Tested-by: Ben Huntsman <ben@huntsmans.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
src/rx/AIX/rx_knet.c | 11 +++++++++++
1 file changed, 11 insertions(+)
--
OpenAFS Master Repository