2016-05-11 14:27:51 +03:00
|
|
|
Lafterinvoke:
|
2016-05-12 11:50:38 +03:00
|
|
|
addl -16(%ebp), %esp
|
2016-05-12 19:18:03 +03:00
|
|
|
addl $108, %esp
|
2016-05-11 14:27:51 +03:00
|
|
|
popl %ebx
|
|
|
|
popl %edi
|
|
|
|
popl %esi
|
|
|
|
popl %ebp
|
|
|
|
retl
|
|
|
|
Lcatchhandler:
|
|
|
|
cmpl $1, %edx
|
|
|
|
movl %eax, (%esp)
|
|
|
|
jne Lnomatchexception
|
|
|
|
|
|
|
|
# check if xamarin_marshal_objectivec_exception_mode == disable, if so, just don't handle the exception
|
|
|
|
call Lloadpcrelative1
|
|
|
|
Lloadpcrelative1:
|
|
|
|
popl %ecx
|
|
|
|
cmpl $4, L_xamarin_marshal_objectivec_exception_mode$non_lazy_ptr-Lloadpcrelative1(%ecx)
|
|
|
|
je Lnomatchexception
|
|
|
|
|
|
|
|
calll _objc_begin_catch
|
|
|
|
Lcatchbegin:
|
|
|
|
movl %eax, (%esp)
|
|
|
|
calll _xamarin_process_nsexception
|
|
|
|
Lcatchend:
|
|
|
|
calll _objc_end_catch
|
|
|
|
jmp Lafterinvoke
|
|
|
|
Lcatchcatchhandler:
|
|
|
|
calll _objc_end_catch
|
|
|
|
Lnomatchexception:
|
|
|
|
calll __Unwind_Resume
|
|
|
|
Lfunc_end0:
|
|
|
|
.cfi_endproc
|
|
|
|
|
|
|
|
# exception table
|
|
|
|
.section __TEXT,__gcc_except_tab
|
|
|
|
.align 2
|
|
|
|
GCC_except_table0:
|
|
|
|
Lexception0:
|
|
|
|
.byte 255 ## @LPStart Encoding = omit
|
|
|
|
.byte 155 ## @TType Encoding = indirect pcrel sdata4
|
|
|
|
.asciz "\274" ## @TType base offset
|
|
|
|
.byte 3 ## Call site Encoding = udata4
|
|
|
|
.byte 52 ## Call site table length
|
|
|
|
Lset0 = Lbeforeinvoke-Lfunc_begin0 ## >> Call Site 1 <<
|
|
|
|
.long Lset0
|
|
|
|
Lset1 = Lafterinvoke-Lbeforeinvoke ## Call between Lbeforeinvoke and Lafterinvoke
|
|
|
|
.long Lset1
|
|
|
|
Lset2 = Lcatchhandler-Lfunc_begin0 ## jumps to Lcatchhandler
|
|
|
|
.long Lset2
|
|
|
|
.byte 1 ## On action: 1
|
|
|
|
Lset3 = Lafterinvoke-Lfunc_begin0 ## >> Call Site 2 <<
|
|
|
|
.long Lset3
|
|
|
|
Lset4 = Lcatchbegin-Lafterinvoke ## Call between Lafterinvoke and Lcatchbegin
|
|
|
|
.long Lset4
|
|
|
|
.long 0 ## has no landing pad
|
|
|
|
.byte 0 ## On action: cleanup
|
|
|
|
Lset5 = Lcatchbegin-Lfunc_begin0 ## >> Call Site 3 <<
|
|
|
|
.long Lset5
|
|
|
|
Lset6 = Lcatchend-Lcatchbegin ## Call between Lcatchbegin and Lcatchend
|
|
|
|
.long Lset6
|
|
|
|
Lset7 = Lcatchcatchhandler-Lfunc_begin0 ## jumps to Lcatchcatchhandler
|
|
|
|
.long Lset7
|
|
|
|
.byte 0 ## On action: cleanup
|
|
|
|
Lset8 = Lcatchend-Lfunc_begin0 ## >> Call Site 4 <<
|
|
|
|
.long Lset8
|
|
|
|
Lset9 = Lfunc_end0-Lcatchend ## Call between Lcatchend and Lfunc_end0
|
|
|
|
.long Lset9
|
|
|
|
.long 0 ## has no landing pad
|
|
|
|
.byte 0 ## On action: cleanup
|
|
|
|
.byte 1 ## >> Action Record 1 <<
|
|
|
|
## Catch TypeInfo 1
|
|
|
|
.byte 0 ## No further actions
|
|
|
|
## >> Catch TypeInfos <<
|
|
|
|
Ltmp9: ## TypeInfo 1
|
|
|
|
.long L_OBJC_EHTYPE_$_NSException$non_lazy_ptr-Ltmp9
|
|
|
|
.align 2
|
|
|
|
|
|
|
|
.section __DATA,__objc_imageinfo,regular,no_dead_strip
|
|
|
|
L_OBJC_IMAGE_INFO:
|
|
|
|
.long 0
|
|
|
|
.long 0
|
|
|
|
|
|
|
|
.section __IMPORT,__pointers,non_lazy_symbol_pointers
|
|
|
|
L_OBJC_EHTYPE_$_NSException$non_lazy_ptr:
|
|
|
|
.indirect_symbol _OBJC_EHTYPE_$_NSException
|
|
|
|
.long 0
|
|
|
|
L___objc_personality_v0$non_lazy_ptr:
|
|
|
|
.indirect_symbol ___objc_personality_v0
|
|
|
|
.long 0
|
|
|
|
L_xamarin_marshal_objectivec_exception_mode$non_lazy_ptr:
|
|
|
|
.indirect_symbol _xamarin_marshal_objectivec_exception_mode
|
|
|
|
.long 0
|