* 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