diff options
author | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
commit | cf3cdbf8b3cda61a619299e7966a83df66244036 (patch) | |
tree | 201e2bcfc955f16802d3257112d29736cb3a3ce8 /binutils-2.21/ld/testsuite/ld-s390/tlspic1.s | |
parent | e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 (diff) | |
download | toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.zip toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.gz toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.bz2 |
Add binutils-2.21.
Use --enable-gold=default for dual linker support.
Change-Id: Id1a744c7db58a0b5e7a3be174cdfa875f2f86e49
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-s390/tlspic1.s')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-s390/tlspic1.s | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-s390/tlspic1.s b/binutils-2.21/ld/testsuite/ld-s390/tlspic1.s new file mode 100644 index 0000000..28b9c3a --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-s390/tlspic1.s @@ -0,0 +1,208 @@ + .section ".tdata", "awT", @progbits + .balign 32 + .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 + .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 + .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 +sg1: .long 17 +sg2: .long 18 +sg3: .long 19 +sg4: .long 20 +sg5: .long 21 +sg6: .long 22 +sg7: .long 23 +sg8: .long 24 +sl1: .long 65 +sl2: .long 66 +sl3: .long 67 +sl4: .long 68 +sl5: .long 69 +sl6: .long 70 +sl7: .long 71 +sl8: .long 72 +sh1: .long 257 +sh2: .long 258 +sh3: .long 259 +sh4: .long 260 +sh5: .long 261 +sh6: .long 262 +sh7: .long 263 +sh8: .long 264 + .text + .globl fn1 + .type fn1,@function + .balign 64 +fn1: + /* Funtion prolog */ + stm %r6,%r14,24(%r15) + bras %r13,.LTN1 + /* Literal pool */ +.LT1: +.LC0: + .long _GLOBAL_OFFSET_TABLE_-.LT1 +.LC1: + .long __tls_get_offset@plt-.LT1 +.LC2: + .long sg1@tlsgd +.LC3: + .long sg2@tlsgd +.LC4: + .long sl1@tlsgd +.LC5: + .long sl2@tlsgd +.LC6: + .long sh1@tlsgd +.LC7: + .long sh2@tlsgd +.LC8: + .long sH1@tlsgd +.LC9: + .long sH2@tlsgd +.LC10: + .long sl1@tlsldm +.LC11: + .long sl1@dtpoff +.LC12: + .long sl2@dtpoff +.LC13: + .long sh1@tlsldm +.LC14: + .long sh1@dtpoff +.LC15: + .long sh2@dtpoff +.LC16: + .long sH1@tlsldm +.LC17: + .long sH1@dtpoff +.LC18: + .long sH2@dtpoff +.LC19: + .long sg2@gotntpoff +.LC20: + .long sl2@gotntpoff +.LC21: + .long sh2@gotntpoff +.LC22: + .long sH2@gotntpoff +.LTN1: + /* Funtion prolog */ + lr %r14,%r15 + l %r12,.LC0-.LT1(%r13) + ahi %r15,-96 + la %r12,0(%r12,%r13) + st %r14,0(%r14) + + /* Extract TCB and load branch offset */ + ear %r9,%a0 + l %r7,.LC1-.LT1(%r13) + + /* GD */ + l %r2,.LC2-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sg1 + la %r2,0(%r2,%r9) + + /* GD -> IE because variable is referenced through IE too */ + l %r2,.LC3-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sg2 + la %r2,0(%r2,%r9) + + /* GD against local variable */ + l %r2,.LC4-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sl1 + la %r2,0(%r2,%r9) + + /* GD -> IE against local variable referenced through IE too */ + l %r2,.LC5-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sl2 + la %r2,0(%r2,%r9) + + /* GD against hidden and local variable */ + l %r2,.LC6-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sh1 + la %r2,0(%r2,%r9) + + /* GD -> IE against hidden and local variable referenced through + IE too */ + l %r2,.LC7-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sh2 + la %r2,0(%r2,%r9) + + /* GD against hidden but not local variable */ + l %r2,.LC8-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sH1 + la %r2,0(%r2,%r9) + + /* GD -> IE against hidden but not local variable referenced through + IE too */ + l %r2,.LC9-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_gdcall:sH2 + la %r2,0(%r2,%r9) + + /* LD */ + l %r2,.LC10-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_ldcall:sl1 + la %r3,0(%r2,%r9) + l %r4,.LC11-.LT1(%r13) + la %r5,0(%r4,%r3) + l %r4,.LC12-.LT1(%r13) + la %r5,0(%r4,%r3) + + /* LD against hidden and local variables */ + l %r2,.LC13-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_ldcall:sh1 + la %r3,0(%r2,%r9) + l %r4,.LC14-.LT1(%r13) + la %r5,0(%r4,%r3) + l %r4,.LC13-.LT1(%r13) + la %r5,0(%r5,%r3) + + /* LD against hidden but not local variables */ + l %r2,.LC16-.LT1(%r13) + bas %r14,0(%r7,%r13):tls_ldcall:sH1 + la %r3,0(%r2,%r9) + l %r3,.LC17-.LT1(%r13) + la %r5,0(%r4,%r3) + l %r4,.LC18-.LT1(%r13) + la %r5,0(%r4,%r3) + + /* IE against global var */ + l %r3,.LC19-.LT1(%r13) + l %r3,0(%r3,%r12):tls_load:sg2 + la %r3,0(%r3,%r3) + + /* IE against local var */ + l %r3,.LC20-.LT1(%r13) + l %r4,0(%r3,%r12):tls_load:sl2 + la %r5,0(%r4,%r3) + + /* IE against hidden and local var */ + l %r3,.LC21-.LT1(%r13) + l %r4,0(%r3,%r12):tls_load:sh2 + la %r5,0(%r4,%r3) + + /* IE against hidden but not local var */ + l %r3,.LC22-.LT1(%r13) + l %r4,0(%r3,%r12):tls_load:sH2 + la %r5,0(%r4,%r3) + + /* IE against global var with small got access (no optimization) */ + l %r3,sg5@gotntpoff(%r12) + la %r3,0(%r3,%r9) + + /* IE against local var with small got access (no optimization) */ + l %r3,sl5@gotntpoff(%r12) + la %r3,0(%r3,%r9) + + /* IE against hidden and local var with small got access + (no optimization) */ + l %r3,sh5@gotntpoff(%r12) + la %r3,0(%r3,%r9) + + /* IE against hidden but not local var with small got access + (no optimization) */ + l %r3,sH5@gotntpoff(%r12) + la %r3,0(%r3,%r9) + + /* Function epilog */ + lm %r6,%r14,120(%r15) + br %r14 + |