binutils-gdb/ld/testsuite/ld-sh/tlspic1.s

268 lines
3.6 KiB
ArmAsm

.section ".tdata", "awT", @progbits
.globl sg1, sg2
.globl sh1, sh2
.hidden sh1, sh2
sg1: .long 17
sg2: .long 18
sl1: .long 65
sl2: .long 66
sh1: .long 257
sh2: .long 258
.text
.align 1
.globl fn1
.type fn1,@function
fn1:
mov.l r12,@-r15
mov.l r14,@-r15
sts.l pr,@-r15
mova .L3,r0
mov.l .L3,r12
add r0,r12
mov r15,r14
nop;nop;nop;nop
! GD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE because variable is referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against local variable referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden and local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden and local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden but not local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden but not local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! LD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L4,r1
add r0,r1
nop;nop
mov.l .L5,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden and local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L6,r1
add r0,r1
nop;nop
mov.l .L7,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden but not local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L8,r1
add r0,r1
nop;nop
mov.l .L9,r2
add r0,r2
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sg2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sl2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden and local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sh2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden but not local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sH2@GOTTPOFF
2:
nop;nop;nop;nop
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
rts
mov.l @r15+,r12
.align 2
.L3: .long _GLOBAL_OFFSET_TABLE_
.L4: .long sl1@DTPOFF
.L5: .long sl1@DTPOFF + 4
.L6: .long sh1@DTPOFF
.L7: .long sh2@DTPOFF
.L8: .long sH1@DTPOFF
.L9: .long sH2@DTPOFF