master
  1//===----------------------------------------------------------------------===//
  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#define _LIBUNWIND_VERSION 15000
 13
 14#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
 15    !defined(__ARM_DWARF_EH__) && !defined(__SEH__)
 16#define _LIBUNWIND_ARM_EHABI
 17#endif
 18
 19#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86       8
 20#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64    32
 21#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC       112
 22#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64     116
 23#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64     95
 24#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM       287
 25#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K      32
 26#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS      65
 27#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC     31
 28#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC64   31
 29#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON   34
 30#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV     64
 31#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE        143
 32#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_S390X     83
 33#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH 64
 34
 35#if defined(_LIBUNWIND_IS_NATIVE_ONLY)
 36# if defined(__linux__)
 37#  define _LIBUNWIND_TARGET_LINUX 1
 38# endif
 39# if defined(__HAIKU__)
 40#  define _LIBUNWIND_TARGET_HAIKU 1
 41# endif
 42# if defined(__i386__)
 43#  define _LIBUNWIND_TARGET_I386
 44#  define _LIBUNWIND_CONTEXT_SIZE 8
 45#  define _LIBUNWIND_CURSOR_SIZE 15
 46#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
 47# elif defined(__x86_64__)
 48#  define _LIBUNWIND_TARGET_X86_64 1
 49#  if defined(_WIN64)
 50#    define _LIBUNWIND_CONTEXT_SIZE 54
 51#    ifdef __SEH__
 52#      define _LIBUNWIND_CURSOR_SIZE 204
 53#    else
 54#      define _LIBUNWIND_CURSOR_SIZE 66
 55#    endif
 56#  elif defined(__ILP32__)
 57#    define _LIBUNWIND_CONTEXT_SIZE 21
 58#    define _LIBUNWIND_CURSOR_SIZE 28
 59#  else
 60#    define _LIBUNWIND_CONTEXT_SIZE 21
 61#    define _LIBUNWIND_CURSOR_SIZE 33
 62#  endif
 63#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
 64# elif defined(__powerpc64__)
 65#  define _LIBUNWIND_TARGET_PPC64 1
 66#  define _LIBUNWIND_CONTEXT_SIZE 167
 67#  define _LIBUNWIND_CURSOR_SIZE 179
 68#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
 69# elif defined(__powerpc__)
 70#  define _LIBUNWIND_TARGET_PPC 1
 71#  define _LIBUNWIND_CONTEXT_SIZE 117
 72#  define _LIBUNWIND_CURSOR_SIZE 124
 73#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
 74# elif defined(__aarch64__)
 75#  define _LIBUNWIND_TARGET_AARCH64 1
 76#  define _LIBUNWIND_CONTEXT_SIZE 66
 77#  if defined(__SEH__)
 78#    define _LIBUNWIND_CURSOR_SIZE 164
 79#  else
 80#    define _LIBUNWIND_CURSOR_SIZE 78
 81#  endif
 82#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
 83# elif defined(__arm__)
 84#  define _LIBUNWIND_TARGET_ARM 1
 85#  if defined(__SEH__)
 86#    define _LIBUNWIND_CONTEXT_SIZE 42
 87#    define _LIBUNWIND_CURSOR_SIZE 80
 88#  elif defined(__ARM_WMMX)
 89#    define _LIBUNWIND_CONTEXT_SIZE 61
 90#    define _LIBUNWIND_CURSOR_SIZE 68
 91#  else
 92#    define _LIBUNWIND_CONTEXT_SIZE 42
 93#    define _LIBUNWIND_CURSOR_SIZE 49
 94#  endif
 95#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
 96# elif defined(__or1k__)
 97#  define _LIBUNWIND_TARGET_OR1K 1
 98#  define _LIBUNWIND_CONTEXT_SIZE 16
 99#  define _LIBUNWIND_CURSOR_SIZE 24
100#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
101# elif defined(__hexagon__)
102#  define _LIBUNWIND_TARGET_HEXAGON 1
103// Values here change when : Registers.hpp - hexagon_thread_state_t change
104#  define _LIBUNWIND_CONTEXT_SIZE 18
105#  define _LIBUNWIND_CURSOR_SIZE 24
106#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON
107# elif defined(__mips__)
108#  if defined(_ABIO32) && _MIPS_SIM == _ABIO32
109#    define _LIBUNWIND_TARGET_MIPS_O32 1
110#    if defined(__mips_hard_float)
111#      define _LIBUNWIND_CONTEXT_SIZE 50
112#      define _LIBUNWIND_CURSOR_SIZE 57
113#    else
114#      define _LIBUNWIND_CONTEXT_SIZE 18
115#      define _LIBUNWIND_CURSOR_SIZE 24
116#    endif
117#  elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
118#    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
119#    if defined(__mips_hard_float)
120#      define _LIBUNWIND_CONTEXT_SIZE 67
121#      define _LIBUNWIND_CURSOR_SIZE 74
122#    else
123#      define _LIBUNWIND_CONTEXT_SIZE 35
124#      define _LIBUNWIND_CURSOR_SIZE 42
125#    endif
126#  elif defined(_ABI64) && _MIPS_SIM == _ABI64
127#    define _LIBUNWIND_TARGET_MIPS_NEWABI 1
128#    if defined(__mips_hard_float)
129#      define _LIBUNWIND_CONTEXT_SIZE 67
130#      define _LIBUNWIND_CURSOR_SIZE 79
131#    else
132#      define _LIBUNWIND_CONTEXT_SIZE 35
133#      define _LIBUNWIND_CURSOR_SIZE 47
134#    endif
135#  else
136#    error "Unsupported MIPS ABI and/or environment"
137#  endif
138#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
139#elif defined(__sparc__) && defined(__arch64__)
140#define _LIBUNWIND_TARGET_SPARC64 1
141#define _LIBUNWIND_HIGHEST_DWARF_REGISTER                                      \
142  _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC64
143#define _LIBUNWIND_CONTEXT_SIZE 33
144#define _LIBUNWIND_CURSOR_SIZE 45
145# elif defined(__sparc__)
146  #define _LIBUNWIND_TARGET_SPARC 1
147  #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC
148  #define _LIBUNWIND_CONTEXT_SIZE 16
149  #define _LIBUNWIND_CURSOR_SIZE 23
150# elif defined(__riscv)
151#  define _LIBUNWIND_TARGET_RISCV 1
152#  if defined(__riscv_flen)
153#   define RISCV_FLEN __riscv_flen
154#  else
155#   define RISCV_FLEN 0
156#  endif
157#  define _LIBUNWIND_CONTEXT_SIZE (32 * (__riscv_xlen + RISCV_FLEN) / 64)
158#  if __riscv_xlen == 32
159#   define _LIBUNWIND_CURSOR_SIZE (_LIBUNWIND_CONTEXT_SIZE + 7)
160#  elif __riscv_xlen == 64
161#   define _LIBUNWIND_CURSOR_SIZE (_LIBUNWIND_CONTEXT_SIZE + 12)
162#  else
163#   error "Unsupported RISC-V ABI"
164#  endif
165# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV
166# elif defined(__ve__)
167#  define _LIBUNWIND_TARGET_VE 1
168#  define _LIBUNWIND_CONTEXT_SIZE 67
169#  define _LIBUNWIND_CURSOR_SIZE 79
170#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE
171# elif defined(__s390x__)
172#  define _LIBUNWIND_TARGET_S390X 1
173#  define _LIBUNWIND_CONTEXT_SIZE 34
174#  define _LIBUNWIND_CURSOR_SIZE 46
175#  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_S390X
176#elif defined(__loongarch__)
177#define _LIBUNWIND_TARGET_LOONGARCH 1
178#if __loongarch_grlen == 64
179#define _LIBUNWIND_CONTEXT_SIZE 65
180#define _LIBUNWIND_CURSOR_SIZE 77
181#else
182#error "Unsupported LoongArch ABI"
183#endif
184#define _LIBUNWIND_HIGHEST_DWARF_REGISTER                                      \
185  _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH
186#elif defined(__wasm__)
187// Unused
188#define _LIBUNWIND_CONTEXT_SIZE 0
189#define _LIBUNWIND_CURSOR_SIZE 0
190# else
191#  error "Unsupported architecture."
192# endif
193#else // !_LIBUNWIND_IS_NATIVE_ONLY
194# define _LIBUNWIND_TARGET_I386
195# define _LIBUNWIND_TARGET_X86_64 1
196# define _LIBUNWIND_TARGET_PPC 1
197# define _LIBUNWIND_TARGET_PPC64 1
198# define _LIBUNWIND_TARGET_AARCH64 1
199# define _LIBUNWIND_TARGET_ARM 1
200# define _LIBUNWIND_TARGET_OR1K 1
201# define _LIBUNWIND_TARGET_MIPS_O32 1
202# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
203# define _LIBUNWIND_TARGET_SPARC 1
204# define _LIBUNWIND_TARGET_SPARC64 1
205# define _LIBUNWIND_TARGET_HEXAGON 1
206# define _LIBUNWIND_TARGET_RISCV 1
207# define _LIBUNWIND_TARGET_VE 1
208# define _LIBUNWIND_TARGET_S390X 1
209# define _LIBUNWIND_TARGET_LOONGARCH 1
210# define _LIBUNWIND_CONTEXT_SIZE 167
211# define _LIBUNWIND_CURSOR_SIZE 204
212# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
213#endif // _LIBUNWIND_IS_NATIVE_ONLY
214
215#endif // ____LIBUNWIND_CONFIG_H__