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