* fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
[not found] ` <20251029233057.GA3441561@ax162>
@ 2025-10-30 13:23 ` Christian Brauner
2025-10-30 13:38 ` Ard Biesheuvel
0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-10-30 13:23 UTC (permalink / raw)
To: Nathan Chancellor, Linus Torvalds
Cc: Ard Biesheuvel, linux-efi, Rasmus Villemoes, Alexander Viro,
linux-fsdevel, linux-kernel, linux-kbuild, David Sterba
On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > if it's small enough or just want to give me a stable branch I can pull
> > I'll be content. Thanks!
>
> I do not care either way but I created a shared branch/tag since it was
> easy enough to do. If Linus wants to take these directly for -rc4, I am
> fine with that as well.
>
> Cheers,
> Nathan
>
> The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
>
> Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
Thanks, I pulled this and placed it into a branch that I can base other
branches on.
_But_, I'm already running into problems. :)
I'm changing a struct ns_common in ns_common.h (struct ns_common) and
wanted to make use of the fms extensions. ns_common.h is heavily
included by virtue of the namespace stuff. So we get an include chain
like the following:
In file included from ./include/linux/cgroup.h:23,
from ./include/linux/memcontrol.h:13,
from ./include/linux/swap.h:9,
from ./include/asm-generic/tlb.h:15,
from ./arch/x86/include/asm/tlb.h:8,
from ./arch/x86/include/asm/efi.h:7,
from drivers/firmware/efi/libstub/x86-stub.c:13:
./include/linux/ns_common.h:132:31: error: declaration does not declare anything [-Werror]
132 | struct ns_tree;
| ^
./include/linux/ns_common.h: In function '__ns_ref_active_read':
./include/linux/ns_common.h:228:31: error: 'const struct ns_common' has no member named '__ns_ref_active'
228 | return atomic_read(&ns->__ns_ref_active);
| ^~
In file included from ./arch/x86/include/asm/bug.h:108,
from ./arch/x86/include/asm/alternative.h:9,
from ./arch/x86/include/asm/segment.h:6,
from ./arch/x86/include/asm/ptrace.h:5,
from ./arch/x86/include/asm/math_emu.h:5,
from ./arch/x86/include/asm/processor.h:13,
from ./arch/x86/include/asm/timex.h:5,
from ./include/linux/timex.h:67,
from ./include/linux/time32.h:13,
from ./include/linux/time.h:60,
from ./include/linux/efi.h:17,
from drivers/firmware/efi/libstub/x86-stub.c:9:
Because struct cgroup_namespace embeddds struct ns_common and it
proliferates via mm stuff into the efi code.
So the EFI cod has it's own KBUILD_CFLAGS. It does:
# non-x86 reuses KBUILD_CFLAGS, x86 does not
cflags-y := $(KBUILD_CFLAGS)
<snip>
KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
-Os -DDISABLE_BRANCH_PROFILING \
-include $(srctree)/include/linux/hidden.h \
-D__NO_FORTIFY \
-ffreestanding \
-fno-stack-protector \
$(call cc-option,-fno-addrsig) \
-D__DISABLE_EXPORTS
which means x86 doesn't get -fms-extension breaking the build. If I
manually insert:
diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index 94b05e4451dd..4ad2f8f42134 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -42,6 +42,8 @@ KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
-ffreestanding \
-fno-stack-protector \
$(call cc-option,-fno-addrsig) \
+ -fms-extensions \
+ -Wno-microsoft-anon-tag \
-D__DISABLE_EXPORTS
The build works...
I think we need to decide how to fix this now because as soon as someone
makes use of the extension that is indirectly included by that libstub
thing we're fscked.
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-10-30 13:23 ` fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration) Christian Brauner
@ 2025-10-30 13:38 ` Ard Biesheuvel
2025-10-30 17:29 ` Nathan Chancellor
0 siblings, 1 reply; 9+ messages in thread
From: Ard Biesheuvel @ 2025-10-30 13:38 UTC (permalink / raw)
To: Christian Brauner
Cc: Nathan Chancellor, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
>
> On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > if it's small enough or just want to give me a stable branch I can pull
> > > I'll be content. Thanks!
> >
> > I do not care either way but I created a shared branch/tag since it was
> > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > fine with that as well.
> >
> > Cheers,
> > Nathan
> >
> > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> >
> > Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> >
> > are available in the Git repository at:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
>
> Thanks, I pulled this and placed it into a branch that I can base other
> branches on.
>
> _But_, I'm already running into problems. :)
>
...
>
> Because struct cgroup_namespace embeddds struct ns_common and it
> proliferates via mm stuff into the efi code.
>
> So the EFI cod has it's own KBUILD_CFLAGS. It does:
>
> # non-x86 reuses KBUILD_CFLAGS, x86 does not
> cflags-y := $(KBUILD_CFLAGS)
>
> <snip>
>
> KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> -Os -DDISABLE_BRANCH_PROFILING \
> -include $(srctree)/include/linux/hidden.h \
> -D__NO_FORTIFY \
> -ffreestanding \
> -fno-stack-protector \
> $(call cc-option,-fno-addrsig) \
> -D__DISABLE_EXPORTS
>
> which means x86 doesn't get -fms-extension breaking the build. If I
> manually insert:
>
> diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> index 94b05e4451dd..4ad2f8f42134 100644
> --- a/drivers/firmware/efi/libstub/Makefile
> +++ b/drivers/firmware/efi/libstub/Makefile
> @@ -42,6 +42,8 @@ KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> -ffreestanding \
> -fno-stack-protector \
> $(call cc-option,-fno-addrsig) \
> + -fms-extensions \
> + -Wno-microsoft-anon-tag \
> -D__DISABLE_EXPORTS
>
> The build works...
>
> I think we need to decide how to fix this now because as soon as someone
> makes use of the extension that is indirectly included by that libstub
> thing we're fscked.
Unless anyone is feeling brave and wants to untangle the x86 command
line delta between the stub and core kernel, I suggest we just add
these flags just like you proposed (assuming all supported compilers
tolerate their presence)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-10-30 13:38 ` Ard Biesheuvel
@ 2025-10-30 17:29 ` Nathan Chancellor
2025-10-30 20:16 ` Christian Brauner
0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-10-30 17:29 UTC (permalink / raw)
To: Ard Biesheuvel
Cc: Christian Brauner, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Thu, Oct 30, 2025 at 02:38:50PM +0100, Ard Biesheuvel wrote:
> On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
> >
> > On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > > if it's small enough or just want to give me a stable branch I can pull
> > > > I'll be content. Thanks!
> > >
> > > I do not care either way but I created a shared branch/tag since it was
> > > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > > fine with that as well.
> > >
> > > Cheers,
> > > Nathan
> > >
> > > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> > >
> > > Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> > >
> > > are available in the Git repository at:
> > >
> > > git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
> >
> > Thanks, I pulled this and placed it into a branch that I can base other
> > branches on.
> >
> > _But_, I'm already running into problems. :)
> >
> ...
> >
> > Because struct cgroup_namespace embeddds struct ns_common and it
> > proliferates via mm stuff into the efi code.
> >
> > So the EFI cod has it's own KBUILD_CFLAGS. It does:
> >
> > # non-x86 reuses KBUILD_CFLAGS, x86 does not
> > cflags-y := $(KBUILD_CFLAGS)
> >
> > <snip>
> >
> > KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > -Os -DDISABLE_BRANCH_PROFILING \
> > -include $(srctree)/include/linux/hidden.h \
> > -D__NO_FORTIFY \
> > -ffreestanding \
> > -fno-stack-protector \
> > $(call cc-option,-fno-addrsig) \
> > -D__DISABLE_EXPORTS
> >
> > which means x86 doesn't get -fms-extension breaking the build. If I
> > manually insert:
> >
> > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > index 94b05e4451dd..4ad2f8f42134 100644
> > --- a/drivers/firmware/efi/libstub/Makefile
> > +++ b/drivers/firmware/efi/libstub/Makefile
> > @@ -42,6 +42,8 @@ KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > -ffreestanding \
> > -fno-stack-protector \
> > $(call cc-option,-fno-addrsig) \
> > + -fms-extensions \
> > + -Wno-microsoft-anon-tag \
> > -D__DISABLE_EXPORTS
> >
> > The build works...
> >
> > I think we need to decide how to fix this now because as soon as someone
> > makes use of the extension that is indirectly included by that libstub
> > thing we're fscked.
>
> Unless anyone is feeling brave and wants to untangle the x86 command
> line delta between the stub and core kernel, I suggest we just add
> these flags just like you proposed (assuming all supported compilers
> tolerate their presence)
There are several other places in the kernel that blow away
KBUILD_CFLAGS like this that will need the same fix (I went off of
searching for -std=gnu11, as that was needed in many places to fix GCC
15). It is possible that we might want to take the opportunity to unify
these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
just bothered with adding the flags in the existing places.
diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
index ffa3536581f6..9d0efed91414 100644
--- a/arch/arm64/kernel/vdso32/Makefile
+++ b/arch/arm64/kernel/vdso32/Makefile
@@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
$(filter -Werror,$(KBUILD_CPPFLAGS)) \
-Werror-implicit-function-declaration \
-Wno-format-security \
- -std=gnu11
+ -std=gnu11 -fms-extensions
VDSO_CFLAGS += -O2
# Some useful compiler-dependent flags from top-level Makefile
VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
@@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
VDSO_CFLAGS += -Werror=date-time
VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
+VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
# Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
# unreliable.
diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
index d8316f993482..c0cc3ca5da9f 100644
--- a/arch/loongarch/vdso/Makefile
+++ b/arch/loongarch/vdso/Makefile
@@ -19,7 +19,7 @@ ccflags-vdso := \
cflags-vdso := $(ccflags-vdso) \
-isystem $(shell $(CC) -print-file-name=include) \
$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
- -std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
+ -std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
$(call cc-option, -fno-asynchronous-unwind-tables) \
$(call cc-option, -fno-stack-protector)
diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
index 17c42d718eb3..f8481e4e9d21 100644
--- a/arch/parisc/boot/compressed/Makefile
+++ b/arch/parisc/boot/compressed/Makefile
@@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
ifndef CONFIG_64BIT
KBUILD_CFLAGS += -mfast-indirect-calls
endif
-KBUILD_CFLAGS += -std=gnu11
+KBUILD_CFLAGS += -std=gnu11 -fms-extensions
LDFLAGS_vmlinux := -X -e startup --as-needed -T
$(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index c47b78c1d3e7..f1a4761ebd44 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -70,7 +70,7 @@ BOOTCPPFLAGS := -nostdinc $(LINUXINCLUDE)
BOOTCPPFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
BOOTCFLAGS := $(BOOTTARGETFLAGS) \
- -std=gnu11 \
+ -std=gnu11 -fms-extensions \
-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -O2 \
-msoft-float -mno-altivec -mno-vsx \
@@ -86,6 +86,7 @@ BOOTARFLAGS := -crD
ifdef CONFIG_CC_IS_CLANG
BOOTCFLAGS += $(CLANG_FLAGS)
+BOOTCFLAGS += -Wno-microsoft-anon-tag
BOOTAFLAGS += $(CLANG_FLAGS)
endif
diff --git a/arch/s390/Makefile b/arch/s390/Makefile
index b4769241332b..8578361133a4 100644
--- a/arch/s390/Makefile
+++ b/arch/s390/Makefile
@@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
ifndef CONFIG_AS_IS_LLVM
KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
endif
-KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
+KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
@@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
+KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
UTS_MACHINE := s390x
STACK_SIZE := $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
index bd39b36e7bd6..0c196a5b194a 100644
--- a/arch/s390/purgatory/Makefile
+++ b/arch/s390/purgatory/Makefile
@@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
$(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
$(call if_changed_rule,as_o_S)
-KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
+KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
@@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
KBUILD_CFLAGS += -D__DISABLE_EXPORTS
KBUILD_CFLAGS += $(CLANG_FLAGS)
+KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
KBUILD_AFLAGS += -D__DISABLE_EXPORTS
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 4db7e4bf69f5..e20e25b8b16c 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -48,7 +48,8 @@ endif
# How to compile the 16-bit code. Note we always compile for -march=i386;
# that way we can complain to the user if the CPU is insufficient.
-REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
+REALMODE_CFLAGS := -std=gnu11 -fms-extensions -m16 -g -Os \
+ -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
-Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
-fno-strict-aliasing -fomit-frame-pointer -fno-pic \
-mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
@@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
REALMODE_CFLAGS += $(CLANG_FLAGS)
ifdef CONFIG_CC_IS_CLANG
REALMODE_CFLAGS += -Wno-gnu
+REALMODE_CFLAGS += -Wno-microsoft-anon-tag
endif
export REALMODE_CFLAGS
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index 74657589264d..68f9d7a1683b 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
# avoid errors with '-march=i386', and future flags may depend on the target to
# be valid.
KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
-KBUILD_CFLAGS += -std=gnu11
+KBUILD_CFLAGS += -std=gnu11 -fms-extensions
KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
KBUILD_CFLAGS += -Wundef
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
@@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
KBUILD_CFLAGS += -ffreestanding -fshort-wchar
KBUILD_CFLAGS += -fno-stack-protector
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
-KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
+ifdef CONFIG_CC_IS_CLANG
+KBUILD_CFLAGS += -Wno-gnu
+KBUILD_CFLAGS += -Wno-microsoft-anon-tag
+endif
KBUILD_CFLAGS += -Wno-pointer-sign
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
KBUILD_CFLAGS += -D__DISABLE_EXPORTS
diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index 94b05e4451dd..7d15a85d579f 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -11,12 +11,12 @@ cflags-y := $(KBUILD_CFLAGS)
cflags-$(CONFIG_X86_32) := -march=i386
cflags-$(CONFIG_X86_64) := -mcmodel=small
-cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 \
+cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
-fPIC -fno-strict-aliasing -mno-red-zone \
-mno-mmx -mno-sse -fshort-wchar \
-Wno-pointer-sign \
$(call cc-disable-warning, address-of-packed-member) \
- $(call cc-disable-warning, gnu) \
+ $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
-fno-asynchronous-unwind-tables \
$(CLANG_FLAGS)
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-10-30 17:29 ` Nathan Chancellor
@ 2025-10-30 20:16 ` Christian Brauner
2025-10-31 1:34 ` Nathan Chancellor
0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-10-30 20:16 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 02:38:50PM +0100, Ard Biesheuvel wrote:
> > On Thu, 30 Oct 2025 at 14:23, Christian Brauner <brauner@kernel.org> wrote:
> > >
> > > On Wed, Oct 29, 2025 at 04:30:57PM -0700, Nathan Chancellor wrote:
> > > > On Thu, Oct 30, 2025 at 12:13:11AM +0100, Christian Brauner wrote:
> > > > > I'm fine either way. @Nathan, if you just want to give Linus the patch
> > > > > if it's small enough or just want to give me a stable branch I can pull
> > > > > I'll be content. Thanks!
> > > >
> > > > I do not care either way but I created a shared branch/tag since it was
> > > > easy enough to do. If Linus wants to take these directly for -rc4, I am
> > > > fine with that as well.
> > > >
> > > > Cheers,
> > > > Nathan
> > > >
> > > > The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:
> > > >
> > > > Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)
> > > >
> > > > are available in the Git repository at:
> > > >
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git tags/kbuild-ms-extensions-6.19
> > >
> > > Thanks, I pulled this and placed it into a branch that I can base other
> > > branches on.
> > >
> > > _But_, I'm already running into problems. :)
> > >
> > ...
> > >
> > > Because struct cgroup_namespace embeddds struct ns_common and it
> > > proliferates via mm stuff into the efi code.
> > >
> > > So the EFI cod has it's own KBUILD_CFLAGS. It does:
> > >
> > > # non-x86 reuses KBUILD_CFLAGS, x86 does not
> > > cflags-y := $(KBUILD_CFLAGS)
> > >
> > > <snip>
> > >
> > > KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > > -Os -DDISABLE_BRANCH_PROFILING \
> > > -include $(srctree)/include/linux/hidden.h \
> > > -D__NO_FORTIFY \
> > > -ffreestanding \
> > > -fno-stack-protector \
> > > $(call cc-option,-fno-addrsig) \
> > > -D__DISABLE_EXPORTS
> > >
> > > which means x86 doesn't get -fms-extension breaking the build. If I
> > > manually insert:
> > >
> > > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > > index 94b05e4451dd..4ad2f8f42134 100644
> > > --- a/drivers/firmware/efi/libstub/Makefile
> > > +++ b/drivers/firmware/efi/libstub/Makefile
> > > @@ -42,6 +42,8 @@ KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(cflags-y)) \
> > > -ffreestanding \
> > > -fno-stack-protector \
> > > $(call cc-option,-fno-addrsig) \
> > > + -fms-extensions \
> > > + -Wno-microsoft-anon-tag \
> > > -D__DISABLE_EXPORTS
> > >
> > > The build works...
> > >
> > > I think we need to decide how to fix this now because as soon as someone
> > > makes use of the extension that is indirectly included by that libstub
> > > thing we're fscked.
> >
> > Unless anyone is feeling brave and wants to untangle the x86 command
> > line delta between the stub and core kernel, I suggest we just add
> > these flags just like you proposed (assuming all supported compilers
> > tolerate their presence)
>
> There are several other places in the kernel that blow away
> KBUILD_CFLAGS like this that will need the same fix (I went off of
> searching for -std=gnu11, as that was needed in many places to fix GCC
> 15). It is possible that we might want to take the opportunity to unify
> these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> just bothered with adding the flags in the existing places.
That should hopefully do it. Can you update the shared branch with that
and then tell me when I can repull?
>
> diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
> index ffa3536581f6..9d0efed91414 100644
> --- a/arch/arm64/kernel/vdso32/Makefile
> +++ b/arch/arm64/kernel/vdso32/Makefile
> @@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> $(filter -Werror,$(KBUILD_CPPFLAGS)) \
> -Werror-implicit-function-declaration \
> -Wno-format-security \
> - -std=gnu11
> + -std=gnu11 -fms-extensions
> VDSO_CFLAGS += -O2
> # Some useful compiler-dependent flags from top-level Makefile
> VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
> @@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
> VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
> VDSO_CFLAGS += -Werror=date-time
> VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
> +VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
>
> # Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
> # unreliable.
> diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
> index d8316f993482..c0cc3ca5da9f 100644
> --- a/arch/loongarch/vdso/Makefile
> +++ b/arch/loongarch/vdso/Makefile
> @@ -19,7 +19,7 @@ ccflags-vdso := \
> cflags-vdso := $(ccflags-vdso) \
> -isystem $(shell $(CC) -print-file-name=include) \
> $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
> - -std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> + -std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
> $(call cc-option, -fno-asynchronous-unwind-tables) \
> $(call cc-option, -fno-stack-protector)
> diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
> index 17c42d718eb3..f8481e4e9d21 100644
> --- a/arch/parisc/boot/compressed/Makefile
> +++ b/arch/parisc/boot/compressed/Makefile
> @@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
> ifndef CONFIG_64BIT
> KBUILD_CFLAGS += -mfast-indirect-calls
> endif
> -KBUILD_CFLAGS += -std=gnu11
> +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
>
> LDFLAGS_vmlinux := -X -e startup --as-needed -T
> $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index c47b78c1d3e7..f1a4761ebd44 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -70,7 +70,7 @@ BOOTCPPFLAGS := -nostdinc $(LINUXINCLUDE)
> BOOTCPPFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
>
> BOOTCFLAGS := $(BOOTTARGETFLAGS) \
> - -std=gnu11 \
> + -std=gnu11 -fms-extensions \
> -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> -fno-strict-aliasing -O2 \
> -msoft-float -mno-altivec -mno-vsx \
> @@ -86,6 +86,7 @@ BOOTARFLAGS := -crD
>
> ifdef CONFIG_CC_IS_CLANG
> BOOTCFLAGS += $(CLANG_FLAGS)
> +BOOTCFLAGS += -Wno-microsoft-anon-tag
> BOOTAFLAGS += $(CLANG_FLAGS)
> endif
>
> diff --git a/arch/s390/Makefile b/arch/s390/Makefile
> index b4769241332b..8578361133a4 100644
> --- a/arch/s390/Makefile
> +++ b/arch/s390/Makefile
> @@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
> ifndef CONFIG_AS_IS_LLVM
> KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
> endif
> -KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
> +KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
> KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
> KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
> KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
> @@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
> KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
> KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
> KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
> +KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
>
> UTS_MACHINE := s390x
> STACK_SIZE := $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
> diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
> index bd39b36e7bd6..0c196a5b194a 100644
> --- a/arch/s390/purgatory/Makefile
> +++ b/arch/s390/purgatory/Makefile
> @@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
> $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
> $(call if_changed_rule,as_o_S)
>
> -KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
> +KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
> KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
> KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
> KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
> @@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
> KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> KBUILD_CFLAGS += $(CLANG_FLAGS)
> +KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
> KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
> KBUILD_AFLAGS += -D__DISABLE_EXPORTS
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 4db7e4bf69f5..e20e25b8b16c 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -48,7 +48,8 @@ endif
>
> # How to compile the 16-bit code. Note we always compile for -march=i386;
> # that way we can complain to the user if the CPU is insufficient.
> -REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> +REALMODE_CFLAGS := -std=gnu11 -fms-extensions -m16 -g -Os \
> + -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
> -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
> -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
> @@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
> REALMODE_CFLAGS += $(CLANG_FLAGS)
> ifdef CONFIG_CC_IS_CLANG
> REALMODE_CFLAGS += -Wno-gnu
> +REALMODE_CFLAGS += -Wno-microsoft-anon-tag
> endif
> export REALMODE_CFLAGS
>
> diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
> index 74657589264d..68f9d7a1683b 100644
> --- a/arch/x86/boot/compressed/Makefile
> +++ b/arch/x86/boot/compressed/Makefile
> @@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
> # avoid errors with '-march=i386', and future flags may depend on the target to
> # be valid.
> KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
> -KBUILD_CFLAGS += -std=gnu11
> +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
> KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
> KBUILD_CFLAGS += -Wundef
> KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> @@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
> KBUILD_CFLAGS += -ffreestanding -fshort-wchar
> KBUILD_CFLAGS += -fno-stack-protector
> KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
> -KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
> +ifdef CONFIG_CC_IS_CLANG
> +KBUILD_CFLAGS += -Wno-gnu
> +KBUILD_CFLAGS += -Wno-microsoft-anon-tag
> +endif
> KBUILD_CFLAGS += -Wno-pointer-sign
> KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> index 94b05e4451dd..7d15a85d579f 100644
> --- a/drivers/firmware/efi/libstub/Makefile
> +++ b/drivers/firmware/efi/libstub/Makefile
> @@ -11,12 +11,12 @@ cflags-y := $(KBUILD_CFLAGS)
>
> cflags-$(CONFIG_X86_32) := -march=i386
> cflags-$(CONFIG_X86_64) := -mcmodel=small
> -cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 \
> +cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
> -fPIC -fno-strict-aliasing -mno-red-zone \
> -mno-mmx -mno-sse -fshort-wchar \
> -Wno-pointer-sign \
> $(call cc-disable-warning, address-of-packed-member) \
> - $(call cc-disable-warning, gnu) \
> + $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
> -fno-asynchronous-unwind-tables \
> $(CLANG_FLAGS)
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-10-30 20:16 ` Christian Brauner
@ 2025-10-31 1:34 ` Nathan Chancellor
2025-11-01 13:10 ` Christian Brauner
0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-10-31 1:34 UTC (permalink / raw)
To: Christian Brauner
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Thu, Oct 30, 2025 at 09:16:02PM +0100, Christian Brauner wrote:
> On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> > There are several other places in the kernel that blow away
> > KBUILD_CFLAGS like this that will need the same fix (I went off of
> > searching for -std=gnu11, as that was needed in many places to fix GCC
> > 15). It is possible that we might want to take the opportunity to unify
> > these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> > just bothered with adding the flags in the existing places.
>
> That should hopefully do it. Can you update the shared branch with that
> and then tell me when I can repull?
I have applied this as commit e066b73bd881 ("kbuild: Add
'-fms-extensions' to areas with dedicated CFLAGS") in the
kbuild-ms-extensions branch. I may solicit acks from architecture
maintainers but I would like to make sure there are no other surprises
before then.
> > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
> > index ffa3536581f6..9d0efed91414 100644
> > --- a/arch/arm64/kernel/vdso32/Makefile
> > +++ b/arch/arm64/kernel/vdso32/Makefile
> > @@ -63,7 +63,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> > $(filter -Werror,$(KBUILD_CPPFLAGS)) \
> > -Werror-implicit-function-declaration \
> > -Wno-format-security \
> > - -std=gnu11
> > + -std=gnu11 -fms-extensions
> > VDSO_CFLAGS += -O2
> > # Some useful compiler-dependent flags from top-level Makefile
> > VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
> > @@ -71,6 +71,7 @@ VDSO_CFLAGS += -fno-strict-overflow
> > VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
> > VDSO_CFLAGS += -Werror=date-time
> > VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
> > +VDSO_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> >
> > # Compile as THUMB2 or ARM. Unwinding via frame-pointers in THUMB2 is
> > # unreliable.
> > diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
> > index d8316f993482..c0cc3ca5da9f 100644
> > --- a/arch/loongarch/vdso/Makefile
> > +++ b/arch/loongarch/vdso/Makefile
> > @@ -19,7 +19,7 @@ ccflags-vdso := \
> > cflags-vdso := $(ccflags-vdso) \
> > -isystem $(shell $(CC) -print-file-name=include) \
> > $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
> > - -std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> > + -std=gnu11 -fms-extensions -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \
> > -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
> > $(call cc-option, -fno-asynchronous-unwind-tables) \
> > $(call cc-option, -fno-stack-protector)
> > diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
> > index 17c42d718eb3..f8481e4e9d21 100644
> > --- a/arch/parisc/boot/compressed/Makefile
> > +++ b/arch/parisc/boot/compressed/Makefile
> > @@ -18,7 +18,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
> > ifndef CONFIG_64BIT
> > KBUILD_CFLAGS += -mfast-indirect-calls
> > endif
> > -KBUILD_CFLAGS += -std=gnu11
> > +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
> >
> > LDFLAGS_vmlinux := -X -e startup --as-needed -T
> > $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
> > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> > index c47b78c1d3e7..f1a4761ebd44 100644
> > --- a/arch/powerpc/boot/Makefile
> > +++ b/arch/powerpc/boot/Makefile
> > @@ -70,7 +70,7 @@ BOOTCPPFLAGS := -nostdinc $(LINUXINCLUDE)
> > BOOTCPPFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
> >
> > BOOTCFLAGS := $(BOOTTARGETFLAGS) \
> > - -std=gnu11 \
> > + -std=gnu11 -fms-extensions \
> > -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
> > -fno-strict-aliasing -O2 \
> > -msoft-float -mno-altivec -mno-vsx \
> > @@ -86,6 +86,7 @@ BOOTARFLAGS := -crD
> >
> > ifdef CONFIG_CC_IS_CLANG
> > BOOTCFLAGS += $(CLANG_FLAGS)
> > +BOOTCFLAGS += -Wno-microsoft-anon-tag
> > BOOTAFLAGS += $(CLANG_FLAGS)
> > endif
> >
> > diff --git a/arch/s390/Makefile b/arch/s390/Makefile
> > index b4769241332b..8578361133a4 100644
> > --- a/arch/s390/Makefile
> > +++ b/arch/s390/Makefile
> > @@ -22,7 +22,7 @@ KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
> > ifndef CONFIG_AS_IS_LLVM
> > KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
> > endif
> > -KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11
> > +KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 -fms-extensions
> > KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
> > KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR
> > KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign
> > @@ -35,6 +35,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-membe
> > KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
> > KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
> > KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
> > +KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> >
> > UTS_MACHINE := s390x
> > STACK_SIZE := $(if $(CONFIG_KASAN),65536,$(if $(CONFIG_KMSAN),65536,16384))
> > diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
> > index bd39b36e7bd6..0c196a5b194a 100644
> > --- a/arch/s390/purgatory/Makefile
> > +++ b/arch/s390/purgatory/Makefile
> > @@ -13,7 +13,7 @@ CFLAGS_sha256.o := -D__NO_FORTIFY
> > $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
> > $(call if_changed_rule,as_o_S)
> >
> > -KBUILD_CFLAGS := -std=gnu11 -fno-strict-aliasing -Wall -Wstrict-prototypes
> > +KBUILD_CFLAGS := -std=gnu11 -fms-extensions -fno-strict-aliasing -Wall -Wstrict-prototypes
> > KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
> > KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
> > KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common
> > @@ -21,6 +21,7 @@ KBUILD_CFLAGS += -fno-stack-protector
> > KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> > KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> > KBUILD_CFLAGS += $(CLANG_FLAGS)
> > +KBUILD_CFLAGS += $(if $(CONFIG_CC_IS_CLANG),-Wno-microsoft-anon-tag)
> > KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
> > KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
> > KBUILD_AFLAGS += -D__DISABLE_EXPORTS
> > diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> > index 4db7e4bf69f5..e20e25b8b16c 100644
> > --- a/arch/x86/Makefile
> > +++ b/arch/x86/Makefile
> > @@ -48,7 +48,8 @@ endif
> >
> > # How to compile the 16-bit code. Note we always compile for -march=i386;
> > # that way we can complain to the user if the CPU is insufficient.
> > -REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> > +REALMODE_CFLAGS := -std=gnu11 -fms-extensions -m16 -g -Os \
> > + -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \
> > -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
> > -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
> > -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
> > @@ -60,6 +61,7 @@ REALMODE_CFLAGS += $(cc_stack_align4)
> > REALMODE_CFLAGS += $(CLANG_FLAGS)
> > ifdef CONFIG_CC_IS_CLANG
> > REALMODE_CFLAGS += -Wno-gnu
> > +REALMODE_CFLAGS += -Wno-microsoft-anon-tag
> > endif
> > export REALMODE_CFLAGS
> >
> > diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
> > index 74657589264d..68f9d7a1683b 100644
> > --- a/arch/x86/boot/compressed/Makefile
> > +++ b/arch/x86/boot/compressed/Makefile
> > @@ -25,7 +25,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
> > # avoid errors with '-march=i386', and future flags may depend on the target to
> > # be valid.
> > KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
> > -KBUILD_CFLAGS += -std=gnu11
> > +KBUILD_CFLAGS += -std=gnu11 -fms-extensions
> > KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
> > KBUILD_CFLAGS += -Wundef
> > KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
> > @@ -36,7 +36,10 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
> > KBUILD_CFLAGS += -ffreestanding -fshort-wchar
> > KBUILD_CFLAGS += -fno-stack-protector
> > KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
> > -KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
> > +ifdef CONFIG_CC_IS_CLANG
> > +KBUILD_CFLAGS += -Wno-gnu
> > +KBUILD_CFLAGS += -Wno-microsoft-anon-tag
> > +endif
> > KBUILD_CFLAGS += -Wno-pointer-sign
> > KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> > KBUILD_CFLAGS += -D__DISABLE_EXPORTS
> > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > index 94b05e4451dd..7d15a85d579f 100644
> > --- a/drivers/firmware/efi/libstub/Makefile
> > +++ b/drivers/firmware/efi/libstub/Makefile
> > @@ -11,12 +11,12 @@ cflags-y := $(KBUILD_CFLAGS)
> >
> > cflags-$(CONFIG_X86_32) := -march=i386
> > cflags-$(CONFIG_X86_64) := -mcmodel=small
> > -cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 \
> > +cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 -fms-extensions \
> > -fPIC -fno-strict-aliasing -mno-red-zone \
> > -mno-mmx -mno-sse -fshort-wchar \
> > -Wno-pointer-sign \
> > $(call cc-disable-warning, address-of-packed-member) \
> > - $(call cc-disable-warning, gnu) \
> > + $(if $(CONFIG_CC_IS_CLANG),-Wno-gnu -Wno-microsoft-anon-tag) \
> > -fno-asynchronous-unwind-tables \
> > $(CLANG_FLAGS)
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-10-31 1:34 ` Nathan Chancellor
@ 2025-11-01 13:10 ` Christian Brauner
2025-11-01 16:38 ` Nathan Chancellor
0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-11-01 13:10 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Thu, Oct 30, 2025 at 09:34:57PM -0400, Nathan Chancellor wrote:
> On Thu, Oct 30, 2025 at 09:16:02PM +0100, Christian Brauner wrote:
> > On Thu, Oct 30, 2025 at 10:29:18AM -0700, Nathan Chancellor wrote:
> > > There are several other places in the kernel that blow away
> > > KBUILD_CFLAGS like this that will need the same fix (I went off of
> > > searching for -std=gnu11, as that was needed in many places to fix GCC
> > > 15). It is possible that we might want to take the opportunity to unify
> > > these flags into something like KBUILD_DIALECT_CFLAGS but for now, I
> > > just bothered with adding the flags in the existing places.
> >
> > That should hopefully do it. Can you update the shared branch with that
> > and then tell me when I can repull?
>
> I have applied this as commit e066b73bd881 ("kbuild: Add
> '-fms-extensions' to areas with dedicated CFLAGS") in the
> kbuild-ms-extensions branch. I may solicit acks from architecture
> maintainers but I would like to make sure there are no other surprises
> before then.
I'd like a stable branch before -rc5, please.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-11-01 13:10 ` Christian Brauner
@ 2025-11-01 16:38 ` Nathan Chancellor
2025-11-06 22:09 ` Christian Brauner
0 siblings, 1 reply; 9+ messages in thread
From: Nathan Chancellor @ 2025-11-01 16:38 UTC (permalink / raw)
To: Christian Brauner
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> I'd like a stable branch before -rc5, please.
Sure thing. I have sent the change out for Acks now:
https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/
I will finalize the branch by Thursday at the latest and ping you when
it is ready.
Cheers,
Nathan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-11-01 16:38 ` Nathan Chancellor
@ 2025-11-06 22:09 ` Christian Brauner
2025-11-06 23:20 ` Nathan Chancellor
0 siblings, 1 reply; 9+ messages in thread
From: Christian Brauner @ 2025-11-06 22:09 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
On Sat, Nov 01, 2025 at 12:38:28PM -0400, Nathan Chancellor wrote:
> On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> > I'd like a stable branch before -rc5, please.
>
> Sure thing. I have sent the change out for Acks now:
>
> https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/
>
> I will finalize the branch by Thursday at the latest and ping you when
> it is ready.
Hey Nathan!
Any status update on this?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration)
2025-11-06 22:09 ` Christian Brauner
@ 2025-11-06 23:20 ` Nathan Chancellor
0 siblings, 0 replies; 9+ messages in thread
From: Nathan Chancellor @ 2025-11-06 23:20 UTC (permalink / raw)
To: Christian Brauner
Cc: Ard Biesheuvel, Linus Torvalds, linux-efi, Rasmus Villemoes,
Alexander Viro, linux-fsdevel, linux-kernel, linux-kbuild,
David Sterba
Hey Christian,
On Thu, Nov 06, 2025 at 11:09:25PM +0100, Christian Brauner wrote:
> On Sat, Nov 01, 2025 at 12:38:28PM -0400, Nathan Chancellor wrote:
> > On Sat, Nov 01, 2025 at 02:10:42PM +0100, Christian Brauner wrote:
> > > I'd like a stable branch before -rc5, please.
> >
> > Sure thing. I have sent the change out for Acks now:
> >
> > https://lore.kernel.org/20251101-kbuild-ms-extensions-dedicated-cflags-v1-1-38004aba524b@kernel.org/
> >
> > I will finalize the branch by Thursday at the latest and ping you when
> > it is ready.
>
> Any status update on this?
Did https://lore.kernel.org/20251106174752.GA2440428@ax162/ not make it
into your inbox?
Cheers,
Nathan
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-11-06 23:20 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20251023082142.2104456-1-linux@rasmusvillemoes.dk>
[not found] ` <20251029-redezeit-reitz-1fa3f3b4e171@brauner>
[not found] ` <20251029173828.GA1669504@ax162>
[not found] ` <20251029-wobei-rezept-bd53e76bb05b@brauner>
[not found] ` <CAHk-=wjGcos7LACF0J40x-Dwf4beOYj+mhptD+xcLte1RG91Ug@mail.gmail.com>
[not found] ` <20251030-zuruf-linken-d20795719609@brauner>
[not found] ` <20251029233057.GA3441561@ax162>
2025-10-30 13:23 ` fms extension (Was: [PATCH] fs/pipe: stop duplicating union pipe_index declaration) Christian Brauner
2025-10-30 13:38 ` Ard Biesheuvel
2025-10-30 17:29 ` Nathan Chancellor
2025-10-30 20:16 ` Christian Brauner
2025-10-31 1:34 ` Nathan Chancellor
2025-11-01 13:10 ` Christian Brauner
2025-11-01 16:38 ` Nathan Chancellor
2025-11-06 22:09 ` Christian Brauner
2025-11-06 23:20 ` Nathan Chancellor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox