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