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__ 216