On Wed, Jan 22, 2025 at 07:54:27PM -0700, Nathan Chancellor wrote: > GCC 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, there are certain > places in the s390 code that use their 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=gnu11' 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. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> > --- Thanks! Tested-by: Heiko Carstens <hca@xxxxxxxxxxxxx> Alexander, can you pick this up, please? > I only see one other error in various files with a recent GCC 15.0.1 > snapshot, which I can eliminate by dropping the version part of the > condition for CONFIG_GCC_ASM_FLAG_OUTPUT_BROKEN. Is this a regression of > the fix for the problem of GCC 14.2.0 or is something else doing on > here? > > arch/s390/include/asm/bitops.h: Assembler messages: > arch/s390/include/asm/bitops.h:60: Error: operand 1: syntax error; missing ')' after base register > arch/s390/include/asm/bitops.h:60: Error: operand 2: syntax error; ')' not allowed here > arch/s390/include/asm/bitops.h:60: Error: junk at end of line: `,4' That is I bug I recently introduced. The patch below fixes that. Thanks for reporting!