2014-03-29 03:19:28 +08:00
|
|
|
// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s
|
|
|
|
|
|
|
|
// Check that the appropriate relocations were created.
|
|
|
|
|
|
|
|
// CHECK: Relocations [
|
2015-04-15 23:59:37 +08:00
|
|
|
// CHECK: Section {{.*}} .rel.text {
|
2014-03-29 03:19:28 +08:00
|
|
|
// CHECK: R_MIPS_TLS_LDM
|
|
|
|
// CHECK: R_MIPS_TLS_DTPREL_HI16
|
|
|
|
// CHECK: R_MIPS_TLS_DTPREL_LO16
|
|
|
|
// CHECK: }
|
|
|
|
// CHECK: ]
|
|
|
|
|
|
|
|
.text
|
|
|
|
.abicalls
|
|
|
|
.section .mdebug.abi32,"",@progbits
|
|
|
|
.file "/home/espindola/llvm/llvm/test/MC/Mips/elf-tls.ll"
|
|
|
|
.text
|
|
|
|
.globl f1
|
|
|
|
.align 2
|
|
|
|
.type f1,@function
|
|
|
|
.set nomips16
|
|
|
|
.ent f1
|
|
|
|
f1: # @f1
|
|
|
|
.frame $sp,24,$ra
|
|
|
|
.mask 0x80000000,-4
|
|
|
|
.fmask 0x00000000,0
|
|
|
|
.set noreorder
|
|
|
|
.set nomacro
|
|
|
|
.set noat
|
|
|
|
# BB#0: # %entry
|
|
|
|
lui $2, %hi(_gp_disp)
|
|
|
|
addiu $2, $2, %lo(_gp_disp)
|
|
|
|
addiu $sp, $sp, -24
|
|
|
|
sw $ra, 20($sp) # 4-byte Folded Spill
|
|
|
|
addu $gp, $2, $25
|
|
|
|
lw $25, %call16(__tls_get_addr)($gp)
|
|
|
|
jalr $25
|
|
|
|
addiu $4, $gp, %tlsgd(t1)
|
|
|
|
lw $2, 0($2)
|
|
|
|
lw $ra, 20($sp) # 4-byte Folded Reload
|
|
|
|
jr $ra
|
|
|
|
addiu $sp, $sp, 24
|
|
|
|
.set at
|
|
|
|
.set macro
|
|
|
|
.set reorder
|
|
|
|
.end f1
|
|
|
|
$tmp0:
|
|
|
|
.size f1, ($tmp0)-f1
|
|
|
|
|
|
|
|
.globl f2
|
|
|
|
.align 2
|
|
|
|
.type f2,@function
|
|
|
|
.set nomips16
|
|
|
|
.ent f2
|
|
|
|
f2: # @f2
|
|
|
|
.frame $sp,24,$ra
|
|
|
|
.mask 0x80000000,-4
|
|
|
|
.fmask 0x00000000,0
|
|
|
|
.set noreorder
|
|
|
|
.set nomacro
|
|
|
|
.set noat
|
|
|
|
# BB#0: # %entry
|
|
|
|
lui $2, %hi(_gp_disp)
|
|
|
|
addiu $2, $2, %lo(_gp_disp)
|
|
|
|
addiu $sp, $sp, -24
|
|
|
|
sw $ra, 20($sp) # 4-byte Folded Spill
|
|
|
|
addu $gp, $2, $25
|
|
|
|
lw $25, %call16(__tls_get_addr)($gp)
|
|
|
|
jalr $25
|
|
|
|
addiu $4, $gp, %tlsgd(t2)
|
|
|
|
lw $2, 0($2)
|
|
|
|
lw $ra, 20($sp) # 4-byte Folded Reload
|
|
|
|
jr $ra
|
|
|
|
addiu $sp, $sp, 24
|
|
|
|
.set at
|
|
|
|
.set macro
|
|
|
|
.set reorder
|
|
|
|
.end f2
|
|
|
|
$tmp1:
|
|
|
|
.size f2, ($tmp1)-f2
|
|
|
|
|
|
|
|
.globl f3
|
|
|
|
.align 2
|
|
|
|
.type f3,@function
|
|
|
|
.set nomips16
|
|
|
|
.ent f3
|
|
|
|
f3: # @f3
|
|
|
|
.frame $sp,24,$ra
|
|
|
|
.mask 0x80000000,-4
|
|
|
|
.fmask 0x00000000,0
|
|
|
|
.set noreorder
|
|
|
|
.set nomacro
|
|
|
|
.set noat
|
|
|
|
# BB#0: # %entry
|
|
|
|
lui $2, %hi(_gp_disp)
|
|
|
|
addiu $2, $2, %lo(_gp_disp)
|
|
|
|
addiu $sp, $sp, -24
|
|
|
|
sw $ra, 20($sp) # 4-byte Folded Spill
|
|
|
|
addu $gp, $2, $25
|
|
|
|
lw $25, %call16(__tls_get_addr)($gp)
|
|
|
|
jalr $25
|
|
|
|
addiu $4, $gp, %tlsldm(f3.i)
|
|
|
|
lui $1, %dtprel_hi(f3.i)
|
|
|
|
addu $1, $1, $2
|
|
|
|
lw $2, %dtprel_lo(f3.i)($1)
|
|
|
|
addiu $2, $2, 1
|
|
|
|
sw $2, %dtprel_lo(f3.i)($1)
|
|
|
|
lw $ra, 20($sp) # 4-byte Folded Reload
|
|
|
|
jr $ra
|
|
|
|
addiu $sp, $sp, 24
|
|
|
|
.set at
|
|
|
|
.set macro
|
|
|
|
.set reorder
|
|
|
|
.end f3
|
|
|
|
$tmp2:
|
|
|
|
.size f3, ($tmp2)-f3
|
|
|
|
|
|
|
|
.type t1,@object # @t1
|
|
|
|
.section .tbss,"awT",@nobits
|
|
|
|
.globl t1
|
|
|
|
.align 2
|
|
|
|
t1:
|
|
|
|
.4byte 0 # 0x0
|
|
|
|
.size t1, 4
|
|
|
|
|
|
|
|
.type f3.i,@object # @f3.i
|
|
|
|
.section .tdata,"awT",@progbits
|
|
|
|
.align 2
|
|
|
|
f3.i:
|
|
|
|
.4byte 1 # 0x1
|
|
|
|
.size f3.i, 4
|
|
|
|
|
|
|
|
|
|
|
|
.text
|