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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to