aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tocopt6-inc.s
blob: 03b894b54525f2b72f3ebcbcf5c4929014cd11b9 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
	.macro	start, sym
	.type	\sym, @function
	.pushsection .opd, "aw"
\sym:	.quad	.L.\sym, .TOC.@tocbase, 0
	.popsection
.L.\sym:
	mflr	0
	std	31, -8(1)
	std	0, 16(1)
	stdu	1, -128(1)
	mr	31, 1
	.endm


	.macro	end, sym
	addi	1,31,128
	ld	0, 16(1)
	mtlr	0
	ld	31, -8(1)
	blr
	.size	\sym, . - .L.\sym
	.endm


	.macro	forward, from, to
	start	\from
	bl	\to
	nop
	end	\from
	.endm


	.macro	usegot, sym
	.pushsection .data
\sym\@:	.quad	\@
	.popsection
	.pushsection .toc, "aw"
.LT\@:	.tc	\sym\@[TC], \sym\@
	.popsection
	ld	3,.LT\@@toc(2)
	.endm


	.macro	in123
	.pushsection .toc, "aw"
.LThello:
	.tc	hello[TC],hello
	.popsection

	.pushsection .rodata
hello:	.asciz	"Hello, world!\n"
	.popsection

	.pushsection .text.in123, "axG", @progbits, in123, comdat
	.weak	in123
	start	in123
	ld	3, .LThello@toc(2)
	#bl	printf
	nop
	end	in123
	.popsection
	.endm


	.macro	in23
	.pushsection .text
	forward local, in123
	.popsection

	.pushsection .text.in23, "axG", @progbits, in23, comdat
	.weak	in23
	forward	in23, local
	.popsection
	.endm


	.macro	gobblegot, sym
	.pushsection .text
	.globl	\sym
	start	\sym
	.rept	5000
	usegot	a
	.endr
	end	\sym
	.popsection
	.endm