Home | History | Annotate | Line # | Download | only in libunwind
unwind.h revision 1.2.10.3
      1  1.2.10.2       tls //===------------------------------- unwind.h -----------------------------===//
      2  1.2.10.2       tls //
      3  1.2.10.2       tls //                     The LLVM Compiler Infrastructure
      4  1.2.10.2       tls //
      5  1.2.10.2       tls // This file is dual licensed under the MIT and the University of Illinois Open
      6  1.2.10.2       tls // Source Licenses. See LICENSE.TXT for details.
      7  1.2.10.2       tls //
      8  1.2.10.2       tls //
      9  1.2.10.2       tls // C++ ABI Level 1 ABI documented at:
     10  1.2.10.2       tls //   http://mentorembedded.github.io/cxx-abi/abi-eh.html
     11  1.2.10.2       tls //
     12  1.2.10.2       tls //===----------------------------------------------------------------------===//
     13  1.2.10.2       tls 
     14  1.2.10.2       tls #ifndef _UNWIND_H
     15  1.2.10.2       tls #define _UNWIND_H
     16  1.2.10.2       tls 
     17  1.2.10.2       tls #include <stdint.h>
     18  1.2.10.2       tls #include <stddef.h>
     19  1.2.10.2       tls 
     20  1.2.10.2       tls typedef enum {
     21  1.2.10.2       tls   _URC_NO_REASON = 0,
     22  1.2.10.2       tls   _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
     23  1.2.10.2       tls   _URC_FATAL_PHASE2_ERROR = 2,
     24  1.2.10.2       tls   _URC_FATAL_PHASE1_ERROR = 3,
     25  1.2.10.2       tls   _URC_NORMAL_STOP = 4,
     26  1.2.10.2       tls   _URC_END_OF_STACK = 5,
     27  1.2.10.2       tls   _URC_HANDLER_FOUND = 6,
     28  1.2.10.2       tls   _URC_INSTALL_CONTEXT = 7,
     29  1.2.10.2       tls   _URC_CONTINUE_UNWIND = 8
     30  1.2.10.2       tls } _Unwind_Reason_Code;
     31  1.2.10.2       tls 
     32  1.2.10.2       tls typedef enum {
     33  1.2.10.2       tls   _UA_SEARCH_PHASE = 1,
     34  1.2.10.2       tls   _UA_CLEANUP_PHASE = 2,
     35  1.2.10.2       tls   _UA_HANDLER_FRAME = 4,
     36  1.2.10.2       tls   _UA_FORCE_UNWIND = 8,
     37  1.2.10.2       tls   _UA_END_OF_STACK = 16 /* GCC extension */
     38  1.2.10.2       tls } _Unwind_Action;
     39  1.2.10.2       tls 
     40  1.2.10.2       tls struct _Unwind_Context;
     41  1.2.10.2       tls 
     42  1.2.10.2       tls struct _Unwind_Exception {
     43  1.2.10.2       tls   uint64_t exception_class;
     44  1.2.10.2       tls   void (*exception_cleanup)(_Unwind_Reason_Code, struct _Unwind_Exception *);
     45  1.2.10.2       tls   uintptr_t private_1;
     46  1.2.10.2       tls   uintptr_t private_2;
     47  1.2.10.2       tls } __attribute__((__aligned__));
     48  1.2.10.2       tls 
     49  1.2.10.2       tls typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action, uint64_t,
     50  1.2.10.2       tls                                                struct _Unwind_Exception *,
     51  1.2.10.2       tls                                                struct _Unwind_Context *,
     52  1.2.10.2       tls                                                void *);
     53  1.2.10.2       tls 
     54  1.2.10.2       tls typedef _Unwind_Reason_Code (*__personality_routine)(int, _Unwind_Action,
     55  1.2.10.2       tls                                                      uint64_t,
     56  1.2.10.2       tls                                                      struct _Unwind_Exception *,
     57  1.2.10.2       tls                                                      struct _Unwind_Context *);
     58  1.2.10.2       tls 
     59  1.2.10.3  jdolecek #ifdef _UNWIND_GCC_EXTENSIONS
     60  1.2.10.3  jdolecek struct dwarf_eh_bases {
     61  1.2.10.3  jdolecek   void *tbase;
     62  1.2.10.3  jdolecek   void *dbase;
     63  1.2.10.3  jdolecek   void *func;
     64  1.2.10.3  jdolecek };
     65  1.2.10.3  jdolecek #endif
     66  1.2.10.3  jdolecek 
     67  1.2.10.2       tls __BEGIN_DECLS
     68  1.2.10.2       tls 
     69  1.2.10.2       tls _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *);
     70  1.2.10.2       tls void _Unwind_Resume(struct _Unwind_Exception *) __dead;
     71  1.2.10.2       tls _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);
     72  1.2.10.2       tls _Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception *,
     73  1.2.10.2       tls                                          _Unwind_Stop_Fn, void *);
     74  1.2.10.2       tls void _Unwind_DeleteException(struct _Unwind_Exception *);
     75  1.2.10.2       tls uintptr_t _Unwind_GetGR(struct _Unwind_Context *, int);
     76  1.2.10.2       tls void _Unwind_SetGR(struct _Unwind_Context *, int, uintptr_t);
     77  1.2.10.2       tls uintptr_t _Unwind_GetIP(struct _Unwind_Context *);
     78  1.2.10.2       tls uintptr_t _Unwind_GetIPInfo(struct _Unwind_Context *, int *);
     79  1.2.10.2       tls uintptr_t _Unwind_GetCFA(struct _Unwind_Context *);
     80  1.2.10.2       tls void _Unwind_SetIP(struct _Unwind_Context *, uintptr_t);
     81  1.2.10.2       tls uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context *);
     82  1.2.10.2       tls uintptr_t _Unwind_GetLanguageSpecificData(struct _Unwind_Context *);
     83  1.2.10.2       tls uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context *);
     84  1.2.10.2       tls uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context *);
     85  1.2.10.2       tls 
     86  1.2.10.2       tls typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,
     87  1.2.10.2       tls                                                 void *);
     88  1.2.10.2       tls _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *);
     89  1.2.10.2       tls void *_Unwind_FindEnclosingFunction(void *);
     90  1.2.10.2       tls 
     91  1.2.10.2       tls void __register_frame(const void *);
     92  1.2.10.2       tls void __register_frame_info(const void *, void *);
     93  1.2.10.2       tls void __deregister_frame(const void *);
     94  1.2.10.2       tls void *__deregister_frame_info(const void *);
     95  1.2.10.2       tls 
     96  1.2.10.3  jdolecek #ifdef _UNWIND_GCC_EXTENSIONS
     97  1.2.10.3  jdolecek void *_Unwind_Find_FDE(void *, struct dwarf_eh_bases *);
     98  1.2.10.3  jdolecek #endif
     99  1.2.10.3  jdolecek 
    100  1.2.10.2       tls __END_DECLS
    101  1.2.10.2       tls 
    102  1.2.10.2       tls #endif // _UNWIND_H
    103