Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS

GCC 15 changed the default C standard dialect from gnu17 to gnu23,
which should not have impacted the kernel because it explicitly requests
the gnu11 standard in the main Makefile. However, mips/vdso code uses
its own CFLAGS without a '-std=' value, which break with this dialect
change because of the kernel's own definitions of bool, false, and true
conflicting with the C23 reserved keywords.

include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
11 | false = 0,
| ^~~~~
include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
35 | typedef _Bool bool;
| ^~~~
include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards

Add -std as specified in KBUILD_CFLAGS to the decompressor and purgatory
CFLAGS to eliminate these errors and make the C standard version of these
areas match the rest of the kernel.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

authored by

Khem Raj and committed by
Thomas Bogendoerfer
0f4ae7c6 6d223b8f

+1
+1
arch/mips/vdso/Makefile
··· 27 27 # offsets. 28 28 cflags-vdso := $(ccflags-vdso) \ 29 29 $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ 30 + $(filter -std=%,$(KBUILD_CFLAGS)) \ 30 31 -O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ 31 32 -mrelax-pic-calls $(call cc-option, -mexplicit-relocs) \ 32 33 -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \