Commit | Line | Data |
---|---|---|
34e77a92 RS |
1 | .syntax unified |
2 | .arch armv6t2 | |
3 | ||
4 | .macro define,name,type | |
5 | .type \name,%gnu_indirect_function | |
6 | \type | |
7 | \name: | |
8 | mov pc,lr | |
9 | .size \name,.-\name | |
10 | .endm | |
11 | ||
12 | .macro define2,name | |
13 | define aa\name,.arm | |
14 | define at\name,.arm | |
15 | define ab\name,.arm | |
16 | define ta\name,.thumb_func | |
17 | define tt\name,.thumb_func | |
18 | define tb\name,.thumb_func | |
19 | .endm | |
20 | ||
21 | .macro test_relocs,name,width | |
22 | bl \name(PLT) | |
23 | b\width \name | |
24 | beq\width \name | |
25 | ldr r4,1f | |
26 | ldr r4,2f | |
27 | 1: | |
28 | .word \name(GOT) | |
29 | 2: | |
30 | .word \name(GOT_PREL) | |
31 | .endm | |
32 | ||
33 | .macro test_relocs2,name,type,width | |
34 | test_relocs a\type\name,\width | |
35 | test_relocs t\type\name,\width | |
36 | test_relocs ab\name,\width | |
37 | test_relocs tb\name,\width | |
38 | .endm | |
39 | ||
40 | .macro diff,name | |
41 | .word \name | |
42 | .word \name-. | |
43 | .endm | |
44 | ||
45 | .macro alldirs,doit,name | |
46 | \doit aa\name | |
47 | \doit at\name | |
48 | \doit ab\name | |
49 | \doit ta\name | |
50 | \doit tt\name | |
51 | \doit tb\name | |
52 | .endm | |
53 | ||
54 | define2 f1 | |
55 | define2 f2 | |
56 | define2 f3 | |
57 | define2 f4 | |
58 | ||
59 | alldirs .globl,f2 | |
60 | ||
61 | alldirs .globl,f3 | |
62 | alldirs .hidden,f3 | |
63 | ||
64 | alldirs .globl,f4 | |
65 | alldirs .protected,f4 | |
66 | ||
67 | .globl arm | |
68 | .type arm,%function | |
69 | .arm | |
70 | arm: | |
71 | test_relocs foo | |
72 | test_relocs2 f1,a, | |
73 | test_relocs2 f2,a, | |
74 | test_relocs2 f3,a, | |
75 | test_relocs2 f4,a, | |
76 | .size arm,.-arm | |
77 | ||
78 | .globl _thumb | |
79 | .type _thumb,%function | |
80 | .thumb_func | |
81 | _thumb: | |
82 | test_relocs foo | |
83 | test_relocs2 f1,t,.w | |
84 | test_relocs2 f2,t,.w | |
85 | test_relocs2 f3,t,.w | |
86 | test_relocs2 f4,t,.w | |
87 | .size _thumb,.-_thumb | |
88 | ||
89 | .data | |
90 | foo: | |
91 | .word 0x11223344 | |
92 | alldirs diff,f1 | |
93 | alldirs diff,f2 | |
94 | alldirs diff,f3 | |
95 | alldirs diff,f4 |