release 6.14.8
This commit is contained in:
74
debian/patches/patchset-pf/fixes/0007-gcc-15-disable-Wunterminated-string-initialization-e.patch
vendored
Normal file
74
debian/patches/patchset-pf/fixes/0007-gcc-15-disable-Wunterminated-string-initialization-e.patch
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
From 4018bbbaed061f15e0b84ea36b4aa95784934a33 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Sun, 20 Apr 2025 15:30:53 -0700
|
||||
Subject: gcc-15: disable '-Wunterminated-string-initialization' entirely for
|
||||
now
|
||||
|
||||
I had left the warning around but as a non-fatal error to get my gcc-15
|
||||
builds going, but fixed up some of the most annoying warning cases so
|
||||
that it wouldn't be *too* verbose.
|
||||
|
||||
Because I like the _concept_ of the warning, even if I detested the
|
||||
implementation to shut it up.
|
||||
|
||||
It turns out the implementation to shut it up is even more broken than I
|
||||
thought, and my "shut up most of the warnings" patch just caused fatal
|
||||
errors on gcc-14 instead.
|
||||
|
||||
I had tested with clang, but when I upgrade my development environment,
|
||||
I try to do it on all machines because I hate having different systems
|
||||
to maintain, and hadn't realized that gcc-14 now had issues.
|
||||
|
||||
The ACPI case is literally why I wanted to have a *type* that doesn't
|
||||
trigger the warning (see commit d5d45a7f2619: "gcc-15: make
|
||||
'unterminated string initialization' just a warning"), instead of
|
||||
marking individual places as "__nonstring".
|
||||
|
||||
But gcc-14 doesn't like that __nonstring location that shut gcc-15 up,
|
||||
because it's on an array of char arrays, not on one single array:
|
||||
|
||||
drivers/acpi/tables.c:399:1: error: 'nonstring' attribute ignored on objects of type 'const char[][4]' [-Werror=attributes]
|
||||
399 | static const char table_sigs[][ACPI_NAMESEG_SIZE] __initconst __nonstring = {
|
||||
| ^~~~~~
|
||||
|
||||
and my attempts to nest it properly with a type had failed, because of
|
||||
how gcc doesn't like marking the types as having attributes, only
|
||||
symbols.
|
||||
|
||||
There may be some trick to it, but I was already annoyed by the bad
|
||||
attribute design, now I'm just entirely fed up with it.
|
||||
|
||||
I wish gcc had a proper way to say "this type is a *byte* array, not a
|
||||
string".
|
||||
|
||||
The obvious thing would be to distinguish between "char []" and an
|
||||
explicitly signed "unsigned char []" (as opposed to an implicitly
|
||||
unsigned char, which is typically an architecture-specific default, but
|
||||
for the kernel is universal thanks to '-funsigned-char').
|
||||
|
||||
But any "we can typedef a 8-bit type to not become a string just because
|
||||
it's an array" model would be fine.
|
||||
|
||||
But "__attribute__((nonstring))" is sadly not that sane model.
|
||||
|
||||
Reported-by: Chris Clayton <chris2553@googlemail.com>
|
||||
Fixes: 4b4bd8c50f48 ("gcc-15: acpi: sprinkle random '__nonstring' crumbles around")
|
||||
Fixes: d5d45a7f2619 ("gcc-15: make 'unterminated string initialization' just a warning")
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
Makefile | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1071,8 +1071,8 @@ KBUILD_CFLAGS += $(call cc-option, -fstr
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow)
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow)
|
||||
|
||||
-#Currently, disable -Wunterminated-string-initialization as an error
|
||||
-KBUILD_CFLAGS += $(call cc-option, -Wno-error=unterminated-string-initialization)
|
||||
+#Currently, disable -Wunterminated-string-initialization as broken
|
||||
+KBUILD_CFLAGS += $(call cc-option, -Wno-unterminated-string-initialization)
|
||||
|
||||
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||
KBUILD_CFLAGS += -fno-strict-overflow
|
Reference in New Issue
Block a user