commit: 0676a781bcf1b579eb6785714bc0dd1d30e625e1 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org> AuthorDate: Sat May 3 20:21:29 2025 +0000 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org> CommitDate: Sat May 3 20:21:29 2025 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=0676a781
GCC 15 defaults to -std=gnu23. Hack in CSTD_FLAG to pass -std=gnu11 everywhere. Bug: https://bugs.gentoo.org/954704 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org> 0000_README | 4 ++ 2980_GCC15-gnu23-to-gnu11-fix.patch | 103 ++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) diff --git a/0000_README b/0000_README index bee6d5d1..ab46b164 100644 --- a/0000_README +++ b/0000_README @@ -623,6 +623,10 @@ Patch: 2950_kbuild-CRC32-1MB-dict-xz-modules.patch From: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit/?h=kbuild&id=fbf5892df21a8ccfcb2fda0fd65bc3169c89ed28 Desc: kbuild: Use CRC32 and a 1MiB dictionary for XZ compressed modules +Patch: 2980_GCC15-gnu23-to-gnu11-fix.patch +From: https://lore.kernel.org/linux-kbuild/20241119044724.GA2246422@thelio-3990X/ +Desc: GCC 15 defaults to -std=gnu23. Hack in CSTD_FLAG to pass -std=gnu11 everywhere. + Patch: 3000_Support-printing-firmware-info.patch From: https://bugs.gentoo.org/732852 Desc: Print firmware info (Reqs CONFIG_GENTOO_PRINT_FIRMWARE_INFO). Thanks to Georgy Yakovlev diff --git a/2980_GCC15-gnu23-to-gnu11-fix.patch b/2980_GCC15-gnu23-to-gnu11-fix.patch new file mode 100644 index 00000000..363f53b8 --- /dev/null +++ b/2980_GCC15-gnu23-to-gnu11-fix.patch @@ -0,0 +1,103 @@ +GCC 15 defaults to -std=gnu23. While most of the kernel builds with -std=gnu11, +some of it forgets to pass that flag. Hack in CSTD_FLAG to pass -std=gnu11 +everywhere. + +https://lore.kernel.org/linux-kbuild/20241119044724.GA2246422@thelio-3990X/ +--- a/Makefile 2025-05-03 16:09:30.996889513 -0400 ++++ b/Makefile 2025-05-03 16:11:20.570401911 -0400 +@@ -438,6 +438,8 @@ export KCONFIG_CONFIG + # SHELL used by kbuild + CONFIG_SHELL := sh + ++CSTD_FLAG := -std=gnu11 ++ + HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null) + HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null) + HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null) +@@ -459,7 +461,7 @@ HOSTRUSTC = rustc + HOSTPKG_CONFIG = pkg-config + + KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \ +- -O2 -fomit-frame-pointer -std=gnu11 ++ -O2 -fomit-frame-pointer $(CSTD_FLAG) + KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS) + KBUILD_USERLDFLAGS := $(USERLDFLAGS) + +@@ -569,7 +571,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror + -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ + -Werror=implicit-function-declaration -Werror=implicit-int \ + -Werror=return-type -Wno-format-security \ +- -std=gnu11 ++ $(CSTD_FLAG) + KBUILD_CPPFLAGS := -D__KERNEL__ + KBUILD_RUSTFLAGS := $(rust_common_flags) \ + --target=$(objtree)/rust/target.json \ +@@ -612,7 +614,7 @@ export CPP AR NM STRIP OBJCOPY OBJDUMP R + export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX + export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD + export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE +-export KBUILD_USERCFLAGS KBUILD_USERLDFLAGS ++export KBUILD_USERCFLAGS KBUILD_USERLDFLAGS CSTD_FLAG + + export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS + export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE +--- a/arch/arm64/kernel/vdso32/Makefile 2025-05-03 16:11:55.112646723 -0400 ++++ b/arch/arm64/kernel/vdso32/Makefile 2025-05-03 16:12:40.285118446 -0400 +@@ -68,7 +68,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-pr + -fno-strict-aliasing -fno-common \ + -Werror-implicit-function-declaration \ + -Wno-format-security \ +- -std=gnu11 ++ $(CSTD_FLAG) + VDSO_CFLAGS += -O2 + # Some useful compiler-dependent flags from top-level Makefile + VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) +--- a/arch/x86/Makefile 2025-05-03 16:12:57.110095343 -0400 ++++ b/arch/x86/Makefile 2025-05-03 16:13:27.844970732 -0400 +@@ -43,7 +43,7 @@ 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 := -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \ ++REALMODE_CFLAGS := $(CSTD_FLAG) -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) +--- a/drivers/firmware/efi/libstub/Makefile 2025-05-03 16:13:52.064344475 -0400 ++++ b/drivers/firmware/efi/libstub/Makefile 2025-05-03 16:15:52.709691031 -0400 +@@ -14,7 +14,7 @@ cflags-$(CONFIG_X86) += -m$(BITS) -D__K + $(call cc-disable-warning, address-of-packed-member) \ + $(call cc-disable-warning, gnu) \ + -fno-asynchronous-unwind-tables \ +- $(CLANG_FLAGS) ++ $(CLANG_FLAGS) $(CSTD_FLAG) + + # arm64 uses the full KBUILD_CFLAGS so it's necessary to explicitly + # disable the stackleak plugin +@@ -31,13 +31,13 @@ cflags-$(CONFIG_LOONGARCH) := $(subst $( + + cflags-$(CONFIG_EFI_PARAMS_FROM_FDT) += -I$(srctree)/scripts/dtc/libfdt + +-KBUILD_CFLAGS := $(cflags-y) -Os -DDISABLE_BRANCH_PROFILING \ ++KBUILD_CFLAGS := $(cflags-y) $(CSTD_FLAG) -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 ++ -D__DISABLE_EXPORTS $(CSTD_FLAG) + + # + # struct randomization only makes sense for Linux internal types, which the EFI +--- a/arch/x86/boot/compressed/Makefile 2025-05-03 16:16:16.932485667 -0400 ++++ b/arch/x86/boot/compressed/Makefile 2025-05-03 16:16:57.757770067 -0400 +@@ -33,7 +33,7 @@ targets := vmlinux vmlinux.bin vmlinux.b + # case of cross compiling, as it has the '--target=' flag, which is needed to + # 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 := -m$(BITS) -O2 $(CLANG_FLAGS) $(CSTD_FLAG) + KBUILD_CFLAGS += -std=gnu11 + KBUILD_CFLAGS += -fno-strict-aliasing -fPIE + KBUILD_CFLAGS += -Wundef
