tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Compiling kernel with -std=gnu11



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


Home | Main Index | Thread Index | Old Index