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_HEXAGON 34 27 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 64 28 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE 143 29 30 #if defined(_LIBUNWIND_IS_NATIVE_ONLY) 31 # if defined(__linux__) 32 # define _LIBUNWIND_TARGET_LINUX 1 33 # endif 34 # if defined(__i386__) 35 # define _LIBUNWIND_TARGET_I386 36 # define _LIBUNWIND_CONTEXT_SIZE 8 37 # define _LIBUNWIND_CURSOR_SIZE 15 38 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 39 # elif defined(__x86_64__) 40 # define _LIBUNWIND_TARGET_X86_64 1 41 # if defined(_WIN64) 42 # define _LIBUNWIND_CONTEXT_SIZE 54 43 # ifdef __SEH__ 44 # define _LIBUNWIND_CURSOR_SIZE 204 45 # else 46 # define _LIBUNWIND_CURSOR_SIZE 66 47 # endif 48 # else 49 # define _LIBUNWIND_CONTEXT_SIZE 21 50 # define _LIBUNWIND_CURSOR_SIZE 33 51 # endif 52 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 53 # elif defined(__powerpc64__) 54 # define _LIBUNWIND_TARGET_PPC64 1 55 # define _LIBUNWIND_CONTEXT_SIZE 167 56 # define _LIBUNWIND_CURSOR_SIZE 179 57 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 58 # elif defined(__ppc__) 59 # define _LIBUNWIND_TARGET_PPC 1 60 # define _LIBUNWIND_CONTEXT_SIZE 117 61 # define _LIBUNWIND_CURSOR_SIZE 124 62 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 63 # elif defined(__aarch64__) 64 # define _LIBUNWIND_TARGET_AARCH64 1 65 # define _LIBUNWIND_CONTEXT_SIZE 66 66 # if defined(__SEH__) 67 # define _LIBUNWIND_CURSOR_SIZE 164 68 # else 69 # define _LIBUNWIND_CURSOR_SIZE 78 70 # endif 71 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 72 # elif defined(__arm__) 73 # define _LIBUNWIND_TARGET_ARM 1 74 # if defined(__SEH__) 75 # define _LIBUNWIND_CONTEXT_SIZE 42 76 # define _LIBUNWIND_CURSOR_SIZE 80 77 # elif defined(__ARM_WMMX) 78 # define _LIBUNWIND_CONTEXT_SIZE 61 79 # define _LIBUNWIND_CURSOR_SIZE 68 80 # else 81 # define _LIBUNWIND_CONTEXT_SIZE 42 82 # define _LIBUNWIND_CURSOR_SIZE 49 83 # endif 84 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 85 # elif defined(__or1k__) 86 # define _LIBUNWIND_TARGET_OR1K 1 87 # define _LIBUNWIND_CONTEXT_SIZE 16 88 # define _LIBUNWIND_CURSOR_SIZE 24 89 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 90 # elif defined(__hexagon__) 91 # define _LIBUNWIND_TARGET_HEXAGON 1 92 // Values here change when : Registers.hpp - hexagon_thread_state_t change 93 # define _LIBUNWIND_CONTEXT_SIZE 18 94 # define _LIBUNWIND_CURSOR_SIZE 24 95 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON 96 # elif defined(__mips__) 97 # if defined(_ABIO32) && _MIPS_SIM == _ABIO32 98 # define _LIBUNWIND_TARGET_MIPS_O32 1 99 # if defined(__mips_hard_float) 100 # define _LIBUNWIND_CONTEXT_SIZE 50 101 # define _LIBUNWIND_CURSOR_SIZE 57 102 # else 103 # define _LIBUNWIND_CONTEXT_SIZE 18 104 # define _LIBUNWIND_CURSOR_SIZE 24 105 # endif 106 # elif defined(_ABIN32) && _MIPS_SIM == _ABIN32 107 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 108 # if defined(__mips_hard_float) 109 # define _LIBUNWIND_CONTEXT_SIZE 67 110 # define _LIBUNWIND_CURSOR_SIZE 74 111 # else 112 # define _LIBUNWIND_CONTEXT_SIZE 35 113 # define _LIBUNWIND_CURSOR_SIZE 42 114 # endif 115 # elif defined(_ABI64) && _MIPS_SIM == _ABI64 116 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 117 # if defined(__mips_hard_float) 118 # define _LIBUNWIND_CONTEXT_SIZE 67 119 # define _LIBUNWIND_CURSOR_SIZE 79 120 # else 121 # define _LIBUNWIND_CONTEXT_SIZE 35 122 # define _LIBUNWIND_CURSOR_SIZE 47 123 # endif 124 # else 125 # error "Unsupported MIPS ABI and/or environment" 126 # endif 127 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 128 # elif defined(__sparc__) 129 #define _LIBUNWIND_TARGET_SPARC 1 130 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 131 #define _LIBUNWIND_CONTEXT_SIZE 16 132 #define _LIBUNWIND_CURSOR_SIZE 23 133 # elif defined(__riscv) 134 # if __riscv_xlen == 64 135 # define _LIBUNWIND_TARGET_RISCV 1 136 # define _LIBUNWIND_CONTEXT_SIZE 64 137 # define _LIBUNWIND_CURSOR_SIZE 76 138 # else 139 # error "Unsupported RISC-V ABI" 140 # endif 141 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 142 # elif defined(__ve__) 143 # define _LIBUNWIND_TARGET_VE 1 144 # define _LIBUNWIND_CONTEXT_SIZE 67 145 # define _LIBUNWIND_CURSOR_SIZE 79 146 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE 147 # else 148 # error "Unsupported architecture." 149 # endif 150 #else // !_LIBUNWIND_IS_NATIVE_ONLY 151 # define _LIBUNWIND_TARGET_I386 152 # define _LIBUNWIND_TARGET_X86_64 1 153 # define _LIBUNWIND_TARGET_PPC 1 154 # define _LIBUNWIND_TARGET_PPC64 1 155 # define _LIBUNWIND_TARGET_AARCH64 1 156 # define _LIBUNWIND_TARGET_ARM 1 157 # define _LIBUNWIND_TARGET_OR1K 1 158 # define _LIBUNWIND_TARGET_MIPS_O32 1 159 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 160 # define _LIBUNWIND_TARGET_SPARC 1 161 # define _LIBUNWIND_TARGET_HEXAGON 1 162 # define _LIBUNWIND_TARGET_RISCV 1 163 # define _LIBUNWIND_TARGET_VE 1 164 # define _LIBUNWIND_CONTEXT_SIZE 167 165 # define _LIBUNWIND_CURSOR_SIZE 179 166 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287 167 #endif // _LIBUNWIND_IS_NATIVE_ONLY 168 169 #endif // ____LIBUNWIND_CONFIG_H__ 170