Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-i386 / tlsbin.s
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
30
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
36
37         /* @indntpoff IE against global var  */
38         movl    %gs:0, %eax
39         nop;nop
40         addl    sG7@indntpoff, %eax
41         nop;nop;nop;nop
42
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
48
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
54
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
60
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
67
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
73
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
79
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
85
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
91
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
97
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
104
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
112
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
120
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
128
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
134
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
142
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
148
149         /* Direct %gs access  */
150
151         /* LE @ntpoff, global var defined in exec  */
152         movl    %gs:sg3@ntpoff, %eax
153         nop;nop;nop;nop
154
155         /* LE @ntpoff, local var  */
156         movl    %gs:bl3@ntpoff+3, %edx
157         nop;nop;nop;nop
158
159         /* LE @ntpoff, hidden var defined in exec  */
160         movl    %gs:1+sh3@ntpoff, %edx
161         nop;nop;nop;nop
162
163         movl    -4(%ebp), %ebx
164         leave
165         ret