linux/drivers/acpi
Linus Torvalds 9d7a0577c9 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 d5d45a7f26: "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: 4b4bd8c50f ("gcc-15: acpi: sprinkle random '__nonstring' crumbles around")
Fixes: d5d45a7f26 ("gcc-15: make 'unterminated string initialization' just a warning")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2025-04-20 15:30:53 -07:00
..
acpica gcc-15: acpi: sprinkle random '__nonstring' crumbles around 2025-04-20 11:57:54 -07:00
apei acpi/ghes, cxl/pci: Process CXL CPER Protocol Errors 2025-03-14 14:21:45 -07:00
arm64 iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
dptf ACPI: DPTF: Support Panther Lake 2024-12-10 20:01:38 +01:00
nfit acpi: nfit: fix narrowing conversion in acpi_nfit_ctl 2025-03-03 08:03:43 -06:00
numa cxl for v6.15 2025-04-02 20:04:43 -07:00
pmic ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe() 2024-08-02 17:05:08 +02:00
riscv ACPI: introduce acpi_arch_init() 2024-11-22 21:32:25 +01:00
x86 ACPI: x86: Extend Lenovo Yoga Tab 3 quirk with skip GPIO event-handlers 2025-03-27 20:41:19 +01:00
ac.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
acpi_adxl.c
acpi_apd.c ACPI: APD: Use strscpy() instead of strcpy() 2024-11-05 21:35:35 +01:00
acpi_configfs.c
acpi_dbg.c
acpi_extlog.c mm/early_ioremap: add null pointer checks to prevent NULL-pointer dereference 2025-01-13 22:40:59 -08:00
acpi_ffh.c
acpi_fpdt.c
acpi_ipmi.c
acpi_lpat.c
acpi_lpit.c
acpi_memhotplug.c
acpi_pad.c x86/cpu: Make all all CPUID leaf names consistent 2024-12-18 06:17:46 -08:00
acpi_pcc.c
acpi_platform.c
acpi_pnp.c More ACPI updates for 6.15-rc1 2025-04-02 15:16:30 -07:00
acpi_processor.c Merge branches 'acpi-video', 'acpi-resource', 'acpi-pad' and 'acpi-misc' 2024-09-11 22:05:16 +02:00
acpi_tad.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
acpi_video.c ACPI: video: Handle fetching EDID as ACPI_TYPE_PACKAGE 2025-03-31 17:02:14 +02:00
acpi_watchdog.c
battery.c ACPI: battery: Rename extensions to hook in messages 2024-12-10 19:50:30 +01:00
bgrt.c ACPI: BGRT: Constify 'struct bin_attribute' 2024-12-10 19:34:41 +01:00
bus.c ACPI: introduce acpi_arch_init() 2024-11-22 21:32:25 +01:00
button.c ACPI: button: Only send KEY_POWER for ACPI_BUTTON_NOTIFY_STATUS 2025-04-07 19:52:17 +02:00
container.c
cppc_acpi.c Merge branches 'acpi-battery', 'acpi-ec', 'acpi-pfr' and 'acpi-osl' 2024-11-15 20:45:14 +01:00
debugfs.c
device_pm.c PM: sleep: Use DPM_FLAG_SMART_SUSPEND conditionally 2025-02-19 13:22:12 +01:00
device_sysfs.c ACPI: sysfs: remove return value of acpi_device_setup_files() 2024-08-02 16:44:22 +02:00
dock.c
ec.c ACPI: EC: Set ec_no_wakeup for Lenovo Go S 2025-04-07 19:59:33 +02:00
ec_sys.c
event.c ACPI: event: Use strscpy() instead of strcpy() 2024-11-05 21:35:35 +01:00
evged.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
fan.h ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan_attr.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan_core.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
fan_hwmon.c ACPI: fan: Add fan speed reporting for fans with only _FST 2025-02-25 21:48:51 +01:00
glue.c
hed.c ACPI: HED: Always initialize before evged 2025-02-18 19:24:29 +01:00
internal.h ACPI: EC: make EC support compile-time conditional 2024-10-24 17:47:15 +02:00
ioapic.c
irq.c
Kconfig ACPI: HED: Always initialize before evged 2025-02-18 19:24:29 +01:00
Makefile tracing: Disable branch profiling in noinstr code 2025-03-22 09:49:26 +01:00
mipi-disco-img.c ACPI: bus: change the prototype for acpi_get_physical_device_location 2024-12-19 20:59:35 +01:00
nhlt.c
nvs.c
osi.c
osl.c ACPI: OSL: Use usleep_range() in acpi_os_sleep() 2024-12-10 19:45:27 +01:00
pci_irq.c xen/pvh: Setup gsi for passthrough device 2024-09-25 09:54:52 +02:00
pci_link.c ACPI: pci_link: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
pci_mcfg.c PCI/ACPI: Increase Loongson max PCI hosts to 8 2024-08-01 18:04:05 -05:00
pci_root.c ACPI: pci_root: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
pci_slot.c
pfr_telemetry.c Merge branch 'acpi-misc' 2024-11-15 20:52:02 +01:00
pfr_update.c ACPI: Switch back to struct platform_driver::remove() 2024-11-12 21:30:30 +01:00
platform_profile.c ACPI: platform_profile: Optimize _aggregate_choices() 2025-03-27 20:44:29 +01:00
power.c ACPI: power: Use str_on_off() helper function 2025-02-18 18:48:32 +01:00
pptt.c ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls 2025-04-07 20:20:56 +02:00
prmt.c ACPI: PRM: Remove unnecessary strict handler address checks 2025-02-05 21:16:40 +01:00
proc.c
processor_core.c Updates for the interrupt subsystem: 2024-07-22 13:52:05 -07:00
processor_driver.c ACPI: processor: Move arch_init_invariance_cppc() call later 2024-11-06 21:31:36 +01:00
processor_idle.c ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid 2025-03-31 13:59:04 +02:00
processor_pdc.c
processor_perflib.c ACPI: processor_perflib: extend X86 dependency 2024-11-05 21:40:22 +01:00
processor_thermal.c
processor_throttling.c
property.c ACPI: property: Fix return value for nval == 0 in acpi_data_prop_read() 2025-02-05 21:09:28 +01:00
reboot.c
resource.c ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP 2025-03-27 20:38:08 +01:00
sbs.c ACPI: SBS: Use strscpy() instead of strcpy() 2024-11-05 21:35:36 +01:00
sbshc.c Merge branch 'acpi-misc' 2024-11-15 20:52:02 +01:00
sbshc.h
scan.c iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
sleep.c ACPI: PM: Quirk ASUS ROG M16 to default to S3 sleep 2024-09-10 20:19:52 +02:00
sleep.h
spcr.c
sysfs.c ACPI: sysfs: Constify 'struct bin_attribute' 2024-12-10 19:34:41 +01:00
tables.c gcc-15: disable '-Wunterminated-string-initialization' entirely for now 2025-04-20 15:30:53 -07:00
thermal.c ACPI: thermal: Fix stale comment regarding trip points 2025-02-18 18:43:18 +01:00
thermal_lib.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
tiny-power-button.c
utils.c ACPI: bus: change the prototype for acpi_get_physical_device_location 2024-12-19 20:59:35 +01:00
video_detect.c ACPI: video: force native for Apple MacbookPro11,2 and Air7,2 2024-11-13 12:48:50 +01:00
viot.c iommu: Resolve fwspec ops automatically 2024-07-04 14:36:03 +01:00
wakeup.c