2 // RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %s -o %t.o
3 // RUN: ld.lld %t.o -o %t1
4 // RUN: llvm-readobj -r %t1 | FileCheck --check-prefix=NORELOC %s
5 // RUN: llvm-objdump -d %t1 | FileCheck --check-prefix=DISASM %s
7 // NORELOC: Relocations [
10 // DISASM: Disassembly of section .text:
11 // DISASM-NEXT: _start:
13 // DISASM-NEXT: 11000: 65 a1 00 00 00 00 movl %gs:0, %eax
14 // DISASM-NEXT: 11006: 90 nop
15 // DISASM-NEXT: 11007: 8d 74 26 00 leal (%esi,%eiz), %esi
16 // DISASM-NEXT: 1100b: 8d 90 f8 ff ff ff leal -8(%eax), %edx
17 // DISASM-NEXT: 11011: 65 a1 00 00 00 00 movl %gs:0, %eax
18 // DISASM-NEXT: 11017: 90 nop
19 // DISASM-NEXT: 11018: 8d 74 26 00 leal (%esi,%eiz), %esi
20 // DISASM-NEXT: 1101c: 8d 90 fc ff ff ff leal -4(%eax), %edx
22 // 4294967288 == 0xFFFFFFF8
23 // 4294967292 == 0xFFFFFFFC
24 // DISASM-NEXT: 11022: 65 a1 00 00 00 00 movl %gs:0, %eax
25 // DISASM-NEXT: 11028: c7 c0 f8 ff ff ff movl $4294967288, %eax
26 // DISASM-NEXT: 1102e: 65 a1 00 00 00 00 movl %gs:0, %eax
27 // DISASM-NEXT: 11034: c7 c0 fc ff ff ff movl $4294967292, %eax
28 // DISASM-NEXT: 1103a: 65 a1 00 00 00 00 movl %gs:0, %eax
29 // DISASM-NEXT: 11040: 8d 80 f8 ff ff ff leal -8(%eax), %eax
30 // DISASM-NEXT: 11046: 65 a1 00 00 00 00 movl %gs:0, %eax
31 // DISASM-NEXT: 1104c: 8d 80 fc ff ff ff leal -4(%eax), %eax
33 .section .tbss,"awT",@nobits
48 .globl ___tls_get_addr
49 .type ___tls_get_addr,@function
56 leal tls0@tlsldm(%ebx),%eax
57 call ___tls_get_addr@plt
58 leal tls0@dtpoff(%eax),%edx
59 leal tls1@tlsldm(%ebx),%eax
60 call ___tls_get_addr@plt
61 leal tls1@dtpoff(%eax),%edx
64 movl tls0@gotntpoff(%ebx),%eax
66 movl tls1@gotntpoff(%ebx),%eax
68 addl tls0@gotntpoff(%ebx),%eax
70 addl tls1@gotntpoff(%ebx),%eax