summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/sys/cdefs.h17
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)
OpenPOWER on IntegriCloud