tlspie2.s 956 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. movq foo3@GOTTPOFF(%rip), %rax
  11. pushq %rbx
  12. movl %fs:foo2@TPOFF, %ebx
  13. addl %fs:foo1@TPOFF, %ebx
  14. addl %fs:(%rax), %ebx
  15. leaq foo4@TLSLD(%rip), %rdi
  16. call *__tls_get_addr@GOTPCREL(%rip)
  17. addl foo4@DTPOFF(%rax), %ebx
  18. .byte 0x66
  19. leaq foo5@TLSGD(%rip), %rdi
  20. .byte 0x66
  21. rex64
  22. call *__tls_get_addr@GOTPCREL(%rip)
  23. addl (%rax), %ebx
  24. movl %ebx, %eax
  25. popq %rbx
  26. ret
  27. .size _start, .-_start
  28. .globl foo1
  29. .section .tbss,"awT",@nobits
  30. .align 4
  31. .type foo1, @object
  32. .size foo1, 4
  33. foo1:
  34. .zero 4
  35. .globl foo2
  36. .align 4
  37. .type foo2, @object
  38. .size foo2, 4
  39. foo2:
  40. .zero 4
  41. .globl foo3
  42. .align 4
  43. .type foo3, @object
  44. .size foo3, 4
  45. foo3:
  46. .zero 4
  47. .globl foo4
  48. .align 4
  49. .type foo4, @object
  50. .size foo4, 4
  51. foo4:
  52. .zero 4
  53. .globl foo5
  54. .align 4
  55. .type foo5, @object
  56. .size foo5, 4
  57. foo5:
  58. .zero 4