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 &quot;g=
 cc&quot; &amp;&amp; ${HAVE_GCC:U0} &gt;=3D 8:? -Wno-stringop-truncation :}<=
 br>=C2=A0<br>+CC_WNO_DEPRECATED_NON_PROTOTYPE=3D${${ACTIVE_CC} =3D=3D &quot=
 ;clang&quot; :? -Wno-error=3Ddeprecated-non-prototype :}<br>+CC_WNO_STRICT_=
 PROTOTYPES=3D${${ACTIVE_CC} =3D=3D &quot;clang&quot; :? -Wno-error=3Dstrict=
 -prototypes :}<br>+CC_WNO_UNUSED_BUT_SET_VARIABLE=3D${${ACTIVE_CC} =3D=3D &=
 quot;clang&quot; :? -Wno-error=3Dunused-but-set-variable :}<br>+CC_WNO_CAST=
 _FUNCTION_TYPE_MISMATCH=3D${${ACTIVE_CC} =3D=3D &quot;clang&quot; :? -Wno-e=
 rror=3Dcast-function-type-mismatch :}<br>+CC_WNO_UNTERMINATED_STRING_INITIA=
 LIZATION=3D${${ACTIVE_CC} =3D=3D &quot;clang&quot; :? -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&quot;<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 &lt;<=
 a href=3D"mailto:gnats-admin@netbsd.org">gnats-admin@netbsd.org</a>&gt; 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 &lt;<a href=3D"mailto:martin@duskware.de" target=3D"_=
 blank">martin@duskware.de</a>&gt;<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--

NetBSD Home
NetBSD PR Database Search

(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.