44 lines
762 B
ArmAsm
44 lines
762 B
ArmAsm
|
.type foo, @function
|
||
|
.globl foo
|
||
|
foo:
|
||
|
movq $0, %rax
|
||
|
ret
|
||
|
|
||
|
bar:
|
||
|
# References to globals must be rewritten to their local targets.
|
||
|
call foo
|
||
|
jmp foo
|
||
|
jbe foo
|
||
|
jne foo
|
||
|
|
||
|
# Jumps to PLT symbols are rewritten through redirectors.
|
||
|
call memcpy@PLT
|
||
|
jmp memcpy@PLT
|
||
|
jbe memcpy@PLT
|
||
|
|
||
|
# Jumps to local PLT symbols use their local targets.
|
||
|
call foo@PLT
|
||
|
jmp foo@PLT
|
||
|
jbe foo@PLT
|
||
|
|
||
|
# Synthesized symbols are treated as local ones.
|
||
|
call OPENSSL_ia32cap_get@PLT
|
||
|
|
||
|
# References to local labels are left as-is in the first file.
|
||
|
.Llocal_label:
|
||
|
jbe .Llocal_label
|
||
|
leaq .Llocal_label+2048(%rip), %r14
|
||
|
leaq .Llocal_label+2048+1024(%rip), %r14
|
||
|
|
||
|
.section .rodata
|
||
|
.L1:
|
||
|
.quad 42
|
||
|
.L2:
|
||
|
.quad .L2-.L1
|
||
|
|
||
|
# Local labels and their jumps are left alone.
|
||
|
.text
|
||
|
jmp 1f
|
||
|
1:
|
||
|
jmp 1b
|