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