NetBSD Problem Report #60185
From www@netbsd.org Sun Apr 12 06:43:46 2026
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
client-signature RSA-PSS (2048 bits) client-digest SHA256)
(Client CN "mail.netbsd.org", Issuer "R12" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 792C81A923A
for <gnats-bugs@gnats.NetBSD.org>; Sun, 12 Apr 2026 06:43:46 +0000 (UTC)
Message-Id: <20260412064345.81EEA1A923E@mollari.NetBSD.org>
Date: Sun, 12 Apr 2026 06:43:45 +0000 (UTC)
From: pyhirricturtle@gmail.com
Reply-To: pyhirricturtle@gmail.com
To: gnats-bugs@NetBSD.org
Subject: bsd.sys.mk: add Clang warning suppressions for -Werror compatibility
X-Send-Pr-Version: www-1.0
X-From4GNATS: "pyhirricturtle@gmail.com via gnats" <gnats-admin@NetBSD.org>
>Number: 60185
>Category: toolchain
>Synopsis: bsd.sys.mk: add Clang warning suppressions for -Werror compatibility
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: toolchain-manager
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Sun Apr 12 06:45:01 +0000 2026
>Last-Modified: Tue Apr 14 23:45:00 +0000 2026
>Originator: FireTurtle
>Release: NetBSD-current (2026-04)
>Organization:
>Environment:
cross-build with Clang 22+ on Linux, targeting amd64/i386/vax
>Description:
I've been building NetBSD-current with a recent Clang (22+) and there
are quite a few -Werror failures from warnings that GCC doesnt emit.
Three warnings account for the bulk of the failures across the tree:
-Wdeprecated-non-prototype ~100+ files (binutils, openssl, heimdal, ...)
-Wstrict-prototypes ~50+ files (same packages)
-Wunused-but-set-variable ~50+ files (kernel, libc, external/)
These fire on all architectures (amd64, i386, etc.), not just
cross-builds. The first two will also fire with GCC 14+, which
netbsd-current already imports.
Per-file suppression would mean touching hundreds of Makefiles, many in
external/ code that gets re-imported regularly, so that doesn't seem
practical.
The patch uses -Wno-error= (not -Wno-) so the warnings are still
visible, just not fatal. It also adds -Wno-unknown-warning-option so
the same bsd.sys.mk works with both the in-tree Clang 13 and newer
versions.
This was discussed earlier on tech-toolchain ("Compiling with modern Clang").
>How-To-Repeat:
Build NetBSD-current with HAVE_LLVM=yes using Clang 14 or newer. Hundreds of -Werror failures from the three warnings listed above.
>Fix:
--- share/mk/bsd.sys.mk.orig
+++ share/mk/bsd.sys.mk
@@ -171,6 +171,18 @@
CWARNFLAGS+=${CWARNFLAGS.${ACTIVE_CC}}
+# Clang warning suppressions for -Werror compatibility.
+# Silently ignore flags unknown to older Clang versions (the in-tree
+# Clang 13 does not know warnings added in Clang 14-23).
+.if ${ACTIVE_CC} == "clang"
+CWARNFLAGS.clang+=-Wno-unknown-warning-option
+# C23 strictness and Clang-vs-GCC divergences (100+ files each).
+# These also fire with GCC 14+ (-Wstrict-prototypes, -Wdeprecated-non-prototype).
+CWARNFLAGS.clang+=-Wno-error=deprecated-non-prototype
+CWARNFLAGS.clang+=-Wno-error=strict-prototypes
+CWARNFLAGS.clang+=-Wno-error=unused-but-set-variable
+.endif
+
CPPFLAGS+=${AUDIT:D-D__AUDIT__}
_NOWERROR=${defined(NOGCCERROR) || (${ACTIVE_CC} == "clang" && defined(NOCLANGERROR)):?yes:no}
CFLAGS+=${${_NOWERROR} == "no" :?-Werror:} ${CWARNFLAGS}
>Audit-Trail:
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: toolchain/60185: bsd.sys.mk: add Clang warning suppressions for
-Werror compatibility
Date: Sun, 12 Apr 2026 09:18:33 +0200
Please look at bsd.own.mk and search for CC_WNO_* variables set there.
It is probably better to define some of those for clang (and if more are
needed, add them in a simmilar pattern).
Martin
From: FireTurtle <pyhirricturtle@gmail.com>
To: gnats-bugs@netbsd.org
Cc: toolchain-manager@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: toolchain/60185: bsd.sys.mk: add Clang warning suppressions for
-Werror compatibility
Date: Mon, 13 Apr 2026 23:25:56 -0700
--0000000000007eeaf0064f65ace6
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
so more like...
--- share/mk/bsd.own.mk.orig
+++ share/mk/bsd.own.mk
@@ -786,6 +786,12 @@
CC_WNO_STRINGOP_TRUNCATION=3D${${ACTIVE_CC} =3D=3D "gcc" && ${HAVE_GCC:U0}=
>=3D
8:? -Wno-stringop-truncation :}
+CC_WNO_DEPRECATED_NON_PROTOTYPE=3D${${ACTIVE_CC} =3D=3D "clang" :?
-Wno-error=3Ddeprecated-non-prototype :}
+CC_WNO_STRICT_PROTOTYPES=3D${${ACTIVE_CC} =3D=3D "clang" :?
-Wno-error=3Dstrict-prototypes :}
+CC_WNO_UNUSED_BUT_SET_VARIABLE=3D${${ACTIVE_CC} =3D=3D "clang" :?
-Wno-error=3Dunused-but-set-variable :}
+CC_WNO_CAST_FUNCTION_TYPE_MISMATCH=3D${${ACTIVE_CC} =3D=3D "clang" :?
-Wno-error=3Dcast-function-type-mismatch :}
+CC_WNO_UNTERMINATED_STRING_INITIALIZATION=3D${${ACTIVE_CC} =3D=3D "clang" =
:?
-Wno-error=3Dunterminated-string-initialization :}
+
# relative relocs are only supported in gnu ld for ppc64 and x86
--- share/mk/bsd.sys.mk.orig
+++ share/mk/bsd.sys.mk
@@ -171,6 +171,19 @@
CWARNFLAGS+=3D${CWARNFLAGS.${ACTIVE_CC}}
+# Clang warning suppressions for -Werror compatibility.
+# Silently ignore flags unknown to older Clang versions (the in-tree
+# Clang 13 does not know warnings added in Clang 14-23).
+.if ${ACTIVE_CC} =3D=3D "clang"
+CWARNFLAGS.clang+=3D-Wno-unknown-warning-option
+CWARNFLAGS.clang+=3D${CC_WNO_DEPRECATED_NON_PROTOTYPE}
+CWARNFLAGS.clang+=3D${CC_WNO_STRICT_PROTOTYPES}
+CWARNFLAGS.clang+=3D${CC_WNO_UNUSED_BUT_SET_VARIABLE}
+CWARNFLAGS.clang+=3D${CC_WNO_CAST_FUNCTION_TYPE_MISMATCH}
+CWARNFLAGS.clang+=3D${CC_WNO_UNTERMINATED_STRING_INITIALIZATION}
+.endif
+
CPPFLAGS+=3D${AUDIT:D-D__AUDIT__}
Tested: kernel + userland build clean with HAVE_LLVM=3Dyes, Clang 23.
On Sun, Apr 12, 2026 at 12:20=E2=80=AFAM Martin Husemann via gnats <
gnats-admin@netbsd.org> wrote:
> The following reply was made to PR toolchain/60185; it has been noted by
> GNATS.
>
> From: Martin Husemann <martin@duskware.de>
> To: gnats-bugs@netbsd.org
> Cc:
> Subject: Re: toolchain/60185: bsd.sys.mk: add Clang warning suppressions
> for
> -Werror compatibility
> Date: Sun, 12 Apr 2026 09:18:33 +0200
>
> Please look at bsd.own.mk and search for CC_WNO_* variables set there.
>
> It is probably better to define some of those for clang (and if more are
> needed, add them in a simmilar pattern).
>
> Martin
>
>
--0000000000007eeaf0064f65ace6
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br>so more like...<br><br>--- share/mk/bsd.own.mk.orig<br=
>+++ share/mk/<a href=3D"http://bsd.own.mk">bsd.own.mk</a><br>@@ -786,6 +78=
6,12 @@<br>=C2=A0CC_WNO_STRINGOP_TRUNCATION=3D${${ACTIVE_CC} =3D=3D "g=
cc" && ${HAVE_GCC:U0} >=3D 8:? -Wno-stringop-truncation :}<=
br>=C2=A0<br>+CC_WNO_DEPRECATED_NON_PROTOTYPE=3D${${ACTIVE_CC} =3D=3D "=
;clang" :? -Wno-error=3Ddeprecated-non-prototype :}<br>+CC_WNO_STRICT_=
PROTOTYPES=3D${${ACTIVE_CC} =3D=3D "clang" :? -Wno-error=3Dstrict=
-prototypes :}<br>+CC_WNO_UNUSED_BUT_SET_VARIABLE=3D${${ACTIVE_CC} =3D=3D &=
quot;clang" :? -Wno-error=3Dunused-but-set-variable :}<br>+CC_WNO_CAST=
_FUNCTION_TYPE_MISMATCH=3D${${ACTIVE_CC} =3D=3D "clang" :? -Wno-e=
rror=3Dcast-function-type-mismatch :}<br>+CC_WNO_UNTERMINATED_STRING_INITIA=
LIZATION=3D${${ACTIVE_CC} =3D=3D "clang" :? -Wno-error=3Duntermin=
ated-string-initialization :}<br>+<br>=C2=A0# relative relocs are only supp=
orted in gnu ld for ppc64 and x86<br><br>--- share/mk/bsd.sys.mk.orig<br>++=
+ share/mk/<a href=3D"http://bsd.sys.mk">bsd.sys.mk</a><br>@@ -171,6 +171,1=
9 @@<br>=C2=A0<br>=C2=A0CWARNFLAGS+=3D${CWARNFLAGS.${ACTIVE_CC}}<br>=C2=A0<=
br>+# Clang warning suppressions for -Werror compatibility.<br>+# Silently =
ignore flags unknown to older Clang versions (the in-tree<br>+# Clang 13 do=
es not know warnings added in Clang 14-23).<br>+.if ${ACTIVE_CC} =3D=3D &qu=
ot;clang"<br>+CWARNFLAGS.clang+=3D-Wno-unknown-warning-option<br>+CWAR=
NFLAGS.clang+=3D${CC_WNO_DEPRECATED_NON_PROTOTYPE}<br>+CWARNFLAGS.clang+=3D=
${CC_WNO_STRICT_PROTOTYPES}<br>+CWARNFLAGS.clang+=3D${CC_WNO_UNUSED_BUT_SET=
_VARIABLE}<br>+CWARNFLAGS.clang+=3D${CC_WNO_CAST_FUNCTION_TYPE_MISMATCH}<br=
>+CWARNFLAGS.clang+=3D${CC_WNO_UNTERMINATED_STRING_INITIALIZATION}<br>+.end=
if<br>+<br>=C2=A0CPPFLAGS+=3D${AUDIT:D-D__AUDIT__}<br><br>Tested: kernel + =
userland build clean with HAVE_LLVM=3Dyes, Clang 23.<br></div><br><div clas=
s=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_att=
r">On Sun, Apr 12, 2026 at 12:20=E2=80=AFAM Martin Husemann via gnats <<=
a href=3D"mailto:gnats-admin@netbsd.org">gnats-admin@netbsd.org</a>> wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The followin=
g reply was made to PR toolchain/60185; it has been noted by GNATS.<br>
<br>
From: Martin Husemann <<a href=3D"mailto:martin@duskware.de" target=3D"_=
blank">martin@duskware.de</a>><br>
To: <a href=3D"mailto:gnats-bugs@netbsd.org" target=3D"_blank">gnats-bugs@n=
etbsd.org</a><br>
Cc: <br>
Subject: Re: toolchain/60185: <a href=3D"http://bsd.sys.mk" rel=3D"noreferr=
er" target=3D"_blank">bsd.sys.mk</a>: add Clang warning suppressions for<br=
>
=C2=A0-Werror compatibility<br>
Date: Sun, 12 Apr 2026 09:18:33 +0200<br>
<br>
=C2=A0Please look at <a href=3D"http://bsd.own.mk" rel=3D"noreferrer" targe=
t=3D"_blank">bsd.own.mk</a> and search for CC_WNO_* variables set there.<br=
>
<br>
=C2=A0It is probably better to define some of those for clang (and if more =
are<br>
=C2=A0needed, add them in a simmilar pattern).<br>
<br>
=C2=A0Martin<br>
<br>
</blockquote></div>
--0000000000007eeaf0064f65ace6--
(Contact us)
$NetBSD: query-full-pr,v 1.51 2026/08/10 02:28:17 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.