diff options
author | Kaz Kojima <kkojima@rr.iij4u.or.jp> | 2002-10-11 14:44:55 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@rr.iij4u.or.jp> | 2002-10-11 14:44:55 +0000 |
commit | 6c381eeb71e6f61062fb64795097e144d48fa798 (patch) | |
tree | 12b7b3e030baa928d152f3d6a3fa9eed99edb1a8 /ld/testsuite/ld-sh/tlsbinpic.s | |
parent | 94a03f18b830422643115cfdae48aed9cdc5c485 (diff) | |
download | gdb-6c381eeb71e6f61062fb64795097e144d48fa798.zip gdb-6c381eeb71e6f61062fb64795097e144d48fa798.tar.gz gdb-6c381eeb71e6f61062fb64795097e144d48fa798.tar.bz2 |
* ld-sh/rd-sh.exp: If the test matches *-dso.d, copy the output
of linker to the file tmpdir/*-dso.so.
* ld-sh/tlsbin.s, ld-sh/tlsbinpic.s, ld-sh/tlslib.s: New.
* ld-sh/tlsbin-0-dso.d: New.
* ld-sh/tlsbin-1.d: New.
* ld-sh/tlsbin-2.d: New.
* ld-sh/tlsbin-3.d: New.
* ld-sh/tlsbin-4.d: New.
* ld-sh/tlspic1.s, ld-sh/tlspic2.s: New.
* ld-sh/tlspic-1.d: New.
* ld-sh/tlspic-2.d: New.
* ld-sh/tlspic-3.d: New.
* ld-sh/tlspic-4.d: New.
Diffstat (limited to 'ld/testsuite/ld-sh/tlsbinpic.s')
-rw-r--r-- | ld/testsuite/ld-sh/tlsbinpic.s | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/ld/testsuite/ld-sh/tlsbinpic.s b/ld/testsuite/ld-sh/tlsbinpic.s new file mode 100644 index 0000000..cb8b361 --- /dev/null +++ b/ld/testsuite/ld-sh/tlsbinpic.s @@ -0,0 +1,206 @@ + ! Force .got aligned to 4K, so it very likely gets at 0x413000 + .data + .balign 4096 + .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 + ! Force .text aligned to 4K, so it very likely gets at 0x401000. + .text + .balign 4096 + .globl fn2 + .type fn2,@function +fn2: + 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 -> IE because variable is not defined in executable + 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 not defined in executable where + ! the 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 -> LE with global variable defined in executable + 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 -> LE with local variable defined in executable + 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 -> LE with hidden variable defined in executable + 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 + + ! LD -> LE with local variable defined in executable + 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 -> LE against hidden 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 .L6,r1 + add r0,r1 + nop;nop + mov.l .L7,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 global var + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r1,r0 + .align 2 +1: .long sG4@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 sg1@GOTTPOFF +2: + nop;nop;nop;nop + + ! @GOTTPOFF IE -> LE against hidden var + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r0,r1 + .align 2 +1: .long sh1@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 sl2@DTPOFF +.L6: .long sh1@DTPOFF +.L7: .long sh2@DTPOFF + ! Fill page with 0. + .space .L8-. + .balign 4096 +.L8: |