Upload Tizen:Base source
[external/binutils.git] / gas / testsuite / gas / i386 / tlsnopic.s
1         .section ".tdata", "awT", @progbits
2         .globl baz
3         .hidden baz
4         .globl var
5         .hidden var2
6 bar:    .long 27
7 baz:    .long 29
8 var:    .long 31
9 var2:   .long 33
10         .text
11         .globl  fn
12         .type   fn,@function
13 fn:
14         /* Main binary, no PIC.  */
15 1:      movl    1b, %edx
16         addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
17
18         /* foo can be anywhere in startup TLS.  */
19         movl    %gs:0, %eax
20         subl    foo@GOTTPOFF(%edx), %eax
21         /* %eax now contains &foo.  */
22
23         /* bar only in the main program.  */
24         movl    %gs:0, %eax
25         subl    $bar@TPOFF, %eax
26         /* %eax now contains &bar.  */
27
28         /* baz only in the main program.  */
29         movl    %gs:0, %ecx
30         /* Arbitrary instructions in between.  */
31         nop
32         subl    $baz@TPOFF, %ecx
33         /* %ecx now contains &baz.  */
34
35         /* var and var2 only in the main program.  */
36         movl    %gs:0, %ecx
37         /* Arbitrary instructions in between.  */
38         nop
39         nop
40         leal    var@NTPOFF(%ecx), %eax
41         /* Arbitrary instructions in between.  */
42         nop
43         leal    var2@NTPOFF(%ecx), %edx
44
45         /* foo can be anywhere in startup TLS.  */
46         movl    foo@INDNTPOFF, %eax
47         movl    %gs:(%eax), %eax
48         /* %eax now contains foo.  */
49
50         movl    %gs:0, %eax
51         addl    foo@INDNTPOFF, %eax
52         /* %eax now contains &foo.  */
53
54         ret