Changeset 851fd92 for libcfa/src/exception.c
- Timestamp:
- Apr 27, 2020, 11:36:47 AM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- c680a4b
- Parents:
- b25aafa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/exception.c
rb25aafa r851fd92 83 83 struct exception_context_t * context = this_exception_context(); 84 84 85 __cfa abi_dbg_print_safe("Throwing resumption exception\n");85 __cfadbg_print_safe(exception, "Throwing resumption exception\n"); 86 86 87 87 __attribute__((cleanup(reset_top_resume))) … … 96 96 } 97 97 98 __cfa abi_dbg_print_safe("Unhandled exception\n");98 __cfadbg_print_safe(exception, "Unhandled exception\n"); 99 99 100 100 // Fall back to termination: … … 180 180 struct exception_context_t * context = this_exception_context(); 181 181 182 __cfa abi_dbg_print_safe("Deleting Exception\n");182 __cfadbg_print_safe(exception, "Deleting Exception\n"); 183 183 184 184 // Remove the exception from the list. … … 218 218 void * stop_param) { 219 219 // Verify actions follow the rules we expect. 220 verify((actions & _UA_CLEANUP_PHASE) && actions & (_UA_FORCE_UNWIND));220 verify((actions & _UA_CLEANUP_PHASE) && (actions & _UA_FORCE_UNWIND)); 221 221 verify(!(actions & (_UA_SEARCH_PHASE | _UA_HANDER_FRAME))); 222 222 … … 261 261 262 262 void __cfaehm_throw_terminate( exception_t * val ) { 263 __cfa abi_dbg_print_safe("Throwing termination exception\n");263 __cfadbg_print_safe(exception, "Throwing termination exception\n"); 264 264 265 265 __cfaehm_allocate_exception( val ); … … 268 268 269 269 void __cfaehm_rethrow_terminate(void) { 270 __cfa abi_dbg_print_safe("Rethrowing termination exception\n");270 __cfadbg_print_safe(exception, "Rethrowing termination exception\n"); 271 271 272 272 __cfaehm_begin_unwind(); … … 284 284 { 285 285 286 //__cfa abi_dbg_print_safe("CFA: 0x%lx\n", _Unwind_GetCFA(context));287 __cfa abi_dbg_print_safe("Personality function (%d, %x, %llu, %p, %p):",286 //__cfadbg_print_safe(exception, "CFA: 0x%lx\n", _Unwind_GetCFA(context)); 287 __cfadbg_print_safe(exception, "Personality function (%d, %x, %llu, %p, %p):", 288 288 version, actions, exception_class, unwind_exception, unwind_context); 289 289 … … 294 294 if (actions & _UA_SEARCH_PHASE) { 295 295 verify(actions == _UA_SEARCH_PHASE); 296 __cfa abi_dbg_print_safe(" lookup phase");296 __cfadbg_print_safe(exception, " lookup phase"); 297 297 // ... we are in clean-up phase. 298 298 } else { 299 299 verify(actions & _UA_CLEANUP_PHASE); 300 __cfa abi_dbg_print_safe(" cleanup phase");300 __cfadbg_print_safe(exception, " cleanup phase"); 301 301 // We shouldn't be the handler frame during forced unwind. 302 302 if (actions & _UA_HANDLER_FRAME) { 303 303 verify(!(actions & _UA_FORCE_UNWIND)); 304 __cfa abi_dbg_print_safe(" (handler frame)");304 __cfadbg_print_safe(exception, " (handler frame)"); 305 305 } else if (actions & _UA_FORCE_UNWIND) { 306 __cfa abi_dbg_print_safe(" (force unwind)");306 __cfadbg_print_safe(exception, " (force unwind)"); 307 307 } 308 308 } … … 345 345 void * ep = (void*)lsd_info.Start + callsite_start + callsite_len; 346 346 void * ip = (void*)instruction_ptr; 347 __cfa abi_dbg_print_safe("\nfound %p - %p (%p, %p, %p), looking for %p\n",347 __cfadbg_print_safe(exception, "\nfound %p - %p (%p, %p, %p), looking for %p\n", 348 348 bp, ep, ls, cs, cl, ip); 349 349 #endif // __CFA_DEBUG_PRINT__ … … 360 360 if ( 0 == callsite_landing_pad ) { 361 361 // Nothing to do, move along 362 __cfa abi_dbg_print_safe(" no landing pad");362 __cfadbg_print_safe(exception, " no landing pad"); 363 363 } else if (actions & _UA_SEARCH_PHASE) { 364 364 // In search phase, these means we found a potential handler we must check. … … 398 398 // Based on the return value, check if we matched the exception 399 399 if (ret == _URC_HANDLER_FOUND) { 400 __cfa abi_dbg_print_safe(" handler found\n");400 __cfadbg_print_safe(exception, " handler found\n"); 401 401 } else { 402 __cfa abi_dbg_print_safe(" no handler\n");402 __cfadbg_print_safe(exception, " no handler\n"); 403 403 } 404 404 return ret; … … 406 406 407 407 // This is only a cleanup handler, ignore it 408 __cfa abi_dbg_print_safe(" no action");408 __cfadbg_print_safe(exception, " no action"); 409 409 } else { 410 410 // In clean-up phase, no destructors here but this could be the handler. … … 428 428 _Unwind_SetIP( unwind_context, ((lsd_info.LPStart) + (callsite_landing_pad)) ); 429 429 430 __cfa abi_dbg_print_safe(" action\n");430 __cfadbg_print_safe(exception, " action\n"); 431 431 432 432 // Return have some action to run … … 435 435 } 436 436 // No handling found 437 __cfa abi_dbg_print_safe(" table end reached\n");437 __cfadbg_print_safe(exception, " table end reached"); 438 438 439 439 UNWIND: 440 __cfa abi_dbg_print_safe(" unwind\n");440 __cfadbg_print_safe(exception, " unwind\n"); 441 441 442 442 // Keep unwinding the stack
Note: See TracChangeset
for help on using the changeset viewer.