136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s 236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Check that the appropriate relocations were created. 436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: Relocations [ 636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: Section (2) .rel.text { 736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: R_MIPS_TLS_LDM 836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: R_MIPS_TLS_DTPREL_HI16 936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: R_MIPS_TLS_DTPREL_LO16 1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: } 1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: ] 1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .text 1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .abicalls 1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .section .mdebug.abi32,"",@progbits 1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .file "/home/espindola/llvm/llvm/test/MC/Mips/elf-tls.ll" 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .text 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .globl f1 1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .align 2 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .type f1,@function 2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomips16 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .ent f1 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf1: # @f1 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .frame $sp,24,$ra 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .mask 0x80000000,-4 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .fmask 0x00000000,0 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noreorder 2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomacro 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noat 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0: # %entry 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lui $2, %hi(_gp_disp) 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $2, $2, %lo(_gp_disp) 3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, -24 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines sw $ra, 20($sp) # 4-byte Folded Spill 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addu $gp, $2, $25 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $25, %call16(__tls_get_addr)($gp) 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jalr $25 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $4, $gp, %tlsgd(t1) 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $2, 0($2) 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $ra, 20($sp) # 4-byte Folded Reload 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jr $ra 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, 24 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set at 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set macro 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set reorder 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .end f1 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp0: 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .size f1, ($tmp0)-f1 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .globl f2 5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .align 2 5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .type f2,@function 5336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomips16 5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .ent f2 5536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf2: # @f2 5636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .frame $sp,24,$ra 5736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .mask 0x80000000,-4 5836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .fmask 0x00000000,0 5936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noreorder 6036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomacro 6136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noat 6236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0: # %entry 6336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lui $2, %hi(_gp_disp) 6436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $2, $2, %lo(_gp_disp) 6536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, -24 6636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines sw $ra, 20($sp) # 4-byte Folded Spill 6736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addu $gp, $2, $25 6836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $25, %call16(__tls_get_addr)($gp) 6936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jalr $25 7036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $4, $gp, %tlsgd(t2) 7136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $2, 0($2) 7236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $ra, 20($sp) # 4-byte Folded Reload 7336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jr $ra 7436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, 24 7536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set at 7636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set macro 7736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set reorder 7836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .end f2 7936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp1: 8036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .size f2, ($tmp1)-f2 8136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 8236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .globl f3 8336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .align 2 8436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .type f3,@function 8536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomips16 8636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .ent f3 8736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf3: # @f3 8836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .frame $sp,24,$ra 8936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .mask 0x80000000,-4 9036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .fmask 0x00000000,0 9136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noreorder 9236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set nomacro 9336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set noat 9436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0: # %entry 9536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lui $2, %hi(_gp_disp) 9636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $2, $2, %lo(_gp_disp) 9736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, -24 9836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines sw $ra, 20($sp) # 4-byte Folded Spill 9936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addu $gp, $2, $25 10036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $25, %call16(__tls_get_addr)($gp) 10136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jalr $25 10236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $4, $gp, %tlsldm(f3.i) 10336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lui $1, %dtprel_hi(f3.i) 10436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addu $1, $1, $2 10536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $2, %dtprel_lo(f3.i)($1) 10636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $2, $2, 1 10736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines sw $2, %dtprel_lo(f3.i)($1) 10836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines lw $ra, 20($sp) # 4-byte Folded Reload 10936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines jr $ra 11036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines addiu $sp, $sp, 24 11136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set at 11236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set macro 11336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .set reorder 11436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .end f3 11536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp2: 11636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .size f3, ($tmp2)-f3 11736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 11836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .type t1,@object # @t1 11936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .section .tbss,"awT",@nobits 12036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .globl t1 12136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .align 2 12236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinest1: 12336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .4byte 0 # 0x0 12436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .size t1, 4 12536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 12636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .type f3.i,@object # @f3.i 12736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .section .tdata,"awT",@progbits 12836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .align 2 12936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf3.i: 13036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .4byte 1 # 0x1 13136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .size f3.i, 4 13236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 13336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 13436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines .text 135