diff options
Diffstat (limited to 'ld/testsuite/ld-sh/tlsbin.s')
-rw-r--r-- | ld/testsuite/ld-sh/tlsbin.s | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/ld/testsuite/ld-sh/tlsbin.s b/ld/testsuite/ld-sh/tlsbin.s new file mode 100644 index 0000000..642eb3d --- /dev/null +++ b/ld/testsuite/ld-sh/tlsbin.s @@ -0,0 +1,90 @@ + .section ".tbss", "awT", @nobits + .globl bg1, bg2 +bg1: .space 4 +bg2: .space 4 +bl1: .space 4 +bl2: .space 4 + .text + .globl _start + .type _start,@function +_start: + mov.l r12,@-r15 + mov.l r14,@-r15 + mov r15,r14 + ! Set up .GOT pointer for non-pic @gottpoff sequences + mova .L3,r0 + mov.l .L3,r12 + add r0,r12 + 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 sG3@GOTTPOFF +2: + nop;nop;nop;nop + + ! @GOTTPOFF IE -> LE against global var defined in exec + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r0,r1 + .align 2 +1: .long bg1@GOTTPOFF +2: + nop;nop;nop;nop + + ! @GOTTPOFF IE -> LE against local var + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r0,r1 + .align 2 +1: .long bl2@GOTTPOFF +2: + nop;nop;nop;nop + + ! @GOTTPOFF IE -> LE 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 + + ! LE @TPOFF, global var defined in exec + stc gbr,r1 + mov.l .L4,r0 + add r1,r0 + nop;nop;nop;nop + + ! LE @TPOFF, local var + stc gbr,r1 + mov.l .L5,r0 + add r1,r0 + nop;nop;nop;nop + + ! LE @TPOFF, hidden var defined in exec + stc gbr,r1 + mov.l .L6,r0 + add r1,r0 + nop;nop;nop;nop + + mov r14,r15 + rts + mov.l @r15+,r14 + + .align 2 +.L3: .long _GLOBAL_OFFSET_TABLE_ +.L4: .long sg1@TPOFF +.L5: .long bl1@TPOFF +.L6: .long sh1@TPOFF |