* elf32-m32c.c (m32c_offset_for_reloc): Fix local symbol
[binutils.git] / ld / testsuite / ld-i386 / tlsbin.s
blobdb80e0984fff26db9db7b68296b756f7b2ddc1b0
1 .section ".tbss", "awT", @nobits
2 .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
3 bg1: .space 4
4 bg2: .space 4
5 bg3: .space 4
6 bg4: .space 4
7 bg5: .space 4
8 bg6: .space 4
9 bg7: .space 4
10 bg8: .space 4
11 bl1: .space 4
12 bl2: .space 4
13 bl3: .space 4
14 bl4: .space 4
15 bl5: .space 4
16 bl6: .space 4
17 bl7: .space 4
18 bl8: .space 4
19 .text
20 .globl _start
21 .type _start,@function
22 _start:
23 pushl %ebp
24 movl %esp, %ebp
25 /* Set up .GOT pointer for non-pic @gottpoff sequences */
26 call 1f
27 1: popl %ecx
28 addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
29 nop;nop;nop;nop
31 /* @gottpoff IE against global var */
32 movl %gs:0, %edx
33 nop;nop
34 subl sG6@gottpoff(%ecx), %edx
35 nop;nop;nop;nop
37 /* @indntpoff IE against global var */
38 movl %gs:0, %eax
39 nop;nop
40 addl sG7@indntpoff, %eax
41 nop;nop;nop;nop
43 /* @indntpoff direct %gs access IE against global var */
44 movl sG8@indntpoff, %edx
45 nop;nop
46 movl %gs:(%edx), %eax
47 nop;nop;nop;nop
49 /* @gottpoff IE -> LE against global var defined in exec */
50 movl %gs:0, %edx
51 nop;nop
52 subl bg6@gottpoff(%ecx), %edx
53 nop;nop;nop;nop
55 /* @indntpoff IE -> LE against global var defined in exec */
56 movl %gs:0, %eax
57 nop;nop
58 addl bg7@indntpoff, %eax
59 nop;nop;nop;nop
61 /* @indntpoff direct %gs access IE -> LE against global var defined
62 in exec */
63 movl bg8@indntpoff, %edx
64 nop;nop
65 movl %gs:(%edx), %eax
66 nop;nop;nop;nop
68 /* @gottpoff IE -> LE against local var */
69 movl %gs:0, %edx
70 nop;nop
71 subl bl6@gottpoff(%ecx), %edx
72 nop;nop;nop;nop
74 /* @indntpoff IE -> LE against local var */
75 movl %gs:0, %eax
76 nop;nop
77 addl bl7@indntpoff, %eax
78 nop;nop;nop;nop
80 /* @indntpoff direct %gs access IE -> LE against local var */
81 movl bl8@indntpoff, %edx
82 nop;nop
83 movl %gs:(%edx), %eax
84 nop;nop;nop;nop
86 /* @gottpoff IE -> LE against hidden but not local var */
87 movl %gs:0, %edx
88 nop;nop
89 subl sh6@gottpoff(%ecx), %edx
90 nop;nop;nop;nop
92 /* @indntpoff IE -> LE against hidden but not local var */
93 movl %gs:0, %eax
94 nop;nop
95 addl sh7@indntpoff, %eax
96 nop;nop;nop;nop
98 /* @indntpoff direct %gs access IE -> LE against hidden but not
99 local var */
100 movl sh8@indntpoff, %edx
101 nop;nop
102 movl %gs:(%edx), %eax
103 nop;nop;nop;nop
105 /* LE @tpoff, global var defined in exec */
106 movl $sg1@tpoff, %edx
107 nop;nop
108 movl %gs:0, %eax
109 nop;nop
110 subl %edx, %eax
111 nop;nop;nop;nop
113 /* LE @tpoff, local var */
114 movl $-1+bl1@tpoff, %eax
115 nop;nop
116 movl %gs:0, %edx
117 nop;nop
118 subl %eax, %edx
119 nop;nop;nop;nop
121 /* LE @tpoff, hidden var defined in exec */
122 movl $sh1@tpoff-3, %eax
123 nop;nop
124 movl %gs:0, %edx
125 nop;nop
126 subl %eax, %edx
127 nop;nop;nop;nop
129 /* LE @ntpoff, global var defined in exec */
130 movl %gs:0, %eax
131 nop;nop
132 leal sg2@ntpoff(%eax), %edx
133 nop;nop;nop;nop
135 /* LE @ntpoff, local var, non-canonical sequence */
136 movl $2+bl2@ntpoff, %eax
137 nop;nop
138 movl %gs:0, %edx
139 nop;nop
140 addl %eax, %edx
141 nop;nop;nop;nop
143 /* LE @ntpoff, hidden var defined in exec, non-canonical sequence */
144 movl %gs:0, %edx
145 nop;nop
146 addl $sh2@ntpoff+1, %edx
147 nop;nop;nop;nop
149 /* Direct %gs access */
151 /* LE @ntpoff, global var defined in exec */
152 movl %gs:sg3@ntpoff, %eax
153 nop;nop;nop;nop
155 /* LE @ntpoff, local var */
156 movl %gs:bl3@ntpoff+3, %edx
157 nop;nop;nop;nop
159 /* LE @ntpoff, hidden var defined in exec */
160 movl %gs:1+sh3@ntpoff, %edx
161 nop;nop;nop;nop
163 movl -4(%ebp), %ebx
164 leave