- File:
-
- 1 edited
-
doc/working/exception/impl/except.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/working/exception/impl/except.c
r4a58895 r6b72040 4 4 5 5 #include "lsda.h" 6 7 // This macro should be the only thing that needs to change across machines. 8 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)() 9 #define MATCHER_FROM_CONTEXT(ptr_to_context) \ 10 (*(_Unwind_Reason_Code(**)())(_Unwind_GetCFA(ptr_to_context) + 8)) 11 6 12 7 13 //Global which defines the current exception … … 17 23 struct _Unwind_Exception* unwind_exception, struct _Unwind_Context* context) 18 24 { 25 printf("CFA: 0x%lx\n", _Unwind_GetCFA(context)); 26 19 27 //DEBUG 20 28 printf("Personality function (%d, %x, %llu, %p, %p):", version, actions, exceptionClass, unwind_exception, context); … … 111 119 112 120 //Get a function pointer from the relative offset and call it 113 _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher; 121 // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher; 122 123 _Unwind_Reason_Code (*matcher)() = 124 MATCHER_FROM_CONTEXT(context); 114 125 _Unwind_Reason_Code ret = matcher(); 115 126
Note:
See TracChangeset
for help on using the changeset viewer.