From owner-svn-src-stable-11@freebsd.org Fri Apr 14 05:37:29 2017 Return-Path: Delivered-To: svn-src-stable-11@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8DD44D3DB80 for ; Fri, 14 Apr 2017 05:37:29 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1.freebsd.org (Postfix) with SMTP id 6E6C9B1D for ; Fri, 14 Apr 2017 05:37:28 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: (qmail 59472 invoked by uid 99); 14 Apr 2017 05:37:28 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Apr 2017 05:37:28 +0000 Received: from [192.168.0.104] (unknown [190.157.139.67]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 40DB91A002E; Fri, 14 Apr 2017 05:37:26 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: svn commit: r316779 - stable/11/sys/sys From: Pedro Giffuni In-Reply-To: <7B482BAF-6ACA-4303-88FF-4F3E3EDFB440@dsl-only.net> Date: Fri, 14 Apr 2017 00:38:53 -0500 Cc: svn-src-stable-11@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <7B482BAF-6ACA-4303-88FF-4F3E3EDFB440@dsl-only.net> To: Mark Millard X-Mailer: Apple Mail (2.3273) X-BeenThere: svn-src-stable-11@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for only the 11-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Apr 2017 05:37:29 -0000 Hello; > On Apr 13, 2017, at 16:02, Mark Millard wrote: >=20 >> Author: pfg >> Date: Thu Apr 13 18:28:40 2017 >> New Revision: 316779 >> URL:=20 >> https://svnweb.freebsd.org/changeset/base/316779 >>=20 >>=20 >> Log: >> Temporarily revert r315602. >> Bring back the definition for the GCC __nonnull() attribute. >>=20 >> Old versions of GCC, including the version installed the latest = 11-stable >> snapshot with pkg(8), still carry the old attributes. >>=20 >> The issue is easily fixed by rebuilding GCC but there is no need to = cause >> havoc in our user base. The definition by itself is harmless but it = should >> be removed again in the near future. >>=20 >> Modified: >> stable/11/sys/sys/cdefs.h >> Directory Properties: >> stable/11/ (props changed) >>=20 >> Modified: stable/11/sys/sys/cdefs.h >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- stable/11/sys/sys/cdefs.h Thu Apr 13 18:13:10 2017 = (r316778) >> +++ stable/11/sys/sys/cdefs.h Thu Apr 13 18:28:40 2017 = (r316779) >> @@ -376,6 +376,14 @@ >> #define __noinline >> #endif >>=20 >> +#if __GNUC_PREREQ__(3, 3) >> +#define __nonnull(x) __attribute__((__nonnull__(x))) >> +#define __nonnull_all __attribute__((__nonnull__)) >> +#else >> +#define __nonnull(x) >> +#define __nonnull_all >> +#endif >> + >> #if __GNUC_PREREQ__(3, 4) >> #define __fastcall __attribute__((__fastcall__)) >> #define __result_use_check = __attribute__((__warn_unused_result__)) >=20 >=20 > My understanding was that __attribute__((__nonnull__(x))) and > __attribute__((__nonnull__)) were causing some problems > because of optimization consequences (code removal). The goal > of converting to the new technique (involving lack of > __nonnull and lack of __nonnull_all ) was to still have > warning notices but without such removal of code if I > understand right. >=20 > If avoiding code removal was the intent behind the removal > of __nonnull (and __nonnull_all) use (and use of the > __nonull__ attributes) then just having the two lines: >=20 > +#define __nonnull(x) > +#define __nonnull_all=20 >=20 > might be better for maintaining compatibility with existing > older sources that reference __nonnull and/or __nonnull_all . >=20 Leaving empty definitions would have been indeed acceptable but I prefer to either openly drop support for an attribute or label it deprecated but still operational for a while than to lie. We previously removed all occurrences of the __nonnull() attribute from FreeBSD headers though so the change should really just be a no-op, in particular to clang users which stand for all user base and most ports. Pedro.