summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-riscv-elf/ifunc-plt-got-overwrite.s
blob: 6c2f8e8c42e570e54eb9c76de517767ead75a8a1 (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
37
38
	.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