* ld-sh/rd-sh.exp: If the test matches *-dso.d, copy the output

of linker to the file tmpdir/*-dso.so.
	* ld-sh/tlsbin.s, ld-sh/tlsbinpic.s, ld-sh/tlslib.s: New.
	* ld-sh/tlsbin-0-dso.d: New.
	* ld-sh/tlsbin-1.d: New.
	* ld-sh/tlsbin-2.d: New.
	* ld-sh/tlsbin-3.d: New.
	* ld-sh/tlsbin-4.d: New.
	* ld-sh/tlspic1.s, ld-sh/tlspic2.s: New.
	* ld-sh/tlspic-1.d: New.
	* ld-sh/tlspic-2.d: New.
	* ld-sh/tlspic-3.d: New.
	* ld-sh/tlspic-4.d: New.
This commit is contained in:
Kaz Kojima 2002-10-11 14:44:55 +00:00
parent 94a03f18b8
commit 6c381eeb71
16 changed files with 1539 additions and 0 deletions

View file

@ -1,3 +1,19 @@
2002-10-11 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* ld-sh/rd-sh.exp: If the test matches *-dso.d, copy the output
of linker to the file tmpdir/*-dso.so.
* ld-sh/tlsbin.s, ld-sh/tlsbinpic.s, ld-sh/tlslib.s: New.
* ld-sh/tlsbin-0-dso.d: New.
* ld-sh/tlsbin-1.d: New.
* ld-sh/tlsbin-2.d: New.
* ld-sh/tlsbin-3.d: New.
* ld-sh/tlsbin-4.d: New.
* ld-sh/tlspic1.s, ld-sh/tlspic2.s: New.
* ld-sh/tlspic-1.d: New.
* ld-sh/tlspic-2.d: New.
* ld-sh/tlspic-3.d: New.
* ld-sh/tlspic-4.d: New.
2002-10-10 Jakub Jelinek <jakub@redhat.com>
* ld-i386/combreloc.s: New test.

View file

@ -33,4 +33,14 @@ foreach shtest $rd_test_list {
# We need to strip the ".d", but can leave the dirname.
verbose [file rootname $shtest]
run_dump_test [file rootname $shtest]
if [string match $srcdir/$subdir/*-dso.d $shtest] {
# Copy the output of the DSO-createing test to .so file.
# Notice that a DSO-creating test must preceed the tests
# which need that DSO in sort-order by name.
set cmd "cp tmpdir/dump tmpdir/[file rootname [file tail $shtest]].so"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
send_log "$comp_output\n"
# FIXME: What if it fails? Need we do something?
}
}

View file

@ -0,0 +1,9 @@
#source: tlslib.s
#as: -little
#ld: -shared -EL
#objdump: -drj.text
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
#pass

View file

@ -0,0 +1,296 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -little
#ld: -EL tmpdir/tlsbin-0-dso.so
#objdump: -drj.text
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Disassembly of section \.text:
0+401000 <fn2>:
401000: c6 2f mov\.l r12,@-r15
401002: e6 2f mov\.l r14,@-r15
401004: 22 4f sts\.l pr,@-r15
401006: 5f c7 mova 401184 <fn2\+0x184>,r0
401008: 5e dc mov\.l 401184 <fn2\+0x184>,r12 ! 0x[0-9a-f]+
40100a: 0c 3c add r0,r12
40100c: f3 6e mov r15,r14
40100e: 09 00 nop
401010: 09 00 nop
401012: 09 00 nop
401014: 09 00 nop
401016: 04 d0 mov\.l 401028 <fn2\+0x28>,r0 ! 0x1c
401018: 12 04 stc gbr,r4
40101a: ce 00 mov\.l @\(r0,r12\),r0
40101c: 4c 30 add r4,r0
40101e: 09 00 nop
401020: 09 00 nop
401022: 05 a0 bra 401030 <fn2\+0x30>
401024: 09 00 nop
401026: 09 00 nop
401028: 1c 00 .*[ ]*.*
40102a: 00 00 .*[ ]*.*
40102c: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
40102e: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
401030: 09 00 nop
401032: 09 00 nop
401034: 09 00 nop
401036: 09 00 nop
401038: 03 d0 mov\.l 401048 <fn2\+0x48>,r0 ! 0x14
40103a: 12 04 stc gbr,r4
40103c: ce 00 mov\.l @\(r0,r12\),r0
40103e: 4c 30 add r4,r0
401040: 09 00 nop
401042: 09 00 nop
401044: 04 a0 bra 401050 <fn2\+0x50>
401046: 09 00 nop
401048: 14 00 .*[ ]*.*
40104a: 00 00 .*[ ]*.*
40104c: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
40104e: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
401050: 09 00 nop
401052: 09 00 nop
401054: 09 00 nop
401056: 09 00 nop
401058: 03 d4 mov\.l 401068 <fn2\+0x68>,r4 ! 0x0
40105a: 12 00 stc gbr,r0
40105c: 4c 30 add r4,r0
40105e: 09 00 nop
401060: 09 00 nop
401062: 09 00 nop
401064: 04 a0 bra 401070 <fn2\+0x70>
401066: 09 00 nop
401068: 00 00 .*[ ]*.*
40106a: 00 00 .*[ ]*.*
40106c: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
40106e: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
401070: 09 00 nop
401072: 09 00 nop
401074: 09 00 nop
401076: 09 00 nop
401078: 03 d4 mov\.l 401088 <fn2\+0x88>,r4 ! 0x0
40107a: 12 00 stc gbr,r0
40107c: 4c 30 add r4,r0
40107e: 09 00 nop
401080: 09 00 nop
401082: 09 00 nop
401084: 04 a0 bra 401090 <fn2\+0x90>
401086: 09 00 nop
401088: 00 00 .*[ ]*.*
40108a: 00 00 .*[ ]*.*
40108c: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
40108e: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
401090: 09 00 nop
401092: 09 00 nop
401094: 09 00 nop
401096: 09 00 nop
401098: 03 d4 mov\.l 4010a8 <fn2\+0xa8>,r4 ! 0x0
40109a: 12 00 stc gbr,r0
40109c: 4c 30 add r4,r0
40109e: 09 00 nop
4010a0: 09 00 nop
4010a2: 09 00 nop
4010a4: 04 a0 bra 4010b0 <fn2\+0xb0>
4010a6: 09 00 nop
4010a8: 00 00 .*[ ]*.*
4010aa: 00 00 .*[ ]*.*
4010ac: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
4010ae: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
4010b0: 09 00 nop
4010b2: 09 00 nop
4010b4: 09 00 nop
4010b6: 09 00 nop
4010b8: 12 00 stc gbr,r0
4010ba: 09 00 nop
4010bc: 09 00 nop
4010be: 09 00 nop
4010c0: 09 00 nop
4010c2: 09 00 nop
4010c4: 04 a0 bra 4010d0 <fn2\+0xd0>
4010c6: 09 00 nop
4010c8: 00 00 .*[ ]*.*
4010ca: 00 00 .*[ ]*.*
4010cc: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
4010ce: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
4010d0: 09 00 nop
4010d2: 09 00 nop
4010d4: 2c d1 mov\.l 401188 <fn2\+0x188>,r1 ! 0x0
4010d6: 0c 31 add r0,r1
4010d8: 09 00 nop
4010da: 09 00 nop
4010dc: 2b d2 mov\.l 40118c <fn2\+0x18c>,r2 ! 0x0
4010de: 0c 32 add r0,r2
4010e0: 09 00 nop
4010e2: 09 00 nop
4010e4: 09 00 nop
4010e6: 09 00 nop
4010e8: 12 00 stc gbr,r0
4010ea: 09 00 nop
4010ec: 09 00 nop
4010ee: 09 00 nop
4010f0: 09 00 nop
4010f2: 09 00 nop
4010f4: 04 a0 bra 401100 <fn2\+0x100>
4010f6: 09 00 nop
4010f8: 00 00 .*[ ]*.*
4010fa: 00 00 .*[ ]*.*
4010fc: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
4010fe: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
401100: 09 00 nop
401102: 09 00 nop
401104: 22 d1 mov\.l 401190 <fn2\+0x190>,r1 ! 0x0
401106: 0c 31 add r0,r1
401108: 09 00 nop
40110a: 09 00 nop
40110c: 21 d2 mov\.l 401194 <fn2\+0x194>,r2 ! 0x0
40110e: 0c 32 add r0,r2
401110: 09 00 nop
401112: 09 00 nop
401114: 09 00 nop
401116: 09 00 nop
401118: 02 d0 mov\.l 401124 <fn2\+0x124>,r0 ! 0x14
40111a: 12 01 stc gbr,r1
40111c: ce 00 mov\.l @\(r0,r12\),r0
40111e: 03 a0 bra 401128 <fn2\+0x128>
401120: 0c 31 add r0,r1
401122: 09 00 nop
401124: 14 00 .*[ ]*.*
401126: 00 00 .*[ ]*.*
401128: 09 00 nop
40112a: 09 00 nop
40112c: 09 00 nop
40112e: 09 00 nop
401130: 02 d0 mov\.l 40113c <fn2\+0x13c>,r0 ! 0x18
401132: 12 01 stc gbr,r1
401134: ce 00 mov\.l @\(r0,r12\),r0
401136: 03 a0 bra 401140 <fn2\+0x140>
401138: 1c 30 add r1,r0
40113a: 09 00 nop
40113c: 18 00 .*[ ]*.*
40113e: 00 00 .*[ ]*.*
401140: 09 00 nop
401142: 09 00 nop
401144: 09 00 nop
401146: 09 00 nop
401148: 02 d0 mov\.l 401154 <fn2\+0x154>,r0 ! 0x0
40114a: 12 01 stc gbr,r1
40114c: 09 00 nop
40114e: 03 a0 bra 401158 <fn2\+0x158>
401150: 0c 31 add r0,r1
401152: 09 00 nop
401154: 00 00 .*[ ]*.*
401156: 00 00 .*[ ]*.*
401158: 09 00 nop
40115a: 09 00 nop
40115c: 09 00 nop
40115e: 09 00 nop
401160: 02 d0 mov\.l 40116c <fn2\+0x16c>,r0 ! 0x0
401162: 12 01 stc gbr,r1
401164: 09 00 nop
401166: 03 a0 bra 401170 <fn2\+0x170>
401168: 0c 31 add r0,r1
40116a: 09 00 nop
40116c: 00 00 .*[ ]*.*
40116e: 00 00 .*[ ]*.*
401170: 09 00 nop
401172: 09 00 nop
401174: 09 00 nop
401176: 09 00 nop
401178: e3 6f mov r14,r15
40117a: 26 4f lds\.l @r15\+,pr
40117c: f6 6e mov\.l @r15\+,r14
40117e: 0b 00 rts
401180: f6 6c mov\.l @r15\+,r12
401182: 09 00 nop
401184: 3c 1f .*[ ]*.*
401186: 01 00 .*[ ]*.*
\.\.\.
00402000 <_start>:
402000: c6 2f mov\.l r12,@-r15
402002: e6 2f mov\.l r14,@-r15
402004: f3 6e mov r15,r14
402006: 27 c7 mova 4020a4 <_start\+0xa4>,r0
402008: 26 dc mov\.l 4020a4 <_start\+0xa4>,r12 ! 0x[0-9a-f]+
40200a: 0c 3c add r0,r12
40200c: 09 00 nop
40200e: 09 00 nop
402010: 09 00 nop
402012: 09 00 nop
402014: 02 d0 mov\.l 402020 <_start\+0x20>,r0 ! 0x10
402016: 12 01 stc gbr,r1
402018: ce 00 mov\.l @\(r0,r12\),r0
40201a: 03 a0 bra 402024 <_start\+0x24>
40201c: 0c 31 add r0,r1
40201e: 09 00 nop
402020: 10 00 .*[ ]*.*
402022: 00 00 .*[ ]*.*
402024: 09 00 nop
402026: 09 00 nop
402028: 09 00 nop
40202a: 09 00 nop
40202c: 02 d0 mov\.l 402038 <_start\+0x38>,r0 ! 0x0
40202e: 12 01 stc gbr,r1
402030: 09 00 nop
402032: 03 a0 bra 40203c <_start\+0x3c>
402034: 0c 31 add r0,r1
402036: 09 00 nop
402038: 00 00 .*[ ]*.*
40203a: 00 00 .*[ ]*.*
40203c: 09 00 nop
40203e: 09 00 nop
402040: 09 00 nop
402042: 09 00 nop
402044: 02 d0 mov\.l 402050 <_start\+0x50>,r0 ! 0x0
402046: 12 01 stc gbr,r1
402048: 09 00 nop
40204a: 03 a0 bra 402054 <_start\+0x54>
40204c: 0c 31 add r0,r1
40204e: 09 00 nop
402050: 00 00 .*[ ]*.*
402052: 00 00 .*[ ]*.*
402054: 09 00 nop
402056: 09 00 nop
402058: 09 00 nop
40205a: 09 00 nop
40205c: 02 d0 mov\.l 402068 <_start\+0x68>,r0 ! 0x0
40205e: 12 01 stc gbr,r1
402060: 09 00 nop
402062: 03 a0 bra 40206c <_start\+0x6c>
402064: 0c 31 add r0,r1
402066: 09 00 nop
402068: 00 00 .*[ ]*.*
40206a: 00 00 .*[ ]*.*
40206c: 09 00 nop
40206e: 09 00 nop
402070: 09 00 nop
402072: 09 00 nop
402074: 12 01 stc gbr,r1
402076: 0c d0 mov\.l 4020a8 <_start\+0xa8>,r0 ! 0x0
402078: 1c 30 add r1,r0
40207a: 09 00 nop
40207c: 09 00 nop
40207e: 09 00 nop
402080: 09 00 nop
402082: 12 01 stc gbr,r1
402084: 09 d0 mov\.l 4020ac <_start\+0xac>,r0 ! 0x0
402086: 1c 30 add r1,r0
402088: 09 00 nop
40208a: 09 00 nop
40208c: 09 00 nop
40208e: 09 00 nop
402090: 12 01 stc gbr,r1
402092: 07 d0 mov\.l 4020b0 <_start\+0xb0>,r0 ! 0x0
402094: 1c 30 add r1,r0
402096: 09 00 nop
402098: 09 00 nop
40209a: 09 00 nop
40209c: 09 00 nop
40209e: e3 6f mov r14,r15
4020a0: 0b 00 rts
4020a2: f6 6e mov\.l @r15\+,r14
4020a4: 1c 10 .*[ ]*.*
4020a6: 01 00 .*[ ]*.*
\.\.\.

View file

@ -0,0 +1,145 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -little
#ld: -EL tmpdir/tlsbin-0-dso.so
#readelf: -Ssrl
#target: sh*-*-linux* sh*-*-netbsd*
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\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
\[ 1\] \.interp +.*
\[ 2\] \.hash +.*
\[ 3\] \.dynsym +.*
\[ 4\] \.dynstr +.*
\[ 5\] \.rela\.dyn +.*
\[ 6\] \.rela\.plt +.*
\[ 7\] \.plt +.*
\[ 8\] \.text +PROGBITS +0+401000 .*
\[ 9\] \.data +.*
\[10\] \.tdata +PROGBITS +0+413000 [0-9a-f]+ 0+018 00 WAT 0 0 1
\[11\] \.tbss +NOBITS +0+413018 [0-9a-f]+ 0+010 00 WAT 0 0 1
\[12\] \.dynamic +DYNAMIC +0+413018 .*
#...
\[[0-9a-f]+\] \.got +PROGBITS +0+4130c0 .*
\[[0-9a-f]+\] \.sbss +.*
\[[0-9a-f]+\] \.bss +.*
#...
\[[0-9a-f]+\] \.shstrtab +.*
\[[0-9a-f]+\] \.symtab +.*
\[[0-9a-f]+\] \.strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is EXEC \(Executable file\)
Entry point 0x402000
There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
PHDR.*
INTERP.*
.*Requesting program interpreter.*
LOAD.*
LOAD.*
DYNAMIC.*
TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 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-f]+ contains 19 entries:
Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
0+401068 00000097 R_SH_TLS_TPOFF32 +0+00
0+401088 00000097 R_SH_TLS_TPOFF32 +0+08
0+4010a8 00000097 R_SH_TLS_TPOFF32 +0+10
0+401154 00000097 R_SH_TLS_TPOFF32 +0+00
0+40116c 00000097 R_SH_TLS_TPOFF32 +0+10
0+401188 00000097 R_SH_TLS_TPOFF32 +0+08
0+40118c 00000097 R_SH_TLS_TPOFF32 +0+0c
0+401190 00000097 R_SH_TLS_TPOFF32 +0+10
0+401194 00000097 R_SH_TLS_TPOFF32 +0+14
0+402038 00000097 R_SH_TLS_TPOFF32 +0+18
0+402050 00000097 R_SH_TLS_TPOFF32 +0+24
0+402068 00000097 R_SH_TLS_TPOFF32 +0+14
0+4020a8 00000097 R_SH_TLS_TPOFF32 +0+00
0+4020ac 00000097 R_SH_TLS_TPOFF32 +0+20
0+4020b0 00000097 R_SH_TLS_TPOFF32 +0+10
0+4130d0 00000197 R_SH_TLS_TPOFF32 +0+ +sG3 \+ 0
0+4130d4 00000397 R_SH_TLS_TPOFF32 +0+ +sG2 \+ 0
0+4130d8 00000497 R_SH_TLS_TPOFF32 +0+ +sG4 \+ 0
0+4130dc 0000[0-9a-f]+97 R_SH_TLS_TPOFF32 +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+4130cc 000005a4 R_SH_JMP_SLOT +[0-9a-f]+ +__tls_get_addr \+ 0
Symbol table '\.dynsym' contains [0-9]+ 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+ +0 TLS +GLOBAL DEFAULT UND sG4
+5: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_addr
#...
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1
#...
Symbol table '\.symtab' contains [0-9]+ 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 *
#...
+[0-9]+: 00000008 +0 TLS +LOCAL DEFAULT +10 sl1
+[0-9]+: 0000000c +0 TLS +LOCAL DEFAULT +10 sl2
+[0-9]+: 00000020 +0 TLS +LOCAL DEFAULT +11 bl1
+[0-9]+: 00000024 +0 TLS +LOCAL DEFAULT +11 bl2
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG3
+[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG4
+[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_addr
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1
+[0-9]+: 0+402000 +0 FUNC +GLOBAL DEFAULT +8 _start
#...
+[0-9]+: 0+401000 +0 FUNC +GLOBAL DEFAULT +8 fn2
#...
+[0-9]+: 00000004 +0 TLS +GLOBAL DEFAULT +10 sg2
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1
+[0-9]+: 00000010 +0 TLS +GLOBAL HIDDEN +10 sh1
+[0-9]+: 004130e0 +0 NOTYPE GLOBAL DEFAULT ABS _edata
+[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end
+[0-9]+: 00000014 +0 TLS +GLOBAL HIDDEN +10 sh2
+[0-9]+: 0000001c +0 TLS +GLOBAL DEFAULT +11 bg2
+[0-9]+: 00000018 +0 TLS +GLOBAL DEFAULT +11 bg1
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT +9 __data_start
#pass

View file

@ -0,0 +1,12 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -little
#ld: -EL tmpdir/tlsbin-0-dso.so
#objdump: -sj.got
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Contents of section \.got:
4130c0 [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .*
4130d0 00000000 00000000 00000000 00000000 .*

View file

@ -0,0 +1,12 @@
#source: tlsbinpic.s
#source: tlsbin.s
#as: -little
#ld: -EL tmpdir/tlsbin-0-dso.so
#objdump: -sj.tdata
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Contents of section .tdata:
413000 11000000 12000000 41000000 42000000 .*
413010 01010000 02010000 +.*

View file

@ -0,0 +1,90 @@
.section ".tbss", "awT", @nobits
.globl bg1, bg2
bg1: .space 4
bg2: .space 4
bl1: .space 4
bl2: .space 4
.text
.globl _start
.type _start,@function
_start:
mov.l r12,@-r15
mov.l r14,@-r15
mov r15,r14
! Set up .GOT pointer for non-pic @gottpoff sequences
mova .L3,r0
mov.l .L3,r12
add r0,r12
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sG3@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE -> LE against global var defined in exec
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long bg1@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE -> LE against local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long bl2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE -> LE against hidden but not local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sh2@GOTTPOFF
2:
nop;nop;nop;nop
! LE @TPOFF, global var defined in exec
stc gbr,r1
mov.l .L4,r0
add r1,r0
nop;nop;nop;nop
! LE @TPOFF, local var
stc gbr,r1
mov.l .L5,r0
add r1,r0
nop;nop;nop;nop
! LE @TPOFF, hidden var defined in exec
stc gbr,r1
mov.l .L6,r0
add r1,r0
nop;nop;nop;nop
mov r14,r15
rts
mov.l @r15+,r14
.align 2
.L3: .long _GLOBAL_OFFSET_TABLE_
.L4: .long sg1@TPOFF
.L5: .long bl1@TPOFF
.L6: .long sh1@TPOFF

View file

@ -0,0 +1,206 @@
! Force .got aligned to 4K, so it very likely gets at 0x413000
.data
.balign 4096
.section ".tdata", "awT", @progbits
.globl sg1, sg2
.globl sh1, sh2
.hidden sh1, sh2
sg1: .long 17
sg2: .long 18
sl1: .long 65
sl2: .long 66
sh1: .long 257
sh2: .long 258
! Force .text aligned to 4K, so it very likely gets at 0x401000.
.text
.balign 4096
.globl fn2
.type fn2,@function
fn2:
mov.l r12,@-r15
mov.l r14,@-r15
sts.l pr,@-r15
mova .L3,r0
mov.l .L3,r12
add r0,r12
mov r15,r14
nop;nop;nop;nop
! GD -> IE because variable is not defined in executable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sG1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE because variable is not defined in executable where
! the variable is referenced through @gottpoff too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sG2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> LE with global variable defined in executable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> LE with local variable defined in executable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> LE with hidden variable defined in executable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! LD -> LE with local variable defined in executable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L4,r1
add r0,r1
nop;nop
mov.l .L5,r2
add r0,r2
nop;nop;nop;nop
! LD -> LE against hidden variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L6,r1
add r0,r1
nop;nop
mov.l .L7,r2
add r0,r2
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sG2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r1,r0
.align 2
1: .long sG4@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE -> LE against global var defined in exec
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sg1@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE -> LE against hidden var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sh1@GOTTPOFF
2:
nop;nop;nop;nop
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
rts
mov.l @r15+,r12
.align 2
.L3: .long _GLOBAL_OFFSET_TABLE_
.L4: .long sl1@DTPOFF
.L5: .long sl2@DTPOFF
.L6: .long sh1@DTPOFF
.L7: .long sh2@DTPOFF
! Fill page with 0.
.space .L8-.
.balign 4096
.L8:

View file

@ -0,0 +1,20 @@
.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
.align 1
! Dummy.
.globl __tls_get_addr
.type __tls_get_addr,@function
__tls_get_addr:
rts
nop

View file

@ -0,0 +1,292 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -little
#ld: -shared -EL
#objdump: -drj.text
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Disassembly of section \.text:
[0-9a-f]+ <fn1>:
[0-9a-f]+: c6 2f mov\.l r12,@-r15
[0-9a-f]+: e6 2f mov\.l r14,@-r15
[0-9a-f]+: 22 4f sts\.l pr,@-r15
[0-9a-f]+: 83 c7 mova [0-9a-f]+ <fn1\+0x214>,r0
[0-9a-f]+: 82 dc mov\.l [0-9a-f]+ <fn1\+0x214>,r12 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 3c add r0,r12
[0-9a-f]+: f3 6e mov r15,r14
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 04 d4 mov\.l [0-9a-f]+ <fn1\+0x28>,r4 ! 0x30
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0x2c>,r0
[0-9a-f]+: 04 d1 mov\.l [0-9a-f]+ <fn1\+0x2c>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 05 a0 bra [0-9a-f]+ <fn1\+0x30>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 30 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d0 mov\.l [0-9a-f]+ <fn1\+0x48>,r0 ! 0x38
[0-9a-f]+: 12 04 stc gbr,r4
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 4c 30 add r4,r0
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x50>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 38 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 mov\.l [0-9a-f]+ <fn1\+0x68>,r4 ! 0x10
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0x6c>,r0
[0-9a-f]+: 03 d1 mov\.l [0-9a-f]+ <fn1\+0x6c>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x70>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 10 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d0 mov\.l [0-9a-f]+ <fn1\+0x88>,r0 ! 0x18
[0-9a-f]+: 12 04 stc gbr,r4
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 4c 30 add r4,r0
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x90>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 18 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 mov\.l [0-9a-f]+ <fn1\+0xa8>,r4 ! 0x3c
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0xac>,r0
[0-9a-f]+: 03 d1 mov\.l [0-9a-f]+ <fn1\+0xac>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0xb0>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 3c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d0 mov\.l [0-9a-f]+ <fn1\+0xc8>,r0 ! 0x44
[0-9a-f]+: 12 04 stc gbr,r4
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 4c 30 add r4,r0
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0xd0>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 44 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 mov\.l [0-9a-f]+ <fn1\+0xe8>,r4 ! 0x24
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0xec>,r0
[0-9a-f]+: 03 d1 mov\.l [0-9a-f]+ <fn1\+0xec>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0xf0>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 24 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d0 mov\.l [0-9a-f]+ <fn1\+0x108>,r0 ! 0x2c
[0-9a-f]+: 12 04 stc gbr,r4
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 4c 30 add r4,r0
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x110>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 2c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 mov\.l [0-9a-f]+ <fn1\+0x128>,r4 ! 0x1c
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0x12c>,r0
[0-9a-f]+: 03 d1 mov\.l [0-9a-f]+ <fn1\+0x12c>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x130>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 1c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 38 d1 mov\.l [0-9a-f]+ <fn1\+0x218>,r1 ! 0x8
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 37 d2 mov\.l [0-9a-f]+ <fn1\+0x21c>,r2 ! 0xc
[0-9a-f]+: 0c 32 add r0,r2
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 .*[ ]*.*
[0-9a-f]+: 04 c7 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x160>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 1c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 2e d1 mov\.l [0-9a-f]+ <fn1\+0x220>,r1 ! 0x10
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 2d d2 mov\.l [0-9a-f]+ <fn1\+0x224>,r2 ! 0x14
[0-9a-f]+: 0c 32 add r0,r2
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 03 d4 mov\.l [0-9a-f]+ <fn1\+0x188>,r4 ! 0x1c
[0-9a-f]+: 04 c7 mova [0-9a-f]+ <fn1\+0x18c>,r0
[0-9a-f]+: 03 d1 mov\.l [0-9a-f]+ <fn1\+0x18c>,r1 ! 0x[0-9a-f]+
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 0b 41 jsr @r1
[0-9a-f]+: cc 34 add r12,r4
[0-9a-f]+: 04 a0 bra [0-9a-f]+ <fn1\+0x190>
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 1c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: [0-9a-f]+ [0-9a-f]+ .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 24 d1 mov\.l [0-9a-f]+ <fn1\+0x228>,r1 ! 0x18
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 23 d2 mov\.l [0-9a-f]+ <fn1\+0x22c>,r2 ! 0x1c
[0-9a-f]+: 0c 32 add r0,r2
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 02 d0 mov\.l [0-9a-f]+ <fn1\+0x1b4>,r0 ! 0x38
[0-9a-f]+: 12 01 stc gbr,r1
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 03 a0 bra [0-9a-f]+ <fn1\+0x1b8>
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 38 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 02 d0 mov\.l [0-9a-f]+ <fn1\+0x1cc>,r0 ! 0x18
[0-9a-f]+: 12 01 stc gbr,r1
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 03 a0 bra [0-9a-f]+ <fn1\+0x1d0>
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 18 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 02 d0 mov\.l [0-9a-f]+ <fn1\+0x1e4>,r0 ! 0x44
[0-9a-f]+: 12 01 stc gbr,r1
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 03 a0 bra [0-9a-f]+ <fn1\+0x1e8>
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 44 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 02 d0 mov\.l [0-9a-f]+ <fn1\+0x1fc>,r0 ! 0x2c
[0-9a-f]+: 12 01 stc gbr,r1
[0-9a-f]+: ce 00 mov\.l @\(r0,r12\),r0
[0-9a-f]+: 03 a0 bra [0-9a-f]+ <fn1\+0x200>
[0-9a-f]+: 0c 31 add r0,r1
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 2c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: 09 00 nop
[0-9a-f]+: e3 6f mov r14,r15
[0-9a-f]+: 26 4f lds\.l @r15\+,pr
[0-9a-f]+: f6 6e mov\.l @r15\+,r14
[0-9a-f]+: 0b 00 rts
[0-9a-f]+: f6 6c mov\.l @r15\+,r12
[0-9a-f]+: 09 00 nop
[0-9a-f]+: cc 00 .*[ ]*.*
[0-9a-f]+: 01 00 .*[ ]*.*
[0-9a-f]+: 08 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 0c 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 10 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 14 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 18 00 .*[ ]*.*
[0-9a-f]+: 00 00 .*[ ]*.*
[0-9a-f]+: 1c 00 .*[ ]*.*
\.\.\.

View file

@ -0,0 +1,132 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -little
#ld: -shared -EL
#readelf: -Ssrl
#target: sh*-*-linux* sh*-*-netbsd*
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\] +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+[0-9a-f]+ .*
\[ 8\] \.data +.*
\[ 9\] \.tdata +PROGBITS +0+[0-9a-f]+ [0-9a-f]+ 0+018 00 WAT 0 0 1
\[10\] \.tbss +NOBITS +0+[0-9a-f]+ [0-9a-f]+ 0+008 00 WAT 0 0 1
\[11\] \.dynamic +DYNAMIC +0+[0-9a-f]+ .*
#...
\[[0-9a-f]+\] \.got +PROGBITS +0+[0-9a-f]+ .*
\[[0-9a-f]+\] \.sbss +.*
\[[0-9a-f]+\] \.bss +.*
#...
\[[0-9a-f]+\] \.shstrtab +.*
\[[0-9a-f]+\] \.symtab +.*
\[[0-9a-f]+\] \.strtab +.*
Key to Flags:
.*
.*
.*
Elf file type is DYN \(Shared object file\)
Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset [0-9]+
Program Headers:
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
LOAD.*
LOAD.*
DYNAMIC.*
TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+20 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 10 entries:
Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00
0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+0c
0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00
0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00
0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+1c
0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00
0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+14
0+[0-9a-f]+ 0000[0-9a-f]+95 R_SH_TLS_DTPMOD32 +0+ +sg1 \+ 0
0+[0-9a-f]+ 0000[0-9a-f]+96 R_SH_TLS_DTPOFF32 +0+ +sg1 \+ 0
0+[0-9a-f]+ 0000[0-9a-f]+97 R_SH_TLS_TPOFF32 +0+04 +sg2 \+ 0
Relocation section '\.rela\.plt' at offset 0x[0-9a-f]+ contains 1 entries:
Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
0+[0-9a-f]+ 0000[0-9a-f]+a4 R_SH_JMP_SLOT +[0-9a-f]+ +__tls_get_addr \+ 0
Symbol table '\.dynsym' contains [0-9]+ 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 *
#...
+[0-9a-f]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr
+[0-9a-f]+: 0+00 +0 TLS +GLOBAL DEFAULT +9 sg1
#...
+[0-9a-f]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
#...
+[0-9a-f]+: 0+04 +0 TLS +GLOBAL DEFAULT +9 sg2
#...
Symbol table '\.symtab' contains [0-9]+ 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 *
#...
+[0-9]+: 0+08 +0 TLS +LOCAL DEFAULT +9 sl1
+[0-9]+: 0+0c +0 TLS +LOCAL DEFAULT +9 sl2
+[0-9]+: 0+18 +0 TLS +LOCAL HIDDEN +10 sH1
+[0-9]+: 0+1c +0 TLS +LOCAL HIDDEN +10 sH2
+[0-9]+: 0+10 +0 TLS +LOCAL HIDDEN +9 sh1
+[0-9]+: 0+14 +0 TLS +LOCAL HIDDEN +9 sh2
#...
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr
+[0-9]+: 0+00 +0 TLS +GLOBAL DEFAULT +9 sg1
#...
+[0-9]+: [0-9a-f]+ +0 FUNC GLOBAL DEFAULT +7 fn1
#...
+[0-9]+: 0+04 +0 TLS +GLOBAL DEFAULT +9 sg2
#pass

View file

@ -0,0 +1,15 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -little
#ld: -shared -EL
#objdump: -sj.got
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Contents of section \.got:
[0-9a-f]+ [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .*
[0-9a-f]+ 00000000 08000000 00000000 00000000 .*
[0-9a-f]+ 00000000 00000000 18000000 00000000 .*
[0-9a-f]+ 00000000 00000000 00000000 00000000 .*
[0-9a-f]+ 10000000 00000000 +.*

View file

@ -0,0 +1,12 @@
#source: tlspic1.s
#source: tlspic2.s
#as: -little
#ld: -shared -EL
#objdump: -sj.tdata
#target: sh*-*-linux* sh*-*-netbsd*
.*: +file format elf32-sh.*
Contents of section \.tdata:
[0-9a-f]+ 11000000 12000000 41000000 42000000 .*
[0-9a-f]+ 01010000 02010000 +.*

View file

@ -0,0 +1,267 @@
.section ".tdata", "awT", @progbits
.globl sg1, sg2
.globl sh1, sh2
.hidden sh1, sh2
sg1: .long 17
sg2: .long 18
sl1: .long 65
sl2: .long 66
sh1: .long 257
sh2: .long 258
.text
.align 1
.globl fn1
.type fn1,@function
fn1:
mov.l r12,@-r15
mov.l r14,@-r15
sts.l pr,@-r15
mova .L3,r0
mov.l .L3,r12
add r0,r12
mov r15,r14
nop;nop;nop;nop
! GD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE because variable is referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against local variable referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden and local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden and local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden but not local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden but not local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! LD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L4,r1
add r0,r1
nop;nop
mov.l .L5,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden and local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L6,r1
add r0,r1
nop;nop
mov.l .L7,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden but not local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L8,r1
add r0,r1
nop;nop
mov.l .L9,r2
add r0,r2
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sg2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sl2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden and local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sh2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden but not local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sH2@GOTTPOFF
2:
nop;nop;nop;nop
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
rts
mov.l @r15+,r12
.align 2
.L3: .long _GLOBAL_OFFSET_TABLE_
.L4: .long sl1@DTPOFF
.L5: .long sl1@DTPOFF + 4
.L6: .long sh1@DTPOFF
.L7: .long sh2@DTPOFF
.L8: .long sH1@DTPOFF
.L9: .long sH2@DTPOFF

View file

@ -0,0 +1,5 @@
.section ".tbss", "awT", @nobits
.globl sH1, sH2
.hidden sH1, sH2
sH1: .space 4
sH2: .space 4