* ld-s390/s390.exp: New file.

* ld-s390/tlsbin_64.dd: New file.
	* ld-s390/tlsbin_64.rd: New file.
	* ld-s390/tlsbin_64.s: New file.
	* ld-s390/tlsbin_64.sd: New file.
	* ld-s390/tlsbin_64.td: New file.
	* ld-s390/tlsbin.dd: New file.
	* ld-s390/tlsbinpic_64.s: New file.
	* ld-s390/tlsbinpic.s: New file.
	* ld-s390/tlsbin.rd: New file.
	* ld-s390/tlsbin.s: New file.
	* ld-s390/tlsbin.sd: New file.
	* ld-s390/tlsbin.td: New file.
	* ld-s390/tlslib_64.s: New file.
	* ld-s390/tlslib.s: New file.
	* ld-s390/tlspic1_64.s: New file.
	* ld-s390/tlspic1.s: New file.
	* ld-s390/tlspic2_64.s: New file.
	* ld-s390/tlspic2.s: New file.
	* ld-s390/tlspic_64.dd: New file.
	* ld-s390/tlspic_64.rd: New file.
	* ld-s390/tlspic_64.sd: New file.
	* ld-s390/tlspic_64.td: New file.
	* ld-s390/tlspic.dd: New file.
	* ld-s390/tlspic.rd: New file.
	* ld-s390/tlspic.sd: New file.
	* ld-s390/tlspic.td: New file.
This commit is contained in:
Martin Schwidefsky 2003-01-24 17:20:25 +00:00
parent c20c23d506
commit 6c5977968d
28 changed files with 2613 additions and 0 deletions

View File

@ -1,3 +1,33 @@
2003-01-24 Martin Schwidefsky <schwidefsky@de.ibm.com>
* ld-s390/s390.exp: New file.
* ld-s390/tlsbin_64.dd: New file.
* ld-s390/tlsbin_64.rd: New file.
* ld-s390/tlsbin_64.s: New file.
* ld-s390/tlsbin_64.sd: New file.
* ld-s390/tlsbin_64.td: New file.
* ld-s390/tlsbin.dd: New file.
* ld-s390/tlsbinpic_64.s: New file.
* ld-s390/tlsbinpic.s: New file.
* ld-s390/tlsbin.rd: New file.
* ld-s390/tlsbin.s: New file.
* ld-s390/tlsbin.sd: New file.
* ld-s390/tlsbin.td: New file.
* ld-s390/tlslib_64.s: New file.
* ld-s390/tlslib.s: New file.
* ld-s390/tlspic1_64.s: New file.
* ld-s390/tlspic1.s: New file.
* ld-s390/tlspic2_64.s: New file.
* ld-s390/tlspic2.s: New file.
* ld-s390/tlspic_64.dd: New file.
* ld-s390/tlspic_64.rd: New file.
* ld-s390/tlspic_64.sd: New file.
* ld-s390/tlspic_64.td: New file.
* ld-s390/tlspic.dd: New file.
* ld-s390/tlspic.rd: New file.
* ld-s390/tlspic.sd: New file.
* ld-s390/tlspic.td: New file.
2003-01-24 Alan Modra <amodra@bigpond.net.au>
* ld-alpha/tlsbin.sd: Cope with truncated address in data dumps.

View File

@ -0,0 +1,72 @@
# Expect script for ld-s390 tests
# Copyright (C) 2003 Free Software Foundation
#
# This file 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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
}

View File

@ -0,0 +1,185 @@
#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+4002e4 <fn2>:
# function prolog
+4002e4: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+4002e8: a7 d5 00 24 bras %r13,400330 <fn2\+0x4c>
# _GLOBAL_OFFSET_TABLE_
+4002ec: 00 00 12 90 .long 0x00001290
# __tls_get_addr@plt-.LT1
+4002f0: ff ff ff d8 .long 0xffffffd8
# sG1@tlsgd
+4002f4: 00 00 00 28 .long 0x00000028
# sG2@tlsgd
+4002f8: 00 00 00 20 .long 0x00000020
# sg1@tlsgd
+4002fc: ff ff ff 60 .long 0xffffff60
# sl1@tlsgd
+400300: ff ff ff 80 .long 0xffffff80
# sh1@tlsgd
+400304: ff ff ff a0 .long 0xffffffa0
# sl1@tlsldm
+400308: 00 00 00 00 .long 0x00000000
# sl1@dtpoff
+40030c: ff ff ff 80 .long 0xffffff80
# sl2@dtpoff
+400310: ff ff ff 84 .long 0xffffff84
# sh1@tlsldm
+400314: 00 00 00 00 .long 0x00000000
# sh1@dtpoff
+400318: ff ff ff a0 .long 0xffffffa0
# sh2@dtpoff
+40031c: ff ff ff a4 .long 0xffffffa4
# sG2@gotntpoff
+400320: 00 00 00 20 .long 0x00000020
# sg1@gotntpoff
+400324: ff ff ff 60 .long 0xffffff60
# sl1@gotntpoff
+400328: ff ff ff 80 .long 0xffffff80
# sh1@gotntpoff
+40032c: ff ff ff a0 .long 0xffffffa0
# function prolog
+400330: 18 ef lr %r14,%r15
+400332: 58 c0 d0 00 l %r12,0\(%r13\)
+400336: a7 fa ff a0 ahi %r15,-96
+40033a: 41 cc d0 00 la %r12,0\(%r12,%r13\)
+40033e: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB and load branch offset
+400342: b2 4f 00 90 ear %r9,%a0
+400346: 58 70 d0 04 l %r7,4\(%r13\)
# GD -> IE because variable is not defined in executable
+40034a: 58 20 d0 08 l %r2,8\(%r13\)
+40034e: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+400352: 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
+400356: 58 20 d0 0c l %r2,12\(%r13\)
+40035a: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+40035e: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with global variable defined in executable
+400362: 58 20 d0 10 l %r2,16\(%r13\)
+400366: 47 00 00 00 bc 0,0
+40036a: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with local variable defined in executable
+40036e: 58 20 d0 14 l %r2,20\(%r13\)
+400372: 47 00 00 00 bc 0,0
+400376: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with hidden variable defined in executable
+40037a: 58 20 d0 18 l %r2,24\(%r13\)
+40037e: 47 00 00 00 bc 0,0
+400382: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD -> LE
+400386: 58 20 d0 1c l %r2,28\(%r13\)
+40038a: 47 00 00 00 bc 0,0
+40038e: 41 32 90 00 la %r3,0\(%r2,%r9\)
+400392: 58 40 d0 20 l %r4,32\(%r13\)
+400396: 41 54 30 00 la %r5,0\(%r4,%r3\)
+40039a: 58 40 d0 24 l %r4,36\(%r13\)
+40039e: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD -> LE against hidden variables
+4003a2: 58 20 d0 28 l %r2,40\(%r13\)
+4003a6: 47 00 00 00 bc 0,0
+4003aa: 41 32 90 00 la %r3,0\(%r2,%r9\)
+4003ae: 58 40 d0 2c l %r4,44\(%r13\)
+4003b2: 41 54 30 00 la %r5,0\(%r4,%r3\)
+4003b6: 58 40 d0 30 l %r4,48\(%r13\)
+4003ba: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+4003be: 58 30 d0 34 l %r3,52\(%r13\)
+4003c2: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+4003c6: 58 33 90 00 l %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+4003ca: 58 30 d0 38 l %r3,56\(%r13\)
+4003ce: 18 43 lr %r4,%r3
+4003d0: 07 00 bcr 0,%r0
+4003d2: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+4003d6: 58 30 d0 3c l %r3,60\(%r13\)
+4003da: 18 43 lr %r4,%r3
+4003dc: 07 00 bcr 0,%r0
+4003de: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden var
+4003e2: 58 30 d0 40 l %r3,64\(%r13\)
+4003e6: 18 43 lr %r4,%r3
+4003e8: 07 00 bcr 0,%r0
+4003ea: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+4003ee: 58 30 c0 14 l %r3,20\(%r12\)
+4003f2: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with small got access
# (no optimization)
+4003f6: 58 30 c0 18 l %r3,24\(%r12\)
+4003fa: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+4003fe: 58 30 c0 10 l %r3,16\(%r12\)
+400402: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden var with small got access (no optimization)
+400406: 58 30 c0 1c l %r3,28\(%r12\)
+40040a: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+40040e: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+400412: 07 fe br %r14
0+400414 <_start>:
# function prolog
+400414: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+400418: a7 d5 00 0c bras %r13,400430 <_start\+0x1c>
# sG6@indntpoff
+40041c: 00 40 15 a0 .long 0x004015a0
# bg6@indntpoff
+400420: ff ff ff d4 .long 0xffffffd4
# bl6@indntpoff
+400424: ff ff ff f4 .long 0xfffffff4
# sh6@indntpoff
+400428: ff ff ff b4 .long 0xffffffb4
# sg3@indntpoff
+40042c: ff ff ff 68 .long 0xffffff68
# function prolog
+400430: 18 ef lr %r14,%r15
+400432: a7 fa ff a0 ahi %r15,-96
+400436: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB
+40043a: b2 4f 00 90 ear %r9,%a0
# IE against global var
+40043e: 58 30 d0 00 l %r3,0\(%r13\)
+400442: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+400446: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+40044a: 58 30 d0 04 l %r3,4\(%r13\)
+40044e: 18 43 lr %r4,%r3
+400450: 07 00 bcr 0,%r0
+400452: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+400456: 58 30 d0 08 l %r3,8\(%r13\)
+40045a: 18 43 lr %r4,%r3
+40045c: 07 00 bcr 0,%r0
+40045e: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden but not local var
+400462: 58 30 d0 0c l %r3,12\(%r13\)
+400466: 18 43 lr %r4,%r3
+400468: 07 00 bcr 0,%r0
+40046a: 41 54 90 00 la %r5,0\(%r4,%r9\)
# LE, global var defined in exec
+40046e: 58 40 d0 10 l %r4,16\(%r13\)
+400472: 41 54 90 00 la %r5,0\(%r4,%r9\)
# function epilog
+400476: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+40047a: 07 fe br %r14

View File

@ -0,0 +1,156 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m31
#ld: -shared -melf_s390
#readelf: -Ssrl
#target: s390-*-*
There are 19 section headers, starting at offset 0x[0-9a-f]+:
Section Headers:
\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
\[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
\[ 1\] .interp +.*
\[ 2\] .hash +.*
\[ 3\] .dynsym +.*
\[ 4\] .dynstr +.*
\[ 5\] .rela.dyn +.*
\[ 6\] .rela.plt +.*
\[ 7\] .plt +.*
\[ 8\] .text +PROGBITS +0+4002e4 0+2e4 0+198 00 +AX +0 +0 +4
\[ 9\] .data +.*
\[10\] .tdata +PROGBITS +0+40147c 0+47c 0+60 00 WAT +0 +0 +1
\[11\] .tbss +NOBITS +0+4014dc 0+4dc 0+40 00 WAT +0 +0 +1
\[12\] .dynamic +DYNAMIC +0+4014dc 0+4dc 0+a0 08 +WA +4 +0 +4
\[13\] .got +PROGBITS +0+40157c 0+57c 0+2c 04 +WA +0 +0 +4
\[14\] .sbss +.*
\[15\] .bss +.*
\[16\] .shstrtab +.*
\[17\] .symtab +.*
\[18\] .strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is EXEC \(Executable file\)
Entry point 0x400414
There are 6 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 +0x0+ 0x0+400000 0x0+400000 0x0+47c 0x0+47c R E 0x1000
LOAD +0x0+47c 0x0+40147c 0x0+40147c 0x0+12c 0x0+12c RW 0x1000
DYNAMIC +0x0+4dc 0x0+4014dc 0x0+4014dc 0x0+a0 0x0+a0 RW 0x4
TLS +0x0+47c 0x0+40147c 0x0+40147c 0x0+60 0x0+a0 R +0x1
Section to Segment mapping:
Segment Sections...
00 *
01 +.interp *
02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
03 +.tdata .tbss .dynamic .got *
04 +.tbss .dynamic *
05 +.tdata .tbss *
Relocation section '.rela.dyn' at offset 0x268 contains 4 entries:
Offset +Info +Type +Sym.Value Sym. Name \+ Addend
[0-9a-f]+ 0+138 R_390_TLS_TPOFF +0+ +sG3 \+ 0
[0-9a-f]+ 0+338 R_390_TLS_TPOFF +0+ +sG2 \+ 0
[0-9a-f]+ 0+638 R_390_TLS_TPOFF +0+ +sG6 \+ 0
[0-9a-f]+ 0+738 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]+ 0+40b R_390_JMP_SLOT +0+40+2c4 +__tls_get_offset \+ 0
Symbol table '.dynsym' contains 11 entries:
+Num: +Value Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: 0+ +0 TLS +GLOBAL DEFAULT UND sG3
+2: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+3: 0+ +0 TLS +GLOBAL DEFAULT UND sG2
+4: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_offset
+5: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+6: 0+ +0 TLS +GLOBAL DEFAULT UND sG6
+7: 0+ +0 TLS +GLOBAL DEFAULT UND sG1
+8: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+9: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+10: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end
Symbol table '.symtab' contains 71 entries:
+Num: +Value Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1
+2: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2
+3: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3
+4: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4
+5: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5
+6: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6
+7: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7
+8: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8
+9: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9
+10: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10
+11: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11
+12: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12
+13: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13
+14: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14
+15: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +15
+16: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +16
+17: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +17
+18: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +18
+19: 0+20 +0 TLS +LOCAL DEFAULT +10 sl1
+20: 0+24 +0 TLS +LOCAL DEFAULT +10 sl2
+21: 0+28 +0 TLS +LOCAL DEFAULT +10 sl3
+22: 0+2c +0 TLS +LOCAL DEFAULT +10 sl4
+23: 0+30 +0 TLS +LOCAL DEFAULT +10 sl5
+24: 0+34 +0 TLS +LOCAL DEFAULT +10 sl6
+25: 0+38 +0 TLS +LOCAL DEFAULT +10 sl7
+26: 0+3c +0 TLS +LOCAL DEFAULT +10 sl8
+27: 0+80 +0 TLS +LOCAL DEFAULT +11 bl1
+28: 0+84 +0 TLS +LOCAL DEFAULT +11 bl2
+29: 0+88 +0 TLS +LOCAL DEFAULT +11 bl3
+30: 0+8c +0 TLS +LOCAL DEFAULT +11 bl4
+31: 0+90 +0 TLS +LOCAL DEFAULT +11 bl5
+32: 0+94 +0 TLS +LOCAL DEFAULT +11 bl6
+33: 0+98 +0 TLS +LOCAL DEFAULT +11 bl7
+34: 0+9c +0 TLS +LOCAL DEFAULT +11 bl8
+35: 0+ +0 TLS +GLOBAL DEFAULT UND sG3
+36: 0+1c +0 TLS +GLOBAL DEFAULT +10 sg8
+37: 0+7c +0 TLS +GLOBAL DEFAULT +11 bg8
+38: 0+74 +0 TLS +GLOBAL DEFAULT +11 bg6
+39: 0+68 +0 TLS +GLOBAL DEFAULT +11 bg3
+40: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+41: 0+8 +0 TLS +GLOBAL DEFAULT +10 sg3
+42: 0+48 +0 TLS +GLOBAL HIDDEN +10 sh3
+43: 0+ +0 TLS +GLOBAL DEFAULT UND sG2
+44: 0+c +0 TLS +GLOBAL DEFAULT +10 sg4
+45: 0+10 +0 TLS +GLOBAL DEFAULT +10 sg5
+46: 0+70 +0 TLS +GLOBAL DEFAULT +11 bg5
+47: 0+58 +0 TLS +GLOBAL HIDDEN +10 sh7
+48: 0+5c +0 TLS +GLOBAL HIDDEN +10 sh8
+49: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_offset
+50: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1
+51: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 _start
+52: 0+4c +0 TLS +GLOBAL HIDDEN +10 sh4
+53: 0+78 +0 TLS +GLOBAL DEFAULT +11 bg7
+54: 0+50 +0 TLS +GLOBAL HIDDEN +10 sh5
+55: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+56: 0+ +0 TLS +GLOBAL DEFAULT UND sG6
+57: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 fn2
+58: 0+4 +0 TLS +GLOBAL DEFAULT +10 sg2
+59: 0+ +0 TLS +GLOBAL DEFAULT UND sG1
+60: 0+40 +0 TLS +GLOBAL HIDDEN +10 sh1
+61: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6
+62: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7
+63: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+64: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+65: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end
+66: 0+44 +0 TLS +GLOBAL HIDDEN +10 sh2
+67: 0+54 +0 TLS +GLOBAL HIDDEN +10 sh6
+68: 0+64 +0 TLS +GLOBAL DEFAULT +11 bg2
+69: 0+60 +0 TLS +GLOBAL DEFAULT +11 bg1
+70: 0+6c +0 TLS +GLOBAL DEFAULT +11 bg4

View File

@ -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

View File

@ -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:
40157c [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .@...........@..
40158c ffffff88 00000000 ffffff68 ffffffa8 ...........h....
40159c 00000000 00000000 00000000 ............

View File

@ -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:
40147c 00000011 00000012 00000013 00000014 .*
40148c 00000015 00000016 00000017 00000018 .*
40149c 00000041 00000042 00000043 00000044 .*
4014ac 00000045 00000046 00000047 00000048 .*
4014bc 00000101 00000102 00000103 00000104 .*
4014cc 00000105 00000106 00000107 00000108 .*

View File

@ -0,0 +1,213 @@
#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+80000458 <fn2>:
# function prolog
+80000458: eb 6e f0 30 00 24 stmg %r6,%r14,48\(%r15\)
+8000045e: a7 d5 00 3e bras %r13,800004da <fn2\+0x82>
# sG1@tlsgd
+80000462: 00 00 00 00 .long 0x00000000
+80000466: 00 00 00 60 .long 0x00000060
# sG2@tlsgd
+8000046a: 00 00 00 00 .long 0x00000000
+8000046e: 00 00 00 48 .long 0x00000048
# sg1@tlsgd
+80000472: ff ff ff ff .long 0xffffffff
+80000476: ff ff ff 60 .long 0xffffff60
# sl1@tlsgd
+8000047a: ff ff ff ff .long 0xffffffff
+8000047e: ff ff ff 80 .long 0xffffff80
# sh1@tlsgd
+80000482: ff ff ff ff .long 0xffffffff
+80000486: ff ff ff a0 .long 0xffffffa0
# sl1@tlsldm
+8000048a: 00 00 00 00 .long 0x00000000
+8000048e: 00 00 00 00 .long 0x00000000
# sl1@dtpoff
+80000492: ff ff ff ff .long 0xffffffff
+80000496: ff ff ff 80 .long 0xffffff80
# sl2@dtpoff
+8000049a: ff ff ff ff .long 0xffffffff
+8000049e: ff ff ff 84 .long 0xffffff84
# sh1@tlsldm
+800004a2: 00 00 00 00 .long 0x00000000
+800004a6: 00 00 00 00 .long 0x00000000
# sh1@dtpoff
+800004aa: ff ff ff ff .long 0xffffffff
+800004ae: ff ff ff a0 .long 0xffffffa0
# sh2@dtpoff
+800004b2: ff ff ff ff .long 0xffffffff
+800004b6: ff ff ff a4 .long 0xffffffa4
# sG2@gotntpoff
+800004ba: 00 00 00 00 .long 0x00000000
+800004be: 00 00 00 48 .long 0x00000048
# sg1@gotntpoff
+800004c2: ff ff ff ff .long 0xffffffff
+800004c6: ff ff ff 60 .long 0xffffff60
# sl1@gotntpoff
+800004ca: ff ff ff ff .long 0xffffffff
+800004ce: ff ff ff 80 .long 0xffffff80
# sh1@gotntpoff
+800004d2: ff ff ff ff .long 0xffffffff
+800004d6: ff ff ff a0 .long 0xffffffa0
# function prolog
+800004da: b9 04 00 ef lgr %r14,%r15
+800004de: a7 fb ff 60 aghi %r15,-160
+800004e2: c0 c0 00 00 09 d3 larl %r12,80001888 <_GLOBAL_OFFSET_TABLE_>
+800004e8: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+800004ee: b2 4f 00 90 ear %r9,%a0
+800004f2: eb 94 00 20 00 0d sllg %r9,%r4,32
+800004f8: b2 4f 00 91 ear %r9,%a1
# GD -> IE because variable is not defined in executable
+800004fc: e3 c0 d0 00 00 04 lg %r12,0\(%r13\)
+80000502: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+80000508: 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
+8000050c: e3 20 d0 08 00 04 lg %r2,8\(%r13\)
+80000512: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+80000518: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with global variable defined in executable
+8000051c: e3 20 d0 10 00 04 lg %r2,16\(%r13\)
+80000522: c0 04 00 00 00 00 brcl 0,80000522 <fn2\+0xca>
+80000528: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with local variable defined in executable
+8000052c: e3 20 d0 18 00 04 lg %r2,24\(%r13\)
+80000532: c0 04 00 00 00 00 brcl 0,80000532 <fn2\+0xda>
+80000538: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> LE with hidden variable defined in executable
+8000053c: e3 20 d0 20 00 04 lg %r2,32\(%r13\)
+80000542: c0 04 00 00 00 00 brcl 0,80000542 <fn2\+0xea>
+80000548: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD -> LE
+8000054c: e3 20 d0 28 00 04 lg %r2,40\(%r13\)
+80000552: c0 04 00 00 00 00 brcl 0,80000552 <fn2\+0xfa>
+80000558: 41 32 90 00 la %r3,0\(%r2,%r9\)
+8000055c: e3 40 d0 30 00 04 lg %r4,48\(%r13\)
+80000562: 41 54 30 00 la %r5,0\(%r4,%r3\)
+80000566: e3 40 d0 38 00 04 lg %r4,56\(%r13\)
+8000056c: 41 54 30 00 la %r5,0\(%r4,%r3\)
+80000570: e3 20 d0 40 00 04 lg %r2,64\(%r13\)
+80000576: c0 04 00 00 00 00 brcl 0,80000576 <fn2\+0x11e>
+8000057c: 41 32 90 00 la %r3,0\(%r2,%r9\)
+80000580: e3 40 d0 48 00 04 lg %r4,72\(%r13\)
+80000586: 41 54 30 00 la %r5,0\(%r4,%r3\)
+8000058a: e3 40 d0 50 00 04 lg %r4,80\(%r13\)
+80000590: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+80000594: e3 30 d0 58 00 04 lg %r3,88\(%r13\)
+8000059a: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+800005a0: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+800005a4: e3 30 d0 60 00 04 lg %r3,96\(%r13\)
+800005aa: eb 43 00 00 00 0d sllg %r4,%r3,0
+800005b0: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+800005b4: e3 30 d0 68 00 04 lg %r3,104\(%r13\)
+800005ba: eb 43 00 00 00 0d sllg %r4,%r3,0
+800005c0: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden var
+800005c4: e3 30 d0 70 00 04 lg %r3,112\(%r13\)
+800005ca: eb 43 00 00 00 0d sllg %r4,%r3,0
+800005d0: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with larl got access
+800005d4: c0 30 00 00 09 6e larl %r3,800018b0 <\_GLOBAL\_OFFSET\_TABLE\_\+0x28>
+800005da: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+800005e0: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with larl got access
+800005e4: c0 30 00 00 09 6e larl %r3,800018c0 <\_GLOBAL\_OFFSET\_TABLE\_\+0x38>
+800005ea: eb 43 00 00 00 0d sllg %r4,%r3,0
+800005f0: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against local var with larl got access
+800005f4: c0 30 00 00 09 5a larl %r3,800018a8 <\_GLOBAL\_OFFSET\_TABLE\_\+0x20>
+800005fa: eb 43 00 00 00 0d sllg %r4,%r3,0
+80000600: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden var with larl got access
+80000604: c0 30 00 00 09 62 larl %r3,800018c8 <\_GLOBAL\_OFFSET\_TABLE\_\+0x40>
+8000060a: eb 43 00 00 00 0d sllg %r4,%r3,0
+80000610: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+80000614: e3 30 c0 28 00 04 lg %r3,40\(%r12\)
+8000061a: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against global var defined in exec with small got access
# (no optimization)
+8000061e: e3 30 c0 38 00 04 lg %r3,56\(%r12\)
+80000624: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+80000628: e3 30 c0 20 00 04 lg %r3,32\(%r12\)
+8000062e: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden var with small got access (no optimization)
+80000632: e3 30 c0 40 00 04 lg %r3,64\(%r12\)
+80000638: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+8000063c: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+80000642: 07 fe br %r14
0+80000644 <_start>:
# function prolog
+80000644: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+80000648: a7 d5 00 16 bras %r13,80000674 <_start\+0x30>
# sG6@indntpoff
+8000064c: 00 00 00 00 .long 0x00000000
+80000650: 80 00 18 e0 ssm 2272\(%r1\)
# bg6@indntpoff
+80000654: ff ff ff ff .long 0xffffffff
+80000658: ff ff ff d4 .long 0xffffffd4
# bl6@indntpoff
+8000065c: ff ff ff ff .long 0xffffffff
+80000660: ff ff ff f4 .long 0xfffffff4
# sh6@indntpoff
+80000664: ff ff ff ff .long 0xffffffff
+80000668: ff ff ff b4 .long 0xffffffb4
# sg3@indntpoff
+8000066c: ff ff ff ff .long 0xffffffff
+80000670: ff ff ff 68 .long 0xffffff68
# function prolog
+80000674: b9 04 00 ef lgr %r14,%r15
+80000678: a7 fb ff 60 aghi %r15,-160
+8000067c: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+80000682: b2 4f 00 90 ear %r9,%a0
+80000686: eb 94 00 20 00 0d sllg %r9,%r4,32
+8000068c: b2 4f 00 91 ear %r9,%a1
# IE against global var
+80000690: e3 30 d0 00 00 04 lg %r3,0\(%r13\)
+80000696: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+8000069c: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE -> LE against global var defined in exec
+800006a0: e3 30 d0 08 00 04 lg %r3,8\(%r13\)
+800006a6: eb 43 00 00 00 0d sllg %r4,%r3,0
+800006ac: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against local var
+800006b0: e3 30 d0 10 00 04 lg %r3,16\(%r13\)
+800006b6: eb 43 00 00 00 0d sllg %r4,%r3,0
+800006bc: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE -> LE against hidden but not local var
+800006c0: e3 30 d0 18 00 04 lg %r3,24\(%r13\)
+800006c6: eb 43 00 00 00 0d sllg %r4,%r3,0
+800006cc: 41 54 90 00 la %r5,0\(%r4,%r9\)
# LE, global var defined in exec
+800006d0: e3 40 d0 20 00 04 lg %r4,32\(%r13\)
+800006d6: 41 54 90 00 la %r5,0\(%r4,%r9\)
# function epilog
+800006da: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+800006e0: 07 fe br %r14
+800006e2: 07 07 bcr 0,%r7

View File

@ -0,0 +1,156 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#readelf: -Ssrl
#target: s390x-*-*
There are 19 section headers, starting at offset 0x[0-9a-f]+:
Section Headers:
\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
\[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
\[ 1\] .interp +.*
\[ 2\] .hash +.*
\[ 3\] .dynsym +.*
\[ 4\] .dynstr +.*
\[ 5\] .rela.dyn +.*
\[ 6\] .rela.plt +.*
\[ 7\] .plt +.*
\[ 8\] .text +PROGBITS +0+80000458 0+458 0+28c 00 +AX +0 +0 +4
\[ 9\] .data +.*
\[10\] .tdata +PROGBITS +0+800016e8 0+6e8 0+60 00 WAT +0 +0 +1
\[11\] .tbss +NOBITS +0+80001748 0+748 0+40 00 WAT +0 +0 +1
\[12\] .dynamic +DYNAMIC +0+80001748 0+748 0+140 10 +WA +4 +0 +8
\[13\] .got +PROGBITS +0+80001888 0+888 0+78 08 +WA +0 +0 +8
\[14\] .sbss +.*
\[15\] .bss +.*
\[16\] .shstrtab +.*
\[17\] .symtab +.*
\[18\] .strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is EXEC \(Executable file\)
Entry point 0x80000644
There are 6 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 +0x0+ 0x0+80000000 0x0+80000000 0x0+6e4 0x0+6e4 R E 0x1000
LOAD +0x0+6e8 0x0+800016e8 0x0+800016e8 0x0+218 0x0+218 RW 0x1000
DYNAMIC +0x0+748 0x0+80001748 0x0+80001748 0x0+140 0x0+140 RW 0x8
TLS +0x0+6e8 0x0+800016e8 0x0+800016e8 0x0+60 0x0+a0 R +0x1
Section to Segment mapping:
Segment Sections...
00 *
01 +.interp *
02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
03 +.tdata .tbss .dynamic .got *
04 +.tbss .dynamic *
05 +.tdata .tbss *
Relocation section '.rela.dyn' at offset 0x[0-9a-z]+ contains 4 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-z]+ +0+10+38 R_390_TLS_TPOFF +0+ sG3 \+ 0
[0-9a-z]+ +0+30+38 R_390_TLS_TPOFF +0+ sG2 \+ 0
[0-9a-z]+ +0+60+38 R_390_TLS_TPOFF +0+ sG6 \+ 0
[0-9a-z]+ +0+70+38 R_390_TLS_TPOFF +0+ sG1 \+ 0
Relocation section '.rela.plt' at offset 0x40+ contains 1 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-z]+ +0+40+b R_390_JMP_SLOT +0+80+438 __tls_get_offset \+ 0
Symbol table '.dynsym' contains 11 entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND
+1: 0+ +0 TLS +GLOBAL DEFAULT +UND sG3
+2: [0-9a-z]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+3: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2
+4: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_offset
+5: [0-9a-z]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+6: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6
+7: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1
+8: [0-9a-z]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+9: [0-9a-z]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
+10: [0-9a-z]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
Symbol table '.symtab' contains 71 entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND
+1: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +1
+2: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +2
+3: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +3
+4: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +4
+5: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +5
+6: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +6
+7: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +7
+8: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +8
+9: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +9
+10: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +10
+11: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +11
+12: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +12
+13: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +13
+14: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +14
+15: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +15
+16: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +16
+17: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +17
+18: [0-9a-z]+ +0 SECTION LOCAL +DEFAULT +18
+19: 0+20 +0 TLS +LOCAL +DEFAULT +10 sl1
+20: 0+24 +0 TLS +LOCAL +DEFAULT +10 sl2
+21: 0+28 +0 TLS +LOCAL +DEFAULT +10 sl3
+22: 0+2c +0 TLS +LOCAL +DEFAULT +10 sl4
+23: 0+30 +0 TLS +LOCAL +DEFAULT +10 sl5
+24: 0+34 +0 TLS +LOCAL +DEFAULT +10 sl6
+25: 0+38 +0 TLS +LOCAL +DEFAULT +10 sl7
+26: 0+3c +0 TLS +LOCAL +DEFAULT +10 sl8
+27: 0+80 +0 TLS +LOCAL +DEFAULT +11 bl1
+28: 0+84 +0 TLS +LOCAL +DEFAULT +11 bl2
+29: 0+88 +0 TLS +LOCAL +DEFAULT +11 bl3
+30: 0+8c +0 TLS +LOCAL +DEFAULT +11 bl4
+31: 0+90 +0 TLS +LOCAL +DEFAULT +11 bl5
+32: 0+94 +0 TLS +LOCAL +DEFAULT +11 bl6
+33: 0+98 +0 TLS +LOCAL +DEFAULT +11 bl7
+34: 0+9c +0 TLS +LOCAL +DEFAULT +11 bl8
+35: 0+ +0 TLS +GLOBAL DEFAULT +UND sG3
+36: 0+1c +0 TLS +GLOBAL DEFAULT +10 sg8
+37: 0+7c +0 TLS +GLOBAL DEFAULT +11 bg8
+38: 0+74 +0 TLS +GLOBAL DEFAULT +11 bg6
+39: 0+68 +0 TLS +GLOBAL DEFAULT +11 bg3
+40: [0-9a-z]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+41: 0+8 +0 TLS +GLOBAL DEFAULT +10 sg3
+42: 0+48 +0 TLS +GLOBAL HIDDEN +10 sh3
+43: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2
+44: 0+c +0 TLS +GLOBAL DEFAULT +10 sg4
+45: 0+10 +0 TLS +GLOBAL DEFAULT +10 sg5
+46: 0+70 +0 TLS +GLOBAL DEFAULT +11 bg5
+47: 0+58 +0 TLS +GLOBAL HIDDEN +10 sh7
+48: 0+5c +0 TLS +GLOBAL HIDDEN +10 sh8
+49: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_offset
+50: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1
+51: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +8 _start
+52: 0+4c +0 TLS +GLOBAL HIDDEN +10 sh4
+53: 0+78 +0 TLS +GLOBAL DEFAULT +11 bg7
+54: 0+50 +0 TLS +GLOBAL HIDDEN +10 sh5
+55: [0-9a-z]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+56: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6
+57: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +8 fn2
+58: 0+4 +0 TLS +GLOBAL DEFAULT +10 sg2
+59: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1
+60: 0+40 +0 TLS +GLOBAL HIDDEN +10 sh1
+61: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6
+62: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7
+63: [0-9a-z]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+64: [0-9a-z]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
+65: 0+80+190+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+66: 0+44 +0 TLS +GLOBAL HIDDEN +10 sh2
+67: 0+54 +0 TLS +GLOBAL HIDDEN +10 sh6
+68: 0+64 +0 TLS +GLOBAL DEFAULT +11 bg2
+69: 0+60 +0 TLS +GLOBAL DEFAULT +11 bg1
+70: 0+6c +0 TLS +GLOBAL DEFAULT +11 bg4

View File

@ -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

View File

@ -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:
80001888 [0-9a-f]+ [0-9a-f]+ 00000000 00000000 .*
80001898 00000000 00000000 [0-9a-f]+ [0-9a-f]+ .*
800018a8 ffffffff ffffff88 00000000 00000000 .*
800018b8 00000000 00000000 ffffffff ffffff68 .*
800018c8 ffffffff ffffffa8 00000000 00000000 .*
800018d8 00000000 00000000 00000000 00000000 .*
800018e8 00000000 00000000 00000000 00000000 .*
800018f8 00000000 00000000 .*

View File

@ -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:
800016e8 00000011 00000012 00000013 00000014 .*
800016f8 00000015 00000016 00000017 00000018 .*
80001708 00000041 00000042 00000043 00000044 .*
80001718 00000045 00000046 00000047 00000048 .*
80001728 00000101 00000102 00000103 00000104 .*
80001738 00000105 00000106 00000107 00000108 .*

View File

@ -0,0 +1,168 @@
.section ".tdata", "awT", @progbits
.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
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

View File

@ -0,0 +1,184 @@
.section ".tdata", "awT", @progbits
.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
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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,161 @@
#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+4bc <fn1>:
# function prolog
+4bc: 90 6e f0 18 stm %r6,%r14,24\(%r15\)
+4c0: a7 d5 00 30 bras %r13,520 <fn1\+0x64>
# _GLOBAL_OFFSET_TABLE_-.LT1
+4c4: 00 00 12 78 .long 0x00001278
# __tls_get_addr@plt-.LT1
+4c8: ff ff ff d8 .long 0xffffffd8
# sg1@tlsgd
+4cc: 00 00 00 38 .long 0x00000038
# sg2@tlsgd
+4d0: 00 00 00 48 .long 0x00000048
# sl1@tlsgd
+4d4: 00 00 00 10 .long 0x00000010
# sl2@tlsgd
+4d8: 00 00 00 18 .long 0x00000018
# sh1@tlsgd
+4dc: 00 00 00 4c .long 0x0000004c
# sh2@tlsgd
+4e0: 00 00 00 54 .long 0x00000054
# sH1@tlsgd
+4e4: 00 00 00 28 .long 0x00000028
# sH2@tlsgd
+4e8: 00 00 00 30 .long 0x00000030
# sl1@tlsldm
+4ec: 00 00 00 20 .long 0x00000020
# sl1@dtpoff
+4f0: 00 00 00 20 .long 0x00000020
# sl2@dtpoff
+4f4: 00 00 00 24 .long 0x00000024
# sh1@tlsldm
+4f8: 00 00 00 20 .long 0x00000020
# sh1@dtpoff
+4fc: 00 00 00 40 .long 0x00000040
# sh2@dtpoff
+500: 00 00 00 44 .long 0x00000044
# sH1@tlsldm
+504: 00 00 00 20 .long 0x00000020
# sH1@dtpoff
+508: 00 00 00 60 .long 0x00000060
# sH2@dtpoff
+50c: 00 00 00 64 .long 0x00000064
# sg2@gotntpoff
+510: 00 00 00 48 .long 0x00000048
# sl2@gotntpoff
+514: 00 00 00 18 .long 0x00000018
# sh2@gotntpoff
+518: 00 00 00 54 .long 0x00000054
# sH2@gotntpoff
+51c: 00 00 00 30 .long 0x00000030
# function prolog
+520: 18 ef lr %r14,%r15
+522: 58 c0 d0 00 l %r12,0\(%r13\)
+526: a7 fa ff a0 ahi %r15,-96
+52a: 41 cc d0 00 la %r12,0\(%r12,%r13\)
+52e: 50 e0 e0 00 st %r14,0\(%r14\)
# Extract TCB and load branch offset
+532: b2 4f 00 90 ear %r9,%a0
+536: 58 70 d0 04 l %r7,4\(%r13\)
# GD
+53a: 58 20 d0 08 l %r2,8\(%r13\)
+53e: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+542: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is referenced through IE too
+546: 58 20 d0 0c l %r2,12\(%r13\)
+54a: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+54e: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against local variable
+552: 58 20 d0 10 l %r2,16\(%r13\)
+556: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+55a: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against local variable referenced through IE too
+55e: 58 20 d0 14 l %r2,20\(%r13\)
+562: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+566: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden and local variable
+56a: 58 20 d0 18 l %r2,24\(%r13\)
+56e: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+572: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden and local variable referenced through
# IE too
+576: 58 20 d0 1c l %r2,28\(%r13\)
+57a: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+57e: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden but not local variable
+582: 58 20 d0 20 l %r2,32\(%r13\)
+586: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+58a: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden but not local variable referenced through
# IE too
+58e: 58 20 d0 24 l %r2,36\(%r13\)
+592: 58 22 c0 00 l %r2,0\(%r2,%r12\)
+596: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD
+59a: 58 20 d0 28 l %r2,40\(%r13\)
+59e: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+5a2: 41 32 90 00 la %r3,0\(%r2,%r9\)
+5a6: 58 40 d0 2c l %r4,44\(%r13\)
+5aa: 41 54 30 00 la %r5,0\(%r4,%r3\)
+5ae: 58 40 d0 30 l %r4,48\(%r13\)
+5b2: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden and local variables
+5b6: 58 20 d0 34 l %r2,52\(%r13\)
+5ba: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+5be: 41 32 90 00 la %r3,0\(%r2,%r9\)
+5c2: 58 40 d0 38 l %r4,56\(%r13\)
+5c6: 41 54 30 00 la %r5,0\(%r4,%r3\)
+5ca: 58 40 d0 34 l %r4,52\(%r13\)
+5ce: 41 55 30 00 la %r5,0\(%r5,%r3\)
# LD against hidden but not local variables
+5d2: 58 20 d0 40 l %r2,64\(%r13\)
+5d6: 4d e7 d0 00 bas %r14,0\(%r7,%r13\)
+5da: 41 32 90 00 la %r3,0\(%r2,%r9\)
+5de: 58 30 d0 44 l %r3,68\(%r13\)
+5e2: 41 54 30 00 la %r5,0\(%r4,%r3\)
+5e6: 58 40 d0 48 l %r4,72\(%r13\)
+5ea: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+5ee: 58 30 d0 4c l %r3,76\(%r13\)
+5f2: 58 33 c0 00 l %r3,0\(%r3,%r12\)
+5f6: 41 33 30 00 la %r3,0\(%r3,%r3\)
# IE against local var
+5fa: 58 30 d0 50 l %r3,80\(%r13\)
+5fe: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+602: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against hidden and local var
+606: 58 30 d0 54 l %r3,84\(%r13\)
+60a: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+60e: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against hidden but not local var
+612: 58 30 d0 58 l %r3,88\(%r13\)
+616: 58 43 c0 00 l %r4,0\(%r3,%r12\)
+61a: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var with small got access (no optimization)
+61e: 58 30 c0 34 l %r3,52\(%r12\)
+622: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+626: 58 30 c0 1c l %r3,28\(%r12\)
+62a: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden and local var with small got access
# (no optimization)
+62e: 58 30 c0 40 l %r3,64\(%r12\)
+632: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden but not local var with small got access
# (no optimization)
+636: 58 30 c0 44 l %r3,68\(%r12\)
+63a: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function prolog
+63e: 98 6e f0 78 lm %r6,%r14,120\(%r15\)
+642: 07 fe br %r14

View File

@ -0,0 +1,165 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -m31
#ld: -shared -melf_s390
#readelf: -Ssrl
#target: s390-*-*
There are 18 section headers, starting at offset 0x[0-9a-f]+:
Section Headers:
\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
\[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 0
\[ 1\] .hash +.*
\[ 2\] .dynsym +.*
\[ 3\] .dynstr +.*
\[ 4\] .rela.dyn +.*
\[ 5\] .rela.plt +.*
\[ 6\] .plt +.*
\[ 7\] .text +PROGBITS +0+4bc 0+4bc 0+188 00 AX 0 +0 4
\[ 8\] .data +.*
\[ 9\] .tdata +PROGBITS +0+1644 0+644 0+60 00 WAT 0 +0 1
\[10\] .tbss +NOBITS +0+16a4 0+6a4 0+20 00 WAT 0 +0 1
\[11\] .dynamic +DYNAMIC +0+16a4 0+6a4 0+98 08 WA 3 +0 4
\[12\] .got +PROGBITS +0+173c 0+73c 0+58 04 WA 0 +0 4
\[13\] .sbss +.*
\[14\] .bss +.*
\[15\] .shstrtab +.*
\[16\] .symtab +.*
\[17\] .strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is DYN \(Shared object file\)
Entry point 0x4bc
There are 4 program headers, starting at offset [0-9]+
Program Headers:
Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz Flg Align
LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000
LOAD +0x0+644 0x0+1644 0x0+1644 0x00150 0x00150 RW 0x1000
DYNAMIC +0x0+6a4 0x0+16a4 0x0+16a4 0x0+98 0x0+98 RW 0x4
TLS +0x0+644 0x0+1644 0x0+1644 0x0+60 0x0+80 R +0x1
Section to Segment mapping:
Segment Sections...
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text
+01 +.tdata .tbss .dynamic .got
+02 +.tbss .dynamic
+03 +.tdata .tbss
Relocation section '.rela.dyn' at offset 0x3c8 contains 14 entries:
Offset +Info +Type +Sym.Value Sym. Name \+ Addend
[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+24
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+30
[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+64
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+50
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+70
[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+44
[0-9a-f]+ 0+1338 R_390_TLS_TPOFF +0+10 +sg5 \+ 0
[0-9a-f]+ 0+1536 R_390_TLS_DTPMOD 0+ +sg1 \+ 0
[0-9a-f]+ 0+1537 R_390_TLS_DTPOFF 0+ +sg1 \+ 0
[0-9a-f]+ 0+1838 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]+ 0+140b R_390_JMP_SLOT +0+ +__tls_get_offset \+ 0
Symbol table '.dynsym' contains 30 entries:
+Num: +Value Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1
+2: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2
+3: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3
+4: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4
+5: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5
+6: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6
+7: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7
+8: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8
+9: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9
+10: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10
+11: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11
+12: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12
+13: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13
+14: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14
+15: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+16: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+17: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+18: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+19: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+20: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset
+21: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+22: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+23: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+24: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+25: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+26: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+27: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+28: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+29: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end
Symbol table '.symtab' contains 57 entries:
+Num: +Value Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1
+2: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2
+3: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3
+4: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4
+5: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5
+6: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6
+7: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7
+8: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8
+9: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9
+10: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10
+11: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11
+12: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12
+13: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13
+14: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14
+15: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +15
+16: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +16
+17: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +17
+18: 0+20 +0 TLS +LOCAL DEFAULT +9 sl1
+19: 0+24 +0 TLS +LOCAL DEFAULT +9 sl2
+20: 0+28 +0 TLS +LOCAL DEFAULT +9 sl3
+21: 0+2c +0 TLS +LOCAL DEFAULT +9 sl4
+22: 0+30 +0 TLS +LOCAL DEFAULT +9 sl5
+23: 0+34 +0 TLS +LOCAL DEFAULT +9 sl6
+24: 0+38 +0 TLS +LOCAL DEFAULT +9 sl7
+25: 0+3c +0 TLS +LOCAL DEFAULT +9 sl8
+26: 0+60 +0 TLS +LOCAL HIDDEN +10 sH1
+27: 0+48 +0 TLS +LOCAL HIDDEN +9 sh3
+28: 0+64 +0 TLS +LOCAL HIDDEN +10 sH2
+29: 0+78 +0 TLS +LOCAL HIDDEN +10 sH7
+30: 0+58 +0 TLS +LOCAL HIDDEN +9 sh7
+31: 0+5c +0 TLS +LOCAL HIDDEN +9 sh8
+32: 0+6c +0 TLS +LOCAL HIDDEN +10 sH4
+33: 0+4c +0 TLS +LOCAL HIDDEN +9 sh4
+34: 0+68 +0 TLS +LOCAL HIDDEN +10 sH3
+35: 0+50 +0 TLS +LOCAL HIDDEN +9 sh5
+36: 0+70 +0 TLS +LOCAL HIDDEN +10 sH5
+37: 0+74 +0 TLS +LOCAL HIDDEN +10 sH6
+38: 0+7c +0 TLS +LOCAL HIDDEN +10 sH8
+39: 0+40 +0 TLS +LOCAL HIDDEN +9 sh1
+40: 0+44 +0 TLS +LOCAL HIDDEN +9 sh2
+41: 0+54 +0 TLS +LOCAL HIDDEN +9 sh6
+42: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+43: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+44: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+45: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+46: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+47: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset
+48: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+49: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+50: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+51: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+52: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+53: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+54: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+55: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+56: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end

View File

@ -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:
173c [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .*
174c 00000000 00000020 00000000 00000000 .*
175c 00000000 00000000 00000000 00000060 .*
176c 00000000 00000000 00000000 00000000 .*
177c 00000000 00000000 00000000 00000000 .*
178c 00000040 00000000 +.*

View File

@ -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:
1644 00000011 00000012 00000013 00000014 .*
1654 00000015 00000016 00000017 00000018 .*
1664 00000041 00000042 00000043 00000044 .*
1674 00000045 00000046 00000047 00000048 .*
1684 00000101 00000102 00000103 00000104 .*
1694 00000105 00000106 00000107 00000108 .*

View File

@ -0,0 +1,206 @@
.section ".tdata", "awT", @progbits
.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
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

View File

@ -0,0 +1,222 @@
.section ".tdata", "awT", @progbits
.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
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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,194 @@
#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+790 <fn1>:
# function prolog
+790: eb 6e f0 30 00 24 stmg %r6,%r14,48\(%r15\)
+796: a7 d5 00 56 bras %r13,842 <fn1\+0xb2>
# sg1@tlsgd
+79a: 00 00 00 00 .long 0x00000000
+79e: 00 00 00 70 .long 0x00000070
# sg2@tlsgd
+7a2: 00 00 00 00 .long 0x00000000
+7a6: 00 00 00 90 .long 0x00000090
# sl1@tlsgd
+7aa: 00 00 00 00 .long 0x00000000
+7ae: 00 00 00 20 .long 0x00000020
# sl2@tlsgd
+7b2: 00 00 00 00 .long 0x00000000
+7b6: 00 00 00 30 .long 0x00000030
# sh1@tlsgd
+7ba: 00 00 00 00 .long 0x00000000
+7be: 00 00 00 98 .long 0x00000098
# sh2@tlsgd
+7c2: 00 00 00 00 .long 0x00000000
+7c6: 00 00 00 a8 .long 0x000000a8
# sH1@tlsgd
+7ca: 00 00 00 00 .long 0x00000000
+7ce: 00 00 00 50 .long 0x00000050
# sH2@tlsgd
+7d2: 00 00 00 00 .long 0x00000000
+7d6: 00 00 00 60 .long 0x00000060
# sl1@tlsldm
+7da: 00 00 00 00 .long 0x00000000
+7de: 00 00 00 40 .long 0x00000040
# sl1@dtpoff
+7e2: 00 00 00 00 .long 0x00000000
+7e6: 00 00 00 20 .long 0x00000020
# sl2@dtpoff
+7ea: 00 00 00 00 .long 0x00000000
+7ee: 00 00 00 24 .long 0x00000024
# sh1@tlsldm
+7f2: 00 00 00 00 .long 0x00000000
+7f6: 00 00 00 40 .long 0x00000040
# sh1@dtpoff
+7fa: 00 00 00 00 .long 0x00000000
+7fe: 00 00 00 40 .long 0x00000040
# sh2@dtpoff
+802: 00 00 00 00 .long 0x00000000
+806: 00 00 00 44 .long 0x00000044
# sH1@tlsldm
+80a: 00 00 00 00 .long 0x00000000
+80e: 00 00 00 40 .long 0x00000040
# sH1@dtpoff
+812: 00 00 00 00 .long 0x00000000
+816: 00 00 00 60 .long 0x00000060
# sH2@dtpoff
+81a: 00 00 00 00 .long 0x00000000
+81e: 00 00 00 64 .long 0x00000064
# sg2@gotntpoff
+822: 00 00 00 00 .long 0x00000000
+826: 00 00 00 90 .long 0x00000090
# sl2@gotntpoff
+82a: 00 00 00 00 .long 0x00000000
+82e: 00 00 00 30 .long 0x00000030
# sh2@gotntpoff
+832: 00 00 00 00 .long 0x00000000
+836: 00 00 00 a8 .long 0x000000a8
# sH2@gotntpoff
+83a: 00 00 00 00 .long 0x00000000
+83e: 00 00 00 60 .long 0x00000060
# function prolog
+842: b9 04 00 ef lgr %r14,%r15
+846: c0 c0 00 00 09 a5 larl %r12,1b90 <_GLOBAL_OFFSET_TABLE_>
+84c: a7 fb ff 60 aghi %r15,-160
+850: e3 e0 e0 00 00 24 stg %r14,0\(%r14\)
# extract TCB
+856: b2 4f 00 90 ear %r9,%a0
+85a: eb 94 00 20 00 0d sllg %r9,%r4,32
+860: b2 4f 00 91 ear %r9,%a1
# GD
+864: e3 20 d0 00 00 04 lg %r2,0\(%r13\)
+86a: c0 e5 ff ff ff 83 brasl %r14,770 <sH8\+0x6f4>
+870: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE because variable is referenced through IE too
+874: e3 20 d0 08 00 04 lg %r2,8\(%r13\)
+87a: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+880: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against local variable
+884: e3 20 d0 10 00 04 lg %r2,16\(%r13\)
+88a: c0 e5 ff ff ff 73 brasl %r14,770 <sH8\+0x6f4>
+890: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against local variable referenced through IE too
+894: e3 20 d0 18 00 04 lg %r2,24\(%r13\)
+89a: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+8a0: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden and local variable
+8a4: e3 20 d0 20 00 04 lg %r2,32\(%r13\)
+8aa: c0 e5 ff ff ff 63 brasl %r14,770 <sH8\+0x6f4>
+8b0: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden and local variable referenced through
# IE too
+8b4: e3 20 d0 28 00 04 lg %r2,40\(%r13\)
+8ba: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+8c0: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD against hidden but not local variable
+8c4: e3 20 d0 30 00 04 lg %r2,48\(%r13\)
+8ca: c0 e5 ff ff ff 53 brasl %r14,770 <sH8\+0x6f4>
+8d0: 41 22 90 00 la %r2,0\(%r2,%r9\)
# GD -> IE against hidden but not local variable referenced through
# IE too
+8d4: e3 20 d0 38 00 04 lg %r2,56\(%r13\)
+8da: e3 22 c0 00 00 04 lg %r2,0\(%r2,%r12\)
+8e0: 41 22 90 00 la %r2,0\(%r2,%r9\)
# LD
+8e4: e3 20 d0 40 00 04 lg %r2,64\(%r13\)
+8ea: c0 e5 ff ff ff 43 brasl %r14,770 <sH8\+0x6f4>
+8f0: 41 32 90 00 la %r3,0\(%r2,%r9\)
+8f4: e3 40 d0 48 00 04 lg %r4,72\(%r13\)
+8fa: 41 54 30 00 la %r5,0\(%r4,%r3\)
+8fe: e3 40 d0 50 00 04 lg %r4,80\(%r13\)
+904: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden and local variables
+908: e3 20 d0 58 00 04 lg %r2,88\(%r13\)
+90e: c0 e5 ff ff ff 31 brasl %r14,770 <sH8\+0x6f4>
+914: 41 32 90 00 la %r3,0\(%r2,%r9\)
+918: e3 40 d0 60 00 04 lg %r4,96\(%r13\)
+91e: 41 54 30 00 la %r5,0\(%r4,%r3\)
+922: e3 40 d0 68 00 04 lg %r4,104\(%r13\)
+928: 41 54 30 00 la %r5,0\(%r4,%r3\)
# LD against hidden but not local variables
+92c: e3 20 d0 70 00 04 lg %r2,112\(%r13\)
+932: c0 e5 ff ff ff 1f brasl %r14,770 <sH8\+0x6f4>
+938: 41 32 90 00 la %r3,0\(%r2,%r9\)
+93c: e3 40 d0 78 00 04 lg %r4,120\(%r13\)
+942: 41 54 30 00 la %r5,0\(%r4,%r3\)
+946: e3 40 d0 80 00 04 lg %r4,128\(%r13\)
+94c: 41 54 30 00 la %r5,0\(%r4,%r3\)
# IE against global var
+950: e3 30 d0 88 00 04 lg %r3,136\(%r13\)
+956: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+95c: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var
+960: e3 30 d0 90 00 04 lg %r3,144\(%r13\)
+966: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+96c: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden and local var
+970: e3 30 d0 98 00 04 lg %r3,152\(%r13\)
+976: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+97c: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden but not local var
+980: e3 30 d0 a0 00 04 lg %r3,160\(%r13\)
+986: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+98c: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with larl got access
+990: c0 30 00 00 09 34 larl %r3,1bf8 <\_GLOBAL\_OFFSET\_TABLE\_\+0x68>
+996: e3 33 c0 00 00 04 lg %r3,0\(%r3,%r12\)
+99c: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with larl got access
+9a0: c0 30 00 00 09 14 larl %r3,1bc8 <\_GLOBAL\_OFFSET\_TABLE\_\+0x38>
+9a6: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+9ac: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden and local var with larl got access
+9b0: c0 30 00 00 09 30 larl %r3,1c10 <\_GLOBAL\_OFFSET\_TABLE\_\+0x80>
+9b6: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+9bc: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against hidden but not local var with larl got access
+9c0: c0 30 00 00 09 2c larl %r3,1c18 <\_GLOBAL\_OFFSET\_TABLE\_\+0x88>
+9c6: e3 43 c0 00 00 04 lg %r4,0\(%r3,%r12\)
+9cc: 41 54 90 00 la %r5,0\(%r4,%r9\)
# IE against global var with small got access (no optimization)
+9d0: e3 30 c0 68 00 04 lg %r3,104\(%r12\)
+9d6: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against local var with small got access (no optimization)
+9da: e3 30 c0 38 00 04 lg %r3,56\(%r12\)
+9e0: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden and local var with small got access
# (no optimization)
+9e4: e3 30 c0 80 00 04 lg %r3,128\(%r12\)
+9ea: 41 33 90 00 la %r3,0\(%r3,%r9\)
# IE against hidden but not local var with small got access
# (no optimization)
+9ee: e3 30 c0 88 00 04 lg %r3,136\(%r12\)
+9f4: 41 33 90 00 la %r3,0\(%r3,%r9\)
# function epilog
+9f8: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\)
+9fe: 07 fe br %r14

View File

@ -0,0 +1,165 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -m64 -Aesame
#ld: -shared -melf64_s390
#readelf: -WSsrl
#target: s390x-*-*
There are 18 section headers, starting at offset 0x[0-9a-f]+:
Section Headers:
\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
\[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
\[ 1\] .hash +.*
\[ 2\] .dynsym +.*
\[ 3\] .dynstr +.*
\[ 4\] .rela.dyn +.*
\[ 5\] .rela.plt +.*
\[ 6\] .plt +.*
\[ 7\] .text +PROGBITS +0+790 0+790 0+270 00 +AX +0 +0 +4
\[ 8\] .data +.*
\[ 9\] .tdata +PROGBITS +0+1a00 0+a00 0+60 00 WAT +0 +0 +1
\[10\] .tbss +NOBITS +0+1a60 0+a60 0+20 00 WAT +0 +0 +1
\[11\] .dynamic +DYNAMIC +0+1a60 0+a60 0+130 10 +WA +3 +0 +8
\[12\] .got +PROGBITS +0+1b90 0+b90 0+b0 08 +WA +0 +0 +8
\[13\] .sbss +.*
\[14\] .bss +.*
\[15\] .shstrtab +.*
\[16\] .symtab +.*
\[17\] .strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is DYN \(Shared object file\)
Entry point 0x790
There are 4 program headers, starting at offset [0-9]+
Program Headers:
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000
LOAD +0x0+a00 0x0+1a00 0x0+1a00 0x0+240 0x0+240 RW +0x1000
DYNAMIC +0x0+a60 0x0+1a60 0x0+1a60 0x0+130 0x0+130 RW +0x8
TLS +0x0+a00 0x0+1a00 0x0+1a00 0x0+60 0x0+80 R +0x1
Section to Segment mapping:
Segment Sections...
00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
01 +.tdata .tbss .dynamic .got *
02 +.tbss .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-z]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+24
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+30
[0-9a-z]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-z]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+64
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+50
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+70
[0-9a-z]+ 0+36 R_390_TLS_DTPMOD +0+
[0-9a-z]+ 0+38 R_390_TLS_TPOFF +0+44
[0-9a-z]+ 0+130+38 R_390_TLS_TPOFF +0+10 sg5 \+ 0
[0-9a-z]+ 0+150+36 R_390_TLS_DTPMOD +0+ sg1 \+ 0
[0-9a-z]+ 0+150+37 R_390_TLS_DTPOFF +0+ sg1 \+ 0
[0-9a-z]+ 0+180+38 R_390_TLS_TPOFF +0+4 sg2 \+ 0
Relocation section '.rela.plt' at offset 0x738 contains 1 entries:
+Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend
0+1ba8 0+140+b R_390_JMP_SLOT +0+ __tls_get_offset \+ 0
Symbol table '.dynsym' contains 30 entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +1
+2: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +2
+3: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +3
+4: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +4
+5: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +5
+6: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +6
+7: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +7
+8: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +8
+9: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +9
+10: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +10
+11: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +11
+12: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +12
+13: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +13
+14: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +14
+15: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+16: [0-9a-z]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+17: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+18: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+19: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+20: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset
+21: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+22: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+23: [0-9a-z]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+24: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+25: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+26: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+27: [0-9a-z]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+28: [0-9a-z]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+29: 0+1c40 +0 NOTYPE GLOBAL DEFAULT ABS _end
Symbol table '.symtab' contains 57 entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 NOTYPE LOCAL DEFAULT UND
+1: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +1
+2: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +2
+3: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +3
+4: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +4
+5: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +5
+6: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +6
+7: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +7
+8: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +8
+9: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +9
+10: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +10
+11: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +11
+12: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +12
+13: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +13
+14: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +14
+15: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +15
+16: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +16
+17: [0-9a-z]+ +0 SECTION LOCAL DEFAULT +17
+18: 0+20 +0 TLS +LOCAL DEFAULT +9 sl1
+19: 0+24 +0 TLS +LOCAL DEFAULT +9 sl2
+20: 0+28 +0 TLS +LOCAL DEFAULT +9 sl3
+21: 0+2c +0 TLS +LOCAL DEFAULT +9 sl4
+22: 0+30 +0 TLS +LOCAL DEFAULT +9 sl5
+23: 0+34 +0 TLS +LOCAL DEFAULT +9 sl6
+24: 0+38 +0 TLS +LOCAL DEFAULT +9 sl7
+25: 0+3c +0 TLS +LOCAL DEFAULT +9 sl8
+26: 0+60 +0 TLS +LOCAL HIDDEN +10 sH1
+27: 0+48 +0 TLS +LOCAL HIDDEN +9 sh3
+28: 0+64 +0 TLS +LOCAL HIDDEN +10 sH2
+29: 0+78 +0 TLS +LOCAL HIDDEN +10 sH7
+30: 0+58 +0 TLS +LOCAL HIDDEN +9 sh7
+31: 0+5c +0 TLS +LOCAL HIDDEN +9 sh8
+32: 0+6c +0 TLS +LOCAL HIDDEN +10 sH4
+33: 0+4c +0 TLS +LOCAL HIDDEN +9 sh4
+34: 0+68 +0 TLS +LOCAL HIDDEN +10 sH3
+35: 0+50 +0 TLS +LOCAL HIDDEN +9 sh5
+36: 0+70 +0 TLS +LOCAL HIDDEN +10 sH5
+37: 0+74 +0 TLS +LOCAL HIDDEN +10 sH6
+38: 0+7c +0 TLS +LOCAL HIDDEN +10 sH8
+39: 0+40 +0 TLS +LOCAL HIDDEN +9 sh1
+40: 0+44 +0 TLS +LOCAL HIDDEN +9 sh2
+41: 0+54 +0 TLS +LOCAL HIDDEN +9 sh6
+42: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+43: [0-9a-z]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+44: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+45: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+46: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+47: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset
+48: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+49: [0-9a-z]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+50: [0-9a-z]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start
+51: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+52: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+53: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+54: [0-9a-z]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata
+55: [0-9a-z]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+56: [0-9a-z]+ +0 NOTYPE GLOBAL DEFAULT ABS _end

View File

@ -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:
1b90 [0-9a-f]+ [0-9a-f]+ 00000000 00000000 .*
1ba0 00000000 00000000 [0-9a-f]+ [0-9a-f]+ .*
1bb0 00000000 00000000 00000000 00000020 .*
1bc0 00000000 00000000 00000000 00000000 .*
1bd0 00000000 00000000 00000000 00000000 .*
1be0 00000000 00000000 00000000 00000060 .*
1bf0 00000000 00000000 00000000 00000000 .*
1c00 00000000 00000000 00000000 00000000 .*
1c10 00000000 00000000 00000000 00000000 .*
1c20 00000000 00000000 00000000 00000000 .*
1c30 00000000 00000040 00000000 00000000 .*

View File

@ -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:
1a00 00000011 00000012 00000013 00000014 .*
1a10 00000015 00000016 00000017 00000018 .*
1a20 00000041 00000042 00000043 00000044 .*
1a30 00000045 00000046 00000047 00000048 .*
1a40 00000101 00000102 00000103 00000104 .*
1a50 00000105 00000106 00000107 00000108 .*