Created
May 12, 2010 00:47
-
-
Save ice799/398065 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_dl_runtime_resolve: | |
subq $56,%rsp | |
cfi_adjust_cfa_offset(72) # Incorporate PLT | |
movq %rax,(%rsp) # Preserve registers otherwise clobbered. | |
movq %rcx, 8(%rsp) | |
movq %rdx, 16(%rsp) | |
movq %rsi, 24(%rsp) | |
movq %rdi, 32(%rsp) | |
movq %r8, 40(%rsp) | |
movq %r9, 48(%rsp) | |
movq 64(%rsp), %rsi # Copy args pushed by PLT in register. | |
movq %rsi, %r11 # Multiply by 24 | |
addq %r11, %rsi | |
addq %r11, %rsi | |
shlq $3, %rsi | |
movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset | |
call _dl_fixup # Call resolver. | |
movq %rax, %r11 # Save return value | |
movq 48(%rsp), %r9 # Get register content back. | |
movq 40(%rsp), %r8 | |
movq 32(%rsp), %rdi | |
movq 24(%rsp), %rsi | |
movq 16(%rsp), %rdx | |
movq 8(%rsp), %rcx | |
movq (%rsp), %rax | |
addq $72, %rsp # Adjust stack(PLT did 2 pushes) | |
cfi_adjust_cfa_offset(-72) | |
jmp *%r11 # Jump to function address. | |
cfi_endproc | |
.size _dl_runtime_resolve, .-_dl_runtime_resolve |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dyld_stub_binder: | |
pushq %rbp | |
movq %rsp,%rbp | |
subq $STACK_SIZE,%rsp # at this point stack is 16-byte aligned because two meta-parameters where pushed | |
movq %rdi,RDI_SAVE(%rsp) # save registers that might be used as parameters | |
movq %rsi,RSI_SAVE(%rsp) | |
movq %rdx,RDX_SAVE(%rsp) | |
movq %rcx,RCX_SAVE(%rsp) | |
movq %r8,R8_SAVE(%rsp) | |
movq %r9,R9_SAVE(%rsp) | |
movq %rax,RAX_SAVE(%rsp) | |
movdqa %xmm0,XMMM0_SAVE(%rsp) | |
movdqa %xmm1,XMMM1_SAVE(%rsp) | |
movdqa %xmm2,XMMM2_SAVE(%rsp) | |
movdqa %xmm3,XMMM3_SAVE(%rsp) | |
movdqa %xmm4,XMMM4_SAVE(%rsp) | |
movdqa %xmm5,XMMM5_SAVE(%rsp) | |
movdqa %xmm6,XMMM6_SAVE(%rsp) | |
movdqa %xmm7,XMMM7_SAVE(%rsp) | |
movq MH_PARAM_BP(%rbp),%rdi # call fastBindLazySymbol(loadercache, lazyinfo) | |
movq LP_PARAM_BP(%rbp),%rsi | |
call __Z21_dyld_fast_stub_entryPvl | |
movq %rax,%r11 # save target | |
movdqa XMMM0_SAVE(%rsp),%xmm0 # restore registers | |
movdqa XMMM1_SAVE(%rsp),%xmm1 | |
movdqa XMMM2_SAVE(%rsp),%xmm2 | |
movdqa XMMM3_SAVE(%rsp),%xmm3 | |
movdqa XMMM4_SAVE(%rsp),%xmm4 | |
movdqa XMMM5_SAVE(%rsp),%xmm5 | |
movdqa XMMM6_SAVE(%rsp),%xmm6 | |
movdqa XMMM7_SAVE(%rsp),%xmm7 | |
movq RDI_SAVE(%rsp),%rdi | |
movq RSI_SAVE(%rsp),%rsi | |
movq RDX_SAVE(%rsp),%rdx | |
movq RCX_SAVE(%rsp),%rcx | |
movq R8_SAVE(%rsp),%r8 | |
movq R9_SAVE(%rsp),%r9 | |
movq RAX_SAVE(%rsp),%rax | |
addq $STACK_SIZE,%rsp | |
popq %rbp | |
addq $16,%rsp # remove meta-parameters | |
jmp *%r11 # jmp to target |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment