225 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef ____LIBUNWIND_CONFIG_H__10#define ____LIBUNWIND_CONFIG_H__11 12#define _LIBUNWIND_VERSION 1500013 14#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \15 !defined(__ARM_DWARF_EH__) && !defined(__SEH__)16#define _LIBUNWIND_ARM_EHABI17#endif18 19#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 820#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 3221#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 11222#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 11623#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 9524#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 28725#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 3226#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 6527#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 3128#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC64 3129#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON 3430#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 6431#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE 14332#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_S390X 8333#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH 6434 35#if defined(_LIBUNWIND_IS_NATIVE_ONLY)36# if defined(__linux__)37# define _LIBUNWIND_TARGET_LINUX 138# endif39# if defined(__HAIKU__)40# define _LIBUNWIND_TARGET_HAIKU 141# endif42# if defined(__i386__)43# define _LIBUNWIND_TARGET_I38644# define _LIBUNWIND_CONTEXT_SIZE 845# define _LIBUNWIND_CURSOR_SIZE 1546# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X8647# elif defined(__x86_64__)48# define _LIBUNWIND_TARGET_X86_64 149# if defined(_WIN64)50# define _LIBUNWIND_CONTEXT_SIZE 5451# ifdef __SEH__52# define _LIBUNWIND_CURSOR_SIZE 20453# else54# define _LIBUNWIND_CURSOR_SIZE 6655# endif56# elif defined(__ILP32__)57# define _LIBUNWIND_CONTEXT_SIZE 2158# define _LIBUNWIND_CURSOR_SIZE 2859# else60# define _LIBUNWIND_CONTEXT_SIZE 2161# define _LIBUNWIND_CURSOR_SIZE 3362# endif63# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_6464# elif defined(__powerpc64__)65# define _LIBUNWIND_TARGET_PPC64 166# define _LIBUNWIND_CONTEXT_SIZE 16767# define _LIBUNWIND_CURSOR_SIZE 17968# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC6469# elif defined(__powerpc__)70# define _LIBUNWIND_TARGET_PPC 171# define _LIBUNWIND_CONTEXT_SIZE 11772# define _LIBUNWIND_CURSOR_SIZE 12473# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC74# elif defined(__aarch64__)75# define _LIBUNWIND_TARGET_AARCH64 176#define _LIBUNWIND_CONTEXT_SIZE 6777# if defined(__SEH__)78# define _LIBUNWIND_CURSOR_SIZE 16479# else80#define _LIBUNWIND_CURSOR_SIZE 7981# endif82# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM6483# elif defined(__arm__)84# define _LIBUNWIND_TARGET_ARM 185# if defined(__SEH__)86# define _LIBUNWIND_CONTEXT_SIZE 4287# define _LIBUNWIND_CURSOR_SIZE 8088# elif defined(__ARM_WMMX)89# define _LIBUNWIND_CONTEXT_SIZE 6190# define _LIBUNWIND_CURSOR_SIZE 6891# else92# define _LIBUNWIND_CONTEXT_SIZE 4293# define _LIBUNWIND_CURSOR_SIZE 4994# endif95# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM96# elif defined(__or1k__)97# define _LIBUNWIND_TARGET_OR1K 198# define _LIBUNWIND_CONTEXT_SIZE 1699# define _LIBUNWIND_CURSOR_SIZE 24100# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K101# elif defined(__hexagon__)102# define _LIBUNWIND_TARGET_HEXAGON 1103// Values here change when : Registers.hpp - hexagon_thread_state_t change104# define _LIBUNWIND_CONTEXT_SIZE 18105# define _LIBUNWIND_CURSOR_SIZE 24106# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON107# elif defined(__mips__)108# if defined(_ABIO32) && _MIPS_SIM == _ABIO32109# define _LIBUNWIND_TARGET_MIPS_O32 1110# if defined(__mips_hard_float)111# define _LIBUNWIND_CONTEXT_SIZE 50112# define _LIBUNWIND_CURSOR_SIZE 57113# else114# define _LIBUNWIND_CONTEXT_SIZE 18115# define _LIBUNWIND_CURSOR_SIZE 24116# endif117# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32118# define _LIBUNWIND_TARGET_MIPS_NEWABI 1119# if defined(__mips_hard_float)120# define _LIBUNWIND_CONTEXT_SIZE 67121# define _LIBUNWIND_CURSOR_SIZE 74122# else123# define _LIBUNWIND_CONTEXT_SIZE 35124# define _LIBUNWIND_CURSOR_SIZE 42125# endif126# elif defined(_ABI64) && _MIPS_SIM == _ABI64127# define _LIBUNWIND_TARGET_MIPS_NEWABI 1128# if defined(__mips_hard_float)129# define _LIBUNWIND_CONTEXT_SIZE 67130# define _LIBUNWIND_CURSOR_SIZE 79131# else132# define _LIBUNWIND_CONTEXT_SIZE 35133# define _LIBUNWIND_CURSOR_SIZE 47134# endif135# else136# error "Unsupported MIPS ABI and/or environment"137# endif138# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS139#elif defined(__sparc__) && defined(__arch64__)140#define _LIBUNWIND_TARGET_SPARC64 1141#define _LIBUNWIND_HIGHEST_DWARF_REGISTER \142 _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC64143#define _LIBUNWIND_CONTEXT_SIZE 33144#define _LIBUNWIND_CURSOR_SIZE 45145# elif defined(__sparc__)146 #define _LIBUNWIND_TARGET_SPARC 1147 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC148 #define _LIBUNWIND_CONTEXT_SIZE 16149 #define _LIBUNWIND_CURSOR_SIZE 23150# elif defined(__riscv)151# define _LIBUNWIND_TARGET_RISCV 1152# if defined(__riscv_flen)153# define RISCV_FLEN __riscv_flen154# else155# define RISCV_FLEN 0156# endif157# define _LIBUNWIND_CONTEXT_SIZE (32 * (__riscv_xlen + RISCV_FLEN) / 64)158# if __riscv_xlen == 32159# define _LIBUNWIND_CURSOR_SIZE (_LIBUNWIND_CONTEXT_SIZE + 7)160# elif __riscv_xlen == 64161# define _LIBUNWIND_CURSOR_SIZE (_LIBUNWIND_CONTEXT_SIZE + 12)162# else163# error "Unsupported RISC-V ABI"164# endif165# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV166# elif defined(__ve__)167# define _LIBUNWIND_TARGET_VE 1168# define _LIBUNWIND_CONTEXT_SIZE 67169# define _LIBUNWIND_CURSOR_SIZE 79170# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_VE171# elif defined(__s390x__)172# define _LIBUNWIND_TARGET_S390X 1173# define _LIBUNWIND_CONTEXT_SIZE 34174# define _LIBUNWIND_CURSOR_SIZE 46175# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_S390X176#elif defined(__loongarch__)177#define _LIBUNWIND_TARGET_LOONGARCH 1178#if __loongarch_grlen == 64179#define _LIBUNWIND_CONTEXT_SIZE 65180#define _LIBUNWIND_CURSOR_SIZE 77181#else182#error "Unsupported LoongArch ABI"183#endif184#define _LIBUNWIND_HIGHEST_DWARF_REGISTER \185 _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH186#elif defined(__wasm__)187// Unused188#define _LIBUNWIND_CONTEXT_SIZE 0189#define _LIBUNWIND_CURSOR_SIZE 0190# else191# error "Unsupported architecture."192# endif193#else // !_LIBUNWIND_IS_NATIVE_ONLY194# define _LIBUNWIND_TARGET_I386195# define _LIBUNWIND_TARGET_X86_64 1196# define _LIBUNWIND_TARGET_PPC 1197# define _LIBUNWIND_TARGET_PPC64 1198# define _LIBUNWIND_TARGET_AARCH64 1199# define _LIBUNWIND_TARGET_ARM 1200# define _LIBUNWIND_TARGET_OR1K 1201# define _LIBUNWIND_TARGET_MIPS_O32 1202# define _LIBUNWIND_TARGET_MIPS_NEWABI 1203# define _LIBUNWIND_TARGET_SPARC 1204# define _LIBUNWIND_TARGET_SPARC64 1205# define _LIBUNWIND_TARGET_HEXAGON 1206# define _LIBUNWIND_TARGET_RISCV 1207# define _LIBUNWIND_TARGET_VE 1208# define _LIBUNWIND_TARGET_S390X 1209# define _LIBUNWIND_TARGET_LOONGARCH 1210# define _LIBUNWIND_CONTEXT_SIZE 167211# define _LIBUNWIND_CURSOR_SIZE 204212# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287213#endif // _LIBUNWIND_IS_NATIVE_ONLY214 215#if defined(__has_feature)216# if __has_feature(ptrauth_calls) && __has_feature(ptrauth_returns)217# define _LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING 1218# elif __has_feature(ptrauth_calls) != __has_feature(ptrauth_returns)219# error "Either both or none of ptrauth_calls and ptrauth_returns "\220 "is allowed to be enabled"221# endif222#endif223 224#endif // ____LIBUNWIND_CONFIG_H__225