blob: 5464e3670605e1cc21e0983fafeb276eb9642588 [file] [log] [blame]
Logan Chien5191fe92015-07-19 15:23:10 +00001//===------------------------- __libunwind_config.h -----------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef ____LIBUNWIND_CONFIG_H__
11#define ____LIBUNWIND_CONFIG_H__
12
13#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
14 !defined(__ARM_DWARF_EH__)
Ranjeet Singh58080112017-03-31 15:28:06 +000015#define _LIBUNWIND_ARM_EHABI
Logan Chien5191fe92015-07-19 15:23:10 +000016#endif
17
Martin Storsjod9e89092017-10-28 20:19:49 +000018#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 8
19#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 32
20#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 112
Martin Storsjo89e636c2018-01-16 20:54:10 +000021#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 116
Martin Storsjod9e89092017-10-28 20:19:49 +000022#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 95
Martin Storsjo6a3ed9b2017-11-02 08:16:16 +000023#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 287
whitequark4f9c59f2018-05-16 19:09:48 +000024#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 32
John Baldwindfbbbdf2017-12-12 21:43:36 +000025#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 65
Martin Storsjod9e89092017-10-28 20:19:49 +000026
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000027#if defined(_LIBUNWIND_IS_NATIVE_ONLY)
28# if defined(__i386__)
Ranjeet Singh58080112017-03-31 15:28:06 +000029# define _LIBUNWIND_TARGET_I386
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000030# define _LIBUNWIND_CONTEXT_SIZE 8
Martin Storsjoc18d5c02017-10-30 19:06:34 +000031# define _LIBUNWIND_CURSOR_SIZE 15
Martin Storsjod9e89092017-10-28 20:19:49 +000032# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000033# elif defined(__x86_64__)
34# define _LIBUNWIND_TARGET_X86_64 1
Martin Storsjo66bb841f2017-10-27 08:11:36 +000035# if defined(_WIN64)
36# define _LIBUNWIND_CONTEXT_SIZE 54
37# define _LIBUNWIND_CURSOR_SIZE 66
Martin Storsjo66bb841f2017-10-27 08:11:36 +000038# else
39# define _LIBUNWIND_CONTEXT_SIZE 21
40# define _LIBUNWIND_CURSOR_SIZE 33
Martin Storsjo66bb841f2017-10-27 08:11:36 +000041# endif
Martin Storsjod9e89092017-10-28 20:19:49 +000042# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
Martin Storsjo7c907062018-01-02 22:11:30 +000043# elif defined(__powerpc64__)
44# define _LIBUNWIND_TARGET_PPC64 1
Martin Storsjo89e636c2018-01-16 20:54:10 +000045# define _LIBUNWIND_CONTEXT_SIZE 167
46# define _LIBUNWIND_CURSOR_SIZE 179
Martin Storsjo7c907062018-01-02 22:11:30 +000047# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000048# elif defined(__ppc__)
49# define _LIBUNWIND_TARGET_PPC 1
50# define _LIBUNWIND_CONTEXT_SIZE 117
Martin Storsjoc18d5c02017-10-30 19:06:34 +000051# define _LIBUNWIND_CURSOR_SIZE 124
Martin Storsjod9e89092017-10-28 20:19:49 +000052# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000053# elif defined(__aarch64__)
54# define _LIBUNWIND_TARGET_AARCH64 1
55# define _LIBUNWIND_CONTEXT_SIZE 66
56# define _LIBUNWIND_CURSOR_SIZE 78
Martin Storsjod9e89092017-10-28 20:19:49 +000057# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000058# elif defined(__arm__)
59# define _LIBUNWIND_TARGET_ARM 1
Asiri Rathnayakef33c3422016-07-07 10:55:39 +000060# if defined(__ARM_WMMX)
Martin Storsjodd45ea12017-10-25 08:07:19 +000061# define _LIBUNWIND_CONTEXT_SIZE 61
62# define _LIBUNWIND_CURSOR_SIZE 68
Asiri Rathnayakef33c3422016-07-07 10:55:39 +000063# else
64# define _LIBUNWIND_CONTEXT_SIZE 42
65# define _LIBUNWIND_CURSOR_SIZE 49
66# endif
Martin Storsjod9e89092017-10-28 20:19:49 +000067# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
Asiri Rathnayake54387ee2016-05-25 12:36:34 +000068# elif defined(__or1k__)
69# define _LIBUNWIND_TARGET_OR1K 1
70# define _LIBUNWIND_CONTEXT_SIZE 16
Martin Storsjoc18d5c02017-10-30 19:06:34 +000071# define _LIBUNWIND_CURSOR_SIZE 24
Martin Storsjod9e89092017-10-28 20:19:49 +000072# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
John Baldwindfbbbdf2017-12-12 21:43:36 +000073# elif defined(__mips__)
John Baldwinc3f240f2018-05-15 22:44:56 +000074# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
John Baldwindfbbbdf2017-12-12 21:43:36 +000075# define _LIBUNWIND_TARGET_MIPS_O32 1
John Baldwinc3f240f2018-05-15 22:44:56 +000076# if defined(__mips_hard_float)
77# define _LIBUNWIND_CONTEXT_SIZE 50
78# define _LIBUNWIND_CURSOR_SIZE 57
79# else
80# define _LIBUNWIND_CONTEXT_SIZE 18
81# define _LIBUNWIND_CURSOR_SIZE 24
82# endif
83# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
John Baldwin0594aee2018-02-27 21:24:02 +000084# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
John Baldwinc3f240f2018-05-15 22:44:56 +000085# if defined(__mips_hard_float)
86# define _LIBUNWIND_CONTEXT_SIZE 67
87# define _LIBUNWIND_CURSOR_SIZE 74
88# else
89# define _LIBUNWIND_CONTEXT_SIZE 35
90# define _LIBUNWIND_CURSOR_SIZE 42
91# endif
92# elif defined(_ABI64) && _MIPS_SIM == _ABI64
John Baldwin40bab372018-01-09 17:07:18 +000093# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
John Baldwinc3f240f2018-05-15 22:44:56 +000094# if defined(__mips_hard_float)
95# define _LIBUNWIND_CONTEXT_SIZE 67
96# define _LIBUNWIND_CURSOR_SIZE 79
97# else
98# define _LIBUNWIND_CONTEXT_SIZE 35
99# define _LIBUNWIND_CURSOR_SIZE 47
100# endif
John Baldwindfbbbdf2017-12-12 21:43:36 +0000101# else
102# error "Unsupported MIPS ABI and/or environment"
103# endif
104# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
Asiri Rathnayake54387ee2016-05-25 12:36:34 +0000105# else
106# error "Unsupported architecture."
107# endif
108#else // !_LIBUNWIND_IS_NATIVE_ONLY
Ranjeet Singh58080112017-03-31 15:28:06 +0000109# define _LIBUNWIND_TARGET_I386
Asiri Rathnayake54387ee2016-05-25 12:36:34 +0000110# define _LIBUNWIND_TARGET_X86_64 1
111# define _LIBUNWIND_TARGET_PPC 1
Martin Storsjo7c907062018-01-02 22:11:30 +0000112# define _LIBUNWIND_TARGET_PPC64 1
Asiri Rathnayake54387ee2016-05-25 12:36:34 +0000113# define _LIBUNWIND_TARGET_AARCH64 1
114# define _LIBUNWIND_TARGET_ARM 1
115# define _LIBUNWIND_TARGET_OR1K 1
John Baldwindfbbbdf2017-12-12 21:43:36 +0000116# define _LIBUNWIND_TARGET_MIPS_O32 1
John Baldwin40bab372018-01-09 17:07:18 +0000117# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
Martin Storsjo89e636c2018-01-16 20:54:10 +0000118# define _LIBUNWIND_CONTEXT_SIZE 167
119# define _LIBUNWIND_CURSOR_SIZE 179
Martin Storsjo6a3ed9b2017-11-02 08:16:16 +0000120# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
Asiri Rathnayake54387ee2016-05-25 12:36:34 +0000121#endif // _LIBUNWIND_IS_NATIVE_ONLY
122
Logan Chien5191fe92015-07-19 15:23:10 +0000123#endif // ____LIBUNWIND_CONFIG_H__