]> git.proxmox.com Git - mirror_lxc.git/blob - src/lxc/compiler.h
Merge pull request #3235 from xinhua9569/master
[mirror_lxc.git] / src / lxc / compiler.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2
3 #ifndef __LXC_COMPILER_H
4 #define __LXC_COMPILER_H
5
6 #ifndef _GNU_SOURCE
7 #define _GNU_SOURCE 1
8 #endif
9
10 #include "config.h"
11
12 #ifndef thread_local
13 #if __STDC_VERSION__ >= 201112L && \
14 !(defined(__STDC_NO_THREADS__) || \
15 (defined(__GNU_LIBRARY__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 16))
16 #define thread_local _Thread_local
17 #else
18 #define thread_local __thread
19 #endif
20 #endif
21
22 #ifndef __fallthrough
23 #define __fallthrough /* fall through */
24 #endif
25
26 #ifndef __noreturn
27 # if __STDC_VERSION__ >= 201112L
28 # if !IS_BIONIC
29 # define __noreturn _Noreturn
30 # else
31 # define __noreturn __attribute__((__noreturn__))
32 # endif
33 # elif IS_BIONIC
34 # define __noreturn __attribute__((__noreturn__))
35 # else
36 # define __noreturn __attribute__((noreturn))
37 # endif
38 #endif
39
40 #ifndef __hot
41 # define __hot __attribute__((hot))
42 #endif
43
44 #ifndef __returns_twice
45 #define __returns_twice __attribute__((returns_twice))
46 #endif
47
48 /* This attribute is required to silence clang warnings */
49 #if defined(__GNUC__)
50 #define __lxc_unused __attribute__ ((unused))
51 #else
52 #define __lxc_unused
53 #endif
54
55 #define __cgfsng_ops
56
57 #endif /* __LXC_COMPILER_H */