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