38 lines
587 B
ArmAsm
38 lines
587 B
ArmAsm
.text
|
|
|
|
.type foo_resolver, @function
|
|
foo_resolver:
|
|
ret
|
|
.size foo_resolver, .-foo_resolver
|
|
|
|
.globl foo1
|
|
.type foo1, %gnu_indirect_function
|
|
.set foo1, foo_resolver
|
|
|
|
.globl foo2
|
|
.type foo2, %gnu_indirect_function
|
|
.set foo2, foo_resolver
|
|
|
|
.globl bar
|
|
.type bar, @function
|
|
bar:
|
|
.L1:
|
|
auipc x1, %got_pcrel_hi (foo1)
|
|
.ifdef __64_bit__
|
|
ld x1, %pcrel_lo (.L1) (x1)
|
|
.else
|
|
lw x1, %pcrel_lo (.L1) (x1)
|
|
.endif
|
|
|
|
call foo1
|
|
call foo1@plt
|
|
|
|
.L2:
|
|
auipc x2, %got_pcrel_hi (foo2)
|
|
.ifdef __64_bit__
|
|
ld x2, %pcrel_lo (.L2) (x2)
|
|
.else
|
|
lw x2, %pcrel_lo (.L2) (x2)
|
|
.endif
|
|
ret
|
|
.size bar, .-bar
|