diff options
Diffstat (limited to 'include/linux/compiler-gcc.h')
| -rw-r--r-- | include/linux/compiler-gcc.h | 31 | 
1 files changed, 24 insertions, 7 deletions
| diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 0efef9cf014f..cd4bbe8242bd 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -66,18 +66,22 @@  /*   * Force always-inline if the user requests it so via the .config, - * or if gcc is too old: + * or if gcc is too old. + * GCC does not warn about unused static inline functions for + * -Wunused-function.  This turns out to avoid the need for complex #ifdef + * directives.  Suppress the warning in clang as well by using "unused" + * function attribute, which is redundant but not harmful for gcc.   */  #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) ||		\      !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) -#define inline		inline		__attribute__((always_inline)) notrace -#define __inline__	__inline__	__attribute__((always_inline)) notrace -#define __inline	__inline	__attribute__((always_inline)) notrace +#define inline inline		__attribute__((always_inline,unused)) notrace +#define __inline__ __inline__	__attribute__((always_inline,unused)) notrace +#define __inline __inline	__attribute__((always_inline,unused)) notrace  #else  /* A lot of inline functions can cause havoc with function tracing */ -#define inline		inline		notrace -#define __inline__	__inline__	notrace -#define __inline	__inline	notrace +#define inline inline		__attribute__((unused)) notrace +#define __inline__ __inline__	__attribute__((unused)) notrace +#define __inline __inline	__attribute__((unused)) notrace  #endif  #define __always_inline	inline __attribute__((always_inline)) @@ -223,6 +227,11 @@  /* Mark a function definition as prohibited from being cloned. */  #define __noclone	__attribute__((__noclone__, __optimize__("no-tracer"))) +#ifdef RANDSTRUCT_PLUGIN +#define __randomize_layout __attribute__((randomize_layout)) +#define __no_randomize_layout __attribute__((no_randomize_layout)) +#endif +  #endif /* GCC_VERSION >= 40500 */  #if GCC_VERSION >= 40600 @@ -294,6 +303,14 @@  #define __no_sanitize_address __attribute__((no_sanitize_address))  #endif +#if GCC_VERSION >= 50100 +/* + * Mark structures as requiring designated initializers. + * https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html + */ +#define __designated_init __attribute__((designated_init)) +#endif +  #endif	/* gcc version >= 40000 specific checks */  #if !defined(__noclone) |