From owner-svn-src-head@FreeBSD.ORG Fri May 15 20:35:07 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 03ABAC52; Fri, 15 May 2015 20:35:07 +0000 (UTC) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D4176102F; Fri, 15 May 2015 20:35:06 +0000 (UTC) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 13898B926; Fri, 15 May 2015 16:35:05 -0400 (EDT) From: John Baldwin To: "Pedro F. Giffuni" Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282987 - head/sys/sys Date: Fri, 15 May 2015 16:35:04 -0400 Message-ID: <2535986.nxztlW3efp@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505151951.t4FJp6Gj043073@svn.freebsd.org> References: <201505151951.t4FJp6Gj043073@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 15 May 2015 16:35:05 -0400 (EDT) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 May 2015 20:35:07 -0000 On Friday, May 15, 2015 07:51:06 PM Pedro F. Giffuni wrote: > Author: pfg > Date: Fri May 15 19:51:05 2015 > New Revision: 282987 > URL: https://svnweb.freebsd.org/changeset/base/282987 > > Log: > Break apart the gnu_inline attribute and use "artificial" if available. > > In general it is bad practice to use the gnu_inline attribute but we > will need it in special cases like FORTIFY_SOURCE. In this specific > case it is also useful to have the "artificial" attribute: > > "This attribute is useful for small inline wrappers which if possible > should appear during debugging as a unit, depending on the debug info > format it will either mean marking the function as artificial or using the > caller location for all instructions within the inlined body." > > This attribute appears to be currently implemented only in GCC. Use it > only in conjuntion with gnu_inline in the cases where it is available, > which is similar in spirit in how it's used in glibc. > > Modified: > head/sys/sys/cdefs.h > > Modified: head/sys/sys/cdefs.h > ============================================================================== > --- head/sys/sys/cdefs.h Fri May 15 19:37:17 2015 (r282986) > +++ head/sys/sys/cdefs.h Fri May 15 19:51:05 2015 (r282987) > @@ -375,10 +375,8 @@ > #endif > > #if __GNUC_PREREQ__(4, 1) > -#define __gnu_inline __attribute__((__gnu_inline__)) > #define __returns_twice __attribute__((__returns_twice__)) > #else > -#define __gnu_inline > #define __returns_twice > #endif > > @@ -538,6 +536,21 @@ > __attribute__((__format__ (__strftime__, fmtarg, firstvararg))) > #endif > > +/* > + * FORTIFY_SOURCE, and perhaps other compiler-specific features, require > + * the use of non-standard inlining. In general we should try to avoid > + * using these but GCC-compatible compilers tend to support the extensions > + * well enough to use them in limited cases. > + */ > +#if __GNUC_PREREQ__(4, 1) > +#if __has_attribute(artificial) || __GNUC_PREREQ__(4, 3) > +#define __gnu_inline __attribute__((__gnu_inline__, __artificial__)) > +#else > +#define __gnu_inline __attribute__((__gnu_inline__)) ^^^^ missing an #endif here? I'm getting this error from buildworld: /usr/obj/usr/src/tmp/usr/include/sys/cdefs.h:550:2: error: #else after #else #else ^ /usr/obj/usr/src/tmp/usr/include/sys/cdefs.h:36:2: error: unterminated conditional directive #ifndef _SYS_CDEFS_H_ ^ 14 errors generated. mkdep: compile failed -- John Baldwin