| 1 | .text |
| 2 | .globl ___tls_get_addr |
| 3 | .type ___tls_get_addr, @function |
| 4 | ___tls_get_addr: |
| 5 | ret |
| 6 | .size ___tls_get_addr, .-___tls_get_addr |
| 7 | .globl _start |
| 8 | .type _start, @function |
| 9 | _start: |
| 10 | pushl %ebp |
| 11 | movl %esp, %ebp |
| 12 | pushl %esi |
| 13 | pushl %ebx |
| 14 | call .L3 |
| 15 | .L3: |
| 16 | popl %ebx |
| 17 | addl $_GLOBAL_OFFSET_TABLE_+[.-.L3], %ebx |
| 18 | movl %gs:foo2@NTPOFF, %esi |
| 19 | addl %gs:foo1@NTPOFF, %esi |
| 20 | movl foo3@GOTNTPOFF(%ebx), %eax |
| 21 | addl %gs:(%eax), %esi |
| 22 | leal foo4@TLSGD(,%ebx,1), %eax |
| 23 | call ___tls_get_addr@PLT |
| 24 | addl (%eax), %esi |
| 25 | leal foo5@TLSGD(,%ebx,1), %eax |
| 26 | call ___tls_get_addr@PLT |
| 27 | addl (%eax), %esi |
| 28 | movl %esi, %eax |
| 29 | popl %ebx |
| 30 | popl %esi |
| 31 | leave |
| 32 | ret |
| 33 | .size _start, .-_start |
| 34 | .globl foo1 |
| 35 | .section .tbss,"awT",@nobits |
| 36 | .align 4 |
| 37 | .type foo1, @object |
| 38 | .size foo1, 4 |
| 39 | foo1: |
| 40 | .zero 4 |
| 41 | .globl foo2 |
| 42 | .align 4 |
| 43 | .type foo2, @object |
| 44 | .size foo2, 4 |
| 45 | foo2: |
| 46 | .zero 4 |
| 47 | .globl foo3 |
| 48 | .align 4 |
| 49 | .type foo3, @object |
| 50 | .size foo3, 4 |
| 51 | foo3: |
| 52 | .zero 4 |
| 53 | .globl foo4 |
| 54 | .align 4 |
| 55 | .type foo4, @object |
| 56 | .size foo4, 4 |
| 57 | foo4: |
| 58 | .zero 4 |
| 59 | .globl foo5 |
| 60 | .align 4 |
| 61 | .type foo5, @object |
| 62 | .size foo5, 4 |
| 63 | foo5: |
| 64 | .zero 4 |