113 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %s -o %t.o3// RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %p/Inputs/tls-opt-iele-i686-nopic.s -o %tso.o4// RUN: ld.lld -shared -soname=t.so %tso.o -o %tso5// RUN: ld.lld -shared %t.o %tso -o %t16// RUN: llvm-readobj -S -r -d %t1 | FileCheck --check-prefix=GOTRELSHARED %s7// RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t1 | FileCheck --check-prefix=DISASMSHARED %s8 9// GOTRELSHARED: Section {10// GOTRELSHARED: Name: .got11// GOTRELSHARED-NEXT: Type: SHT_PROGBITS12// GOTRELSHARED-NEXT: Flags [13// GOTRELSHARED-NEXT: SHF_ALLOC14// GOTRELSHARED-NEXT: SHF_WRITE15// GOTRELSHARED-NEXT: ]16// GOTRELSHARED-NEXT: Address: 0x338817// GOTRELSHARED-NEXT: Offset: 0x38818// GOTRELSHARED-NEXT: Size: 1619// GOTRELSHARED-NEXT: Link: 020// GOTRELSHARED-NEXT: Info: 021// GOTRELSHARED-NEXT: AddressAlignment: 422// GOTRELSHARED-NEXT: EntrySize: 023// GOTRELSHARED-NEXT: }24// GOTRELSHARED: 0x6FFFFFFA RELCOUNT 825// GOTRELSHARED: Relocations [26// GOTRELSHARED-NEXT: Section ({{.*}}) .rel.dyn {27// GOTRELSHARED-NEXT: 0x22DA R_386_RELATIVE -28// GOTRELSHARED-NEXT: 0x22E2 R_386_RELATIVE -29// GOTRELSHARED-NEXT: 0x22EB R_386_RELATIVE -30// GOTRELSHARED-NEXT: 0x22F4 R_386_RELATIVE -31// GOTRELSHARED-NEXT: 0x22FC R_386_RELATIVE -32// GOTRELSHARED-NEXT: 0x2305 R_386_RELATIVE -33// GOTRELSHARED-NEXT: 0x230E R_386_RELATIVE -34// GOTRELSHARED-NEXT: 0x2317 R_386_RELATIVE -35// GOTRELSHARED-NEXT: 0x3390 R_386_TLS_TPOFF tlsshared036// GOTRELSHARED-NEXT: 0x3394 R_386_TLS_TPOFF tlsshared137// GOTRELSHARED-NEXT: 0x3388 R_386_TLS_TPOFF tlslocal038// GOTRELSHARED-NEXT: 0x338C R_386_TLS_TPOFF tlslocal139// GOTRELSHARED-NEXT: }40// GOTRELSHARED-NEXT: ]41 42// DISASMSHARED: Disassembly of section test:43// DISASMSHARED-EMPTY:44// DISASMSHARED-NEXT: <_start>:45// (.got)[0] = 0x3388 = 1319246// (.got)[1] = 1319647// (.got)[2] = 1320048// (.got)[3] = 1320449// DISASMSHARED-NEXT: 22d8: movl 13192, %ecx50// DISASMSHARED-NEXT: 22de: movl %gs:(%ecx), %eax51// DISASMSHARED-NEXT: 22e1: movl 13192, %eax52// DISASMSHARED-NEXT: 22e6: movl %gs:(%eax), %eax53// DISASMSHARED-NEXT: 22e9: addl 13192, %ecx54// DISASMSHARED-NEXT: 22ef: movl %gs:(%ecx), %eax55// DISASMSHARED-NEXT: 22f2: movl 13196, %ecx56// DISASMSHARED-NEXT: 22f8: movl %gs:(%ecx), %eax57// DISASMSHARED-NEXT: 22fb: movl 13196, %eax58// DISASMSHARED-NEXT: 2300: movl %gs:(%eax), %eax59// DISASMSHARED-NEXT: 2303: addl 13196, %ecx60// DISASMSHARED-NEXT: 2309: movl %gs:(%ecx), %eax61// DISASMSHARED-NEXT: 230c: movl 13200, %ecx62// DISASMSHARED-NEXT: 2312: movl %gs:(%ecx), %eax63// DISASMSHARED-NEXT: 2315: addl 13204, %ecx64// DISASMSHARED-NEXT: 231b: movl %gs:(%ecx), %eax65 66.type tlslocal0,@object67.section .tbss,"awT",@nobits68.globl tlslocal069.align 470tlslocal0:71 .long 072 .size tlslocal0, 473 74.type tlslocal1,@object75.section .tbss,"awT",@nobits76.globl tlslocal177.align 478tlslocal1:79 .long 080 .size tlslocal1, 481 82.section .text83.globl ___tls_get_addr84.type ___tls_get_addr,@function85___tls_get_addr:86 87.section test, "axw"88.globl _start89_start:90movl tlslocal0@indntpoff,%ecx91movl %gs:(%ecx),%eax92 93movl tlslocal0@indntpoff,%eax94movl %gs:(%eax),%eax95 96addl tlslocal0@indntpoff,%ecx97movl %gs:(%ecx),%eax98 99movl tlslocal1@indntpoff,%ecx100movl %gs:(%ecx),%eax101 102movl tlslocal1@indntpoff,%eax103movl %gs:(%eax),%eax104 105addl tlslocal1@indntpoff,%ecx106movl %gs:(%ecx),%eax107 108movl tlsshared0@indntpoff,%ecx109movl %gs:(%ecx),%eax110 111addl tlsshared1@indntpoff,%ecx112movl %gs:(%ecx),%eax113