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_RISCV     95
26 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS      65
27 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC     31
28 
29 #if defined(_LIBUNWIND_IS_NATIVE_ONLY)
30 # if defined(__i386__)
31 #  define _LIBUNWIND_TARGET_I386
32 #  define _LIBUNWIND_CONTEXT_SIZE 8
33 #  define _LIBUNWIND_CURSOR_SIZE 15
34 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
35 # elif defined(__x86_64__)
36 #  define _LIBUNWIND_TARGET_X86_64 1
37 #  if defined(_WIN64)
38 #    define _LIBUNWIND_CONTEXT_SIZE 54
39 #    ifdef __SEH__
40 #      define _LIBUNWIND_CURSOR_SIZE 204
41 #    else
42 #      define _LIBUNWIND_CURSOR_SIZE 66
43 #    endif
44 #  else
45 #    define _LIBUNWIND_CONTEXT_SIZE 21
46 #    define _LIBUNWIND_CURSOR_SIZE 33
47 #  endif
48 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
49 # elif defined(__powerpc64__)
50 #  define _LIBUNWIND_TARGET_PPC64 1
51 #  define _LIBUNWIND_CONTEXT_SIZE 167
52 #  define _LIBUNWIND_CURSOR_SIZE 179
53 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
54 # elif defined(__ppc__)
55 #  define _LIBUNWIND_TARGET_PPC 1
56 #  define _LIBUNWIND_CONTEXT_SIZE 117
57 #  define _LIBUNWIND_CURSOR_SIZE 124
58 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
59 # elif defined(__aarch64__)
60 #  define _LIBUNWIND_TARGET_AARCH64 1
61 #  define _LIBUNWIND_CONTEXT_SIZE 66
62 #  if defined(__SEH__)
63 #    define _LIBUNWIND_CURSOR_SIZE 164
64 #  else
65 #    define _LIBUNWIND_CURSOR_SIZE 78
66 #  endif
67 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
68 # elif defined(__arm__)
69 #  define _LIBUNWIND_TARGET_ARM 1
70 #  if defined(__SEH__)
71 #    define _LIBUNWIND_CONTEXT_SIZE 42
72 #    define _LIBUNWIND_CURSOR_SIZE 80
73 #  elif defined(__ARM_WMMX)
74 #    define _LIBUNWIND_CONTEXT_SIZE 61
75 #    define _LIBUNWIND_CURSOR_SIZE 68
76 #  else
77 #    define _LIBUNWIND_CONTEXT_SIZE 42
78 #    define _LIBUNWIND_CURSOR_SIZE 49
79 #  endif
80 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
81 # elif defined(__or1k__)
82 #  define _LIBUNWIND_TARGET_OR1K 1
83 #  define _LIBUNWIND_CONTEXT_SIZE 16
84 #  define _LIBUNWIND_CURSOR_SIZE 24
85 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
86 # elif defined(__riscv)
87 #  define _LIBUNWIND_TARGET_RISCV 1
88 #  define _LIBUNWIND_CONTEXT_SIZE 64
89 #  define _LIBUNWIND_CURSOR_SIZE 76
90 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV
91 #  define _LIBUNWIND_MAX_REGISTER 96
92 # elif defined(__mips__)
93 #  if defined(_ABIO32) && _MIPS_SIM == _ABIO32
94 #    define _LIBUNWIND_TARGET_MIPS_O32 1
95 #    if defined(__mips_hard_float)
96 #      define _LIBUNWIND_CONTEXT_SIZE 50
97 #      define _LIBUNWIND_CURSOR_SIZE 57
98 #    else
99 #      define _LIBUNWIND_CONTEXT_SIZE 18
100 #      define _LIBUNWIND_CURSOR_SIZE 24
101 #    endif
102 #  elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
103 #    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
104 #    if defined(__mips_hard_float)
105 #      define _LIBUNWIND_CONTEXT_SIZE 67
106 #      define _LIBUNWIND_CURSOR_SIZE 74
107 #    else
108 #      define _LIBUNWIND_CONTEXT_SIZE 35
109 #      define _LIBUNWIND_CURSOR_SIZE 42
110 #    endif
111 #  elif defined(_ABI64) && _MIPS_SIM == _ABI64
112 #    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
113 #    if defined(__mips_hard_float)
114 #      define _LIBUNWIND_CONTEXT_SIZE 67
115 #      define _LIBUNWIND_CURSOR_SIZE 79
116 #    else
117 #      define _LIBUNWIND_CONTEXT_SIZE 35
118 #      define _LIBUNWIND_CURSOR_SIZE 47
119 #    endif
120 #  else
121 #    error "Unsupported MIPS ABI and/or environment"
122 #  endif
123 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
124 # elif defined(__sparc__)
125   #define _LIBUNWIND_TARGET_SPARC 1
126   #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC
127   #define _LIBUNWIND_CONTEXT_SIZE 16
128   #define _LIBUNWIND_CURSOR_SIZE 23
129 # else
130 #  error "Unsupported architecture."
131 # endif
132 #else // !_LIBUNWIND_IS_NATIVE_ONLY
133 # define _LIBUNWIND_TARGET_I386
134 # define _LIBUNWIND_TARGET_X86_64 1
135 # define _LIBUNWIND_TARGET_PPC 1
136 # define _LIBUNWIND_TARGET_PPC64 1
137 # define _LIBUNWIND_TARGET_AARCH64 1
138 # define _LIBUNWIND_TARGET_ARM 1
139 # define _LIBUNWIND_TARGET_OR1K 1
140 # define _LIBUNWIND_TARGET_MIPS_O32 1
141 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1
142 # define _LIBUNWIND_TARGET_SPARC 1
143 # define _LIBUNWIND_CONTEXT_SIZE 167
144 # define _LIBUNWIND_CURSOR_SIZE 179
145 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
146 #endif // _LIBUNWIND_IS_NATIVE_ONLY
147 
148 #endif // ____LIBUNWIND_CONFIG_H__
149