1 //===------------------------------- unwind.h -----------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
9 // C++ ABI Level 1 ABI documented at:
10 // http://mentorembedded.github.io/cxx-abi/abi-eh.html
12 //===----------------------------------------------------------------------===//
22 _URC_FOREIGN_EXCEPTION_CAUGHT
= 1,
23 _URC_FATAL_PHASE2_ERROR
= 2,
24 _URC_FATAL_PHASE1_ERROR
= 3,
26 _URC_END_OF_STACK
= 5,
27 _URC_HANDLER_FOUND
= 6,
28 _URC_INSTALL_CONTEXT
= 7,
29 _URC_CONTINUE_UNWIND
= 8
30 } _Unwind_Reason_Code
;
34 _UA_CLEANUP_PHASE
= 2,
35 _UA_HANDLER_FRAME
= 4,
37 _UA_END_OF_STACK
= 16 /* GCC extension */
40 struct _Unwind_Context
;
42 struct _Unwind_Exception
{
43 uint64_t exception_class
;
44 void (*exception_cleanup
)(_Unwind_Reason_Code
, struct _Unwind_Exception
*);
47 } __attribute__((__aligned__
));
49 typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn
)(int, _Unwind_Action
, uint64_t,
50 struct _Unwind_Exception
*,
51 struct _Unwind_Context
*,
54 typedef _Unwind_Reason_Code (*__personality_routine
)(int, _Unwind_Action
,
56 struct _Unwind_Exception
*,
57 struct _Unwind_Context
*);
59 #ifdef _UNWIND_GCC_EXTENSIONS
60 struct dwarf_eh_bases
{
69 _Unwind_Reason_Code
_Unwind_RaiseException(struct _Unwind_Exception
*);
70 void _Unwind_Resume(struct _Unwind_Exception
*) __dead
;
71 _Unwind_Reason_Code
_Unwind_Resume_or_Rethrow(struct _Unwind_Exception
*);
72 _Unwind_Reason_Code
_Unwind_ForcedUnwind(struct _Unwind_Exception
*,
73 _Unwind_Stop_Fn
, void *);
74 void _Unwind_DeleteException(struct _Unwind_Exception
*);
75 uintptr_t _Unwind_GetGR(struct _Unwind_Context
*, int);
76 void _Unwind_SetGR(struct _Unwind_Context
*, int, uintptr_t);
77 uintptr_t _Unwind_GetIP(struct _Unwind_Context
*);
78 uintptr_t _Unwind_GetIPInfo(struct _Unwind_Context
*, int *);
79 uintptr_t _Unwind_GetCFA(struct _Unwind_Context
*);
80 void _Unwind_SetIP(struct _Unwind_Context
*, uintptr_t);
81 uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context
*);
82 uintptr_t _Unwind_GetLanguageSpecificData(struct _Unwind_Context
*);
83 uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context
*);
84 uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context
*);
86 typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn
)(struct _Unwind_Context
*,
88 _Unwind_Reason_Code
_Unwind_Backtrace(_Unwind_Trace_Fn
, void *);
89 void *_Unwind_FindEnclosingFunction(void *);
91 void __register_frame(const void *);
92 void __register_frame_info(const void *, void *);
93 void __deregister_frame(const void *);
94 void *__deregister_frame_info(const void *);
96 #ifdef _UNWIND_GCC_EXTENSIONS
97 void *_Unwind_Find_FDE(void *, struct dwarf_eh_bases
*);