Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Mar 2015 13:14:05 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        "Pedro F. Giffuni" <pfg@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r280636 - head/include
Message-ID:  <20150326130403.W993@besplex.bde.org>
In-Reply-To: <201503252153.t2PLrInc025854@svn.freebsd.org>
References:  <201503252153.t2PLrInc025854@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 25 Mar 2015, Pedro F. Giffuni wrote:

> Log:
>  Temporarily revert 280458.
>
>  GCC is still carries an old version of cdefs.h which doesn't
>  accept multiple parameters for the nonnull attribute.
>
>  Since this issue probably affects many ports in the tree
>  we will revert it for now until gcc gets fixed.

Note that sys/cdefs.h is supposed to work with any version of
gcc back to gcc-1, and does mostly work back to at least gcc-2.95.
The whole point of sys/cdefs.h is to provide compatibity macros
for old and other non-default compilers.  Standard compilers don't
even have __attribute__(()).  So no changes in future versions
of gcc will fix the previous commit.

The ifdefs for __nonnull() seem to be broken.  They assume that
all versions of gcc >= 3.3 support the same semantics for __nonnull()
and that no non-gcc compiler supports the __nonnull__() attribute.
Non-gcc compilers like clang get this by pretending to be gcc.
Non-gcc compilers like icc tend to not get this by not pretending to
be gcc.  __nonnull__() is one of the few attributes that is only a
hint, so definining it as nothing when it is not known to work is
correct.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150326130403.W993>