Currently we compile the kernel with -std=gnu99. Someone recently added some code that uses the u"foo" syntax for UTF-16 literals, which is new in C11. With -std=gnu99, gcc accepts this syntax but clang rejects it -- clang requires -std=c11 or -std=gnu11.
We could switch to L"foo" like is being used elsewhere, but it's not exactly correct -- the data in question really are fixed to be UTF-16, not some arbitrary interpretation of wide characters. We may also want to use other C11 features such as _Atomic in the future. Any objections to compiling the kernel with -std=gnu11 instead?
diff -r 876c5a9056ed sys/conf/Makefile.kern.inc --- a/sys/conf/Makefile.kern.inc Sun Jan 05 14:27:10 2025 +0000 +++ b/sys/conf/Makefile.kern.inc Sun Jan 05 14:48:17 2025 +0000 @@ -66,7 +66,7 @@ INCLUDES?= -I. ${EXTRA_INCLUDES} -I${S}/ -I$S -nostdinc CPPFLAGS+= ${INCLUDES} ${IDENT} -D_KERNEL -D_KERNEL_OPT .if !defined(COVERITY_TOP_CONFIG) -CPPFLAGS+= -std=gnu99 +CPPFLAGS+= -std=gnu11 .endif .if ${KERNEL_DIR:Uno} == "yes" CPPFLAGS+= -DKERNEL_DIR