1 //===------------------------- __libunwind_config.h -----------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef ____LIBUNWIND_CONFIG_H__
11 #define ____LIBUNWIND_CONFIG_H__
12 
13 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
14     !defined(__ARM_DWARF_EH__)
15 #define _LIBUNWIND_ARM_EHABI
16 #endif
17 
18 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86       8
19 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64    32
20 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC       112
21 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64     116
22 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64     95
23 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM       287
24 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K      32
25 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS      65
26 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC     31
27 
28 #if defined(_LIBUNWIND_IS_NATIVE_ONLY)
29 # if defined(__i386__)
30 #  define _LIBUNWIND_TARGET_I386
31 #  define _LIBUNWIND_CONTEXT_SIZE 8
32 #  define _LIBUNWIND_CURSOR_SIZE 15
33 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
34 # elif defined(__x86_64__)
35 #  define _LIBUNWIND_TARGET_X86_64 1
36 #  if defined(_WIN64)
37 #    define _LIBUNWIND_CONTEXT_SIZE 54
38 #    ifdef __SEH__
39 #      define _LIBUNWIND_CURSOR_SIZE 204
40 #    else
41 #      define _LIBUNWIND_CURSOR_SIZE 66
42 #    endif
43 #  else
44 #    define _LIBUNWIND_CONTEXT_SIZE 21
45 #    define _LIBUNWIND_CURSOR_SIZE 33
46 #  endif
47 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
48 # elif defined(__powerpc64__)
49 #  define _LIBUNWIND_TARGET_PPC64 1
50 #  define _LIBUNWIND_CONTEXT_SIZE 167
51 #  define _LIBUNWIND_CURSOR_SIZE 179
52 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
53 # elif defined(__ppc__)
54 #  define _LIBUNWIND_TARGET_PPC 1
55 #  define _LIBUNWIND_CONTEXT_SIZE 117
56 #  define _LIBUNWIND_CURSOR_SIZE 124
57 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
58 # elif defined(__aarch64__)
59 #  define _LIBUNWIND_TARGET_AARCH64 1
60 #  define _LIBUNWIND_CONTEXT_SIZE 66
61 #  if defined(__SEH__)
62 #    define _LIBUNWIND_CURSOR_SIZE 164
63 #  else
64 #    define _LIBUNWIND_CURSOR_SIZE 78
65 #  endif
66 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
67 # elif defined(__arm__)
68 #  define _LIBUNWIND_TARGET_ARM 1
69 #  if defined(__SEH__)
70 #    define _LIBUNWIND_CONTEXT_SIZE 42
71 #    define _LIBUNWIND_CURSOR_SIZE 80
72 #  elif defined(__ARM_WMMX)
73 #    define _LIBUNWIND_CONTEXT_SIZE 61
74 #    define _LIBUNWIND_CURSOR_SIZE 68
75 #  else
76 #    define _LIBUNWIND_CONTEXT_SIZE 42
77 #    define _LIBUNWIND_CURSOR_SIZE 49
78 #  endif
79 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
80 # elif defined(__or1k__)
81 #  define _LIBUNWIND_TARGET_OR1K 1
82 #  define _LIBUNWIND_CONTEXT_SIZE 16
83 #  define _LIBUNWIND_CURSOR_SIZE 24
84 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
85 # elif defined(__mips__)
86 #  if defined(_ABIO32) && _MIPS_SIM == _ABIO32
87 #    define _LIBUNWIND_TARGET_MIPS_O32 1
88 #    if defined(__mips_hard_float)
89 #      define _LIBUNWIND_CONTEXT_SIZE 50
90 #      define _LIBUNWIND_CURSOR_SIZE 57
91 #    else
92 #      define _LIBUNWIND_CONTEXT_SIZE 18
93 #      define _LIBUNWIND_CURSOR_SIZE 24
94 #    endif
95 #  elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
96 #    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
97 #    if defined(__mips_hard_float)
98 #      define _LIBUNWIND_CONTEXT_SIZE 67
99 #      define _LIBUNWIND_CURSOR_SIZE 74
100 #    else
101 #      define _LIBUNWIND_CONTEXT_SIZE 35
102 #      define _LIBUNWIND_CURSOR_SIZE 42
103 #    endif
104 #  elif defined(_ABI64) && _MIPS_SIM == _ABI64
105 #    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
106 #    if defined(__mips_hard_float)
107 #      define _LIBUNWIND_CONTEXT_SIZE 67
108 #      define _LIBUNWIND_CURSOR_SIZE 79
109 #    else
110 #      define _LIBUNWIND_CONTEXT_SIZE 35
111 #      define _LIBUNWIND_CURSOR_SIZE 47
112 #    endif
113 #  else
114 #    error "Unsupported MIPS ABI and/or environment"
115 #  endif
116 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
117 # elif defined(__sparc__)
118   #define _LIBUNWIND_TARGET_SPARC 1
119   #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC
120   #define _LIBUNWIND_CONTEXT_SIZE 16
121   #define _LIBUNWIND_CURSOR_SIZE 23
122 # else
123 #  error "Unsupported architecture."
124 # endif
125 #else // !_LIBUNWIND_IS_NATIVE_ONLY
126 # define _LIBUNWIND_TARGET_I386
127 # define _LIBUNWIND_TARGET_X86_64 1
128 # define _LIBUNWIND_TARGET_PPC 1
129 # define _LIBUNWIND_TARGET_PPC64 1
130 # define _LIBUNWIND_TARGET_AARCH64 1
131 # define _LIBUNWIND_TARGET_ARM 1
132 # define _LIBUNWIND_TARGET_OR1K 1
133 # define _LIBUNWIND_TARGET_MIPS_O32 1
134 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1
135 # define _LIBUNWIND_TARGET_SPARC 1
136 # define _LIBUNWIND_CONTEXT_SIZE 167
137 # define _LIBUNWIND_CURSOR_SIZE 179
138 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
139 #endif // _LIBUNWIND_IS_NATIVE_ONLY
140 
141 #endif // ____LIBUNWIND_CONFIG_H__
142