diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/sys/cdefs.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h index f46efcc..c7a7e4b 100644 --- a/sys/sys/cdefs.h +++ b/sys/sys/cdefs.h @@ -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__)) +#else +#define __gnu_inline +#endif + /* Compiler-dependent macros that rely on FreeBSD-specific extensions. */ #if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \ defined(__GNUC__) && !defined(__INTEL_COMPILER) |