~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/compiler-gcc.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/compiler-gcc.h (Version linux-6.12-rc7) and /include/linux/compiler-gcc.h (Version linux-4.13.16)


  1 /* SPDX-License-Identifier: GPL-2.0 */         !!   1 #ifndef __LINUX_COMPILER_H
  2 #ifndef __LINUX_COMPILER_TYPES_H               << 
  3 #error "Please don't include <linux/compiler-g      2 #error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
  4 #endif                                              3 #endif
  5                                                     4 
  6 /*                                                  5 /*
  7  * Common definitions for all gcc versions go       6  * Common definitions for all gcc versions go here.
  8  */                                                 7  */
  9 #define GCC_VERSION (__GNUC__ * 10000               8 #define GCC_VERSION (__GNUC__ * 10000           \
 10                      + __GNUC_MINOR__ * 100         9                      + __GNUC_MINOR__ * 100     \
 11                      + __GNUC_PATCHLEVEL__)        10                      + __GNUC_PATCHLEVEL__)
 12                                                    11 
                                                   >>  12 /* Optimization barrier */
                                                   >>  13 
                                                   >>  14 /* The "volatile" is due to gcc bugs */
                                                   >>  15 #define barrier() __asm__ __volatile__("": : :"memory")
                                                   >>  16 /*
                                                   >>  17  * This version is i.e. to prevent dead stores elimination on @ptr
                                                   >>  18  * where gcc and llvm may behave differently when otherwise using
                                                   >>  19  * normal barrier(): while gcc behavior gets along with a normal
                                                   >>  20  * barrier(), llvm needs an explicit input variable to be assumed
                                                   >>  21  * clobbered. The issue is as follows: while the inline asm might
                                                   >>  22  * access any memory it wants, the compiler could have fit all of
                                                   >>  23  * @ptr into memory registers instead, and since @ptr never escaped
                                                   >>  24  * from that, it proved that the inline asm wasn't touching any of
                                                   >>  25  * it. This version works well with both compilers, i.e. we're telling
                                                   >>  26  * the compiler that the inline asm absolutely may see the contents
                                                   >>  27  * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495
                                                   >>  28  */
                                                   >>  29 #define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory")
                                                   >>  30 
 13 /*                                                 31 /*
 14  * This macro obfuscates arithmetic on a varia     32  * This macro obfuscates arithmetic on a variable address so that gcc
 15  * shouldn't recognize the original var, and m     33  * shouldn't recognize the original var, and make assumptions about it.
 16  *                                                 34  *
 17  * This is needed because the C standard makes     35  * This is needed because the C standard makes it undefined to do
 18  * pointer arithmetic on "objects" outside the     36  * pointer arithmetic on "objects" outside their boundaries and the
 19  * gcc optimizers assume this is the case. In      37  * gcc optimizers assume this is the case. In particular they
 20  * assume such arithmetic does not wrap.           38  * assume such arithmetic does not wrap.
 21  *                                                 39  *
 22  * A miscompilation has been observed because      40  * A miscompilation has been observed because of this on PPC.
 23  * To work around it we hide the relationship      41  * To work around it we hide the relationship of the pointer and the object
 24  * using this macro.                               42  * using this macro.
 25  *                                                 43  *
 26  * Versions of the ppc64 compiler before 4.1 h     44  * Versions of the ppc64 compiler before 4.1 had a bug where use of
 27  * RELOC_HIDE could trash r30. The bug can be      45  * RELOC_HIDE could trash r30. The bug can be worked around by changing
 28  * the inline assembly constraint from =g to =     46  * the inline assembly constraint from =g to =r, in this particular
 29  * case either is valid.                           47  * case either is valid.
 30  */                                                48  */
 31 #define RELOC_HIDE(ptr, off)                       49 #define RELOC_HIDE(ptr, off)                                            \
 32 ({                                                 50 ({                                                                      \
 33         unsigned long __ptr;                       51         unsigned long __ptr;                                            \
 34         __asm__ ("" : "=r"(__ptr) : ""(ptr));      52         __asm__ ("" : "=r"(__ptr) : ""(ptr));                          \
 35         (typeof(ptr)) (__ptr + (off));             53         (typeof(ptr)) (__ptr + (off));                                  \
 36 })                                                 54 })
 37                                                    55 
 38 #ifdef CONFIG_MITIGATION_RETPOLINE             !!  56 /* Make the optimizer believe the variable can be manipulated arbitrarily. */
 39 #define __noretpoline __attribute__((__indirec !!  57 #define OPTIMIZER_HIDE_VAR(var)                                         \
                                                   >>  58         __asm__ ("" : "=r" (var) : "" (var))
                                                   >>  59 
                                                   >>  60 #ifdef __CHECKER__
                                                   >>  61 #define __must_be_array(a)      0
                                                   >>  62 #else
                                                   >>  63 /* &a[0] degrades to a pointer: a different type from an array */
                                                   >>  64 #define __must_be_array(a)      BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
 40 #endif                                             65 #endif
 41                                                    66 
 42 #if defined(LATENT_ENTROPY_PLUGIN) && !defined !!  67 /*
 43 #define __latent_entropy __attribute__((latent !!  68  * Force always-inline if the user requests it so via the .config,
                                                   >>  69  * or if gcc is too old.
                                                   >>  70  * GCC does not warn about unused static inline functions for
                                                   >>  71  * -Wunused-function.  This turns out to avoid the need for complex #ifdef
                                                   >>  72  * directives.  Suppress the warning in clang as well by using "unused"
                                                   >>  73  * function attribute, which is redundant but not harmful for gcc.
                                                   >>  74  */
                                                   >>  75 #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) ||                \
                                                   >>  76     !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
                                                   >>  77 #define inline inline           __attribute__((always_inline,unused)) notrace
                                                   >>  78 #define __inline__ __inline__   __attribute__((always_inline,unused)) notrace
                                                   >>  79 #define __inline __inline       __attribute__((always_inline,unused)) notrace
                                                   >>  80 #else
                                                   >>  81 /* A lot of inline functions can cause havoc with function tracing */
                                                   >>  82 #define inline inline           __attribute__((unused)) notrace
                                                   >>  83 #define __inline__ __inline__   __attribute__((unused)) notrace
                                                   >>  84 #define __inline __inline       __attribute__((unused)) notrace
 44 #endif                                             85 #endif
 45                                                    86 
                                                   >>  87 #define __always_inline inline __attribute__((always_inline))
                                                   >>  88 #define  noinline       __attribute__((noinline))
                                                   >>  89 
                                                   >>  90 #define __deprecated    __attribute__((deprecated))
                                                   >>  91 #define __packed        __attribute__((packed))
                                                   >>  92 #define __weak          __attribute__((weak))
                                                   >>  93 #define __alias(symbol) __attribute__((alias(#symbol)))
                                                   >>  94 
 46 /*                                                 95 /*
 47  * calling noreturn functions, __builtin_unrea !!  96  * it doesn't make sense on ARM (currently the only user of __naked)
 48  * confuse the stack allocation in gcc, leadin !!  97  * to trace naked functions because then mcount is called without
 49  * frames, see https://gcc.gnu.org/bugzilla/sh !!  98  * stack and frame pointer being set up and there is no chance to
                                                   >>  99  * restore the lr register to the value before mcount was called.
 50  *                                                100  *
 51  * Adding an empty inline assembly before it w !! 101  * The asm() bodies of naked functions often depend on standard calling
                                                   >> 102  * conventions, therefore they must be noinline and noclone.
                                                   >> 103  *
                                                   >> 104  * GCC 4.[56] currently fail to enforce this, so we must do so ourselves.
                                                   >> 105  * See GCC PR44290.
 52  */                                               106  */
 53 #define barrier_before_unreachable() asm volat !! 107 #define __naked         __attribute__((naked)) noinline __noclone notrace
                                                   >> 108 
                                                   >> 109 #define __noreturn      __attribute__((noreturn))
 54                                                   110 
 55 /*                                                111 /*
 56  * Mark a position in code as unreachable.  Th !! 112  * From the GCC manual:
 57  * suppress control flow warnings after asm bl !! 113  *
 58  * control elsewhere.                          !! 114  * Many functions have no effects except the return value and their
                                                   >> 115  * return value depends only on the parameters and/or global
                                                   >> 116  * variables.  Such a function can be subject to common subexpression
                                                   >> 117  * elimination and loop optimization just as an arithmetic operator
                                                   >> 118  * would be.
                                                   >> 119  * [...]
 59  */                                               120  */
 60 #define unreachable() \                        !! 121 #define __pure                  __attribute__((pure))
 61         do {                                   !! 122 #define __aligned(x)            __attribute__((aligned(x)))
 62                 annotate_unreachable();        !! 123 #define __aligned_largest       __attribute__((aligned))
 63                 barrier_before_unreachable();  !! 124 #define __printf(a, b)          __attribute__((format(printf, a, b)))
 64                 __builtin_unreachable();       !! 125 #define __scanf(a, b)           __attribute__((format(scanf, a, b)))
 65         } while (0)                            !! 126 #define __attribute_const__     __attribute__((__const__))
                                                   >> 127 #define __maybe_unused          __attribute__((unused))
                                                   >> 128 #define __always_unused         __attribute__((unused))
                                                   >> 129 #define __mode(x)               __attribute__((mode(x)))
 66                                                   130 
 67 #if defined(CONFIG_ARCH_USE_BUILTIN_BSWAP)     !! 131 /* gcc version specific checks */
 68 #define __HAVE_BUILTIN_BSWAP32__               << 
 69 #define __HAVE_BUILTIN_BSWAP64__               << 
 70 #define __HAVE_BUILTIN_BSWAP16__               << 
 71 #endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */     << 
 72                                                   132 
 73 #if GCC_VERSION >= 70000                       !! 133 #if GCC_VERSION < 30200
 74 #define KASAN_ABI_VERSION 5                    !! 134 # error Sorry, your compiler is too old - please upgrade it.
 75 #else                                          << 
 76 #define KASAN_ABI_VERSION 4                    << 
 77 #endif                                            135 #endif
 78                                                   136 
 79 #ifdef CONFIG_SHADOW_CALL_STACK                !! 137 #if GCC_VERSION < 30300
 80 #define __noscs __attribute__((__no_sanitize__ !! 138 # define __used                 __attribute__((__unused__))
                                                   >> 139 #else
                                                   >> 140 # define __used                 __attribute__((__used__))
 81 #endif                                            141 #endif
 82                                                   142 
 83 #ifdef __SANITIZE_HWADDRESS__                  !! 143 #ifdef CONFIG_GCOV_KERNEL
 84 #define __no_sanitize_address __attribute__((_ !! 144 # if GCC_VERSION < 30400
 85 #else                                          !! 145 #   error "GCOV profiling support for gcc versions below 3.4 not included"
 86 #define __no_sanitize_address __attribute__((_ !! 146 # endif /* __GNUC_MINOR__ */
                                                   >> 147 #endif /* CONFIG_GCOV_KERNEL */
                                                   >> 148 
                                                   >> 149 #if GCC_VERSION >= 30400
                                                   >> 150 #define __must_check            __attribute__((warn_unused_result))
                                                   >> 151 #define __malloc                __attribute__((__malloc__))
 87 #endif                                            152 #endif
 88                                                   153 
 89 #if defined(__SANITIZE_THREAD__)               !! 154 #if GCC_VERSION >= 40000
 90 #define __no_sanitize_thread __attribute__((__ !! 155 
 91 #else                                          !! 156 /* GCC 4.1.[01] miscompiles __weak */
 92 #define __no_sanitize_thread                   !! 157 #ifdef __KERNEL__
                                                   >> 158 # if GCC_VERSION >= 40100 &&  GCC_VERSION <= 40101
                                                   >> 159 #  error Your version of gcc miscompiles the __weak directive
                                                   >> 160 # endif
 93 #endif                                            161 #endif
 94                                                   162 
 95 #define __no_sanitize_undefined __attribute__( !! 163 #define __used                  __attribute__((__used__))
                                                   >> 164 #define __compiler_offsetof(a, b)                                       \
                                                   >> 165         __builtin_offsetof(a, b)
 96                                                   166 
 97 /*                                             !! 167 #if GCC_VERSION >= 40100
 98  * Only supported since gcc >= 12              !! 168 # define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
                                                   >> 169 #endif
                                                   >> 170 
                                                   >> 171 #if GCC_VERSION >= 40300
                                                   >> 172 /* Mark functions as cold. gcc will assume any path leading to a call
                                                   >> 173  * to them will be unlikely.  This means a lot of manual unlikely()s
                                                   >> 174  * are unnecessary now for any paths leading to the usual suspects
                                                   >> 175  * like BUG(), printk(), panic() etc. [but let's keep them for now for
                                                   >> 176  * older compilers]
                                                   >> 177  *
                                                   >> 178  * Early snapshots of gcc 4.3 don't support this and we can't detect this
                                                   >> 179  * in the preprocessor, but we can live with this because they're unreleased.
                                                   >> 180  * Maketime probing would be overkill here.
                                                   >> 181  *
                                                   >> 182  * gcc also has a __attribute__((__hot__)) to move hot functions into
                                                   >> 183  * a special section, but I don't see any sense in this right now in
                                                   >> 184  * the kernel context
 99  */                                               185  */
100 #if defined(CONFIG_KCOV) && __has_attribute(__ !! 186 #define __cold                  __attribute__((__cold__))
101 #define __no_sanitize_coverage __attribute__(( !! 187 
                                                   >> 188 #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
                                                   >> 189 
                                                   >> 190 #ifndef __CHECKER__
                                                   >> 191 # define __compiletime_warning(message) __attribute__((warning(message)))
                                                   >> 192 # define __compiletime_error(message) __attribute__((error(message)))
                                                   >> 193 #endif /* __CHECKER__ */
                                                   >> 194 #endif /* GCC_VERSION >= 40300 */
                                                   >> 195 
                                                   >> 196 #if GCC_VERSION >= 40500
                                                   >> 197 
                                                   >> 198 #ifndef __CHECKER__
                                                   >> 199 #ifdef LATENT_ENTROPY_PLUGIN
                                                   >> 200 #define __latent_entropy __attribute__((latent_entropy))
                                                   >> 201 #endif
                                                   >> 202 #endif
                                                   >> 203 
                                                   >> 204 #ifdef CONFIG_STACK_VALIDATION
                                                   >> 205 #define annotate_unreachable() ({                                       \
                                                   >> 206         asm("%c0:\t\n"                                                  \
                                                   >> 207             ".pushsection .discard.unreachable\t\n"                     \
                                                   >> 208             ".long %c0b - .\t\n"                                        \
                                                   >> 209             ".popsection\t\n" : : "i" (__LINE__));                      \
                                                   >> 210 })
102 #else                                             211 #else
103 #define __no_sanitize_coverage                 !! 212 #define annotate_unreachable()
104 #endif                                            213 #endif
105                                                   214 
106 /*                                                215 /*
107  * Treat __SANITIZE_HWADDRESS__ the same as __ !! 216  * Mark a position in code as unreachable.  This can be used to
108  * matching the defines used by Clang.         !! 217  * suppress control flow warnings after asm blocks that transfer
                                                   >> 218  * control elsewhere.
                                                   >> 219  *
                                                   >> 220  * Early snapshots of gcc 4.5 don't support this and we can't detect
                                                   >> 221  * this in the preprocessor, but we can live with this because they're
                                                   >> 222  * unreleased.  Really, we need to have autoconf for the kernel.
109  */                                               223  */
110 #ifdef __SANITIZE_HWADDRESS__                  !! 224 #define unreachable() \
111 #define __SANITIZE_ADDRESS__                   !! 225         do { annotate_unreachable(); __builtin_unreachable(); } while (0)
                                                   >> 226 
                                                   >> 227 /* Mark a function definition as prohibited from being cloned. */
                                                   >> 228 #define __noclone       __attribute__((__noclone__, __optimize__("no-tracer")))
                                                   >> 229 
                                                   >> 230 #ifdef RANDSTRUCT_PLUGIN
                                                   >> 231 #define __randomize_layout __attribute__((randomize_layout))
                                                   >> 232 #define __no_randomize_layout __attribute__((no_randomize_layout))
112 #endif                                            233 #endif
113                                                   234 
                                                   >> 235 #endif /* GCC_VERSION >= 40500 */
                                                   >> 236 
                                                   >> 237 #if GCC_VERSION >= 40600
                                                   >> 238 
114 /*                                                239 /*
115  * GCC does not support KMSAN.                 !! 240  * When used with Link Time Optimization, gcc can optimize away C functions or
                                                   >> 241  * variables which are referenced only from assembly code.  __visible tells the
                                                   >> 242  * optimizer that something else uses this function or variable, thus preventing
                                                   >> 243  * this.
116  */                                               244  */
117 #define __no_sanitize_memory                   !! 245 #define __visible       __attribute__((externally_visible))
118 #define __no_kmsan_checks                      << 
119                                                   246 
120 /*                                                247 /*
121  * Turn individual warnings and errors on and  !! 248  * RANDSTRUCT_PLUGIN wants to use an anonymous struct, but it is only
122  * on version.                                 !! 249  * possible since GCC 4.6. To provide as much build testing coverage
                                                   >> 250  * as possible, this is used for all GCC 4.6+ builds, and not just on
                                                   >> 251  * RANDSTRUCT_PLUGIN builds.
123  */                                               252  */
124 #define __diag_GCC(version, severity, s) \     !! 253 #define randomized_struct_fields_start  struct {
125         __diag_GCC_ ## version(__diag_GCC_ ##  !! 254 #define randomized_struct_fields_end    } __randomize_layout;
126                                                   255 
127 /* Severity used in pragma directives */       !! 256 #endif /* GCC_VERSION >= 40600 */
128 #define __diag_GCC_ignore       ignored        << 
129 #define __diag_GCC_warn         warning        << 
130 #define __diag_GCC_error        error          << 
131                                                   257 
132 #define __diag_str1(s)          #s             << 
133 #define __diag_str(s)           __diag_str1(s) << 
134 #define __diag(s)               _Pragma(__diag << 
135                                                   258 
136 #if GCC_VERSION >= 80000                       !! 259 #if GCC_VERSION >= 40900 && !defined(__CHECKER__)
137 #define __diag_GCC_8(s)         __diag(s)      !! 260 /*
138 #else                                          !! 261  * __assume_aligned(n, k): Tell the optimizer that the returned
139 #define __diag_GCC_8(s)                        !! 262  * pointer can be assumed to be k modulo n. The second argument is
                                                   >> 263  * optional (default 0), so we use a variadic macro to make the
                                                   >> 264  * shorthand.
                                                   >> 265  *
                                                   >> 266  * Beware: Do not apply this to functions which may return
                                                   >> 267  * ERR_PTRs. Also, it is probably unwise to apply it to functions
                                                   >> 268  * returning extra information in the low bits (but in that case the
                                                   >> 269  * compiler should see some alignment anyway, when the return value is
                                                   >> 270  * massaged by 'flags = ptr & 3; ptr &= ~3;').
                                                   >> 271  */
                                                   >> 272 #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
140 #endif                                            273 #endif
141                                                   274 
142 #define __diag_ignore_all(option, comment) \   !! 275 /*
143         __diag(__diag_GCC_ignore option)       !! 276  * GCC 'asm goto' miscompiles certain code sequences:
                                                   >> 277  *
                                                   >> 278  *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
                                                   >> 279  *
                                                   >> 280  * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
                                                   >> 281  *
                                                   >> 282  * (asm goto is automatically volatile - the naming reflects this.)
                                                   >> 283  */
                                                   >> 284 #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
144                                                   285 
145 /*                                                286 /*
146  * Prior to 9.1, -Wno-alloc-size-larger-than ( !! 287  * sparse (__CHECKER__) pretends to be gcc, but can't do constant
147  * attribute) do not work, and must be disable !! 288  * folding in __builtin_bswap*() (yet), so don't set these for it.
148  */                                               289  */
149 #if GCC_VERSION < 90100                        !! 290 #if defined(CONFIG_ARCH_USE_BUILTIN_BSWAP) && !defined(__CHECKER__)
150 #undef __alloc_size__                          !! 291 #if GCC_VERSION >= 40400
                                                   >> 292 #define __HAVE_BUILTIN_BSWAP32__
                                                   >> 293 #define __HAVE_BUILTIN_BSWAP64__
                                                   >> 294 #endif
                                                   >> 295 #if GCC_VERSION >= 40800
                                                   >> 296 #define __HAVE_BUILTIN_BSWAP16__
151 #endif                                            297 #endif
                                                   >> 298 #endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP && !__CHECKER__ */
                                                   >> 299 
                                                   >> 300 #if GCC_VERSION >= 70000
                                                   >> 301 #define KASAN_ABI_VERSION 5
                                                   >> 302 #elif GCC_VERSION >= 50000
                                                   >> 303 #define KASAN_ABI_VERSION 4
                                                   >> 304 #elif GCC_VERSION >= 40902
                                                   >> 305 #define KASAN_ABI_VERSION 3
                                                   >> 306 #endif
                                                   >> 307 
                                                   >> 308 #if GCC_VERSION >= 40902
                                                   >> 309 /*
                                                   >> 310  * Tell the compiler that address safety instrumentation (KASAN)
                                                   >> 311  * should not be applied to that function.
                                                   >> 312  * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
                                                   >> 313  */
                                                   >> 314 #define __no_sanitize_address __attribute__((no_sanitize_address))
                                                   >> 315 #endif
                                                   >> 316 
                                                   >> 317 #if GCC_VERSION >= 50100
                                                   >> 318 /*
                                                   >> 319  * Mark structures as requiring designated initializers.
                                                   >> 320  * https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
                                                   >> 321  */
                                                   >> 322 #define __designated_init __attribute__((designated_init))
                                                   >> 323 #endif
                                                   >> 324 
                                                   >> 325 #endif  /* gcc version >= 40000 specific checks */
                                                   >> 326 
                                                   >> 327 #if !defined(__noclone)
                                                   >> 328 #define __noclone       /* not needed */
                                                   >> 329 #endif
                                                   >> 330 
                                                   >> 331 #if !defined(__no_sanitize_address)
                                                   >> 332 #define __no_sanitize_address
                                                   >> 333 #endif
                                                   >> 334 
                                                   >> 335 /*
                                                   >> 336  * A trick to suppress uninitialized variable warning without generating any
                                                   >> 337  * code
                                                   >> 338  */
                                                   >> 339 #define uninitialized_var(x) x = x
152                                                   340 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php