Skip to content

Commit 56b4026

Browse files
twoernershr-project
authored andcommitted
fix build for gcc7
| In file included from .../include/linux/compiler.h:54:0, | from .../include/uapi/linux/stddef.h:1, | from .../include/linux/stddef.h:4, | from .../include/uapi/linux/posix_types.h:4, | from .../include/uapi/linux/types.h:13, | from .../include/linux/types.h:5, | from .../include/linux/mod_devicetable.h:11, | from .../scripts/mod/devicetable-offsets.c:2: | .../include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h: No such file or directory | #include gcc_header(__GNUC__) Signed-off-by: Trevor Woerner <[email protected]>
1 parent c300d47 commit 56b4026

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

include/linux/compiler-gcc7.h

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#ifndef __LINUX_COMPILER_H
2+
#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
3+
#endif
4+
5+
#define __used __attribute__((__used__))
6+
#define __must_check __attribute__((warn_unused_result))
7+
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
8+
9+
/* Mark functions as cold. gcc will assume any path leading to a call
10+
to them will be unlikely. This means a lot of manual unlikely()s
11+
are unnecessary now for any paths leading to the usual suspects
12+
like BUG(), printk(), panic() etc. [but let's keep them for now for
13+
older compilers]
14+
15+
Early snapshots of gcc 4.3 don't support this and we can't detect this
16+
in the preprocessor, but we can live with this because they're unreleased.
17+
Maketime probing would be overkill here.
18+
19+
gcc also has a __attribute__((__hot__)) to move hot functions into
20+
a special section, but I don't see any sense in this right now in
21+
the kernel context */
22+
#define __cold __attribute__((__cold__))
23+
24+
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
25+
26+
#ifndef __CHECKER__
27+
# define __compiletime_warning(message) __attribute__((warning(message)))
28+
# define __compiletime_error(message) __attribute__((error(message)))
29+
#endif /* __CHECKER__ */
30+
31+
/*
32+
* Mark a position in code as unreachable. This can be used to
33+
* suppress control flow warnings after asm blocks that transfer
34+
* control elsewhere.
35+
*
36+
* Early snapshots of gcc 4.5 don't support this and we can't detect
37+
* this in the preprocessor, but we can live with this because they're
38+
* unreleased. Really, we need to have autoconf for the kernel.
39+
*/
40+
#define unreachable() __builtin_unreachable()
41+
42+
/* Mark a function definition as prohibited from being cloned. */
43+
#define __noclone __attribute__((__noclone__))
44+
45+
/*
46+
* Tell the optimizer that something else uses this function or variable.
47+
*/
48+
#define __visible __attribute__((externally_visible))
49+
50+
/*
51+
* GCC 'asm goto' miscompiles certain code sequences:
52+
*
53+
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
54+
*
55+
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
56+
* Fixed in GCC 4.8.2 and later versions.
57+
*
58+
* (asm goto is automatically volatile - the naming reflects this.)
59+
*/
60+
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
61+
62+
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
63+
#define __HAVE_BUILTIN_BSWAP32__
64+
#define __HAVE_BUILTIN_BSWAP64__
65+
#define __HAVE_BUILTIN_BSWAP16__
66+
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */

0 commit comments

Comments
 (0)