git: 85afe03ac3de - stable/15 - Remove -fms-extensions throughout the tree

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Tue, 19 May 2026 00:43:32 UTC
The branch stable/15 has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=85afe03ac3de79a29973ff9d5e5a96bc05db251c

commit 85afe03ac3de79a29973ff9d5e5a96bc05db251c
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2026-02-03 01:51:40 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2026-05-19 00:43:13 +0000

    Remove -fms-extensions throughout the tree
    
    During a discussion about using -fms-extensions jhb pointed out that
    we have them enabled in the kernel for gcc by default (even multiple
    times in one part). I had missed all that and clang still failed on
    my use case (needing another option).
    
    The original cause for enabling them for our tree back then was that
    we needed to support C11 anonymous struct/unions.
    Our in-tree gcc 4.2.1, despite later patches, needed the
    -fms-extensions to support these even though this was not the expected
    use case for that option ( cc4a90c445aa0 enabled it globally for the
    kernel).
    clang at that time (or at least when it became default for 10.0)
    already was fine (with C11).
    
    Any later gcc (4.6.0 onwards) did not need that option anymore, even
    when compiled for -std=iso9899:1990 (which does not support anonymous
    structs/unions) unless one would add -pedantic (see gcc git 4bdd0a60b27a).
    This is also the reason why userland cddl sources now compile with the
    option removed despite CSTD=c99.
    
    The only driver which needed the option recently was ccp, but that was
    fixed in 8d3f41dbcb2a by jhb.
    
    So cleanup all uses cases of -fms-extensions for the moment as they are
    no longer needed given all compilers currently supported seem to be
    fine without them and gcc-4.2.1 was removed from the tree in stable/13
    in 2020 (a9854bc3812b).
    
    Reported by:    jhb (all this but possibly the world CDDL parts)
    Sponsored by:   The FreeBSD Foundation
    Reviewed by:    emaste (earlier), imp, jhb, glebius
    Differential Revision: https://reviews.freebsd.org/D55072
    
    (cherry picked from commit 93d301d95ab230ea159b21b5412aac2ce5362ac5)
---
 cddl/lib/libzpool/Makefile        | 1 -
 cddl/usr.bin/ztest/Makefile       | 1 -
 cddl/usr.sbin/zdb/Makefile        | 1 -
 sys/conf/kern.pre.mk              | 3 +--
 sys/conf/kmod.mk                  | 1 -
 sys/modules/iser/Makefile         | 1 -
 sys/modules/pms/Makefile          | 1 -
 sys/powerpc/conf/dpaa/config.dpaa | 2 +-
 8 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile
index 82ec0e890d56..407159a85255 100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@ -283,7 +283,6 @@ CFLAGS+=	-DWANTS_MUTEX_OWNED
 CFLAGS+=	-I${SRCTOP}/lib/libpthread/thread
 CFLAGS+=	-I${SRCTOP}/lib/libpthread/sys
 CFLAGS+=	-I${SRCTOP}/lib/libthr/arch/${MACHINE_CPUARCH}/include
-CFLAGS.gcc+=	-fms-extensions
 
 LIBADD=		md pthread z spl icp nvpair avl umem
 
diff --git a/cddl/usr.bin/ztest/Makefile b/cddl/usr.bin/ztest/Makefile
index ef4bd561b41a..cb51b5110f03 100644
--- a/cddl/usr.bin/ztest/Makefile
+++ b/cddl/usr.bin/ztest/Makefile
@@ -29,7 +29,6 @@ CSTD=	c99
 # Since there are many asserts in this program, it makes no sense to compile
 # it without debugging.
 CFLAGS+= -g -DDEBUG=1 -Wno-format -DZFS_DEBUG=1
-CFLAGS.gcc+= -fms-extensions
 
 HAS_TESTS=
 SUBDIR.${MK_TESTS}+= tests
diff --git a/cddl/usr.sbin/zdb/Makefile b/cddl/usr.sbin/zdb/Makefile
index 7d1e41e1690e..ad6e63f428a3 100644
--- a/cddl/usr.sbin/zdb/Makefile
+++ b/cddl/usr.sbin/zdb/Makefile
@@ -25,7 +25,6 @@ CFLAGS+= \
 
 LIBADD=	nvpair umem uutil zdb zfs_core zfs spl avl zutil zpool crypto
 
-CFLAGS.gcc+= -fms-extensions
 # Since there are many asserts in this program, it makes no sense to compile
 # it without debugging.
 CFLAGS+=	-g -DDEBUG=1 -DZFS_DEBUG=1
diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk
index 0251486247da..5bbd1ec70cd3 100644
--- a/sys/conf/kern.pre.mk
+++ b/sys/conf/kern.pre.mk
@@ -78,10 +78,9 @@ CFLAGS=	${COPTFLAGS} ${DEBUG}
 CFLAGS+= ${INCLUDES} -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h
 CFLAGS_PARAM_INLINE_UNIT_GROWTH?=100
 CFLAGS_PARAM_LARGE_FUNCTION_GROWTH?=1000
-CFLAGS.gcc+= -fms-extensions -finline-limit=${INLINE_LIMIT}
+CFLAGS.gcc+= -finline-limit=${INLINE_LIMIT}
 CFLAGS.gcc+= --param inline-unit-growth=${CFLAGS_PARAM_INLINE_UNIT_GROWTH}
 CFLAGS.gcc+= --param large-function-growth=${CFLAGS_PARAM_LARGE_FUNCTION_GROWTH}
-CFLAGS.gcc+= -fms-extensions
 .if defined(CFLAGS_ARCH_PARAMS)
 CFLAGS.gcc+=${CFLAGS_ARCH_PARAMS}
 .endif
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index b5e30d48fff1..b466dca4f0e4 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -139,7 +139,6 @@ CFLAGS+=	-include ${.OBJDIR}/opt_global.h
 CFLAGS+=	-I. -I${SYSDIR} -I${SYSDIR}/contrib/ck/include
 
 CFLAGS.gcc+=	-finline-limit=${INLINE_LIMIT}
-CFLAGS.gcc+=	-fms-extensions
 CFLAGS.gcc+= --param inline-unit-growth=100
 CFLAGS.gcc+= --param large-function-growth=1000
 
diff --git a/sys/modules/iser/Makefile b/sys/modules/iser/Makefile
index 615199ec97a3..fadb0894ac85 100644
--- a/sys/modules/iser/Makefile
+++ b/sys/modules/iser/Makefile
@@ -19,7 +19,6 @@ CFLAGS+= -I${SYSDIR}/ofed/include/uapi
 CFLAGS+= ${LINUXKPI_INCLUDES}
 CFLAGS+= -DCONFIG_INFINIBAND_USER_MEM
 CFLAGS+= -DINET6 -DINET
-CFLAGS+= -fms-extensions
 
 CFLAGS+=-DICL_KERNEL_PROXY
 
diff --git a/sys/modules/pms/Makefile b/sys/modules/pms/Makefile
index 8bd21fc4b502..81599e0a3ceb 100644
--- a/sys/modules/pms/Makefile
+++ b/sys/modules/pms/Makefile
@@ -17,7 +17,6 @@
 	${SRCTOP}/sys/dev/pms/freebsd/driver/common
 
 CFLAGS+=-fno-builtin
-CFLAGS+=-fms-extensions
 
 CFLAGS+=-Wredundant-decls
 CFLAGS+=-Wunused-variable
diff --git a/sys/powerpc/conf/dpaa/config.dpaa b/sys/powerpc/conf/dpaa/config.dpaa
index 6a923baed894..0b7c8fcf3b29 100644
--- a/sys/powerpc/conf/dpaa/config.dpaa
+++ b/sys/powerpc/conf/dpaa/config.dpaa
@@ -2,7 +2,7 @@
 files		"dpaa/files.dpaa"
 
 makeoptions DPAA_COMPILE_CMD="${LINUXKPI_C} ${DPAAWARNFLAGS} \
-	-Wno-cast-qual -Wno-unused-function -Wno-init-self -fms-extensions \
+	-Wno-cast-qual -Wno-unused-function -Wno-init-self \
 	-include $S/contrib/ncsw/build/dflags.h \
 	-Wno-error=missing-prototypes \
 	-I$S/contrib/ncsw/build/ \