OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /open8_urisc/trunk/gnu/binutils/ld
    from Rev 95 to Rev 97
    Reverse comparison

Rev 95 → Rev 97

/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
 
/testsuite/ld-s390/tlsbin.dd
0,0 → 1,193
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -dzrj.text
#target: s390-*-*
 
# PT_TLS layout is:
# Offset from Offset from Name
# TCB base TCB end
# 0x00 -0xa0 sg1..sg2
# 0x20 -0x80 sl1..sl2
# 0x40 -0x60 sh1..sh2
# 0x60 -0x40 bg1..bg2
# 0x80 -0x20 bl1..bl2
 
.*: +file format elf32-s390
 
Disassembly of section .text:
 
0+[0-9a-f]+ <fn2>:
# function prolog
+[0-9a-f]+: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+[0-9a-f]+: a7 d5 00 24 bras %r13,[0-9a-f]+ <fn2\+0x4c>
# _GLOBAL_OFFSET_TABLE_
+[0-9a-f]+: [0-9a-f ]+ .long 0x[0-9a-f]+
# __tls_get_addr@plt-.LT1
+[0-9a-f]+: [0-9a-f ]+ .long 0x[0-9a-f]+
# sG1@tlsgd
+[0-9a-f]+: 00 00 00 28 .long 0x00000028
# sG2@tlsgd
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sg1@tlsgd
+[0-9a-f]+: ff ff ff 60 .long 0xffffff60
# sl1@tlsgd
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sh1@tlsgd
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# sl1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
# sl1@dtpoff
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sl2@dtpoff
+[0-9a-f]+: ff ff ff 84 .long 0xffffff84
# sh1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
# sh1@dtpoff
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# sh2@dtpoff
+[0-9a-f]+: ff ff ff a4 .long 0xffffffa4
# sG2@gotntpoff
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sg1@gotntpoff
+[0-9a-f]+: ff ff ff 60 .long 0xffffff60
# sl1@gotntpoff
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sh1@gotntpoff
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# function prolog
+[0-9a-f]+: 18 ef lr %r14,%r15
+[0-9a-f]+: 58 c0 d0 00 l %r12,0\(%r13\)
+[0-9a-f]+: a7 fa ff a0 ahi %r15,-96
+[0-9a-f]+: 41 cc d0 00 la %r12,0\(%r12,%r13\)
+[0-9a-f]+: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB and load branch offset
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
+[0-9a-f]+: 58 70 d0 04 l %r7,4\(%r13\)
# GD -> IE because variable is not defined in executable
+[0-9a-f]+: 58 20 d0 08 l %r2,8\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is not defined in executable where
# the variable is referenced through IE too
+[0-9a-f]+: 58 20 d0 0c l %r2,12\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with global variable defined in executable
+[0-9a-f]+: 58 20 d0 10 l %r2,16\(%r13\)
+[0-9a-f]+: 47 00 00 00 nop 0
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with local variable defined in executable
+[0-9a-f]+: 58 20 d0 14 l %r2,20\(%r13\)
+[0-9a-f]+: 47 00 00 00 nop 0
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with hidden variable defined in executable
+[0-9a-f]+: 58 20 d0 18 l %r2,24\(%r13\)
+[0-9a-f]+: 47 00 00 00 nop 0
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD -> LE
+[0-9a-f]+: 58 20 d0 1c l %r2,28\(%r13\)
+[0-9a-f]+: 47 00 00 00 nop 0
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: 58 40 d0 20 l %r4,32\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: 58 40 d0 24 l %r4,36\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD -> LE against hidden variables
+[0-9a-f]+: 58 20 d0 28 l %r2,40\(%r13\)
+[0-9a-f]+: 47 00 00 00 nop 0
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: 58 40 d0 2c l %r4,44\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: 58 40 d0 30 l %r4,48\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+[0-9a-f]+: 58 30 d0 34 l %r3,52\(%r13\)
+[0-9a-f]+: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+[0-9a-f]+: 58 33 90 00 l %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+[0-9a-f]+: 58 30 d0 38 l %r3,56\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+[0-9a-f]+: 58 30 d0 3c l %r3,60\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden var
+[0-9a-f]+: 58 30 d0 40 l %r3,64\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+[0-9a-f]+: 58 30 c0 14 l %r3,20\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with small got access
# (no optimization)
+[0-9a-f]+: 58 30 c0 18 l %r3,24\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+[0-9a-f]+: 58 30 c0 10 l %r3,16\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden var with small got access (no optimization)
+[0-9a-f]+: 58 30 c0 1c l %r3,28\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+[0-9a-f]+: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+[0-9a-f]+: 07 fe br %r14
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
 
0+[0-9a-f]+ <_start>:
# function prolog
+[0-9a-f]+: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+[0-9a-f]+: a7 d5 00 0c bras %r13,[0-9a-f]+ <_start\+0x1c>
# sG6@indntpoff
+[0-9a-f]+: 00 40 15 a4 .long 0x004015a4
# bg6@indntpoff
+[0-9a-f]+: ff ff ff d4 .long 0xffffffd4
# bl6@indntpoff
+[0-9a-f]+: ff ff ff f4 .long 0xfffffff4
# sh6@indntpoff
+[0-9a-f]+: ff ff ff b4 .long 0xffffffb4
# sg3@indntpoff
+[0-9a-f]+: ff ff ff 68 .long 0xffffff68
# function prolog
+[0-9a-f]+: 18 ef lr %r14,%r15
+[0-9a-f]+: a7 fa ff a0 ahi %r15,-96
+[0-9a-f]+: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
# IE against global var
+[0-9a-f]+: 58 30 d0 00 l %r3,0\(%r13\)
+[0-9a-f]+: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+[0-9a-f]+: 58 30 d0 04 l %r3,4\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+[0-9a-f]+: 58 30 d0 08 l %r3,8\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden but not local var
+[0-9a-f]+: 58 30 d0 0c l %r3,12\(%r13\)
+[0-9a-f]+: 18 43 lr %r4,%r3
+[0-9a-f]+: 07 00 nopr %r0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# LE, global var defined in exec
+[0-9a-f]+: 58 40 d0 10 l %r4,16\(%r13\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# function epilog
+[0-9a-f]+: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+[0-9a-f]+: 07 fe br %r14
/testsuite/ld-s390/tlspic2.s
0,0 → 1,11
.section ".tbss", "awT", @nobits
.globl sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
.hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
sH1: .space 4
sH2: .space 4
sH3: .space 4
sH4: .space 4
sH5: .space 4
sH6: .space 4
sH7: .space 4
sH8: .space 4
/testsuite/ld-s390/tlspic.dd
0,0 → 1,189
#source: tlspic1.s
#source: tlspic2.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -dzrj.text
#target: s390-*-*
 
.*: +file format elf32-s390
 
Disassembly of section .text:
 
0+[0-9a-f]+ <fn1>:
# function prolog
+[0-9a-f]+: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+[0-9a-f]+: a7 d5 00 30 bras %r13,[0-9a-f]+ <fn1\+0x64>
# _GLOBAL_OFFSET_TABLE_-.LT1
+[0-9a-f]+: [0-9a-f ]+ .long 0x[0-9a-f]+
# __tls_get_addr@plt-.LT1
+[0-9a-f]+: [0-9a-f ]+ .long 0x[0-9a-f]+
# sg1@tlsgd
+[0-9a-f]+: 00 00 00 38 .long 0x00000038
# sg2@tlsgd
+[0-9a-f]+: 00 00 00 48 .long 0x00000048
# sl1@tlsgd
+[0-9a-f]+: 00 00 00 10 .long 0x00000010
# sl2@tlsgd
+[0-9a-f]+: 00 00 00 18 .long 0x00000018
# sh1@tlsgd
+[0-9a-f]+: 00 00 00 4c .long 0x0000004c
# sh2@tlsgd
+[0-9a-f]+: 00 00 00 54 .long 0x00000054
# sH1@tlsgd
+[0-9a-f]+: 00 00 00 28 .long 0x00000028
# sH2@tlsgd
+[0-9a-f]+: 00 00 00 30 .long 0x00000030
# sl1@tlsldm
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sl1@dtpoff
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sl2@dtpoff
+[0-9a-f]+: 00 00 00 24 .long 0x00000024
# sh1@tlsldm
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sh1@dtpoff
+[0-9a-f]+: 00 00 00 40 .long 0x00000040
# sh2@dtpoff
+[0-9a-f]+: 00 00 00 44 .long 0x00000044
# sH1@tlsldm
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sH1@dtpoff
+[0-9a-f]+: 00 00 00 60 .long 0x00000060
# sH2@dtpoff
+[0-9a-f]+: 00 00 00 64 .long 0x00000064
# sg2@gotntpoff
+[0-9a-f]+: 00 00 00 48 .long 0x00000048
# sl2@gotntpoff
+[0-9a-f]+: 00 00 00 18 .long 0x00000018
# sh2@gotntpoff
+[0-9a-f]+: 00 00 00 54 .long 0x00000054
# sH2@gotntpoff
+[0-9a-f]+: 00 00 00 30 .long 0x00000030
# function prolog
+[0-9a-f]+: 18 ef lr %r14,%r15
+[0-9a-f]+: 58 c0 d0 00 l %r12,0\(%r13\)
+[0-9a-f]+: a7 fa ff a0 ahi %r15,-96
+[0-9a-f]+: 41 cc d0 00 la %r12,0\(%r12,%r13\)
+[0-9a-f]+: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB and load branch offset
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
+[0-9a-f]+: 58 70 d0 04 l %r7,4\(%r13\)
# GD
+[0-9a-f]+: 58 20 d0 08 l %r2,8\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is referenced through IE too
+[0-9a-f]+: 58 20 d0 0c l %r2,12\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against local variable
+[0-9a-f]+: 58 20 d0 10 l %r2,16\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against local variable referenced through IE too
+[0-9a-f]+: 58 20 d0 14 l %r2,20\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden and local variable
+[0-9a-f]+: 58 20 d0 18 l %r2,24\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden and local variable referenced through
# IE too
+[0-9a-f]+: 58 20 d0 1c l %r2,28\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden but not local variable
+[0-9a-f]+: 58 20 d0 20 l %r2,32\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden but not local variable referenced through
# IE too
+[0-9a-f]+: 58 20 d0 24 l %r2,36\(%r13\)
+[0-9a-f]+: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD
+[0-9a-f]+: 58 20 d0 28 l %r2,40\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: 58 40 d0 2c l %r4,44\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: 58 40 d0 30 l %r4,48\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden and local variables
+[0-9a-f]+: 58 20 d0 34 l %r2,52\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: 58 40 d0 38 l %r4,56\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: 58 40 d0 34 l %r4,52\(%r13\)
+[0-9a-f]+: 41 55 30 00 la %r5,0\(%r5,%r3\)
# LD against hidden but not local variables
+[0-9a-f]+: 58 20 d0 40 l %r2,64\(%r13\)
+[0-9a-f]+: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: 58 30 d0 44 l %r3,68\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: 58 40 d0 48 l %r4,72\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+[0-9a-f]+: 58 30 d0 4c l %r3,76\(%r13\)
+[0-9a-f]+: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 30 00 la %r3,0\(%r3,%r3\)
# IE against local var
+[0-9a-f]+: 58 30 d0 50 l %r3,80\(%r13\)
+[0-9a-f]+: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against hidden and local var
+[0-9a-f]+: 58 30 d0 54 l %r3,84\(%r13\)
+[0-9a-f]+: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against hidden but not local var
+[0-9a-f]+: 58 30 d0 58 l %r3,88\(%r13\)
+[0-9a-f]+: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var with small got access (no optimization)
+[0-9a-f]+: 58 30 c0 34 l %r3,52\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+[0-9a-f]+: 58 30 c0 1c l %r3,28\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden and local var with small got access
# (no optimization)
+[0-9a-f]+: 58 30 c0 40 l %r3,64\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden but not local var with small got access
# (no optimization)
+[0-9a-f]+: 58 30 c0 44 l %r3,68\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function prolog
+[0-9a-f]+: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+[0-9a-f]+: 07 fe br %r14
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
/testsuite/ld-s390/tlsbinpic.s
0,0 → 1,170
.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
.hidden sh1, sh2
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 fn2
.type fn2,@function
.balign 64
fn2:
/* Function 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 sg1@tlsgd
.LC5:
.long sl1@tlsgd
.LC6:
.long sh1@tlsgd
.LC7:
.long sl1@tlsldm
.LC8:
.long sl1@dtpoff
.LC9:
.long sl2@dtpoff
.LC10:
.long sh1@tlsldm
.LC11:
.long sh1@dtpoff
.LC12:
.long sh2@dtpoff
.LC13:
.long sG2@gotntpoff
.LC14:
.long sg1@gotntpoff
.LC15:
.long sl1@gotntpoff
.LC16:
.long sh1@gotntpoff
.LTN1:
/* Function 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 -> IE because variable is not defined in executable */
l %r2,.LC2-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_gdcall:sG1
la %r2,0(%r2,%r9)
 
/* GD -> IE because variable is not defined in executable where
the 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 -> LE with global variable defined in executable */
l %r2,.LC4-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_gdcall:sg1
la %r2,0(%r2,%r9)
 
/* GD -> LE with local variable defined in executable */
l %r2,.LC5-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_gdcall:sl1
la %r2,0(%r2,%r9)
 
/* GD -> LE with hidden variable defined in executable */
l %r2,.LC6-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_gdcall:sh1
la %r2,0(%r2,%r9)
 
/* LD -> LE */
l %r2,.LC7-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_ldcall:sl1
la %r3,0(%r2,%r9)
l %r4,.LC8-.LT1(%r13)
la %r5,0(%r4,%r3)
l %r4,.LC9-.LT1(%r13)
la %r5,0(%r4,%r3)
 
/* LD -> LE against hidden variables */
l %r2,.LC10-.LT1(%r13)
bas %r14,0(%r7,%r13):tls_ldcall:sh1
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)
 
/* IE against global var */
l %r3,.LC13-.LT1(%r13)
l %r3,0(%r3,%r12):tls_load:sG2
l %r3,0(%r3,%r9)
 
/* IE -> LE against global var defined in exec */
l %r3,.LC14-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:sg1
la %r5,0(%r4,%r9)
 
/* IE -> LE against local var */
l %r3,.LC15-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:sl1
la %r5,0(%r4,%r9)
 
/* IE -> LE against hidden var */
l %r3,.LC16-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:sh1
la %r5,0(%r4,%r9)
 
/* IE against global var with small got access (no optimization) */
l %r3,sG3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against global var defined in exec with small got access
(no optimization) */
l %r3,sg3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against local var with small got access (no optimization) */
l %r3,sl3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against hidden var with small got access (no optimization) */
l %r3,sh3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* Function epilog */
lm %r6,%r14,120(%r15)
br %r14
/testsuite/ld-s390/s390.exp
0,0 → 1,75
# Expect script for ld-s390 tests
# Copyright (C) 2003, 2005, 2007 Free Software Foundation
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
#
 
# Test s390 linking; all types of relocs. This tests the assembler and
# tools like objdump as well as the linker.
 
if { !([istarget "s390-*-*"] || [istarget "s390x-*-*"]) } {
return
}
 
# List contains test-items with 3 items followed by 2 lists:
# 0:name 1:ld options 2:assembler options
# 3:filenames of assembler files 4: action and options. 5: name of output file
 
# Actions:
# objdump: Apply objdump options on result. Compare with regex (last arg).
# nm: Apply nm options on result. Compare with regex (last arg).
# readelf: Apply readelf options on result. Compare with regex (last arg).
 
set s390tests {
{"TLS -fpic -shared transitions" "-shared -melf_s390"
"-m31" {tlspic1.s tlspic2.s}
{{readelf -Ssrl tlspic.rd} {objdump -dzrj.text tlspic.dd}
{objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
"libtlspic.so"}
{"Helper shared library" "-shared -melf_s390"
"-m31" {tlslib.s} {} "libtlslib.so"}
{"TLS -fpic and -fno-pic exec transitions"
"-melf_s390 tmpdir/libtlslib.so" "-m31" {tlsbinpic.s tlsbin.s}
{{readelf -Ssrl tlsbin.rd} {objdump -dzrj.text tlsbin.dd}
{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
"tlsbin"}
}
 
set s390xtests {
{"TLS -fpic -shared transitions" "-shared -melf64_s390"
"-m64 -Aesame" {tlspic1_64.s tlspic2_64.s}
{{readelf -WSsrl tlspic_64.rd} {objdump -dzrj.text tlspic_64.dd}
{objdump -sj.got tlspic_64.sd} {objdump -sj.tdata tlspic_64.td}}
"libtlspic_64.so"}
{"Helper shared library" "-shared -melf64_s390"
"-m64 -Aesame" {tlslib_64.s} {} "libtlslib_64.so"}
{"TLS -fpic and -fno-pic exec transitions"
"-melf64_s390 tmpdir/libtlslib_64.so" "-m64 -Aesame"
{tlsbinpic_64.s tlsbin_64.s}
{{readelf -WSsrl tlsbin_64.rd} {objdump -dzrj.text tlsbin_64.dd}
{objdump -sj.got tlsbin_64.sd} {objdump -sj.tdata tlsbin_64.td}}
"tlsbin_64"}
}
 
if [istarget "s390-*-*"] {
run_ld_link_tests $s390tests
}
 
if [istarget "s390x-*-*"] {
run_ld_link_tests $s390xtests
}
/testsuite/ld-s390/tlspic1_64.s
0,0 → 1,224
.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 */
stmg %r6,%r14,48(%r15)
bras %r13,.LTN1
/* Literal pool */
.LT1:
.LC2:
.quad sg1@tlsgd
.LC3:
.quad sg2@tlsgd
.LC4:
.quad sl1@tlsgd
.LC5:
.quad sl2@tlsgd
.LC6:
.quad sh1@tlsgd
.LC7:
.quad sh2@tlsgd
.LC8:
.quad sH1@tlsgd
.LC9:
.quad sH2@tlsgd
.LC10:
.quad sl1@tlsldm
.LC11:
.quad sl1@dtpoff
.LC12:
.quad sl2@dtpoff
.LC13:
.quad sh1@tlsldm
.LC14:
.quad sh1@dtpoff
.LC15:
.quad sh2@dtpoff
.LC16:
.quad sH1@tlsldm
.LC17:
.quad sH1@dtpoff
.LC18:
.quad sH2@dtpoff
.LC19:
.quad sg2@gotntpoff
.LC20:
.quad sl2@gotntpoff
.LC21:
.quad sh2@gotntpoff
.LC22:
.quad sH2@gotntpoff
.LTN1:
/* Funtion prolog */
lgr %r14,%r15
larl %r12,_GLOBAL_OFFSET_TABLE_
aghi %r15,-160
stg %r14,0(%r14)
 
/* Extract TCB */
ear %r9,%a0
sllg %r9,%r4,32
ear %r9,%a1
 
/* GD */
lg %r2,.LC2-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sg1
la %r2,0(%r2,%r9)
 
/* GD -> IE because variable is referenced through IE too */
lg %r2,.LC3-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sg2
la %r2,0(%r2,%r9)
 
/* GD against local variable */
lg %r2,.LC4-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sl1
la %r2,0(%r2,%r9)
 
/* GD -> IE against local variable referenced through IE too */
lg %r2,.LC5-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sl2
la %r2,0(%r2,%r9)
 
/* GD against hidden and local variable */
lg %r2,.LC6-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sh1
la %r2,0(%r2,%r9)
/* GD -> IE against hidden and local variable referenced through
IE too */
lg %r2,.LC7-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sh2
la %r2,0(%r2,%r9)
 
/* GD against hidden but not local variable */
lg %r2,.LC8-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sH1
la %r2,0(%r2,%r9)
 
/* GD -> IE against hidden but not local variable referenced through
IE too */
lg %r2,.LC9-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sH2
la %r2,0(%r2,%r9)
 
/* LD */
lg %r2,.LC10-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_ldcall:sl1
la %r3,0(%r2,%r9)
lg %r4,.LC11-.LT1(%r13)
la %r5,0(%r4,%r3)
lg %r4,.LC12-.LT1(%r13)
la %r5,0(%r4,%r3)
 
/* LD against hidden and local variables */
lg %r2,.LC13-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_ldcall:sh1
la %r3,0(%r2,%r9)
lg %r4,.LC14-.LT1(%r13)
la %r5,0(%r4,%r3)
lg %r4,.LC15-.LT1(%r13)
la %r5,0(%r4,%r3)
/* LD against hidden but not local variables */
lg %r2,.LC16-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_ldcall:sH1
la %r3,0(%r2,%r9)
lg %r4,.LC17-.LT1(%r13)
la %r5,0(%r4,%r3)
lg %r4,.LC18-.LT1(%r13)
la %r5,0(%r4,%r3)
 
/* IE against global var */
lg %r3,.LC19-.LT1(%r13)
lg %r3,0(%r3,%r12):tls_load:sg2
la %r3,0(%r3,%r9)
 
/* IE against local var */
lg %r3,.LC20-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sl2
la %r5,0(%r4,%r9)
 
/* IE against hidden and local var */
lg %r3,.LC21-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sh2
la %r5,0(%r4,%r9)
/* IE against hidden but not local var */
lg %r3,.LC22-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sH2
la %r5,0(%r4,%r9)
 
/* IE against global var with larl got access */
larl %r3,sg5@indntpoff
lg %r3,0(%r3,%r12):tls_load:sg2
la %r3,0(%r3,%r9)
 
/* IE against local var with larl got access */
larl %r3,sl5@indntpoff
lg %r4,0(%r3,%r12):tls_load:sl2
la %r5,0(%r4,%r9)
 
/* IE against hidden and local var with larl got access */
larl %r3,sh5@indntpoff
lg %r4,0(%r3,%r12):tls_load:sh2
la %r5,0(%r4,%r9)
/* IE against hidden but not local var with larl got access */
larl %r3,sH5@indntpoff
lg %r4,0(%r3,%r12):tls_load:sH2
la %r5,0(%r4,%r9)
 
/* IE against global var with small got access (no optimization) */
lg %r3,sg5@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against local var with small got access (no optimization) */
lg %r3,sl5@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against hidden and local var with small got access
(no optimization) */
lg %r3,sh5@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against hidden but not local var with small got access
(no optimization) */
lg %r3,sH5@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* Function epilog */
lmg %r6,%r14,208(%r15)
br %r14
/testsuite/ld-s390/tlslib.s
0,0 → 1,17
.section ".tdata", "awT", @progbits
.globl sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8,
sG1: .long 513
sG2: .long 514
sG3: .long 515
sG4: .long 516
sG5: .long 517
sG6: .long 518
sG7: .long 519
sG8: .long 520
 
.text
/* Dummy. */
.globl __tls_get_offset
.type __tls_get_offset,@function
__tls_get_offset:
br %r14
/testsuite/ld-s390/tlsbin_64.dd
0,0 → 1,223
#source: tlsbinpic_64.s
#source: tlsbin_64.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -dzrj.text
#target: s390x-*-*
 
# PT_TLS layout is:
# Offset from Offset from Name
# TCB base TCB end
# 0x00 -0xa0 sg1..sg2
# 0x20 -0x80 sl1..sl2
# 0x40 -0x60 sh1..sh2
# 0x60 -0x40 bg1..bg2
# 0x80 -0x20 bl1..bl2
 
.*: +file format elf64-s390
 
Disassembly of section .text:
 
0+[0-9a-f]+ <fn2>:
# function prolog
+[0-9a-f]+: eb 6e f0 30 00 24 stmg %r6,%r14,48\(%r15\)
+[0-9a-f]+: a7 d5 00 3e bras %r13,[0-9a-f]+ <fn2\+0x82>
# sG1@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 60 .long 0x00000060
# sG2@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 48 .long 0x00000048
# sg1@tlsgd
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 60 .long 0xffffff60
# sl1@tlsgd
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sh1@tlsgd
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# sl1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
# sl1@dtpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sl2@dtpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 84 .long 0xffffff84
# sh1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
# sh1@dtpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# sh2@dtpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff a4 .long 0xffffffa4
# sG2@gotntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 48 .long 0x00000048
# sg1@gotntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 60 .long 0xffffff60
# sl1@gotntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 80 .long 0xffffff80
# sh1@gotntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff a0 .long 0xffffffa0
# function prolog
+[0-9a-f]+: b9 04 00 ef lgr %r14,%r15
+[0-9a-f]+: a7 fb ff 60 aghi %r15,-160
+[0-9a-f]+: c0 c0 [0-9a-f ]+ larl %r12,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_>
+[0-9a-f]+: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
+[0-9a-f]+: eb 94 00 20 00 0d sllg %r9,%r4,32
+[0-9a-f]+: b2 4f 00 91 ear %r9,%a1
# GD -> IE because variable is not defined in executable
+[0-9a-f]+: e3 c0 d0 00 00 04 lg %r12,0\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is not defined in executable where
# the variable is referenced through IE too
+[0-9a-f]+: e3 20 d0 08 00 04 lg %r2,8\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with global variable defined in executable
+[0-9a-f]+: e3 20 d0 10 00 04 lg %r2,16\(%r13\)
+[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xca>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with local variable defined in executable
+[0-9a-f]+: e3 20 d0 18 00 04 lg %r2,24\(%r13\)
+[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xda>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with hidden variable defined in executable
+[0-9a-f]+: e3 20 d0 20 00 04 lg %r2,32\(%r13\)
+[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xea>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD -> LE
+[0-9a-f]+: e3 20 d0 28 00 04 lg %r2,40\(%r13\)
+[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xfa>
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: e3 40 d0 30 00 04 lg %r4,48\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 40 d0 38 00 04 lg %r4,56\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 20 d0 40 00 04 lg %r2,64\(%r13\)
+[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0x11e>
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: e3 40 d0 48 00 04 lg %r4,72\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 40 d0 50 00 04 lg %r4,80\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+[0-9a-f]+: e3 30 d0 58 00 04 lg %r3,88\(%r13\)
+[0-9a-f]+: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+[0-9a-f]+: e3 30 d0 60 00 04 lg %r3,96\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+[0-9a-f]+: e3 30 d0 68 00 04 lg %r3,104\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden var
+[0-9a-f]+: e3 30 d0 70 00 04 lg %r3,112\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x28>
+[0-9a-f]+: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x38>
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against local var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x20>
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x40>
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+[0-9a-f]+: e3 30 c0 28 00 04 lg %r3,40\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with small got access
# (no optimization)
+[0-9a-f]+: e3 30 c0 38 00 04 lg %r3,56\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+[0-9a-f]+: e3 30 c0 20 00 04 lg %r3,32\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden var with small got access (no optimization)
+[0-9a-f]+: e3 30 c0 40 00 04 lg %r3,64\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+[0-9a-f]+: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+[0-9a-f]+: 07 fe br %r14
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
 
0+[0-9a-f]+ <_start>:
# function prolog
+[0-9a-f]+: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+[0-9a-f]+: a7 d5 00 16 bras %r13,[0-9a-f]+ <_start\+0x30>
# sG6@indntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 80 00 [0-9a-f ]+ ssm [0-9]+\(%r1\)
# bg6@indntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff d4 .long 0xffffffd4
# bl6@indntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff f4 .long 0xfffffff4
# sh6@indntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff b4 .long 0xffffffb4
# sg3@indntpoff
+[0-9a-f]+: ff ff ff ff .long 0xffffffff
+[0-9a-f]+: ff ff ff 68 .long 0xffffff68
# function prolog
+[0-9a-f]+: b9 04 00 ef lgr %r14,%r15
+[0-9a-f]+: a7 fb ff 60 aghi %r15,-160
+[0-9a-f]+: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
+[0-9a-f]+: eb 94 00 20 00 0d sllg %r9,%r4,32
+[0-9a-f]+: b2 4f 00 91 ear %r9,%a1
# IE against global var
+[0-9a-f]+: e3 30 d0 00 00 04 lg %r3,0\(%r13\)
+[0-9a-f]+: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+[0-9a-f]+: e3 30 d0 08 00 04 lg %r3,8\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+[0-9a-f]+: e3 30 d0 10 00 04 lg %r3,16\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden but not local var
+[0-9a-f]+: e3 30 d0 18 00 04 lg %r3,24\(%r13\)
+[0-9a-f]+: eb 43 00 00 00 0d sllg %r4,%r3,0
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# LE, global var defined in exec
+[0-9a-f]+: e3 40 d0 20 00 04 lg %r4,32\(%r13\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# function epilog
+[0-9a-f]+: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+[0-9a-f]+: 07 fe br %r14
+[0-9a-f]+: 07 07 nopr %r7
/testsuite/ld-s390/tlspic2_64.s
0,0 → 1,11
.section ".tbss", "awT", @nobits
.globl sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
.hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
sH1: .space 4
sH2: .space 4
sH3: .space 4
sH4: .space 4
sH5: .space 4
sH6: .space 4
sH7: .space 4
sH8: .space 4
/testsuite/ld-s390/tlsbin.s
0,0 → 1,73
.section ".tbss", "awT", @nobits
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1: .space 4
bg2: .space 4
bg3: .space 4
bg4: .space 4
bg5: .space 4
bg6: .space 4
bg7: .space 4
bg8: .space 4
bl1: .space 4
bl2: .space 4
bl3: .space 4
bl4: .space 4
bl5: .space 4
bl6: .space 4
bl7: .space 4
bl8: .space 4
.text
.globl _start
.type _start,@function
_start:
/* Function prolog */
stm %r6,%r14,24(%r15)
bras %r13,.LTN1
/* Literal pool */
.LT1:
.LC0:
.long sG6@indntpoff
.LC1:
.long bg6@indntpoff
.LC2:
.long bl6@indntpoff
.LC3:
.long sh6@indntpoff
.LC4:
.long sg3@indntpoff
.LTN1:
/* Function prolog */
lr %r14,%r15
ahi %r15,-96
st %r14,0(%r14)
 
/* Extract TCB */
ear %r9,%a0
 
/* IE against global var */
l %r3,.LC0-.LT1(%r13)
l %r3,0(%r3,%r12):tls_load:sG6
la %r3,0(%r3,%r9)
 
/* IE -> LE against global var defined in exec */
l %r3,.LC1-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:bg6
la %r5,0(%r4,%r9)
 
/* IE -> LE against local var */
l %r3,.LC2-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:bl6
la %r5,0(%r4,%r9)
 
/* IE -> LE against hidden but not local var */
l %r3,.LC3-.LT1(%r13)
l %r4,0(%r3,%r12):tls_load:sh6
la %r5,0(%r4,%r9)
 
/* LE, global var defined in exec */
l %r4,.LC4-.LT1(%r13)
la %r5,0(%r4,%r9)
 
/* Function epilog */
lm %r6,%r14,120(%r15)
br %r14
/testsuite/ld-s390/tlspic_64.dd
0,0 → 1,202
#source: tlspic1.s
#source: tlspic2.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -dzrj.text
#target: s390x-*-*
 
.*: +file format elf64-s390
 
Disassembly of section .text:
 
0+[0-9a-f]+ <fn1>:
# function prolog
+[0-9a-f]+: eb 6e f0 30 00 24 stmg %r6,%r14,48\(%r15\)
+[0-9a-f]+: a7 d5 00 56 bras %r13,[0-9a-f]+ <fn1\+0xb2>
# sg1@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 70 .long 0x00000070
# sg2@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 90 .long 0x00000090
# sl1@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sl2@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 30 .long 0x00000030
# sh1@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 98 .long 0x00000098
# sh2@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 a8 .long 0x000000a8
# sH1@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 50 .long 0x00000050
# sH2@tlsgd
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 60 .long 0x00000060
# sl1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 40 .long 0x00000040
# sl1@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 20 .long 0x00000020
# sl2@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 24 .long 0x00000024
# sh1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 40 .long 0x00000040
# sh1@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 40 .long 0x00000040
# sh2@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 44 .long 0x00000044
# sH1@tlsldm
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 40 .long 0x00000040
# sH1@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 60 .long 0x00000060
# sH2@dtpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 64 .long 0x00000064
# sg2@gotntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 90 .long 0x00000090
# sl2@gotntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 30 .long 0x00000030
# sh2@gotntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 a8 .long 0x000000a8
# sH2@gotntpoff
+[0-9a-f]+: 00 00 00 00 .long 0x00000000
+[0-9a-f]+: 00 00 00 60 .long 0x00000060
# function prolog
+[0-9a-f]+: b9 04 00 ef lgr %r14,%r15
+[0-9a-f]+: c0 c0 [0-9a-f ]+ larl %r12,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_>
+[0-9a-f]+: a7 fb ff 60 aghi %r15,-160
+[0-9a-f]+: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+[0-9a-f]+: b2 4f 00 90 ear %r9,%a0
+[0-9a-f]+: eb 94 00 20 00 0d sllg %r9,%r4,32
+[0-9a-f]+: b2 4f 00 91 ear %r9,%a1
# GD
+[0-9a-f]+: e3 20 d0 00 00 04 lg %r2,0\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is referenced through IE too
+[0-9a-f]+: e3 20 d0 08 00 04 lg %r2,8\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against local variable
+[0-9a-f]+: e3 20 d0 10 00 04 lg %r2,16\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against local variable referenced through IE too
+[0-9a-f]+: e3 20 d0 18 00 04 lg %r2,24\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden and local variable
+[0-9a-f]+: e3 20 d0 20 00 04 lg %r2,32\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden and local variable referenced through
# IE too
+[0-9a-f]+: e3 20 d0 28 00 04 lg %r2,40\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden but not local variable
+[0-9a-f]+: e3 20 d0 30 00 04 lg %r2,48\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden but not local variable referenced through
# IE too
+[0-9a-f]+: e3 20 d0 38 00 04 lg %r2,56\(%r13\)
+[0-9a-f]+: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD
+[0-9a-f]+: e3 20 d0 40 00 04 lg %r2,64\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: e3 40 d0 48 00 04 lg %r4,72\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 40 d0 50 00 04 lg %r4,80\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden and local variables
+[0-9a-f]+: e3 20 d0 58 00 04 lg %r2,88\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: e3 40 d0 60 00 04 lg %r4,96\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 40 d0 68 00 04 lg %r4,104\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden but not local variables
+[0-9a-f]+: e3 20 d0 70 00 04 lg %r2,112\(%r13\)
+[0-9a-f]+: c0 e5 [0-9a-f ]+ brasl %r14,[0-9a-f]+ <.*>
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\)
+[0-9a-f]+: e3 40 d0 78 00 04 lg %r4,120\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
+[0-9a-f]+: e3 40 d0 80 00 04 lg %r4,128\(%r13\)
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+[0-9a-f]+: e3 30 d0 88 00 04 lg %r3,136\(%r13\)
+[0-9a-f]+: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var
+[0-9a-f]+: e3 30 d0 90 00 04 lg %r3,144\(%r13\)
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden and local var
+[0-9a-f]+: e3 30 d0 98 00 04 lg %r3,152\(%r13\)
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden but not local var
+[0-9a-f]+: e3 30 d0 a0 00 04 lg %r3,160\(%r13\)
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <\_GLOBAL\_OFFSET\_TABLE\_\+0x68>
+[0-9a-f]+: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <\_GLOBAL\_OFFSET\_TABLE\_\+0x38>
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden and local var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <\_GLOBAL\_OFFSET\_TABLE\_\+0x80>
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden but not local var with larl got access
+[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <\_GLOBAL\_OFFSET\_TABLE\_\+0x88>
+[0-9a-f]+: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+[0-9a-f]+: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+[0-9a-f]+: e3 30 c0 68 00 04 lg %r3,104\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+[0-9a-f]+: e3 30 c0 38 00 04 lg %r3,56\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden and local var with small got access
# (no optimization)
+[0-9a-f]+: e3 30 c0 80 00 04 lg %r3,128\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden but not local var with small got access
# (no optimization)
+[0-9a-f]+: e3 30 c0 88 00 04 lg %r3,136\(%r12\)
+[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+[0-9a-f]+: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+[0-9a-f]+: 07 fe br %r14
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
+[0-9a-f]+: 07 07 nopr %r7
/testsuite/ld-s390/tlsbin.rd
0,0 → 1,145
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m31
#ld: -shared -melf_s390
#readelf: -Ssrl
#target: s390-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
+\[[ 0-9]+\] .interp .*
+\[[ 0-9]+\] .hash .*
+\[[ 0-9]+\] .dynsym .*
+\[[ 0-9]+\] .dynstr .*
+\[[ 0-9]+\] .rela.dyn .*
+\[[ 0-9]+\] .rela.plt .*
+\[[ 0-9]+\] .plt .*
+\[[ 0-9]+\] .text +PROGBITS .*
+\[[ 0-9]+\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32
+\[[ 0-9]+\] .tbss +NOBITS .* 0+40 00 WAT +0 +0 +1
+\[[ 0-9]+\] .dynamic +DYNAMIC .*
+\[[ 0-9]+\] .got +PROGBITS .*
+\[[ 0-9]+\] .shstrtab .*
+\[[ 0-9]+\] .symtab .*
+\[[ 0-9]+\] .strtab .*
Key to Flags:
.*
.*
.*
 
Elf file type is EXEC \(Executable file\)
Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+PHDR +0x0+34 0x0+400034 0x0+400034 0x0+c0 0x0+c0 R E 0x4
+INTERP +0x0+f4 0x0+4000f4 0x0+4000f4 0x0+11 0x0+11 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x1000
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+60 0x0+a0 R +0x20
 
Section to Segment mapping:
+Segment Sections...
+00 *
+01 +.interp *
+02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
+03 +.tdata .dynamic .got *
+04 +.dynamic *
+05 +.tdata .tbss *
 
Relocation section '.rela.dyn' at offset .* contains 4 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG3 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG2 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG6 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG1 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
[0-9a-f ]+R_390_JMP_SLOT[0-9a-f ]+__tls_get_offset \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* TLS +GLOBAL +DEFAULT +UND sG3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_offset
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* TLS +GLOBAL +DEFAULT +UND sG1
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +1
.* SECTION +LOCAL +DEFAULT +2
.* SECTION +LOCAL +DEFAULT +3
.* SECTION +LOCAL +DEFAULT +4
.* SECTION +LOCAL +DEFAULT +5
.* SECTION +LOCAL +DEFAULT +6
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* SECTION +LOCAL +DEFAULT +9
.* SECTION +LOCAL +DEFAULT +10
.* SECTION +LOCAL +DEFAULT +11
.* SECTION +LOCAL +DEFAULT +12
.* TLS +LOCAL +DEFAULT +9 sl1
.* TLS +LOCAL +DEFAULT +9 sl2
.* TLS +LOCAL +DEFAULT +9 sl3
.* TLS +LOCAL +DEFAULT +9 sl4
.* TLS +LOCAL +DEFAULT +9 sl5
.* TLS +LOCAL +DEFAULT +9 sl6
.* TLS +LOCAL +DEFAULT +9 sl7
.* TLS +LOCAL +DEFAULT +9 sl8
.* TLS +LOCAL +DEFAULT +10 bl1
.* TLS +LOCAL +DEFAULT +10 bl2
.* TLS +LOCAL +DEFAULT +10 bl3
.* TLS +LOCAL +DEFAULT +10 bl4
.* TLS +LOCAL +DEFAULT +10 bl5
.* TLS +LOCAL +DEFAULT +10 bl6
.* TLS +LOCAL +DEFAULT +10 bl7
.* TLS +LOCAL +DEFAULT +10 bl8
.* OBJECT +LOCAL +DEFAULT +11 _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +GLOBAL +DEFAULT +UND sG3
.* TLS +GLOBAL +DEFAULT +9 sg8
.* TLS +GLOBAL +DEFAULT +10 bg8
.* TLS +GLOBAL +DEFAULT +10 bg6
.* TLS +GLOBAL +DEFAULT +10 bg3
.* TLS +GLOBAL +DEFAULT +9 sg3
.* TLS +GLOBAL +HIDDEN +9 sh3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* TLS +GLOBAL +DEFAULT +9 sg4
.* TLS +GLOBAL +DEFAULT +9 sg5
.* TLS +GLOBAL +DEFAULT +10 bg5
.* TLS +GLOBAL +HIDDEN +9 sh7
.* TLS +GLOBAL +HIDDEN +9 sh8
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +9 sg1
.* FUNC +GLOBAL +DEFAULT +8 _start
.* TLS +GLOBAL +HIDDEN +9 sh4
.* TLS +GLOBAL +DEFAULT +10 bg7
.* TLS +GLOBAL +HIDDEN +9 sh5
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* FUNC +GLOBAL +DEFAULT +8 fn2
.* TLS +GLOBAL +DEFAULT +9 sg2
.* TLS +GLOBAL +DEFAULT +UND sG1
.* TLS +GLOBAL +HIDDEN +9 sh1
.* TLS +GLOBAL +DEFAULT +9 sg6
.* TLS +GLOBAL +DEFAULT +9 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* TLS +GLOBAL +HIDDEN +9 sh2
.* TLS +GLOBAL +HIDDEN +9 sh6
.* TLS +GLOBAL +DEFAULT +10 bg2
.* TLS +GLOBAL +DEFAULT +10 bg1
.* TLS +GLOBAL +DEFAULT +10 bg4
/testsuite/ld-s390/tlsbin.sd
0,0 → 1,13
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -sj.got
#target: s390-*-*
 
.*: file format elf32-s390
 
Contents of section .got:
[0-9a-f]+ [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .@...........@..
[0-9a-f]+ ffffff88 00000000 ffffff68 ffffffa8 ...........h....
[0-9a-f]+ 00000000 00000000 00000000 ............
/testsuite/ld-s390/tlsbinpic_64.s
0,0 → 1,186
.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
.hidden sh1, sh2
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 fn2
.type fn2,@function
.balign 64
fn2:
/* Function prolog */
stmg %r6,%r14,48(%r15)
bras %r13,.LTN1
/* Literal pool */
.LT1:
.LC2:
.quad sG1@tlsgd
.LC3:
.quad sG2@tlsgd
.LC4:
.quad sg1@tlsgd
.LC5:
.quad sl1@tlsgd
.LC6:
.quad sh1@tlsgd
.LC7:
.quad sl1@tlsldm
.LC8:
.quad sl1@dtpoff
.LC9:
.quad sl2@dtpoff
.LC10:
.quad sh1@tlsldm
.LC11:
.quad sh1@dtpoff
.LC12:
.quad sh2@dtpoff
.LC13:
.quad sG2@gotntpoff
.LC14:
.quad sg1@gotntpoff
.LC15:
.quad sl1@gotntpoff
.LC16:
.quad sh1@gotntpoff
.LTN1:
/* Function prolog */
lgr %r14,%r15
aghi %r15,-160
larl %r12,_GLOBAL_OFFSET_TABLE_
stg %r14,0(%r14)
 
/* Extract TCB */
ear %r9,%a0
sllg %r9,%r4,32
ear %r9,%a1
 
/* GD -> IE because variable is not defined in executable */
lg %r12,.LC2-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sG1
la %r2,0(%r2,%r9)
 
/* GD -> IE because variable is not defined in executable where
the variable is referenced through IE too */
lg %r2,.LC3-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sG2
la %r2,0(%r2,%r9)
 
/* GD -> LE with global variable defined in executable */
lg %r2,.LC4-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sg1
la %r2,0(%r2,%r9)
 
/* GD -> LE with local variable defined in executable */
lg %r2,.LC5-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sl1
la %r2,0(%r2,%r9)
 
/* GD -> LE with hidden variable defined in executable */
lg %r2,.LC6-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_gdcall:sh1
la %r2,0(%r2,%r9)
 
/* LD -> LE */
lg %r2,.LC7-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_ldcall:sl1
la %r3,0(%r2,%r9)
lg %r4,.LC8-.LT1(%r13)
la %r5,0(%r4,%r3)
lg %r4,.LC9-.LT1(%r13)
la %r5,0(%r4,%r3)
 
/* LD -> LE against hidden variables */
lg %r2,.LC10-.LT1(%r13)
brasl %r14,__tls_get_offset@plt:tls_ldcall:sh1
la %r3,0(%r2,%r9)
lg %r4,.LC11-.LT1(%r13)
la %r5,0(%r4,%r3)
lg %r4,.LC12-.LT1(%r13)
la %r5,0(%r4,%r3)
 
/* IE against global var */
lg %r3,.LC13-.LT1(%r13)
lg %r3,0(%r3,%r12):tls_load:sG2
la %r3,0(%r3,%r9)
 
/* IE -> LE against global var defined in exec */
lg %r3,.LC14-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sg1
la %r5,0(%r4,%r9)
 
/* IE -> LE against local var */
lg %r3,.LC15-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sl2
la %r5,0(%r4,%r9)
 
/* IE -> LE against hidden var */
lg %r3,.LC16-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sh1
la %r5,0(%r4,%r9)
 
/* IE against global var with larl got access */
larl %r3,sG3@indntpoff
lg %r3,0(%r3,%r12):tls_load:sG3
la %r3,0(%r3,%r9)
 
/* IE against global var defined in exec with larl got access */
larl %r3,sg3@indntpoff
lg %r4,0(%r3,%r12):tls_load:sg3
la %r5,0(%r4,%r9)
 
/* IE against local var with larl got access */
larl %r3,sl3@indntpoff
lg %r4,0(%r3,%r12):tls_load:sl3
la %r5,0(%r4,%r9)
/* IE against hidden var with larl got access */
larl %r3,sh3@indntpoff
lg %r4,0(%r3,%r12):tls_load:sh3
la %r5,0(%r4,%r9)
 
/* IE against global var with small got access (no optimization) */
lg %r3,sG3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against global var defined in exec with small got access
(no optimization) */
lg %r3,sg3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against local var with small got access (no optimization) */
lg %r3,sl3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
 
/* IE against hidden var with small got access (no optimization) */
lg %r3,sh3@gotntpoff(%r12)
la %r3,0(%r3,%r9)
/* Function epilog */
lmg %r6,%r14,208(%r15)
br %r14
/testsuite/ld-s390/tlsbin.td
0,0 → 1,16
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -sj.tdata
#target: s390-*-*
 
.*: file format elf32-s390
 
Contents of section .tdata:
[0-9a-f]+ 00000011 00000012 00000013 00000014 .*
[0-9a-f]+ 00000015 00000016 00000017 00000018 .*
[0-9a-f]+ 00000041 00000042 00000043 00000044 .*
[0-9a-f]+ 00000045 00000046 00000047 00000048 .*
[0-9a-f]+ 00000101 00000102 00000103 00000104 .*
[0-9a-f]+ 00000105 00000106 00000107 00000108 .*
/testsuite/ld-s390/tlspic.rd
0,0 → 1,142
#source: tlspic1.s
#source: tlspic2.s
#as: -m31
#ld: -shared -melf_s390
#readelf: -Ssrl
#target: s390-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
+\[[ 0-9]+\] .hash .*
+\[[ 0-9]+\] .dynsym .*
+\[[ 0-9]+\] .dynstr .*
+\[[ 0-9]+\] .rela.dyn .*
+\[[ 0-9]+\] .rela.plt .*
+\[[ 0-9]+\] .plt .*
+\[[ 0-9]+\] .text +PROGBITS .*
+\[[ 0-9]+\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 32
+\[[ 0-9]+\] .tbss +NOBITS .* 0+20 00 WAT +0 +0 +1
+\[[ 0-9]+\] .dynamic +DYNAMIC .*
+\[[ 0-9]+\] .got +PROGBITS .*
+\[[ 0-9]+\] .shstrtab .*
+\[[ 0-9]+\] .symtab .*
+\[[ 0-9]+\] .strtab .*
Key to Flags:
.*
.*
.*
 
Elf file type is DYN \(Shared object file\)
Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+LOAD .* R E 0x1000
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+60 0x0+80 R +0x20
 
Section to Segment mapping:
+Segment Sections...
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text
+01 +.tdata .dynamic .got
+02 +.dynamic
+03 +.tdata .tbss
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+24
[0-9a-f ]+R_390_TLS_TPOFF +0+30
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+64
[0-9a-f ]+R_390_TLS_TPOFF +0+50
[0-9a-f ]+R_390_TLS_TPOFF +0+70
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+44
[0-9a-f ]+R_390_TLS_TPOFF +0+10 +sg5 \+ 0
[0-9a-f ]+R_390_TLS_DTPMOD +0+ +sg1 \+ 0
[0-9a-f ]+R_390_TLS_DTPOFF +0+ +sg1 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+4 +sg2 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
[0-9a-f ]+R_390_JMP_SLOT +0+ +__tls_get_offset \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* TLS +GLOBAL +DEFAULT +8 sg8
.* TLS +GLOBAL +DEFAULT +8 sg3
.* TLS +GLOBAL +DEFAULT +8 sg4
.* TLS +GLOBAL +DEFAULT +8 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +8 sg1
.* FUNC +GLOBAL +DEFAULT +7 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +8 sg2
.* TLS +GLOBAL +DEFAULT +8 sg6
.* TLS +GLOBAL +DEFAULT +8 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +1
.* SECTION +LOCAL +DEFAULT +2
.* SECTION +LOCAL +DEFAULT +3
.* SECTION +LOCAL +DEFAULT +4
.* SECTION +LOCAL +DEFAULT +5
.* SECTION +LOCAL +DEFAULT +6
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* SECTION +LOCAL +DEFAULT +9
.* SECTION +LOCAL +DEFAULT +10
.* SECTION +LOCAL +DEFAULT +11
.* TLS +LOCAL +DEFAULT +8 sl1
.* TLS +LOCAL +DEFAULT +8 sl2
.* TLS +LOCAL +DEFAULT +8 sl3
.* TLS +LOCAL +DEFAULT +8 sl4
.* TLS +LOCAL +DEFAULT +8 sl5
.* TLS +LOCAL +DEFAULT +8 sl6
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* TLS +LOCAL +DEFAULT +9 sH1
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
.* TLS +LOCAL +DEFAULT +8 sh7
.* TLS +LOCAL +DEFAULT +8 sh8
.* TLS +LOCAL +DEFAULT +9 sH4
.* TLS +LOCAL +DEFAULT +8 sh4
.* TLS +LOCAL +DEFAULT +9 sH3
.* TLS +LOCAL +DEFAULT +8 sh5
.* TLS +LOCAL +DEFAULT +9 sH5
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8
.* TLS +GLOBAL +DEFAULT +8 sg3
.* TLS +GLOBAL +DEFAULT +8 sg4
.* TLS +GLOBAL +DEFAULT +8 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +8 sg1
.* FUNC +GLOBAL +DEFAULT +7 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +8 sg2
.* TLS +GLOBAL +DEFAULT +8 sg6
.* TLS +GLOBAL +DEFAULT +8 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/testsuite/ld-s390/tlslib_64.s
0,0 → 1,17
.section ".tdata", "awT", @progbits
.globl sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8,
sG1: .long 513
sG2: .long 514
sG3: .long 515
sG4: .long 516
sG5: .long 517
sG6: .long 518
sG7: .long 519
sG8: .long 520
 
.text
/* Dummy. */
.globl __tls_get_offset
.type __tls_get_offset,@function
__tls_get_offset:
br %r14
/testsuite/ld-s390/tlspic.sd
0,0 → 1,16
#source: tlspic1.s
#source: tlspic2.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -sj.got
#target: s390-*-*
 
.*: +file format elf32-s390
 
Contents of section .got:
[0-9a-f]+ [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .*
[0-9a-f]+ 00000000 00000020 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000060 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000040 00000000 +.*
/testsuite/ld-s390/tlspic.td
0,0 → 1,16
#source: tlspic1.s
#source: tlspic2.s
#as: -m31
#ld: -shared -melf_s390
#objdump: -sj.tdata
#target: s390-*-*
 
.*: +file format elf32-s390
 
Contents of section .tdata:
[0-9a-f]+ 00000011 00000012 00000013 00000014 .*
[0-9a-f]+ 00000015 00000016 00000017 00000018 .*
[0-9a-f]+ 00000041 00000042 00000043 00000044 .*
[0-9a-f]+ 00000045 00000046 00000047 00000048 .*
[0-9a-f]+ 00000101 00000102 00000103 00000104 .*
[0-9a-f]+ 00000105 00000106 00000107 00000108 .*
/testsuite/ld-s390/tlsbin_64.s
0,0 → 1,75
.section ".tbss", "awT", @nobits
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1: .space 4
bg2: .space 4
bg3: .space 4
bg4: .space 4
bg5: .space 4
bg6: .space 4
bg7: .space 4
bg8: .space 4
bl1: .space 4
bl2: .space 4
bl3: .space 4
bl4: .space 4
bl5: .space 4
bl6: .space 4
bl7: .space 4
bl8: .space 4
.text
.globl _start
.type _start,@function
_start:
/* Function prolog */
stm %r6,%r14,24(%r15)
bras %r13,.LTN1
/* Literal pool */
.LT1:
.LC0:
.quad sG6@indntpoff
.LC1:
.quad bg6@indntpoff
.LC2:
.quad bl6@indntpoff
.LC3:
.quad sh6@indntpoff
.LC4:
.quad sg3@indntpoff
.LTN1:
/* Function prolog */
lgr %r14,%r15
aghi %r15,-160
stg %r14,0(%r14)
 
/* Extract TCB */
ear %r9,%a0
sllg %r9,%r4,32
ear %r9,%a1
 
/* IE against global var */
lg %r3,.LC0-.LT1(%r13)
lg %r3,0(%r3,%r12):tls_load:sG6
la %r3,0(%r3,%r9)
 
/* IE -> LE against global var defined in exec */
lg %r3,.LC1-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:bg6
la %r5,0(%r4,%r9)
 
/* IE -> LE against local var */
lg %r3,.LC2-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:bl6
la %r5,0(%r4,%r9)
 
/* IE -> LE against hidden but not local var */
lg %r3,.LC3-.LT1(%r13)
lg %r4,0(%r3,%r12):tls_load:sh6
la %r5,0(%r4,%r9)
 
/* LE, global var defined in exec */
lg %r4,.LC4-.LT1(%r13)
la %r5,0(%r4,%r9)
 
/* Function epilog */
lmg %r6,%r14,208(%r15)
br %r14
/testsuite/ld-s390/tlsbin_64.rd
0,0 → 1,145
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#readelf: -Ssrl
#target: s390x-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
+\[[ 0-9]+\] .interp .*
+\[[ 0-9]+\] .hash .*
+\[[ 0-9]+\] .dynsym .*
+\[[ 0-9]+\] .dynstr .*
+\[[ 0-9]+\] .rela.dyn .*
+\[[ 0-9]+\] .rela.plt .*
+\[[ 0-9]+\] .plt .*
+\[[ 0-9]+\] .text +PROGBITS .*
+\[[ 0-9]+\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32
+\[[ 0-9]+\] .tbss +NOBITS .* 0+40 00 WAT +0 +0 +1
+\[[ 0-9]+\] .dynamic +DYNAMIC .*
+\[[ 0-9]+\] .got +PROGBITS .*
+\[[ 0-9]+\] .shstrtab .*
+\[[ 0-9]+\] .symtab .*
+\[[ 0-9]+\] .strtab .*
Key to Flags:
.*
.*
.*
 
Elf file type is EXEC \(Executable file\)
Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+PHDR +0x0+40 0x0+80000040 0x0+80000040 0x0+150 0x0+150 R E 0x8
+INTERP +0x0+190 0x0+80000190 0x0+80000190 0x0+11 0x0+11 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x1000
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+a0 R +0x20
 
Section to Segment mapping:
+Segment Sections...
+00 *
+01 +.interp *
+02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
+03 +.tdata .dynamic .got *
+04 +.dynamic *
+05 +.tdata .tbss *
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_390_TLS_TPOFF +0+ sG3 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ sG2 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ sG6 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+ sG1 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_390_JMP_SLOT[0-9a-f ]+__tls_get_offset \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* TLS +GLOBAL +DEFAULT +UND sG3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_offset
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* TLS +GLOBAL +DEFAULT +UND sG1
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +1
.* SECTION +LOCAL +DEFAULT +2
.* SECTION +LOCAL +DEFAULT +3
.* SECTION +LOCAL +DEFAULT +4
.* SECTION +LOCAL +DEFAULT +5
.* SECTION +LOCAL +DEFAULT +6
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* SECTION +LOCAL +DEFAULT +9
.* SECTION +LOCAL +DEFAULT +10
.* SECTION +LOCAL +DEFAULT +11
.* SECTION +LOCAL +DEFAULT +12
.* TLS +LOCAL +DEFAULT +9 sl1
.* TLS +LOCAL +DEFAULT +9 sl2
.* TLS +LOCAL +DEFAULT +9 sl3
.* TLS +LOCAL +DEFAULT +9 sl4
.* TLS +LOCAL +DEFAULT +9 sl5
.* TLS +LOCAL +DEFAULT +9 sl6
.* TLS +LOCAL +DEFAULT +9 sl7
.* TLS +LOCAL +DEFAULT +9 sl8
.* TLS +LOCAL +DEFAULT +10 bl1
.* TLS +LOCAL +DEFAULT +10 bl2
.* TLS +LOCAL +DEFAULT +10 bl3
.* TLS +LOCAL +DEFAULT +10 bl4
.* TLS +LOCAL +DEFAULT +10 bl5
.* TLS +LOCAL +DEFAULT +10 bl6
.* TLS +LOCAL +DEFAULT +10 bl7
.* TLS +LOCAL +DEFAULT +10 bl8
.* OBJECT +LOCAL +DEFAULT +11 _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +GLOBAL +DEFAULT +UND sG3
.* TLS +GLOBAL +DEFAULT +9 sg8
.* TLS +GLOBAL +DEFAULT +10 bg8
.* TLS +GLOBAL +DEFAULT +10 bg6
.* TLS +GLOBAL +DEFAULT +10 bg3
.* TLS +GLOBAL +DEFAULT +9 sg3
.* TLS +GLOBAL +HIDDEN +9 sh3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* TLS +GLOBAL +DEFAULT +9 sg4
.* TLS +GLOBAL +DEFAULT +9 sg5
.* TLS +GLOBAL +DEFAULT +10 bg5
.* TLS +GLOBAL +HIDDEN +9 sh7
.* TLS +GLOBAL +HIDDEN +9 sh8
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +9 sg1
.* FUNC +GLOBAL +DEFAULT +8 _start
.* TLS +GLOBAL +HIDDEN +9 sh4
.* TLS +GLOBAL +DEFAULT +10 bg7
.* TLS +GLOBAL +HIDDEN +9 sh5
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* FUNC +GLOBAL +DEFAULT +8 fn2
.* TLS +GLOBAL +DEFAULT +9 sg2
.* TLS +GLOBAL +DEFAULT +UND sG1
.* TLS +GLOBAL +HIDDEN +9 sh1
.* TLS +GLOBAL +DEFAULT +9 sg6
.* TLS +GLOBAL +DEFAULT +9 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* TLS +GLOBAL +HIDDEN +9 sh2
.* TLS +GLOBAL +HIDDEN +9 sh6
.* TLS +GLOBAL +DEFAULT +10 bg2
.* TLS +GLOBAL +DEFAULT +10 bg1
.* TLS +GLOBAL +DEFAULT +10 bg4
/testsuite/ld-s390/tlsbin_64.sd
0,0 → 1,18
#source: tlsbinpic_64.s
#source: tlsbin_64.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -sj.got
#target: s390x-*-*
 
.*: file format elf64-s390
 
Contents of section .got:
[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 [0-9a-f]+ [0-9a-f]+ .*
[0-9a-f]+ ffffffff ffffff88 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 ffffffff ffffff68 .*
[0-9a-f]+ ffffffff ffffffa8 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 .*
/testsuite/ld-s390/tlsbin_64.td
0,0 → 1,16
#source: tlsbinpic_64.s
#source: tlsbin_64.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -sj.tdata
#target: s390x-*-*
 
.*: file format elf64-s390
 
Contents of section .tdata:
[0-9a-f]+ 00000011 00000012 00000013 00000014 .*
[0-9a-f]+ 00000015 00000016 00000017 00000018 .*
[0-9a-f]+ 00000041 00000042 00000043 00000044 .*
[0-9a-f]+ 00000045 00000046 00000047 00000048 .*
[0-9a-f]+ 00000101 00000102 00000103 00000104 .*
[0-9a-f]+ 00000105 00000106 00000107 00000108 .*
/testsuite/ld-s390/tlspic_64.rd
0,0 → 1,142
#source: tlspic1.s
#source: tlspic2.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#readelf: -WSsrl
#target: s390x-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash .*
+\[[ 0-9]+\] .dynsym .*
+\[[ 0-9]+\] .dynstr .*
+\[[ 0-9]+\] .rela.dyn .*
+\[[ 0-9]+\] .rela.plt .*
+\[[ 0-9]+\] .plt .*
+\[[ 0-9]+\] .text +PROGBITS .*
+\[[ 0-9]+\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32
+\[[ 0-9]+\] .tbss +NOBITS .* 0+20 00 WAT +0 +0 +1
+\[[ 0-9]+\] .dynamic +DYNAMIC .*
+\[[ 0-9]+\] .got +PROGBITS .*
+\[[ 0-9]+\] .shstrtab .*
+\[[ 0-9]+\] .symtab .*
+\[[ 0-9]+\] .strtab .*
Key to Flags:
.*
.*
.*
 
Elf file type is DYN \(Shared object file\)
Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+LOAD .* R E 0x1000
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+80 R +0x20
 
Section to Segment mapping:
+Segment Sections...
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
+01 +.tdata .dynamic .got *
+02 +.dynamic *
+03 +.tdata .tbss *
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+24
[0-9a-f ]+R_390_TLS_TPOFF +0+30
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+64
[0-9a-f ]+R_390_TLS_TPOFF +0+50
[0-9a-f ]+R_390_TLS_TPOFF +0+70
[0-9a-f ]+R_390_TLS_DTPMOD +0+
[0-9a-f ]+R_390_TLS_TPOFF +0+44
[0-9a-f ]+R_390_TLS_TPOFF +0+10 sg5 \+ 0
[0-9a-f ]+R_390_TLS_DTPMOD +0+ sg1 \+ 0
[0-9a-f ]+R_390_TLS_DTPOFF +0+ sg1 \+ 0
[0-9a-f ]+R_390_TLS_TPOFF +0+4 sg2 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_390_JMP_SLOT +0+ __tls_get_offset \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* TLS +GLOBAL +DEFAULT +8 sg8
.* TLS +GLOBAL +DEFAULT +8 sg3
.* TLS +GLOBAL +DEFAULT +8 sg4
.* TLS +GLOBAL +DEFAULT +8 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +8 sg1
.* FUNC +GLOBAL +DEFAULT +7 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +8 sg2
.* TLS +GLOBAL +DEFAULT +8 sg6
.* TLS +GLOBAL +DEFAULT +8 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND
.* SECTION +LOCAL +DEFAULT +1
.* SECTION +LOCAL +DEFAULT +2
.* SECTION +LOCAL +DEFAULT +3
.* SECTION +LOCAL +DEFAULT +4
.* SECTION +LOCAL +DEFAULT +5
.* SECTION +LOCAL +DEFAULT +6
.* SECTION +LOCAL +DEFAULT +7
.* SECTION +LOCAL +DEFAULT +8
.* SECTION +LOCAL +DEFAULT +9
.* SECTION +LOCAL +DEFAULT +10
.* SECTION +LOCAL +DEFAULT +11
.* TLS +LOCAL +DEFAULT +8 sl1
.* TLS +LOCAL +DEFAULT +8 sl2
.* TLS +LOCAL +DEFAULT +8 sl3
.* TLS +LOCAL +DEFAULT +8 sl4
.* TLS +LOCAL +DEFAULT +8 sl5
.* TLS +LOCAL +DEFAULT +8 sl6
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* TLS +LOCAL +DEFAULT +9 sH1
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
.* TLS +LOCAL +DEFAULT +8 sh7
.* TLS +LOCAL +DEFAULT +8 sh8
.* TLS +LOCAL +DEFAULT +9 sH4
.* TLS +LOCAL +DEFAULT +8 sh4
.* TLS +LOCAL +DEFAULT +9 sH3
.* TLS +LOCAL +DEFAULT +8 sh5
.* TLS +LOCAL +DEFAULT +9 sH5
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8
.* TLS +GLOBAL +DEFAULT +8 sg3
.* TLS +GLOBAL +DEFAULT +8 sg4
.* TLS +GLOBAL +DEFAULT +8 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_offset
.* TLS +GLOBAL +DEFAULT +8 sg1
.* FUNC +GLOBAL +DEFAULT +7 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +8 sg2
.* TLS +GLOBAL +DEFAULT +8 sg6
.* TLS +GLOBAL +DEFAULT +8 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/testsuite/ld-s390/tlspic_64.sd
0,0 → 1,21
#source: tlspic1.s
#source: tlspic2.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -sj.got
#target: s390x-*-*
 
.*: +file format elf64-s390
 
Contents of section .got:
[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 [0-9a-f]+ [0-9a-f]+ .*
[0-9a-f]+ 00000000 00000000 00000000 00000020 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000060 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000040 00000000 00000000 .*
/testsuite/ld-s390/tlspic_64.td
0,0 → 1,16
#source: tlspic1.s
#source: tlspic2.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#objdump: -sj.tdata
#target: s390x-*-*
 
.*: +file format elf64-s390
 
Contents of section .tdata:
[0-9a-f]+ 00000011 00000012 00000013 00000014 .*
[0-9a-f]+ 00000015 00000016 00000017 00000018 .*
[0-9a-f]+ 00000041 00000042 00000043 00000044 .*
[0-9a-f]+ 00000045 00000046 00000047 00000048 .*
[0-9a-f]+ 00000101 00000102 00000103 00000104 .*
[0-9a-f]+ 00000105 00000106 00000107 00000108 .*

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.