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