blob: d8593c40bff444712c3272bb5e2b3eeb696f3404 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
.global pltRelocateStub
pltRelocateStub:
# we need to save / restore all registers than can hold function arguments
# we do not need to save callee-saved registers as they will not be trashed by lazyRelocate
# TODO: save floating point argument registers
push %rsi
push %rdi
mov 16(%rsp), %rdi
mov 24(%rsp), %rsi
push %rax
push %rcx
push %rdx
push %r8
push %r9
push %r10
call lazyRelocate
mov %rax, %r11
pop %r10
pop %r9
pop %r8
pop %rdx
pop %rcx
pop %rax
pop %rdi
pop %rsi
add $16, %rsp
jmp *%r11
.section .note.GNU-stack,"",%progbits
|