mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-15 23:41:35 -04:00
kbuild: Use '-fms-anonymous-structs' if it is available
Clang recently added '-fms-anonymous-structs' [1] to specifically enable the Microsoft tagged anonymous structure / union extension, for which the kernel added '-fms-extensions' in commitc4781dc3d1("Kbuild: enable -fms-extensions"). Switch to this more narrow option if it is available, which would have helped avoid the issue addressed by commita6773e6932("jfs: Rename _inline to avoid conflict with clang's '-fms-extensions'"). GCC has talked about adding a similar flag [2] as well but potentially naming it differently. Move the selection of the flag to Kconfig to make it easier to use cc-option (as CC_FLAGS_DIALECT may be used in arch Makefiles, which may be too early for cc-option in Kbuild) and customize based on compiler flag names. Link:c391efe6fb[1] Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123623 [2] Signed-off-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Nicolas Schier <nsc@kernel.org> Reviewed-by: Kees Cook <kees@kernel.org> Acked-by: Ard Biesheuvel <ardb@kernel.org> Acked-by: Helge Deller <deller@gmx.de> # parisc Link: https://patch.msgid.link/20260223-fms-anonymous-structs-v1-2-8ee406d3c36c@kernel.org Signed-off-by: Nicolas Schier <nsc@kernel.org>
This commit is contained in:
committed by
Nicolas Schier
parent
ec4c28276c
commit
0d3fccf68d
2
Makefile
2
Makefile
@@ -791,7 +791,7 @@ endif
|
||||
|
||||
CC_FLAGS_DIALECT := -std=gnu11
|
||||
# Allow including a tagged struct or union anonymously in another struct/union.
|
||||
CC_FLAGS_DIALECT += -fms-extensions
|
||||
CC_FLAGS_DIALECT += $(CONFIG_CC_MS_EXTENSIONS)
|
||||
# Clang enables warnings about GNU and Microsoft extensions by default, disable
|
||||
# them because this is expected with the above options.
|
||||
ifdef CONFIG_CC_IS_CLANG
|
||||
|
||||
@@ -960,6 +960,11 @@ config CC_IMPLICIT_FALLTHROUGH
|
||||
default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5)
|
||||
default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough)
|
||||
|
||||
config CC_MS_EXTENSIONS
|
||||
string
|
||||
default "-fms-anonymous-structs" if $(cc-option,-fms-anonymous-structs)
|
||||
default "-fms-extensions"
|
||||
|
||||
# Currently, disable gcc-10+ array-bounds globally.
|
||||
# It's still broken in gcc-13, so no upper bound yet.
|
||||
config GCC10_NO_ARRAY_BOUNDS
|
||||
|
||||
Reference in New Issue
Block a user