__libunwind_config.h revision 360784
1//===------------------------- __libunwind_config.h -----------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef ____LIBUNWIND_CONFIG_H__
10#define ____LIBUNWIND_CONFIG_H__
11
12#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
13    !defined(__ARM_DWARF_EH__)
14#define _LIBUNWIND_ARM_EHABI
15#endif
16
17#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86       8
18#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64    32
19#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC       112
20#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64     116
21#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64     95
22#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM       287
23#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K      32
24#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS      65
25#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC     31
26#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV     64
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# elif defined(__riscv)
123#  if __riscv_xlen == 64
124#    define _LIBUNWIND_TARGET_RISCV 1
125#    define _LIBUNWIND_CONTEXT_SIZE 64
126#    define _LIBUNWIND_CURSOR_SIZE 76
127#  else
128#    error "Unsupported RISC-V ABI"
129#  endif
130# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV
131# else
132#  error "Unsupported architecture."
133# endif
134#else // !_LIBUNWIND_IS_NATIVE_ONLY
135# define _LIBUNWIND_TARGET_I386
136# define _LIBUNWIND_TARGET_X86_64 1
137# define _LIBUNWIND_TARGET_PPC 1
138# define _LIBUNWIND_TARGET_PPC64 1
139# define _LIBUNWIND_TARGET_AARCH64 1
140# define _LIBUNWIND_TARGET_ARM 1
141# define _LIBUNWIND_TARGET_OR1K 1
142# define _LIBUNWIND_TARGET_MIPS_O32 1
143# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
144# define _LIBUNWIND_TARGET_SPARC 1
145# define _LIBUNWIND_TARGET_RISCV 1
146# define _LIBUNWIND_CONTEXT_SIZE 167
147# define _LIBUNWIND_CURSOR_SIZE 179
148# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
149#endif // _LIBUNWIND_IS_NATIVE_ONLY
150
151#endif // ____LIBUNWIND_CONFIG_H__
152