Differences From Artifact [467b03e18b]:
- File
src/runtime/exception.m
— part of check-in
[ce6282e019]
at
2012-07-07 11:29:53
on branch trunk
— Fix exceptions on 32 bit systems.
There still seems to be an issue with Clang on 32 bit systems, but it
works with GCC now. (user: js, size: 11377) [annotate] [blame] [check-ins using]
To Artifact [9f84282618]:
- File src/runtime/exception.m — part of check-in [cc68082389] at 2012-07-11 08:30:41 on branch trunk — exception.m: Fix a missing free. (user: js, size: 11326) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
92 93 94 95 96 97 98 | extern void* _Unwind_GetLanguageSpecificData(struct _Unwind_Context*); extern uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context*); extern uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context*); extern uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context*); extern uintptr_t _Unwind_GetIP(struct _Unwind_Context*); extern void _Unwind_SetIP(struct _Unwind_Context*, uintptr_t); extern void _Unwind_SetGR(struct _Unwind_Context*, int, uintptr_t); | < | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | extern void* _Unwind_GetLanguageSpecificData(struct _Unwind_Context*); extern uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context*); extern uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context*); extern uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context*); extern uintptr_t _Unwind_GetIP(struct _Unwind_Context*); extern void _Unwind_SetIP(struct _Unwind_Context*, uintptr_t); extern void _Unwind_SetGR(struct _Unwind_Context*, int, uintptr_t); static objc_uncaught_exception_handler uncaught_exception_handler; static uint64_t read_uleb128(const uint8_t **ptr) { uint64_t value = 0; |
︙ | ︙ | |||
395 396 397 398 399 400 401 402 403 404 405 406 407 408 | * #1 the filter. */ _Unwind_SetGR(ctx, __builtin_eh_return_data_regno(0), (uintptr_t)e->object); _Unwind_SetGR(ctx, __builtin_eh_return_data_regno(1), e->filter); _Unwind_SetIP(ctx, e->landingpad); return _URC_INSTALL_CONTEXT; } /* No LSDA -> nothing to handle */ if ((lsda_addr = _Unwind_GetLanguageSpecificData(ctx)) == NULL) return _URC_CONTINUE_UNWIND; | > > | 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | * #1 the filter. */ _Unwind_SetGR(ctx, __builtin_eh_return_data_regno(0), (uintptr_t)e->object); _Unwind_SetGR(ctx, __builtin_eh_return_data_regno(1), e->filter); _Unwind_SetIP(ctx, e->landingpad); free(ex); return _URC_INSTALL_CONTEXT; } /* No LSDA -> nothing to handle */ if ((lsda_addr = _Unwind_GetLanguageSpecificData(ctx)) == NULL) return _URC_CONTINUE_UNWIND; |
︙ | ︙ |