139 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o3// RUN: ld.lld %t.o -o %t14// RUN: llvm-readobj -r %t1 | FileCheck --check-prefix=NORELOC %s5// RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t1 | FileCheck --check-prefix=DISASM %s6 7// NORELOC: Relocations [8// NORELOC-NEXT: ]9 10// DISASM: <_start>:11// DISASM-NEXT: movq $-8, %rax12// DISASM-NEXT: movq $-8, %r1513// DISASM-NEXT: leaq -8(%rax), %rax14// DISASM-NEXT: leaq -8(%r15), %r1515// DISASM-NEXT: addq $-8, %rsp16// DISASM-NEXT: addq $-8, %r1217// DISASM-NEXT: movq $-4, %rax18// DISASM-NEXT: movq $-4, %r1519// DISASM-NEXT: leaq -4(%rax), %rax20// DISASM-NEXT: leaq -4(%r15), %r1521// DISASM-NEXT: addq $-4, %rsp22// DISASM-NEXT: addq $-4, %r1223# EGPR24// DISASM-NEXT: movq $-8, %r1625// DISASM-NEXT: movq $-8, %r2026// DISASM-NEXT: movq $-4, %r1627// DISASM-NEXT: addq $-8, %r1628// DISASM-NEXT: addq $-8, %r2829// DISASM-NEXT: addq $-4, %r1630# NDD31// DISASM-NEXT: addq $-8, %r16, %r1632// DISASM-NEXT: addq $-8, %r16, %r2033// DISASM-NEXT: addq $-8, %r16, %rax34// DISASM-NEXT: addq $-8, %rax, %r1635// DISASM-NEXT: addq $-8, %r8, %r1636// DISASM-NEXT: addq $-8, %rax, %r1237# NDD + NF38// DISASM-NEXT: {nf} addq $-8, %r8, %r1639// DISASM-NEXT: {nf} addq $-8, %rax, %r1240# NF41// DISASM-NEXT: {nf} addq $-8, %r1242 43// LD to LE:44// DISASM-NEXT: movq %fs:0, %rax45// DISASM-NEXT: leaq -8(%rax), %rcx46// DISASM-NEXT: movq %fs:0, %rax47// DISASM-NEXT: leaq -4(%rax), %rcx48 49// GD to LE:50// DISASM-NEXT: movq %fs:0, %rax51// DISASM-NEXT: leaq -8(%rax), %rax52// DISASM-NEXT: movq %fs:0, %rax53// DISASM-NEXT: leaq -4(%rax), %rax54 55// LD to LE:56// DISASM: <_DTPOFF64_1>:57// DISASM-NEXT: clc58// DISASM: <_DTPOFF64_2>:59// DISASM-NEXT: cld60 61.type tls0,@object62.section .tbss,"awT",@nobits63.globl tls064.align 465tls0:66 .long 067 .size tls0, 468 69.type tls1,@object70.globl tls171.align 472tls1:73 .long 074 .size tls1, 475 76.section .text77.globl _start78_start:79 movq tls0@GOTTPOFF(%rip), %rax80 movq tls0@GOTTPOFF(%rip), %r1581 addq tls0@GOTTPOFF(%rip), %rax82 addq tls0@GOTTPOFF(%rip), %r1583 addq tls0@GOTTPOFF(%rip), %rsp84 addq tls0@GOTTPOFF(%rip), %r1285 movq tls1@GOTTPOFF(%rip), %rax86 movq tls1@GOTTPOFF(%rip), %r1587 addq tls1@GOTTPOFF(%rip), %rax88 addq tls1@GOTTPOFF(%rip), %r1589 addq tls1@GOTTPOFF(%rip), %rsp90 addq tls1@GOTTPOFF(%rip), %r1291 # EGPR92 movq tls0@GOTTPOFF(%rip), %r1693 movq tls0@GOTTPOFF(%rip), %r2094 movq tls1@GOTTPOFF(%rip), %r1695 addq tls0@GOTTPOFF(%rip), %r1696 addq tls0@GOTTPOFF(%rip), %r2897 addq tls1@GOTTPOFF(%rip), %r1698 # NDD99 addq tls0@GOTTPOFF(%rip), %r16, %r16100 addq tls0@GOTTPOFF(%rip), %r16, %r20101 addq tls0@GOTTPOFF(%rip), %r16, %rax102 addq tls0@GOTTPOFF(%rip), %rax, %r16103 addq %r8, tls0@GOTTPOFF(%rip), %r16104 addq tls0@GOTTPOFF(%rip), %rax, %r12105 # NDD + NF106 {nf} addq %r8, tls0@GOTTPOFF(%rip), %r16107 {nf} addq tls0@GOTTPOFF(%rip), %rax, %r12108 # NF109 {nf} addq tls0@GOTTPOFF(%rip), %r12110 111 // LD to LE112 leaq tls0@tlsld(%rip), %rdi113 callq __tls_get_addr@PLT114 leaq tls0@dtpoff(%rax),%rcx115 leaq tls1@tlsld(%rip), %rdi116 callq __tls_get_addr@PLT117 leaq tls1@dtpoff(%rax),%rcx118 119 // GD to LE120 .byte 0x66121 leaq tls0@tlsgd(%rip),%rdi122 .word 0x6666123 rex64124 call __tls_get_addr@plt125 .byte 0x66126 leaq tls1@tlsgd(%rip),%rdi127 .word 0x6666128 rex64129 call __tls_get_addr@plt130 131 // LD to LE132_DTPOFF64_1:133 .quad tls0@DTPOFF134 nop135 136_DTPOFF64_2:137 .quad tls1@DTPOFF138 nop139