mirror of https://github.com/torvalds/linux.git
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:
|
||
|---|---|---|
| .. | ||
| acpica | ||
| apei | ||
| arm64 | ||
| dptf | ||
| nfit | ||
| numa | ||
| pmic | ||
| riscv | ||
| x86 | ||
| Kconfig | ||
| Makefile | ||
| ac.c | ||
| acpi_adxl.c | ||
| acpi_apd.c | ||
| acpi_configfs.c | ||
| acpi_dbg.c | ||
| acpi_extlog.c | ||
| acpi_ffh.c | ||
| acpi_fpdt.c | ||
| acpi_ipmi.c | ||
| acpi_lpat.c | ||
| acpi_lpit.c | ||
| acpi_memhotplug.c | ||
| acpi_pad.c | ||
| acpi_pcc.c | ||
| acpi_platform.c | ||
| acpi_pnp.c | ||
| acpi_processor.c | ||
| acpi_tad.c | ||
| acpi_video.c | ||
| acpi_watchdog.c | ||
| battery.c | ||
| bgrt.c | ||
| bus.c | ||
| button.c | ||
| container.c | ||
| cppc_acpi.c | ||
| debugfs.c | ||
| device_pm.c | ||
| device_sysfs.c | ||
| dock.c | ||
| ec.c | ||
| ec_sys.c | ||
| event.c | ||
| evged.c | ||
| fan.h | ||
| fan_attr.c | ||
| fan_core.c | ||
| fan_hwmon.c | ||
| glue.c | ||
| hed.c | ||
| internal.h | ||
| ioapic.c | ||
| irq.c | ||
| mipi-disco-img.c | ||
| nhlt.c | ||
| nvs.c | ||
| osi.c | ||
| osl.c | ||
| pci_irq.c | ||
| pci_link.c | ||
| pci_mcfg.c | ||
| pci_root.c | ||
| pci_slot.c | ||
| pfr_telemetry.c | ||
| pfr_update.c | ||
| platform_profile.c | ||
| power.c | ||
| pptt.c | ||
| prmt.c | ||
| proc.c | ||
| processor_core.c | ||
| processor_driver.c | ||
| processor_idle.c | ||
| processor_pdc.c | ||
| processor_perflib.c | ||
| processor_thermal.c | ||
| processor_throttling.c | ||
| property.c | ||
| reboot.c | ||
| resource.c | ||
| sbs.c | ||
| sbshc.c | ||
| sbshc.h | ||
| scan.c | ||
| sleep.c | ||
| sleep.h | ||
| spcr.c | ||
| sysfs.c | ||
| tables.c | ||
| thermal.c | ||
| thermal_lib.c | ||
| tiny-power-button.c | ||
| utils.c | ||
| video_detect.c | ||
| viot.c | ||
| wakeup.c | ||