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

Subversion Repositories open8_urisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /open8_urisc/trunk/gnu
    from Rev 107 to Rev 108
    Reverse comparison

Rev 107 → Rev 108

/binutils/ld/testsuite/ld-sparc/tlsg32.s
0,0 → 1,12
.section .tbss
.align 4
.word 0, 0, 0, 0, 0, 0
.type a,#tls_object
.size a,4
a:
.word 0
.text
.globl _start
_start:
.section .debug_foobar
.word %r_tls_dtpoff32(a)
/binutils/ld/testsuite/ld-sparc/tlssunbin64.dd
0,0 → 1,277
#source: tlssunbin64.s
#as: --64
#ld: -shared -melf64_sparc tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Disassembly of section .text:
 
0+101000 <fn2-0x8>:
+101000: 81 c3 e0 08 retl *
+101004: ae 03 c0 17 add %o7, %l7, %l7
 
0+101008 <fn2>:
+101008: 9d e3 bf 60 save %sp, -160, %sp
+10100c: 2f 00 04 04 sethi %hi\(0x101000\), %l7
+101010: 7f ff ff fc call 101000 <.*>
+101014: ae 05 e2 f8 add %l7, 0x2f8, %l7 ! 1012f8 <.*>
+101018: 01 00 00 00 nop *
+10101c: 01 00 00 00 nop *
+101020: 01 00 00 00 nop *
+101024: 01 00 00 00 nop *
+101028: 23 00 00 00 sethi %hi\(0\), %l1
+10102c: 01 00 00 00 nop *
+101030: a4 04 60 20 add %l1, 0x20, %l2
+101034: 01 00 00 00 nop *
+101038: d0 5d c0 12 ldx \[ %l7 \+ %l2 \], %o0
+10103c: 01 00 00 00 nop *
+101040: 90 01 c0 08 add %g7, %o0, %o0
+101044: 01 00 00 00 nop *
+101048: 01 00 00 00 nop *
+10104c: 01 00 00 00 nop *
+101050: 01 00 00 00 nop *
+101054: 01 00 00 00 nop *
+101058: 11 00 00 00 sethi %hi\(0\), %o0
+10105c: 92 02 20 10 add %o0, 0x10, %o1 ! 10 <.*>
+101060: d0 5d c0 09 ldx \[ %l7 \+ %o1 \], %o0
+101064: 90 01 c0 08 add %g7, %o0, %o0
+101068: 01 00 00 00 nop *
+10106c: 01 00 00 00 nop *
+101070: 01 00 00 00 nop *
+101074: 01 00 00 00 nop *
+101078: 01 00 00 00 nop *
+10107c: 21 00 00 00 sethi %hi\(0\), %l0
+101080: aa 1c 3f 60 xor %l0, -160, %l5
+101084: 90 01 c0 15 add %g7, %l5, %o0
+101088: 01 00 00 00 nop *
+10108c: 01 00 00 00 nop *
+101090: 01 00 00 00 nop *
+101094: 01 00 00 00 nop *
+101098: 01 00 00 00 nop *
+10109c: 01 00 00 00 nop *
+1010a0: 11 00 00 00 sethi %hi\(0\), %o0
+1010a4: 92 1a 3f 80 xor %o0, -128, %o1
+1010a8: 90 01 c0 09 add %g7, %o1, %o0
+1010ac: 01 00 00 00 nop *
+1010b0: 01 00 00 00 nop *
+1010b4: 01 00 00 00 nop *
+1010b8: 01 00 00 00 nop *
+1010bc: 01 00 00 00 nop *
+1010c0: 01 00 00 00 nop *
+1010c4: 11 00 00 00 sethi %hi\(0\), %o0
+1010c8: 92 1a 3f a0 xor %o0, -96, %o1
+1010cc: 90 01 c0 09 add %g7, %o1, %o0
+1010d0: 01 00 00 00 nop *
+1010d4: 01 00 00 00 nop *
+1010d8: 01 00 00 00 nop *
+1010dc: 01 00 00 00 nop *
+1010e0: 01 00 00 00 nop *
+1010e4: 01 00 00 00 nop *
+1010e8: 01 00 00 00 nop *
+1010ec: 01 00 00 00 nop *
+1010f0: 01 00 00 00 nop *
+1010f4: 01 00 00 00 nop *
+1010f8: 01 00 00 00 nop *
+1010fc: 01 00 00 00 nop *
+101100: 90 10 00 00 mov %g0, %o0
+101104: 01 00 00 00 nop *
+101108: 27 00 00 00 sethi %hi\(0\), %l3
+10110c: 01 00 00 00 nop *
+101110: a8 1c ff 80 xor %l3, -128, %l4
+101114: 01 00 00 00 nop *
+101118: aa 01 c0 14 add %g7, %l4, %l5
+10111c: 01 00 00 00 nop *
+101120: 25 00 00 00 sethi %hi\(0\), %l2
+101124: 01 00 00 00 nop *
+101128: a6 1c bf 86 xor %l2, -122, %l3
+10112c: 01 00 00 00 nop *
+101130: ec 11 c0 13 lduh \[ %g7 \+ %l3 \], %l6
+101134: 01 00 00 00 nop *
+101138: 01 00 00 00 nop *
+10113c: 01 00 00 00 nop *
+101140: 01 00 00 00 nop *
+101144: 01 00 00 00 nop *
+101148: 27 00 00 00 sethi %hi\(0\), %l3
+10114c: 01 00 00 00 nop *
+101150: 25 00 00 00 sethi %hi\(0\), %l2
+101154: 01 00 00 00 nop *
+101158: a8 1c ff a0 xor %l3, -96, %l4
+10115c: 90 10 00 00 mov %g0, %o0
+101160: a6 1c bf a5 xor %l2, -91, %l3
+101164: aa 01 c0 14 add %g7, %l4, %l5
+101168: ec 09 c0 13 ldub \[ %g7 \+ %l3 \], %l6
+10116c: 01 00 00 00 nop *
+101170: 01 00 00 00 nop *
+101174: 01 00 00 00 nop *
+101178: 01 00 00 00 nop *
+10117c: 23 00 00 00 sethi %hi\(0\), %l1
+101180: 01 00 00 00 nop *
+101184: a4 04 60 10 add %l1, 0x10, %l2
+101188: 01 00 00 00 nop *
+10118c: e4 5d c0 12 ldx \[ %l7 \+ %l2 \], %l2
+101190: 01 00 00 00 nop *
+101194: a4 01 c0 12 add %g7, %l2, %l2
+101198: 01 00 00 00 nop *
+10119c: 01 00 00 00 nop *
+1011a0: 01 00 00 00 nop *
+1011a4: 01 00 00 00 nop *
+1011a8: 17 00 00 00 sethi %hi\(0\), %o3
+1011ac: 96 1a ff 60 xor %o3, -160, %o3
+1011b0: 94 10 00 0b mov %o3, %o2
+1011b4: 98 01 c0 0a add %g7, %o2, %o4
+1011b8: 01 00 00 00 nop *
+1011bc: 01 00 00 00 nop *
+1011c0: 01 00 00 00 nop *
+1011c4: 01 00 00 00 nop *
+1011c8: 29 00 00 00 sethi %hi\(0\), %l4
+1011cc: a2 1d 3f 80 xor %l4, -128, %l1
+1011d0: a6 10 00 11 mov %l1, %l3
+1011d4: a6 01 c0 13 add %g7, %l3, %l3
+1011d8: 01 00 00 00 nop *
+1011dc: 01 00 00 00 nop *
+1011e0: 01 00 00 00 nop *
+1011e4: 01 00 00 00 nop *
+1011e8: 13 00 00 00 sethi %hi\(0\), %o1
+1011ec: 96 1a 7f a0 xor %o1, -96, %o3
+1011f0: 90 10 00 0b mov %o3, %o0
+1011f4: 96 01 c0 08 add %g7, %o0, %o3
+1011f8: 01 00 00 00 nop *
+1011fc: 01 00 00 00 nop *
+101200: 01 00 00 00 nop *
+101204: 01 00 00 00 nop *
+101208: 17 00 00 00 sethi %hi\(0\), %o3
+10120c: 96 02 e0 08 add %o3, 8, %o3 ! 8 <.*>
+101210: d4 5d c0 0b ldx \[ %l7 \+ %o3 \], %o2
+101214: d8 59 c0 0a ldx \[ %g7 \+ %o2 \], %o4
+101218: 01 00 00 00 nop *
+10121c: 01 00 00 00 nop *
+101220: 01 00 00 00 nop *
+101224: 01 00 00 00 nop *
+101228: 17 00 00 00 sethi %hi\(0\), %o3
+10122c: 96 1a ff 90 xor %o3, -112, %o3
+101230: 94 10 00 0b mov %o3, %o2
+101234: d8 29 c0 0a stb %o4, \[ %g7 \+ %o2 \]
+101238: 01 00 00 00 nop *
+10123c: 01 00 00 00 nop *
+101240: 01 00 00 00 nop *
+101244: 01 00 00 00 nop *
+101248: 1b 00 00 00 sethi %hi\(0\), %o5
+10124c: 96 1b 7f b0 xor %o5, -80, %o3
+101250: 94 10 00 0b mov %o3, %o2
+101254: d8 49 c0 0a ldsb \[ %g7 \+ %o2 \], %o4
+101258: 01 00 00 00 nop *
+10125c: 01 00 00 00 nop *
+101260: 01 00 00 00 nop *
+101264: 01 00 00 00 nop *
+101268: 81 cf e0 08 rett %i7 \+ 8
+10126c: 01 00 00 00 nop *
#...
 
0+102000 <_start>:
+102000: 9d e3 bf 60 save %sp, -160, %sp
+102004: 23 00 00 00 sethi %hi\(0\), %l1
+102008: 25 00 08 08 sethi %hi\(0x202000\), %l2
+10200c: a2 14 60 00 mov %l1, %l1
+102010: a4 14 a3 08 or %l2, 0x308, %l2
+102014: a3 2c 70 20 sllx %l1, 0x20, %l1
+102018: a8 04 40 12 add %l1, %l2, %l4
+10201c: 01 00 00 00 nop *
+102020: 01 00 00 00 nop *
+102024: 01 00 00 00 nop *
+102028: 01 00 00 00 nop *
+10202c: 17 00 00 00 sethi %hi\(0\), %o3
+102030: 96 02 e0 18 add %o3, 0x18, %o3 ! 18 <.*>
+102034: d4 5d 00 0b ldx \[ %l4 \+ %o3 \], %o2
+102038: 98 01 c0 0a add %g7, %o2, %o4
+10203c: 01 00 00 00 nop *
+102040: 01 00 00 00 nop *
+102044: 01 00 00 00 nop *
+102048: 01 00 00 00 nop *
+10204c: 17 00 00 00 sethi %hi\(0\), %o3
+102050: 9a 1a ff d4 xor %o3, -44, %o5
+102054: 94 10 00 0d mov %o5, %o2
+102058: 98 01 c0 0a add %g7, %o2, %o4
+10205c: 01 00 00 00 nop *
+102060: 01 00 00 00 nop *
+102064: 01 00 00 00 nop *
+102068: 01 00 00 00 nop *
+10206c: 17 00 00 00 sethi %hi\(0\), %o3
+102070: 9a 1a ff f4 xor %o3, -12, %o5
+102074: a4 10 00 0d mov %o5, %l2
+102078: a4 01 c0 12 add %g7, %l2, %l2
+10207c: 01 00 00 00 nop *
+102080: 01 00 00 00 nop *
+102084: 01 00 00 00 nop *
+102088: 01 00 00 00 nop *
+10208c: 17 00 00 00 sethi %hi\(0\), %o3
+102090: 9a 1a ff fc xor %o3, -4, %o5
+102094: a4 10 00 0d mov %o5, %l2
+102098: e4 41 c0 12 ldsw \[ %g7 \+ %l2 \], %l2
+10209c: 01 00 00 00 nop *
+1020a0: 01 00 00 00 nop *
+1020a4: 01 00 00 00 nop *
+1020a8: 01 00 00 00 nop *
+1020ac: 17 00 00 00 sethi %hi\(0\), %o3
+1020b0: 9a 1a ff b4 xor %o3, -76, %o5
+1020b4: a4 10 00 0d mov %o5, %l2
+1020b8: a4 01 c0 12 add %g7, %l2, %l2
+1020bc: 01 00 00 00 nop *
+1020c0: 01 00 00 00 nop *
+1020c4: 01 00 00 00 nop *
+1020c8: 01 00 00 00 nop *
+1020cc: 17 00 00 00 sethi %hi\(0\), %o3
+1020d0: 9a 1a ff fc xor %o3, -4, %o5
+1020d4: a4 10 00 0d mov %o5, %l2
+1020d8: e2 29 c0 12 stb %l1, \[ %g7 \+ %l2 \]
+1020dc: 01 00 00 00 nop *
+1020e0: 01 00 00 00 nop *
+1020e4: 01 00 00 00 nop *
+1020e8: 01 00 00 00 nop *
+1020ec: 23 00 00 00 sethi %hi\(0\), %l1
+1020f0: 01 00 00 00 nop *
+1020f4: a4 1c 7f 64 xor %l1, -156, %l2
+1020f8: 01 00 00 00 nop *
+1020fc: a6 01 c0 12 add %g7, %l2, %l3
+102100: 01 00 00 00 nop *
+102104: 01 00 00 00 nop *
+102108: 01 00 00 00 nop *
+10210c: 01 00 00 00 nop *
+102110: 11 00 00 00 sethi %hi\(0\), %o0
+102114: 90 1a 3f e6 xor %o0, -26, %o0
+102118: 90 01 c0 08 add %g7, %o0, %o0
+10211c: 01 00 00 00 nop *
+102120: 01 00 00 00 nop *
+102124: 01 00 00 00 nop *
+102128: 01 00 00 00 nop *
+10212c: 23 00 00 00 sethi %hi\(0\), %l1
+102130: 9a 1c 7f a5 xor %l1, -91, %o5
+102134: 92 01 c0 0d add %g7, %o5, %o1
+102138: 01 00 00 00 nop *
+10213c: 01 00 00 00 nop *
+102140: 01 00 00 00 nop *
+102144: 01 00 00 00 nop *
+102148: 23 00 00 00 sethi %hi\(0\), %l1
+10214c: 9a 1c 7f 68 xor %l1, -152, %o5
+102150: d2 59 c0 0d ldx \[ %g7 \+ %o5 \], %o1
+102154: 01 00 00 00 nop *
+102158: 01 00 00 00 nop *
+10215c: 01 00 00 00 nop *
+102160: 01 00 00 00 nop *
+102164: 11 00 00 00 sethi %hi\(0\), %o0
+102168: 90 1a 3f eb xor %o0, -21, %o0
+10216c: d2 29 c0 08 stb %o1, \[ %g7 \+ %o0 \]
+102170: 01 00 00 00 nop *
+102174: 01 00 00 00 nop *
+102178: 01 00 00 00 nop *
+10217c: 01 00 00 00 nop *
+102180: 15 00 00 00 sethi %hi\(0\), %o2
+102184: 98 1a bf ab xor %o2, -85, %o4
+102188: da 69 c0 0c ldstub \[ %g7 \+ %o4 \], %o5
+10218c: 01 00 00 00 nop *
+102190: 01 00 00 00 nop *
+102194: 01 00 00 00 nop *
+102198: 01 00 00 00 nop *
+10219c: 81 c7 e0 08 ret
+1021a0: 81 e8 00 00 restore
/binutils/ld/testsuite/ld-sparc/tlssunnopic64.dd
0,0 → 1,88
#source: tlssunnopic64.s
#source: tlsnopic.s
#as: --64 -Av9
#ld: -shared -melf64_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Disassembly of section .text:
 
0+1000 <fn3>:
+1000: 9d e3 bf 60 save %sp, -160, %sp
+1004: 23 00 00 00 sethi %hi\(0\), %l1
+1008: 25 00 00 00 sethi %hi\(0\), %l2
+100c: a2 14 60 00 mov %l1, %l1
+1010: a4 14 a0 00 mov %l2, %l2
+1014: a3 2c 70 20 sllx %l1, 0x20, %l1
+1018: a2 04 40 12 add %l1, %l2, %l1
+101c: 01 00 00 00 nop *
+1020: 01 00 00 00 nop *
+1024: 01 00 00 00 nop *
+1028: 01 00 00 00 nop *
+102c: 17 00 00 00 sethi %hi\(0\), %o3
+1030: 96 02 e0 18 add %o3, 0x18, %o3 ! 18 <.*>
+1034: d4 5c 40 0b ldx \[ %l1 \+ %o3 \], %o2
+1038: 98 01 c0 0a add %g7, %o2, %o4
+103c: 01 00 00 00 nop *
+1040: 01 00 00 00 nop *
+1044: 01 00 00 00 nop *
+1048: 01 00 00 00 nop *
+104c: 11 00 00 00 sethi %hi\(0\), %o0
+1050: 90 02 20 20 add %o0, 0x20, %o0 ! 20 <.*>
+1054: d0 5c 40 08 ldx \[ %l1 \+ %o0 \], %o0
+1058: d0 01 c0 08 ld \[ %g7 \+ %o0 \], %o0
+105c: 01 00 00 00 nop *
+1060: 01 00 00 00 nop *
+1064: 01 00 00 00 nop *
+1068: 01 00 00 00 nop *
+106c: 11 00 00 00 sethi %hi\(0\), %o0
+1070: 90 02 20 28 add %o0, 0x28, %o0 ! 28 <.*>
+1074: d0 5c 40 08 ldx \[ %l1 \+ %o0 \], %o0
+1078: 90 01 c0 08 add %g7, %o0, %o0
+107c: 01 00 00 00 nop *
+1080: 01 00 00 00 nop *
+1084: 01 00 00 00 nop *
+1088: 01 00 00 00 nop *
+108c: 1b 00 00 00 sethi %hi\(0\), %o5
+1090: 92 03 60 30 add %o5, 0x30, %o1 ! 30 <.*>
+1094: d4 5c 40 09 ldx \[ %l1 \+ %o1 \], %o2
+1098: d6 29 c0 0a stb %o3, \[ %g7 \+ %o2 \]
+109c: 01 00 00 00 nop *
+10a0: 01 00 00 00 nop *
+10a4: 01 00 00 00 nop *
+10a8: 01 00 00 00 nop *
+10ac: 11 00 00 00 sethi %hi\(0\), %o0
+10b0: 90 02 20 08 add %o0, 8, %o0 ! 8 <.*>
+10b4: d0 5c 40 08 ldx \[ %l1 \+ %o0 \], %o0
+10b8: 90 01 c0 08 add %g7, %o0, %o0
+10bc: 01 00 00 00 nop *
+10c0: 01 00 00 00 nop *
+10c4: 01 00 00 00 nop *
+10c8: 01 00 00 00 nop *
+10cc: 1b 00 00 00 sethi %hi\(0\), %o5
+10d0: 92 03 60 10 add %o5, 0x10, %o1 ! 10 <.*>
+10d4: d4 5c 40 09 ldx \[ %l1 \+ %o1 \], %o2
+10d8: d6 29 c0 0a stb %o3, \[ %g7 \+ %o2 \]
+10dc: 01 00 00 00 nop *
+10e0: 01 00 00 00 nop *
+10e4: 01 00 00 00 nop *
+10e8: 01 00 00 00 nop *
+10ec: 15 00 00 00 sethi %hi\(0\), %o2
+10f0: 98 1a a0 00 xor %o2, 0, %o4
+10f4: 90 01 c0 0c add %g7, %o4, %o0
+10f8: 01 00 00 00 nop *
+10fc: 01 00 00 00 nop *
+1100: 01 00 00 00 nop *
+1104: 01 00 00 00 nop *
+1108: 15 00 00 00 sethi %hi\(0\), %o2
+110c: 94 1a a0 00 xor %o2, 0, %o2
+1110: d4 01 c0 0a ld \[ %g7 \+ %o2 \], %o2
+1114: 01 00 00 00 nop *
+1118: 01 00 00 00 nop *
+111c: 01 00 00 00 nop *
+1120: 01 00 00 00 nop *
+1124: 81 cf e0 08 rett %i7 \+ 8
+1128: 01 00 00 00 nop *
#pass
/binutils/ld/testsuite/ld-sparc/tlssunbin32.s
0,0 → 1,114
.section ".tbss"
.align 4
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1: .word 0
bg2: .word 0
bg3: .word 0
bg4: .word 0
bg5: .word 0
bg6: .word 0
bg7: .word 0
bg8: .word 0
bl1: .word 0
bl2: .word 0
bl3: .word 0
bl4: .word 0
bl5: .word 0
bl6: .word 0
bl7: .word 0
bl8: .word 0
.text
.globl _start
.type _start,#function
.proc 04
_start:
save %sp, -104, %sp
.hidden _GLOBAL_OFFSET_TABLE_
sethi %hi(_GLOBAL_OFFSET_TABLE_), %l4
or %l4, %lo(_GLOBAL_OFFSET_TABLE_), %l4
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sG6), %o3
add %o3, %tie_lo10(sG6), %o3
ld [%l4 + %o3], %o2, %tie_ld(sG6)
add %g7, %o2, %o4, %tie_add(sG6)
nop;nop;nop;nop
 
/* IE -> LE against global var defined in exec */
sethi %tie_hi22(bg6), %o3
add %o3, %tie_lo10(bg6), %o5
ld [%l4 + %o5], %o2, %tie_ld(bg6)
add %g7, %o2, %o4, %tie_add(bg6)
nop;nop;nop;nop
 
/* IE -> LE against local var */
sethi %tie_hi22(bl6), %o3
add %o3, %tie_lo10(bl6), %o5
ld [%l4 + %o5], %l2, %tie_ld(bl6)
add %g7, %l2, %l2, %tie_add(bl6)
nop;nop;nop;nop
 
/* direct %g7 access IE -> LE against local var */
sethi %tie_hi22(bl8), %o3
add %o3, %tie_lo10(bl8), %o5
ld [%l4 + %o5], %l2, %tie_ld(bl8)
ld [%g7 + %l2], %l2, %tie_add(bl8)
nop;nop;nop;nop
 
/* IE -> LE against hidden but not local var */
sethi %tie_hi22(sh6), %o3
add %o3, %tie_lo10(sh6), %o5
ld [%l4 + %o5], %l2, %tie_ld(sh6)
add %g7, %l2, %l2, %tie_add(sh6)
nop;nop;nop;nop
 
/* direct %g7 access IE -> LE against hidden but not local var */
sethi %tie_hi22(bl8), %o3
add %o3, %tie_lo10(bl8), %o5
ld [%l4 + %o5], %l2, %tie_ld(bl8)
stb %l1, [%g7 + %l2], %tie_add(bl8)
nop;nop;nop;nop
 
/* LE, global var defined in exec */
sethi %tle_hix22(sg2), %l1
nop
xor %l1, %tle_lox10(sg2), %l2
nop
add %g7, %l2, %l3
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl2+2), %o0
xor %o0, %tle_lox10(bl2+2), %o0
add %g7, %o0, %o0
nop;nop;nop;nop
 
/* LE, hidden var defined in exec */
sethi %tle_hix22(sh2+1), %l1
xor %l1, %tle_lox10(sh2+1), %o5
add %g7, %o5, %o1
nop;nop;nop;nop
 
/* Direct %g7 access */
 
/* LE, global var defined in exec */
sethi %tle_hix22(sg3), %l1
xor %l1, %tle_lox10(sg3), %o5
ld [%g7 + %o5], %o1
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl3 + 3), %o0
xor %o0, %tle_lox10(bl3 + 3), %o0
stb %o1, [%g7 + %o0]
nop;nop;nop;nop
 
/* LE, hidden var defined in exec */
sethi %tle_hix22(sh3 + 3), %o2
xor %o2, %tle_lox10(sh3 + 3), %o4
ldstub [%g7 + %o4], %o5
nop;nop;nop;nop
 
ret
restore
/binutils/ld/testsuite/ld-sparc/tlssunnopic32.s
0,0 → 1,77
.data
.align 4096
.section ".tbss"
.align 4
bl1: .word 0
bl2: .word 0
bl3: .word 0
bl4: .word 0
bl5: .word 0
.text
.align 4096
.globl fn3
.type fn3,#function
.proc 04
fn3:
save %sp, -104, %sp
.hidden _GLOBAL_OFFSET_TABLE_
sethi %hi(_GLOBAL_OFFSET_TABLE_), %l1
or %l1, %lo(_GLOBAL_OFFSET_TABLE_), %l1
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sg1), %o3
add %o3, %tie_lo10(sg1), %o3
ld [%l1 + %o3], %o2, %tie_ld(sg1)
add %g7, %o2, %o4, %tie_add(sg1)
nop;nop;nop;nop
 
/* direct %g7 access IE against global var */
sethi %tie_hi22(sg2), %o0
add %o0, %tie_lo10(sg2), %o0
ld [%l1 + %o0], %o0, %tie_ld(sg2)
ld [%g7 + %o0], %o0, %tie_add(sg2)
nop;nop;nop;nop
 
/* IE against hidden var */
sethi %tie_hi22(sh1), %o0
add %o0, %tie_lo10(sh1), %o0
ld [%l1 + %o0], %o0, %tie_ld(sh1)
add %g7, %o0, %o0, %tie_add(sh1)
nop;nop;nop;nop
 
/* direct %g7 access IE against hidden var */
sethi %tie_hi22(sh2), %o5
add %o5, %tie_lo10(sh2), %o1
ld [%l1 + %o1], %o2, %tie_ld(sh2)
stb %o3, [%g7 + %o2], %tie_add(sh2)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(bl1), %o0
add %o0, %tie_lo10(bl1), %o0
ld [%l1 + %o0], %o0, %tie_ld(bl1)
add %g7, %o0, %o0, %tie_add(bl1)
nop;nop;nop;nop
 
/* direct %g7 access IE against local var */
sethi %tie_hi22(bl2), %o5
add %o5, %tie_lo10(bl2), %o1
ld [%l1 + %o1], %o2, %tie_ld(bl2)
stb %o3, [%g7 + %o2], %tie_add(bl2)
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl3+1), %o2
xor %o2, %tle_lox10(bl3+1), %o4
add %g7, %o4, %o0
nop;nop;nop;nop
 
/* LE, hidden var, direct %g7 access */
sethi %tle_hix22(sh3), %o2
xor %o2, %tle_lox10(sh3), %o2
ld [%g7 + %o2], %o2
nop;nop;nop;nop
 
ret
restore
/binutils/ld/testsuite/ld-sparc/tlssunbinpic64.s
0,0 → 1,182
.data
.align 4096
.section ".tdata", #alloc, #write, #tls
.align 4
.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: .word 17
sg2: .word 18
sg3: .word 19
sg4: .word 20
sg5: .word 21
sg6: .word 22
sg7: .word 23
sg8: .word 24
sl1: .word 65
sl2: .word 66
sl3: .word 67
sl4: .word 68
sl5: .word 69
sl6: .word 70
sl7: .word 71
sl8: .word 72
sh1: .word 257
sh2: .word 258
sh3: .word 259
sh4: .word 260
sh5: .word 261
sh6: .word 262
sh7: .word 263
sh8: .word 264
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl fn2
.type fn2,#function
.proc 04
fn2:
save %sp, -160, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop;nop;nop;nop
 
/* GD -> IE because variable is not defined in executable */
sethi %tgd_hi22(sG1), %l1
nop
add %l1, %tgd_lo10(sG1), %l2
nop
add %l7, %l2, %o0, %tgd_add(sG1)
nop
call __tls_get_addr, %tgd_call(sG1)
nop
nop;nop;nop;nop
 
/* GD -> IE because variable is not defined in executable where
the variable is referenced through IE too */
sethi %tgd_hi22(sG2), %o0
add %o0, %tgd_lo10(sG2), %o1
add %l7, %o1, %o0, %tgd_add(sG2)
call __tls_get_addr, %tgd_call(sG2)
nop
nop;nop;nop;nop
 
/* GD -> LE with global variable defined in executable */
sethi %tgd_hi22(sg1), %l0
add %l0, %tgd_lo10(sg1), %l5
add %l7, %l5, %o0, %tgd_add(sg1)
call __tls_get_addr, %tgd_call(sg1)
nop
nop;nop;nop;nop
 
/* GD -> LE with local variable defined in executable */
sethi %tgd_hi22(sl1), %o0
add %o0, %tgd_lo10(sl1), %o1
add %l7, %o1, %o0, %tgd_add(sl1)
call __tls_get_addr, %tgd_call(sl1)
nop
nop;nop;nop;nop
 
/* GD -> LE with hidden variable defined in executable */
sethi %tgd_hi22(sh1), %o0
add %o0, %tgd_lo10(sh1), %o1
add %l7, %o1, %o0, %tgd_add(sh1)
call __tls_get_addr, %tgd_call(sh1)
nop
nop;nop;nop;nop
 
/* LD -> LE */
sethi %tldm_hi22(sl1), %l1
nop
add %l1, %tldm_lo10(sl1), %l2
nop
add %l7, %l2, %o0, %tldm_add(sl1)
nop
call __tls_get_addr, %tldm_call(sl1)
nop
sethi %tldo_hix22(sl1), %l3
nop
xor %l3, %tldo_lox10(sl1), %l4
nop
add %o0, %l4, %l5, %tldo_add(sl1)
nop
sethi %tldo_hix22(sl2 + 2), %l2
nop
xor %l2, %tldo_lox10(sl2 + 2), %l3
nop
lduh [%o0 + %l3], %l6, %tldo_add(sl2 + 2)
nop;nop;nop;nop
 
/* LD -> LE against hidden variables */
sethi %tldm_hi22(sh1), %o1
sethi %tldo_hix22(sh1), %l3
add %o1, %tldm_lo10(sh1), %o2
sethi %tldo_hix22(sh2 + 1), %l2
add %l7, %o2, %o0, %tldm_add(sh1)
xor %l3, %tldo_lox10(sh1), %l4
call __tls_get_addr, %tldm_call(sh1)
xor %l2, %tldo_lox10(sh2 + 1), %l3
add %o0, %l4, %l5, %tldo_add(sh1)
ldub [%o0 + %l3], %l6, %tldo_add(sh2 + 1)
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sG2), %l1
nop
add %l1, %tie_lo10(sG2), %l2
nop
ldx [%l7 + %l2], %l2, %tie_ldx(sG2)
nop
add %g7, %l2, %l2, %tie_add(sG2)
nop;nop;nop;nop
 
/* IE -> LE against global var defined in exec */
sethi %tie_hi22(sg1), %o3
add %o3, %tie_lo10(sg1), %o3
ldx [%l7 + %o3], %o2, %tie_ldx(sg1)
add %g7, %o2, %o4, %tie_add(sg1)
nop;nop;nop;nop
 
/* IE -> LE against local var */
sethi %tie_hi22(sl1), %l4
add %l4, %tie_lo10(sl1), %l1
ldx [%l7 + %l1], %l3, %tie_ldx(sl1)
add %g7, %l3, %l3, %tie_add(sl1)
nop;nop;nop;nop
 
/* IE -> LE against hidden var */
sethi %tie_hi22(sh1), %o1
add %o1, %tie_lo10(sh1), %o3
ldx [%l7 + %o3], %o0, %tie_ldx(sh1)
add %g7, %o0, %o3, %tie_add(sh1)
nop;nop;nop;nop
 
/* Direct access through %g7 */
 
/* IE against global var */
sethi %tie_hi22(sG5), %o3
add %o3, %tie_lo10(sG5), %o3
ldx [%l7 + %o3], %o2, %tie_ldx(sG5)
ldx [%g7 + %o2], %o4, %tie_add(sG5)
nop;nop;nop;nop
 
/* IE->LE against local var */
sethi %tie_hi22(sl5), %o3
add %o3, %tie_lo10(sl5), %o3
ldx [%l7 + %o3], %o2, %tie_ldx(sl5)
stb %o4, [%g7 + %o2], %tie_add(sl5)
nop;nop;nop;nop
 
/* IE->LE against hidden var */
sethi %tie_hi22(sh5), %o5
add %o5, %tie_lo10(sh5), %o3
ldx [%l7 + %o3], %o2, %tie_ldx(sh5)
ldsb [%g7 + %o2], %o4, %tie_add(sh5)
nop;nop;nop;nop
 
return %i7 + 8
nop
/binutils/ld/testsuite/ld-sparc/tlssunnopic32.rd
0,0 → 1,93
#source: tlssunnopic32.s
#source: tlsnopic.s
#as: --32
#ld: -shared -melf32_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
.*
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .tbss +NOBITS +0+12000 0+2000 0+24 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+12000 0+2000 0+80 08 +WA +3 +0 +4
+\[[ 0-9]+\] .got +PROGBITS +0+12080 0+2080 0+1c 04 +WA +0 +0 +4
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+LOAD .* R E 0x10000
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+ 0x0+24 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries:
Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_HI22 +0+12080 +\.got \+ 12080
[0-9a-f ]+R_SPARC_LO10 +0+12080 +\.got \+ 12080
[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+9
[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+9
[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+1c
[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+1c
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+4
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+14
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+18
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+ +sg2 \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +8 *
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sg2
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* TLS +LOCAL +DEFAULT +6 bl1
.* TLS +LOCAL +DEFAULT +6 bl2
.* TLS +LOCAL +DEFAULT +6 bl3
.* TLS +LOCAL +DEFAULT +6 bl4
.* TLS +LOCAL +DEFAULT +6 bl5
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +6 sh3
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh4
.* TLS +LOCAL +DEFAULT +6 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh2
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sg2
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/binutils/ld/testsuite/ld-sparc/tlssunbin32.rd
0,0 → 1,126
#source: tlssunbin32.s
#as: --32
#ld: -shared -melf32_sparc tmpdir/libtlslib32.so tmpdir/tlssunbinpic32.o
#readelf: -WSsrl
#target: sparc*-*-*
 
.*
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
+\[[ 0-9]+\] .interp +.*
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+11000 0+1000 0+1194 00 +AX +0 +0 4096
+\[[ 0-9]+\] .tdata +PROGBITS +0+22194 0+2194 0+1060 00 WAT +0 +0 +4
+\[[ 0-9]+\] .tbss +NOBITS +0+231f4 0+31f4 0+40 00 WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+231f4 0+31f4 0+80 08 +WA +4 +0 +4
+\[[ 0-9]+\] .got +PROGBITS +0+23274 0+3274 0+14 04 +WA +0 +0 +4
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is EXEC \(Executable file\)
Entry point 0x12000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4
+INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x10000
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+1060 0x0+10a0 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG5 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG2 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG6 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG1 \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* TLS +GLOBAL +DEFAULT +UND sG5
.* TLS +GLOBAL +DEFAULT +UND sG2
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* TLS +GLOBAL +DEFAULT +UND sG1
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* SECTION +LOCAL +DEFAULT +9 *
.* SECTION +LOCAL +DEFAULT +10 *
.* TLS +LOCAL +DEFAULT +7 sl1
.* TLS +LOCAL +DEFAULT +7 sl2
.* TLS +LOCAL +DEFAULT +7 sl3
.* TLS +LOCAL +DEFAULT +7 sl4
.* TLS +LOCAL +DEFAULT +7 sl5
.* TLS +LOCAL +DEFAULT +7 sl6
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* TLS +LOCAL +DEFAULT +8 bl1
.* TLS +LOCAL +DEFAULT +8 bl2
.* TLS +LOCAL +DEFAULT +8 bl3
.* TLS +LOCAL +DEFAULT +8 bl4
.* TLS +LOCAL +DEFAULT +8 bl5
.* TLS +LOCAL +DEFAULT +8 bl6
.* TLS +LOCAL +DEFAULT +8 bl7
.* TLS +LOCAL +DEFAULT +8 bl8
.* OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +10 _PROCEDURE_LINKAGE_TABLE_
.* OBJECT +LOCAL +DEFAULT +10 _GLOBAL_OFFSET_TABLE_
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +8 bg8
.* TLS +GLOBAL +DEFAULT +8 bg6
.* TLS +GLOBAL +DEFAULT +UND sG5
.* TLS +GLOBAL +DEFAULT +8 bg3
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +HIDDEN +7 sh3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* TLS +GLOBAL +DEFAULT +8 bg5
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +HIDDEN +7 sh7
.* TLS +GLOBAL +HIDDEN +7 sh8
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 _start
.* TLS +GLOBAL +HIDDEN +7 sh4
.* TLS +GLOBAL +DEFAULT +8 bg7
.* TLS +GLOBAL +HIDDEN +7 sh5
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* FUNC +GLOBAL +DEFAULT +6 fn2
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +UND sG1
.* TLS +GLOBAL +HIDDEN +7 sh1
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* TLS +GLOBAL +HIDDEN +7 sh2
.* TLS +GLOBAL +HIDDEN +7 sh6
.* TLS +GLOBAL +DEFAULT +8 bg2
.* TLS +GLOBAL +DEFAULT +8 bg1
.* TLS +GLOBAL +DEFAULT +8 bg4
/binutils/ld/testsuite/ld-sparc/tlssunpic32.s
0,0 → 1,228
.data
.align 4096
.section ".tdata", #alloc, #write, #tls
.align 4
.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: .word 17
sg2: .word 18
sg3: .word 19
sg4: .word 20
sg5: .word 21
sg6: .word 22
sg7: .word 23
sg8: .word 24
sl1: .word 65
sl2: .word 66
sl3: .word 67
sl4: .word 68
sl5: .word 69
sl6: .word 70
sl7: .word 71
sl8: .word 72
sh1: .word 257
sh2: .word 258
sh3: .word 259
sh4: .word 260
sh5: .word 261
sh6: .word 262
sh7: .word 263
sh8: .word 264
 
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl fn1
.type fn1,#function
.proc 04
fn1:
save %sp, -104, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop;nop;nop;nop
 
/* GD */
sethi %tgd_hi22(sg1), %l1
nop
add %l1, %tgd_lo10(sg1), %l2
nop
add %l7, %l2, %o0, %tgd_add(sg1)
nop
call __tls_get_addr, %tgd_call(sg1)
nop
nop;nop;nop;nop
 
/* GD -> IE because variable is referenced through IE too */
sethi %tgd_hi22(sg2), %o0
add %o0, %tgd_lo10(sg2), %o1
add %l7, %o1, %o0, %tgd_add(sg2)
call __tls_get_addr, %tgd_call(sg2)
nop
nop;nop;nop;nop
 
/* GD against local variable */
sethi %tgd_hi22(sl1), %o4
add %o4, %tgd_lo10(sl1), %o4
add %l7, %o4, %o0, %tgd_add(sl1)
call __tls_get_addr, %tgd_call(sl1)
nop
nop;nop;nop;nop
 
/* GD -> IE against local variable referenced through IE too */
sethi %tgd_hi22(sl2), %o0
add %o0, %tgd_lo10(sl2), %o0
add %l7, %o0, %o0, %tgd_add(sl2)
call __tls_get_addr, %tgd_call(sl2)
nop
nop;nop;nop;nop
 
/* GD against hidden and local variable */
sethi %tgd_hi22(sh1), %o4
add %o4, %tgd_lo10(sh1), %o4
add %l7, %o4, %o0, %tgd_add(sh1)
call __tls_get_addr, %tgd_call(sh1)
nop
nop;nop;nop;nop
 
/* GD -> IE against hidden and local variable referenced through
IE too */
sethi %tgd_hi22(sh2), %o0
add %o0, %tgd_lo10(sh2), %o0
add %l7, %o0, %o0, %tgd_add(sh2)
call __tls_get_addr, %tgd_call(sh2)
nop
nop;nop;nop;nop
 
/* GD against hidden but not local variable */
sethi %tgd_hi22(sH1), %o4
add %o4, %tgd_lo10(sH1), %o4
add %l7, %o4, %o0, %tgd_add(sH1)
call __tls_get_addr, %tgd_call(sH1)
nop
nop;nop;nop;nop
 
/* GD -> IE against hidden but not local variable referenced through
IE too */
sethi %tgd_hi22(sH2), %o0
add %o0, %tgd_lo10(sH2), %o0
add %l7, %o0, %o0, %tgd_add(sH2)
call __tls_get_addr, %tgd_call(sH2)
nop
nop;nop;nop;nop
 
/* LD */
sethi %tldm_hi22(sl1), %l1
nop
add %l1, %tldm_lo10(sl1), %l2
nop
add %l7, %l2, %o0, %tldm_add(sl1)
nop
call __tls_get_addr, %tldm_call(sl1)
nop
sethi %tldo_hix22(sl1), %l3
nop
xor %l3, %tldo_lox10(sl1), %l4
nop
add %o0, %l4, %l5, %tldo_add(sl1)
nop
sethi %tldo_hix22(sl2 + 2), %l2
nop
xor %l2, %tldo_lox10(sl2 + 2), %l3
nop
lduh [%o0 + %l3], %l6, %tldo_add(sl2 + 2)
nop;nop;nop;nop
 
/* LD against hidden and local variables */
sethi %tldm_hi22(sh1), %o1
sethi %tldo_hix22(sh1), %l3
add %o1, %tldm_lo10(sh1), %o2
sethi %tldo_hix22(sh2 + 1), %l2
add %l7, %o2, %o0, %tldm_add(sh1)
xor %l3, %tldo_lox10(sh1), %l4
call __tls_get_addr, %tldm_call(sh1)
xor %l2, %tldo_lox10(sh2 + 1), %l3
add %o0, %l4, %l5, %tldo_add(sh1)
ldub [%o0 + %l3], %l6, %tldo_add(sh2 + 1)
nop;nop;nop;nop
 
/* LD against hidden but not local variables */
sethi %tldm_hi22(sH1), %o1
sethi %tldo_hix22(sH1 + 3), %l3
add %o1, %tldm_lo10(sH1), %o2
sethi %tldo_hix22(sH2), %l2
add %l7, %o2, %o0, %tldm_add(sH1)
xor %l3, %tldo_lox10(sH1 + 3), %l4
call __tls_get_addr, %tldm_call(sH1)
xor %l2, %tldo_lox10(sH2), %l3
add %o0, %l4, %l5, %tldo_add(sH1 + 3)
ld [%o0 + %l3], %l6, %tldo_add(sH2)
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sg2), %l1
nop
add %l1, %tie_lo10(sg2), %l2
nop
ld [%l7 + %l2], %l2, %tie_ld(sg2)
nop
add %g7, %l2, %l2, %tie_add(sg2)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(sl2), %o3
add %o3, %tie_lo10(sl2), %o3
ld [%l7 + %o3], %o2, %tie_ld(sl2)
add %g7, %o2, %o4, %tie_add(sl2)
nop;nop;nop;nop
 
/* IE against hidden and local var */
sethi %tie_hi22(sh2), %l1
add %l1, %tie_lo10(sh2), %l2
ld [%l7 + %l2], %l2, %tie_ld(sh2)
add %g7, %l2, %l2, %tie_add(sh2)
nop;nop;nop;nop
 
/* IE against hidden but not local var */
sethi %tie_hi22(sH2), %l1
add %l1, %tie_lo10(sH2), %l2
ld [%l7 + %l2], %l2, %tie_ld(sH2)
add %g7, %l2, %l2, %tie_add(sH2)
nop;nop;nop;nop
 
/* Direct access through %g7 */
 
/* IE against global var */
sethi %tie_hi22(sg5), %l1
add %l1, %tie_lo10(sg5), %l2
ld [%l7 + %l2], %l2, %tie_ld(sg5)
ld [%g7 + %l2], %l2, %tie_add(sg5)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(sl5), %o3
add %o3, %tie_lo10(sl5), %o4
ld [%l7 + %o4], %o5, %tie_ld(sl5)
stb %l2, [%g7 + %o5], %tie_add(sl5)
nop;nop;nop;nop
 
/* IE against hidden and local var */
sethi %tie_hi22(sh5), %o3
add %o3, %tie_lo10(sh5), %o4
ld [%l7 + %o4], %o5, %tie_ld(sh5)
lduh [%g7 + %o5], %l2, %tie_add(sh5)
nop;nop;nop;nop
 
/* IE against hidden but not local var */
sethi %tie_hi22(sH5), %o3
add %o3, %tie_lo10(sH5), %o4
ld [%l7 + %o4], %o5, %tie_ld(sH5)
st %l2, [%g7 + %o5], %tie_add(sH5)
nop;nop;nop;nop
 
ret
restore
/binutils/ld/testsuite/ld-sparc/tlssunbin32.td
0,0 → 1,19
#source: tlssunbin32.s
#as: --32
#ld: -shared -melf32_sparc tmpdir/libtlslib32.so tmpdir/tlssunbinpic32.o
#objdump: -sj.tdata
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .tdata:
22194 00000011 00000000 00000000 00000000 .*
221a4 00000000 00000000 00000000 00000000 .*
#...
23184 00000000 00000000 00000000 00000000 .*
23194 00000000 00000012 00000013 00000014 .*
231a4 00000015 00000016 00000017 00000018 .*
231b4 00000041 00000042 00000043 00000044 .*
231c4 00000045 00000046 00000047 00000048 .*
231d4 00000101 00000102 00000103 00000104 .*
231e4 00000105 00000106 00000107 00000108 .*
/binutils/ld/testsuite/ld-sparc/gotop32.s
0,0 → 1,37
.data
.align 4096
.globl sym
sym: .word 0x12345678
 
local_sym:
.word 0xdeadbeef
 
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl foo
.type foo,#function
.proc 04
foo:
save %sp, -104, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop
sethi %gdop_hix22(sym), %l1
nop
xor %l1, %gdop_lox10(sym), %l1
nop
ld [%l7 + %l1], %i0, %gdop(sym)
nop
sethi %gdop_hix22(local_sym), %l1
nop
xor %l1, %gdop_lox10(local_sym), %l1
nop
ld [%l7 + %l1], %i0, %gdop(local_sym)
nop
ret
restore
/binutils/ld/testsuite/ld-sparc/tlssunpic32.sd
0,0 → 1,15
#source: tlssunpic32.s
#source: tlspic.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .got:
120f8 00012060 00000000 00000020 00000000 .*
12108 00000000 00000000 00000000 00000000 .*
12118 00000060 00000000 00000000 00000000 .*
12128 00000000 00000000 00000000 00000000 .*
12138 00000000 00000040 00000000 .*
/binutils/ld/testsuite/ld-sparc/vxworks1-lib.dd
0,0 → 1,45
 
.*: file format .*
 
Disassembly of section \.plt:
 
00080800 <_PROCEDURE_LINKAGE_TABLE_>:
80800: c4 05 e0 08 ld \[ %l7 \+ 8 \], %g2
80804: 81 c0 80 00 jmp %g2
80808: 01 00 00 00 nop
8080c: 03 00 00 00 sethi %hi\(0\), %g1
80810: 82 10 60 0c or %g1, 0xc, %g1 ! c <_PROCEDURE_LINKAGE_TABLE_-0x807f4>
80814: c2 05 c0 01 ld \[ %l7 \+ %g1 \], %g1
80818: 81 c0 40 00 jmp %g1
8081c: 01 00 00 00 nop
80820: 03 00 00 00 sethi %hi\(0\), %g1
80824: 10 bf ff f7 b 80800 <_PROCEDURE_LINKAGE_TABLE_>
80828: 82 10 60 00 mov %g1, %g1 ! 0 <_PROCEDURE_LINKAGE_TABLE_-0x80800>
Disassembly of section \.text:
 
00080c00 <foo>:
80c00: 9d e3 bf 98 save %sp, -104, %sp
80c04: 2f 00 00 00 sethi %hi\(0\), %l7
80c08: ee 05 e0 00 ld \[ %l7 \], %l7
80c0c: ee 05 e0 00 ld \[ %l7 \], %l7
80c10: 03 00 00 00 sethi %hi\(0\), %g1
80c14: 82 10 60 10 or %g1, 0x10, %g1 ! 10 <_PROCEDURE_LINKAGE_TABLE_-0x807f0>
80c18: c2 05 c0 01 ld \[ %l7 \+ %g1 \], %g1
80c1c: c4 00 40 00 ld \[ %g1 \], %g2
80c20: 84 00 a0 01 inc %g2
80c24: 40 00 00 08 call 80c44 <slocal>
80c28: c4 20 40 00 st %g2, \[ %g1 \]
80c2c: 7f ff fe f8 call 8080c <_PROCEDURE_LINKAGE_TABLE_\+0xc>
80c30: 01 00 00 00 nop
80c34: 7f ff fe f6 call 8080c <_PROCEDURE_LINKAGE_TABLE_\+0xc>
80c38: 01 00 00 00 nop
80c3c: 81 c7 e0 08 ret
80c40: 81 e8 00 00 restore
 
00080c44 <slocal>:
80c44: 81 c3 e0 08 retl
80c48: 01 00 00 00 nop
 
00080c4c <sglobal>:
80c4c: 81 c3 e0 08 retl
80c50: 01 00 00 00 nop
/binutils/ld/testsuite/ld-sparc/tlssunbin64.rd
0,0 → 1,126
#source: tlssunbin64.s
#as: --64
#ld: -shared -melf64_sparc tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o
#readelf: -WSsrl
#target: sparc*-*-*
 
.*
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0
+\[[ 0-9]+\] .interp +.*
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+101000 0+1000 0+11a4 00 +AX +0 +0 4096
+\[[ 0-9]+\] .tdata +PROGBITS +0+2021a4 0+21a4 0+0060 00 WAT +0 +0 +4
+\[[ 0-9]+\] .tbss +NOBITS +0+202204 0+2204 0+40 00 WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+202208 0+2208 0+100 10 +WA +4 +0 +8
+\[[ 0-9]+\] .got +PROGBITS +0+202308 0+2308 0+28 08 +WA +0 +0 +8
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is EXEC \(Executable file\)
Entry point 0x102000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8
+INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x100000
+LOAD .* RW +0x100000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+a0 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG5 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG2 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG6 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG1 \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* TLS +GLOBAL +DEFAULT +UND sG5
.* TLS +GLOBAL +DEFAULT +UND sG2
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* TLS +GLOBAL +DEFAULT +UND sG1
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* SECTION +LOCAL +DEFAULT +9 *
.* SECTION +LOCAL +DEFAULT +10 *
.* TLS +LOCAL +DEFAULT +7 sl1
.* TLS +LOCAL +DEFAULT +7 sl2
.* TLS +LOCAL +DEFAULT +7 sl3
.* TLS +LOCAL +DEFAULT +7 sl4
.* TLS +LOCAL +DEFAULT +7 sl5
.* TLS +LOCAL +DEFAULT +7 sl6
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* TLS +LOCAL +DEFAULT +8 bl1
.* TLS +LOCAL +DEFAULT +8 bl2
.* TLS +LOCAL +DEFAULT +8 bl3
.* TLS +LOCAL +DEFAULT +8 bl4
.* TLS +LOCAL +DEFAULT +8 bl5
.* TLS +LOCAL +DEFAULT +8 bl6
.* TLS +LOCAL +DEFAULT +8 bl7
.* TLS +LOCAL +DEFAULT +8 bl8
.* OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +10 _PROCEDURE_LINKAGE_TABLE_
.* OBJECT +LOCAL +DEFAULT +10 _GLOBAL_OFFSET_TABLE_
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +8 bg8
.* TLS +GLOBAL +DEFAULT +8 bg6
.* TLS +GLOBAL +DEFAULT +UND sG5
.* TLS +GLOBAL +DEFAULT +8 bg3
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +HIDDEN +7 sh3
.* TLS +GLOBAL +DEFAULT +UND sG2
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* TLS +GLOBAL +DEFAULT +8 bg5
.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +HIDDEN +7 sh7
.* TLS +GLOBAL +HIDDEN +7 sh8
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 _start
.* TLS +GLOBAL +HIDDEN +7 sh4
.* TLS +GLOBAL +DEFAULT +8 bg7
.* TLS +GLOBAL +HIDDEN +7 sh5
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sG6
.* FUNC +GLOBAL +DEFAULT +6 fn2
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +UND sG1
.* TLS +GLOBAL +HIDDEN +7 sh1
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* TLS +GLOBAL +HIDDEN +7 sh2
.* TLS +GLOBAL +HIDDEN +7 sh6
.* TLS +GLOBAL +DEFAULT +8 bg2
.* TLS +GLOBAL +DEFAULT +8 bg1
.* TLS +GLOBAL +DEFAULT +8 bg4
/binutils/ld/testsuite/ld-sparc/tlssunnopic64.rd
0,0 → 1,95
#source: tlssunnopic64.s
#source: tlsnopic.s
#as: --64 -Av9
#ld: -shared -melf64_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
.*
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .tbss +NOBITS +0+102000 0+2000 0+24 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+102000 0+2000 0+100 10 +WA +3 +0 +8
+\[[ 0-9]+\] .got +PROGBITS +0+102100 0+2100 0+38 08 +WA +0 +0 +8
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+LOAD .* R E 0x100000
+LOAD .* RW +0x100000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+ 0x0+24 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_HH22 +0+102100 +\.got \+ 102100
[0-9a-f ]+R_SPARC_LM22 +0+102100 +\.got \+ 102100
[0-9a-f ]+R_SPARC_HM10 +0+102100 +\.got \+ 102100
[0-9a-f ]+R_SPARC_LO10 +0+102100 +\.got \+ 102100
[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+9
[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+9
[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+1c
[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+1c
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+4
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+14
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+18
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sg2 \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +8 *
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sg2
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* TLS +LOCAL +DEFAULT +6 bl1
.* TLS +LOCAL +DEFAULT +6 bl2
.* TLS +LOCAL +DEFAULT +6 bl3
.* TLS +LOCAL +DEFAULT +6 bl4
.* TLS +LOCAL +DEFAULT +6 bl5
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +6 sh3
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh4
.* TLS +LOCAL +DEFAULT +6 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh2
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +UND sg2
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/binutils/ld/testsuite/ld-sparc/tlssunbin64.td
0,0 → 1,15
#source: tlssunbin64.s
#as: --64
#ld: -shared -melf64_sparc tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o
#objdump: -sj.tdata
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .tdata:
2021a4 00000011 00000012 00000013 00000014 .*
2021b4 00000015 00000016 00000017 00000018 .*
2021c4 00000041 00000042 00000043 00000044 .*
2021d4 00000045 00000046 00000047 00000048 .*
2021e4 00000101 00000102 00000103 00000104 .*
2021f4 00000105 00000106 00000107 00000108 .*
/binutils/ld/testsuite/ld-sparc/gotop32.sd
0,0 → 1,10
#source: gotop32.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .got:
12070 00012000 00000000 .*
/binutils/ld/testsuite/ld-sparc/sparc.exp
0,0 → 1,135
# Expect script for ld-sparc tests
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
#
 
# Test SPARC linking; all types of relocs. This tests the assembler and
# tools like objdump as well as the linker.
 
if {[istarget "sparc-*-vxworks"]} {
set sparcvxworkstests {
{"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
"-KPIC" {vxworks1-lib.s}
{{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
{readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}}
"libvxworks1.so"}
{"VxWorks executable test 1 (dynamic)" \
"tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
"" {vxworks1.s}
{{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
"vxworks1"}
{"VxWorks executable test 2 (dynamic)" \
"-Tvxworks1.ld -q --force-dynamic"
"" {vxworks2.s}
{{readelf --segments vxworks2.sd}}
"vxworks2"}
{"VxWorks executable test 2 (static)"
"-Tvxworks1.ld"
"" {vxworks2.s}
{{readelf --segments vxworks2-static.sd}}
"vxworks2"}
}
run_ld_link_tests $sparcvxworkstests
run_dump_test "vxworks1-static"
}
 
if { !([istarget "sparc*-*-elf*"]
|| [istarget "sparc*-sun-solaris*"]
|| ([istarget "sparc*-*-linux*"]
&& ![istarget "*-*-*aout*"]
&& ![istarget "*-*-*oldld*"])) } {
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 sparctests {
{"32-bit: TLS -fpic -shared transitions" "-shared -melf32_sparc"
"--32 -K PIC" {tlssunpic32.s tlspic.s}
{{readelf -WSsrl tlssunpic32.rd} {objdump -drj.text tlssunpic32.dd}
{objdump -sj.got tlssunpic32.sd} {objdump -sj.tdata tlssunpic32.td}}
"libtlssunpic32.so"}
{"32-bit: Helper shared library" "-shared -melf32_sparc"
"--32 -K PIC" {tlslib.s} {} "libtlslib32.so"}
{"32-bit: Another helper shared library" "-shared -melf32_sparc"
"--32 -K PIC" {tlssunbinpic32.s} {} "libtlssunbinpic32.so"}
{"32-bit: TLS -fpic and -fno-pic exec transitions"
"-melf32_sparc tmpdir/libtlslib32.so tmpdir/tlssunbinpic32.o"
"--32" {tlssunbin32.s}
{{readelf -WSsrl tlssunbin32.rd} {objdump -drj.text tlssunbin32.dd}
{objdump -sj.got tlssunbin32.sd} {objdump -sj.tdata tlssunbin32.td}}
"tlssunbin32"}
{"32-bit: TLS -fno-pic -shared" "-shared -melf32_sparc"
"--32" {tlssunnopic32.s tlsnopic.s}
{{readelf -WSsrl tlssunnopic32.rd} {objdump -drj.text tlssunnopic32.dd}
{objdump -sj.got tlssunnopic32.sd}} "libtlssunnopic32.so"}
{"32-bit: TLS in debug sections" "-melf32_sparc"
"--32" {tlsg32.s}
{{objdump -sj.debug_foobar tlsg32.sd}} "tlsg32"}
{"32-bit: GOTDATA relocations" "-shared -melf32_sparc"
"--32 -K PIC" {gotop32.s}
{{readelf -WSsrl gotop32.rd} {objdump -drj.text gotop32.dd}
{objdump -sj.got gotop32.sd} {objdump -sj.data gotop32.td}}
"libgotop32.so"}
}
set sparc64tests {
{"64-bit: TLS -fpic -shared transitions" "-shared -melf64_sparc"
"--64 -Av9 -K PIC" {tlssunpic64.s tlspic.s}
{{readelf -WSsrl tlssunpic64.rd} {objdump -drj.text tlssunpic64.dd}
{objdump -sj.got tlssunpic64.sd} {objdump -sj.tdata tlssunpic64.td}}
"libtlssunpic64.so"}
{"64-bit: Helper shared library" "-shared -melf64_sparc"
"--64 -Av9 -K PIC" {tlslib.s} {} "libtlslib64.so"}
{"64-bit: Another helper shared library" "-shared -melf64_sparc"
"--64 -Av9 -K PIC" {tlssunbinpic64.s} {} "libtlssunbinpic64.so"}
{"64-bit: TLS -fpic and -fno-pic exec transitions"
"-melf64_sparc tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o"
"--64 -Av9" {tlssunbin64.s}
{{readelf -WSsrl tlssunbin64.rd} {objdump -drj.text tlssunbin64.dd}
{objdump -sj.got tlssunbin64.sd} {objdump -sj.tdata tlssunbin64.td}}
"tlssunbin64"}
{"64-bit: TLS -fno-pic -shared" "-shared -melf64_sparc"
"--64 -Av9" {tlssunnopic64.s tlsnopic.s}
{{readelf -WSsrl tlssunnopic64.rd} {objdump -drj.text tlssunnopic64.dd}
{objdump -sj.got tlssunnopic64.sd}} "libtlssunnopic64.so"}
{"64-bit: TLS in debug sections" "-melf64_sparc"
"--64 -Av9" {tlsg64.s}
{{objdump -sj.debug_foobar tlsg64.sd}} "tlsg64"}
{"64-bit: GOTDATA relocations" "-shared -melf64_sparc"
"--64 -K PIC" {gotop64.s}
{{readelf -WSsrl gotop64.rd} {objdump -drj.text gotop64.dd}
{objdump -sj.got gotop64.sd} {objdump -sj.data gotop64.td}}
"libgotop64.so"}
}
 
if { ![istarget "sparc64-*-elf*"] } {
run_ld_link_tests $sparctests
}
if { !([istarget "sparc-*-elf*"]
|| [istarget "sparc-sun-solaris2.5*"]
|| [istarget "sparc-sun-solaris2.6"]) } {
run_ld_link_tests $sparc64tests
}
/binutils/ld/testsuite/ld-sparc/tlssunpic64.sd
0,0 → 1,20
#source: tlssunpic64.s
#source: tlspic.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .got:
102190 00000000 00102060 00000000 00000000 .*
1021a0 00000000 00000020 00000000 00000000 .*
1021b0 00000000 00000000 00000000 00000000 .*
1021c0 00000000 00000000 00000000 00000000 .*
1021d0 00000000 00000060 00000000 00000000 .*
1021e0 00000000 00000000 00000000 00000000 .*
1021f0 00000000 00000000 00000000 00000000 .*
102200 00000000 00000000 00000000 00000000 .*
102210 00000000 00000000 00000000 00000040 .*
102220 00000000 00000000 .*
/binutils/ld/testsuite/ld-sparc/gotop64.sd
0,0 → 1,10
#source: gotop64.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .got:
1020e0 00000000 00102000 00000000 00000000 .*
/binutils/ld/testsuite/ld-sparc/vxworks1-lib.nd
0,0 → 1,9
#...
Symbol table '\.dynsym' .*:
#...
.*: 00090400 * 0 * OBJECT * GLOBAL * DEFAULT * [0-9]+ _GLOBAL_OFFSET_TABLE_
#...
Symbol table '\.symtab' .*:
#...
.*: 00090400 * 0 * OBJECT * GLOBAL * DEFAULT * [0-9]+ _GLOBAL_OFFSET_TABLE_
#pass
/binutils/ld/testsuite/ld-sparc/vxworks1-lib.s
0,0 → 1,44
.text
.globl foo
.type foo, %function
foo:
save %sp, -104, %sp
sethi %hi(__GOTT_BASE__), %l7
ld [%l7+%lo(__GOTT_BASE__)],%l7
ld [%l7+%lo(__GOTT_INDEX__)],%l7
sethi %hi(x), %g1
or %g1, %lo(x), %g1
ld [%l7+%g1], %g1
ld [%g1], %g2
add %g2, 1, %g2
 
call slocal, 0
st %g2, [%g1]
 
call sexternal, 0
nop
 
call sexternal, 0
nop
 
ret
restore
.size foo, .-foo
 
.type slocal, %function
slocal:
retl
nop
.size slocal, .-slocal
 
.globl sglobal
.type sglobal, %function
sglobal:
retl
nop
.size sglobal, .-sglobal
 
.data
.4byte slocal
 
.comm x,4,4
/binutils/ld/testsuite/ld-sparc/vxworks1-static.d
0,0 → 1,4
#name: VxWorks executable test 1 (static)
#source: vxworks1.s
#ld: tmpdir/libvxworks1.so -Tvxworks1.ld
#error: Dynamic sections created in non-dynamic link
/binutils/ld/testsuite/ld-sparc/vxworks1-lib.rd
0,0 → 1,12
 
Relocation section '\.rela\.plt' at offset .* contains 1 entries:
Offset Info Type Sym\.Value Sym\. Name \+ Addend
0009040c .*15 R_SPARC_JMP_SLOT 00000000 sexternal \+ 0
 
Relocation section '\.rela\.dyn' at offset .* contains 5 entries:
Offset Info Type Sym\.Value Sym\. Name \+ Addend
00090800 00000016 R_SPARC_RELATIVE 00080c44
00080c04 .*09 R_SPARC_HI22 00000000 __GOTT_BASE__ \+ 0
00080c08 .*0c R_SPARC_LO10 00000000 __GOTT_BASE__ \+ 0
00080c0c .*0c R_SPARC_LO10 00000000 __GOTT_INDEX__ \+ 0
00090410 .*14 R_SPARC_GLOB_DAT 00090c00 x \+ 0
/binutils/ld/testsuite/ld-sparc/vxworks1-lib.td
0,0 → 1,3
#...
0x0+16 \(TEXTREL\) +0x0
#pass
/binutils/ld/testsuite/ld-sparc/tlssunpic32.dd
0,0 → 1,220
#source: tlssunpic32.s
#source: tlspic.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Disassembly of section .text:
 
00001000 <fn1-0x8>:
+1000: 81 c3 e0 08 retl *
+1004: ae 03 c0 17 add %o7, %l7, %l7
 
00001008 <fn1>:
+1008: 9d e3 bf 98 save %sp, -104, %sp
+100c: 2f 00 00 44 sethi %hi\(0x11000\), %l7
+1010: 7f ff ff fc call 1000 <.*>
+1014: ae 05 e0 e8 add %l7, 0xe8, %l7 ! 110e8 <.*>
+1018: 01 00 00 00 nop *
+101c: 01 00 00 00 nop *
+1020: 01 00 00 00 nop *
+1024: 01 00 00 00 nop *
+1028: 23 00 00 00 sethi %hi\(0\), %l1
+102c: 01 00 00 00 nop *
+1030: a4 04 60 2c add %l1, 0x2c, %l2
+1034: 01 00 00 00 nop *
+1038: 90 05 c0 12 add %l7, %l2, %o0
+103c: 01 00 00 00 nop *
+1040: 40 00 44 4d call [0-9a-f]+ <__tls_get_addr@plt>
+1044: 01 00 00 00 nop *
+1048: 01 00 00 00 nop *
+104c: 01 00 00 00 nop *
+1050: 01 00 00 00 nop *
+1054: 01 00 00 00 nop *
+1058: 11 00 00 00 sethi %hi\(0\), %o0
+105c: 92 02 20 3c add %o0, 0x3c, %o1 ! 3c <.*>
+1060: d0 05 c0 09 ld \[ %l7 \+ %o1 \], %o0
+1064: 90 01 c0 08 add %g7, %o0, %o0
+1068: 01 00 00 00 nop *
+106c: 01 00 00 00 nop *
+1070: 01 00 00 00 nop *
+1074: 01 00 00 00 nop *
+1078: 01 00 00 00 nop *
+107c: 19 00 00 00 sethi %hi\(0\), %o4
+1080: 98 03 20 04 add %o4, 4, %o4 ! 4 <.*>
+1084: 90 05 c0 0c add %l7, %o4, %o0
+1088: 40 00 44 3b call [0-9a-f]+ <__tls_get_addr@plt>
+108c: 01 00 00 00 nop *
+1090: 01 00 00 00 nop *
+1094: 01 00 00 00 nop *
+1098: 01 00 00 00 nop *
+109c: 01 00 00 00 nop *
+10a0: 11 00 00 00 sethi %hi\(0\), %o0
+10a4: 90 02 20 0c add %o0, 0xc, %o0 ! c <.*>
+10a8: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0
+10ac: 90 01 c0 08 add %g7, %o0, %o0
+10b0: 01 00 00 00 nop *
+10b4: 01 00 00 00 nop *
+10b8: 01 00 00 00 nop *
+10bc: 01 00 00 00 nop *
+10c0: 01 00 00 00 nop *
+10c4: 19 00 00 00 sethi %hi\(0\), %o4
+10c8: 98 03 20 40 add %o4, 0x40, %o4 ! 40 <.*>
+10cc: 90 05 c0 0c add %l7, %o4, %o0
+10d0: 40 00 44 29 call [0-9a-f]+ <__tls_get_addr@plt>
+10d4: 01 00 00 00 nop *
+10d8: 01 00 00 00 nop *
+10dc: 01 00 00 00 nop *
+10e0: 01 00 00 00 nop *
+10e4: 01 00 00 00 nop *
+10e8: 11 00 00 00 sethi %hi\(0\), %o0
+10ec: 90 02 20 48 add %o0, 0x48, %o0 ! 48 <.*>
+10f0: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0
+10f4: 90 01 c0 08 add %g7, %o0, %o0
+10f8: 01 00 00 00 nop *
+10fc: 01 00 00 00 nop *
+1100: 01 00 00 00 nop *
+1104: 01 00 00 00 nop *
+1108: 01 00 00 00 nop *
+110c: 19 00 00 00 sethi %hi\(0\), %o4
+1110: 98 03 20 1c add %o4, 0x1c, %o4 ! 1c <.*>
+1114: 90 05 c0 0c add %l7, %o4, %o0
+1118: 40 00 44 17 call [0-9a-f]+ <__tls_get_addr@plt>
+111c: 01 00 00 00 nop *
+1120: 01 00 00 00 nop *
+1124: 01 00 00 00 nop *
+1128: 01 00 00 00 nop *
+112c: 01 00 00 00 nop *
+1130: 11 00 00 00 sethi %hi\(0\), %o0
+1134: 90 02 20 24 add %o0, 0x24, %o0 ! 24 <.*>
+1138: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0
+113c: 90 01 c0 08 add %g7, %o0, %o0
+1140: 01 00 00 00 nop *
+1144: 01 00 00 00 nop *
+1148: 01 00 00 00 nop *
+114c: 01 00 00 00 nop *
+1150: 01 00 00 00 nop *
+1154: 23 00 00 00 sethi %hi\(0\), %l1
+1158: 01 00 00 00 nop *
+115c: a4 04 60 14 add %l1, 0x14, %l2
+1160: 01 00 00 00 nop *
+1164: 90 05 c0 12 add %l7, %l2, %o0
+1168: 01 00 00 00 nop *
+116c: 40 00 44 02 call [0-9a-f]+ <__tls_get_addr@plt>
+1170: 01 00 00 00 nop *
+1174: 27 00 00 00 sethi %hi\(0\), %l3
+1178: 01 00 00 00 nop *
+117c: a8 1c e0 20 xor %l3, 0x20, %l4
+1180: 01 00 00 00 nop *
+1184: aa 02 00 14 add %o0, %l4, %l5
+1188: 01 00 00 00 nop *
+118c: 25 00 00 00 sethi %hi\(0\), %l2
+1190: 01 00 00 00 nop *
+1194: a6 1c a0 26 xor %l2, 0x26, %l3
+1198: 01 00 00 00 nop *
+119c: ec 12 00 13 lduh \[ %o0 \+ %l3 \], %l6
+11a0: 01 00 00 00 nop *
+11a4: 01 00 00 00 nop *
+11a8: 01 00 00 00 nop *
+11ac: 01 00 00 00 nop *
+11b0: 13 00 00 00 sethi %hi\(0\), %o1
+11b4: 27 00 00 00 sethi %hi\(0\), %l3
+11b8: 94 02 60 14 add %o1, 0x14, %o2
+11bc: 25 00 00 00 sethi %hi\(0\), %l2
+11c0: 90 05 c0 0a add %l7, %o2, %o0
+11c4: a8 1c e0 40 xor %l3, 0x40, %l4
+11c8: 40 00 43 eb call [0-9a-f]+ <__tls_get_addr@plt>
+11cc: a6 1c a0 45 xor %l2, 0x45, %l3
+11d0: aa 02 00 14 add %o0, %l4, %l5
+11d4: ec 0a 00 13 ldub \[ %o0 \+ %l3 \], %l6
+11d8: 01 00 00 00 nop *
+11dc: 01 00 00 00 nop *
+11e0: 01 00 00 00 nop *
+11e4: 01 00 00 00 nop *
+11e8: 13 00 00 00 sethi %hi\(0\), %o1
+11ec: 27 00 00 00 sethi %hi\(0\), %l3
+11f0: 94 02 60 14 add %o1, 0x14, %o2
+11f4: 25 00 00 00 sethi %hi\(0\), %l2
+11f8: 90 05 c0 0a add %l7, %o2, %o0
+11fc: a8 1c e0 63 xor %l3, 0x63, %l4
+1200: 40 00 43 dd call [0-9a-f]+ <__tls_get_addr@plt>
+1204: a6 1c a0 64 xor %l2, 0x64, %l3
+1208: aa 02 00 14 add %o0, %l4, %l5
+120c: ec 02 00 13 ld \[ %o0 \+ %l3 \], %l6
+1210: 01 00 00 00 nop *
+1214: 01 00 00 00 nop *
+1218: 01 00 00 00 nop *
+121c: 01 00 00 00 nop *
+1220: 23 00 00 00 sethi %hi\(0\), %l1
+1224: 01 00 00 00 nop *
+1228: a4 04 60 3c add %l1, 0x3c, %l2
+122c: 01 00 00 00 nop *
+1230: e4 05 c0 12 ld \[ %l7 \+ %l2 \], %l2
+1234: 01 00 00 00 nop *
+1238: a4 01 c0 12 add %g7, %l2, %l2
+123c: 01 00 00 00 nop *
+1240: 01 00 00 00 nop *
+1244: 01 00 00 00 nop *
+1248: 01 00 00 00 nop *
+124c: 17 00 00 00 sethi %hi\(0\), %o3
+1250: 96 02 e0 0c add %o3, 0xc, %o3 ! c <.*>
+1254: d4 05 c0 0b ld \[ %l7 \+ %o3 \], %o2
+1258: 98 01 c0 0a add %g7, %o2, %o4
+125c: 01 00 00 00 nop *
+1260: 01 00 00 00 nop *
+1264: 01 00 00 00 nop *
+1268: 01 00 00 00 nop *
+126c: 23 00 00 00 sethi %hi\(0\), %l1
+1270: a4 04 60 48 add %l1, 0x48, %l2 ! 48 <.*>
+1274: e4 05 c0 12 ld \[ %l7 \+ %l2 \], %l2
+1278: a4 01 c0 12 add %g7, %l2, %l2
+127c: 01 00 00 00 nop *
+1280: 01 00 00 00 nop *
+1284: 01 00 00 00 nop *
+1288: 01 00 00 00 nop *
+128c: 23 00 00 00 sethi %hi\(0\), %l1
+1290: a4 04 60 24 add %l1, 0x24, %l2 ! 24 <.*>
+1294: e4 05 c0 12 ld \[ %l7 \+ %l2 \], %l2
+1298: a4 01 c0 12 add %g7, %l2, %l2
+129c: 01 00 00 00 nop *
+12a0: 01 00 00 00 nop *
+12a4: 01 00 00 00 nop *
+12a8: 01 00 00 00 nop *
+12ac: 23 00 00 00 sethi %hi\(0\), %l1
+12b0: a4 04 60 28 add %l1, 0x28, %l2 ! 28 <.*>
+12b4: e4 05 c0 12 ld \[ %l7 \+ %l2 \], %l2
+12b8: e4 01 c0 12 ld \[ %g7 \+ %l2 \], %l2
+12bc: 01 00 00 00 nop *
+12c0: 01 00 00 00 nop *
+12c4: 01 00 00 00 nop *
+12c8: 01 00 00 00 nop *
+12cc: 17 00 00 00 sethi %hi\(0\), %o3
+12d0: 98 02 e0 10 add %o3, 0x10, %o4 ! 10 <.*>
+12d4: da 05 c0 0c ld \[ %l7 \+ %o4 \], %o5
+12d8: e4 29 c0 0d stb %l2, \[ %g7 \+ %o5 \]
+12dc: 01 00 00 00 nop *
+12e0: 01 00 00 00 nop *
+12e4: 01 00 00 00 nop *
+12e8: 01 00 00 00 nop *
+12ec: 17 00 00 00 sethi %hi\(0\), %o3
+12f0: 98 02 e0 34 add %o3, 0x34, %o4 ! 34 <.*>
+12f4: da 05 c0 0c ld \[ %l7 \+ %o4 \], %o5
+12f8: e4 11 c0 0d lduh \[ %g7 \+ %o5 \], %l2
+12fc: 01 00 00 00 nop *
+1300: 01 00 00 00 nop *
+1304: 01 00 00 00 nop *
+1308: 01 00 00 00 nop *
+130c: 17 00 00 00 sethi %hi\(0\), %o3
+1310: 98 02 e0 38 add %o3, 0x38, %o4 ! 38 <.*>
+1314: da 05 c0 0c ld \[ %l7 \+ %o4 \], %o5
+1318: e4 21 c0 0d st %l2, \[ %g7 \+ %o5 \]
+131c: 01 00 00 00 nop *
+1320: 01 00 00 00 nop *
+1324: 01 00 00 00 nop *
+1328: 01 00 00 00 nop *
+132c: 81 c7 e0 08 ret *
+1330: 81 e8 00 00 restore *
#pass
/binutils/ld/testsuite/ld-sparc/tlssunbinpic32.s
0,0 → 1,183
.data
.align 4096
.section ".tdata", #alloc, #write, #tls
.align 4
.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: .word 17
.skip 4096
sg2: .word 18
sg3: .word 19
sg4: .word 20
sg5: .word 21
sg6: .word 22
sg7: .word 23
sg8: .word 24
sl1: .word 65
sl2: .word 66
sl3: .word 67
sl4: .word 68
sl5: .word 69
sl6: .word 70
sl7: .word 71
sl8: .word 72
sh1: .word 257
sh2: .word 258
sh3: .word 259
sh4: .word 260
sh5: .word 261
sh6: .word 262
sh7: .word 263
sh8: .word 264
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl fn2
.type fn2,#function
.proc 04
fn2:
save %sp, -104, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop;nop;nop;nop
 
/* GD -> IE because variable is not defined in executable */
sethi %tgd_hi22(sG1), %l1
nop
add %l1, %tgd_lo10(sG1), %l2
nop
add %l7, %l2, %o0, %tgd_add(sG1)
nop
call __tls_get_addr, %tgd_call(sG1)
nop
nop;nop;nop;nop
 
/* GD -> IE because variable is not defined in executable where
the variable is referenced through IE too */
sethi %tgd_hi22(sG2), %o0
add %o0, %tgd_lo10(sG2), %o1
add %l7, %o1, %o0, %tgd_add(sG2)
call __tls_get_addr, %tgd_call(sG2)
nop
nop;nop;nop;nop
 
/* GD -> LE with global variable defined in executable */
sethi %tgd_hi22(sg1), %l0
add %l0, %tgd_lo10(sg1), %l5
add %l7, %l5, %o0, %tgd_add(sg1)
call __tls_get_addr, %tgd_call(sg1)
nop
nop;nop;nop;nop
 
/* GD -> LE with local variable defined in executable */
sethi %tgd_hi22(sl1), %o0
add %o0, %tgd_lo10(sl1), %o1
add %l7, %o1, %o0, %tgd_add(sl1)
call __tls_get_addr, %tgd_call(sl1)
nop
nop;nop;nop;nop
 
/* GD -> LE with hidden variable defined in executable */
sethi %tgd_hi22(sh1), %o0
add %o0, %tgd_lo10(sh1), %o1
add %l7, %o1, %o0, %tgd_add(sh1)
call __tls_get_addr, %tgd_call(sh1)
nop
nop;nop;nop;nop
 
/* LD -> LE */
sethi %tldm_hi22(sl1), %l1
nop
add %l1, %tldm_lo10(sl1), %l2
nop
add %l7, %l2, %o0, %tldm_add(sl1)
nop
call __tls_get_addr, %tldm_call(sl1)
nop
sethi %tldo_hix22(sl1), %l3
nop
xor %l3, %tldo_lox10(sl1), %l4
nop
add %o0, %l4, %l5, %tldo_add(sl1)
nop
sethi %tldo_hix22(sl2 + 2), %l2
nop
xor %l2, %tldo_lox10(sl2 + 2), %l3
nop
lduh [%o0 + %l3], %l6, %tldo_add(sl2 + 2)
nop;nop;nop;nop
 
/* LD -> LE against hidden variables */
sethi %tldm_hi22(sh1), %o1
sethi %tldo_hix22(sh1), %l3
add %o1, %tldm_lo10(sh1), %o2
sethi %tldo_hix22(sh2 + 1), %l2
add %l7, %o2, %o0, %tldm_add(sh1)
xor %l3, %tldo_lox10(sh1), %l4
call __tls_get_addr, %tldm_call(sh1)
xor %l2, %tldo_lox10(sh2 + 1), %l3
add %o0, %l4, %l5, %tldo_add(sh1)
ldub [%o0 + %l3], %l6, %tldo_add(sh2 + 1)
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sG2), %l1
nop
add %l1, %tie_lo10(sG2), %l2
nop
ld [%l7 + %l2], %l2, %tie_ld(sG2)
nop
add %g7, %l2, %l2, %tie_add(sG2)
nop;nop;nop;nop
 
/* IE -> LE against global var defined in exec */
sethi %tie_hi22(sg1), %o3
add %o3, %tie_lo10(sg1), %o3
ld [%l7 + %o3], %o3, %tie_ld(sg1)
add %g7, %o3, %o4, %tie_add(sg1)
nop;nop;nop;nop
 
/* IE -> LE against local var */
sethi %tie_hi22(sl1), %l4
add %l4, %tie_lo10(sl1), %l1
ld [%l7 + %l1], %l3, %tie_ld(sl1)
add %g7, %l3, %l3, %tie_add(sl1)
nop;nop;nop;nop
 
/* IE -> LE against hidden var */
sethi %tie_hi22(sh1), %o1
add %o1, %tie_lo10(sh1), %o3
ld [%l7 + %o3], %o0, %tie_ld(sh1)
add %g7, %o0, %o3, %tie_add(sh1)
nop;nop;nop;nop
 
/* Direct access through %g7 */
 
/* IE against global var */
sethi %tie_hi22(sG5), %o3
add %o3, %tie_lo10(sG5), %o3
ld [%l7 + %o3], %o2, %tie_ld(sG5)
ld [%g7 + %o2], %o4, %tie_add(sG5)
nop;nop;nop;nop
 
/* IE->LE against local var */
sethi %tie_hi22(sl5), %o3
add %o3, %tie_lo10(sl5), %o3
ld [%l7 + %o3], %o2, %tie_ld(sl5)
stb %o4, [%g7 + %o2], %tie_add(sl5)
nop;nop;nop;nop
 
/* IE->LE against hidden var */
sethi %tie_hi22(sh5), %o5
add %o5, %tie_lo10(sh5), %o3
ld [%l7 + %o3], %o2, %tie_ld(sh5)
ldsb [%g7 + %o2], %o4, %tie_add(sh5)
nop;nop;nop;nop
 
ret
restore
/binutils/ld/testsuite/ld-sparc/gotop32.dd
0,0 → 1,34
#source: gotop32.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Disassembly of section .text:
00001000 <foo-0x8>:
+1000: 81 c3 e0 08 retl *
+1004: ae 03 c0 17 add %o7, %l7, %l7
 
00001008 <foo>:
+1008: 9d e3 bf 98 save %sp, -104, %sp
+100c: 2f 00 00 44 sethi %hi\(0x11000\), %l7
+1010: 7f ff ff fc call 1000 <_.*>
+1014: ae 05 e0 60 add %l7, 0x60, %l7 ! 11060 <.*>
+1018: 01 00 00 00 nop *
+101c: 23 00 00 00 sethi %hi\(0\), %l1
+1020: 01 00 00 00 nop *
+1024: a2 1c 60 04 xor %l1, 4, %l1
+1028: 01 00 00 00 nop *
+102c: f0 05 c0 11 ld \[ %l7 \+ %l1 \], %i0
+1030: 01 00 00 00 nop *
+1034: 23 00 00 03 sethi %hi\(0xc00\), %l1
+1038: 01 00 00 00 nop
+103c: a2 1c 63 94 xor %l1, 0x394, %l1
+1040: 01 00 00 00 nop
+1044: b0 05 c0 11 add %l7, %l1, %i0
+1048: 01 00 00 00 nop
+104c: 81 c7 e0 08 ret
+1050: 81 e8 00 00 restore
#pass
/binutils/ld/testsuite/ld-sparc/tlsg32.sd
0,0 → 1,10
#source: tlsg.s
#as: --32
#ld: -melf32_sparc
#objdump: -sj.debug_foobar
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .debug_foobar:
0+ 0+18 .*
/binutils/ld/testsuite/ld-sparc/tlsg64.s
0,0 → 1,12
.section .tbss
.align 4
.word 0, 0, 0, 0, 0, 0
.type a,#tls_object
.size a,4
a:
.word 0
.text
.globl _start
_start:
.section .debug_foobar
.xword %r_tls_dtpoff64(a)
/binutils/ld/testsuite/ld-sparc/tlssunpic64.dd
0,0 → 1,220
#source: tlssunpic64.s
#source: tlspic.s
#as: --64 -Av9 -K PIC
#ld: -shared -melf64_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Disassembly of section .text:
 
0+1000 <fn1-0x8>:
+1000: 81 c3 e0 08 retl *
+1004: ae 03 c0 17 add %o7, %l7, %l7
 
0+1008 <fn1>:
+1008: 9d e3 bf 60 save %sp, -160, %sp
+100c: 2f 00 04 04 sethi %hi\(0x101000\), %l7
+1010: 7f ff ff fc call 1000 <.*>
+1014: ae 05 e1 80 add %l7, 0x180, %l7 ! 101180 <.*>
+1018: 01 00 00 00 nop *
+101c: 01 00 00 00 nop *
+1020: 01 00 00 00 nop *
+1024: 01 00 00 00 nop *
+1028: 23 00 00 00 sethi %hi\(0\), %l1
+102c: 01 00 00 00 nop *
+1030: a4 04 60 58 add %l1, 0x58, %l2
+1034: 01 00 00 00 nop *
+1038: 90 05 c0 12 add %l7, %l2, %o0
+103c: 01 00 00 00 nop *
+1040: 40 04 04 d0 call [0-9a-f]+ <__tls_get_addr@plt>
+1044: 01 00 00 00 nop *
+1048: 01 00 00 00 nop *
+104c: 01 00 00 00 nop *
+1050: 01 00 00 00 nop *
+1054: 01 00 00 00 nop *
+1058: 11 00 00 00 sethi %hi\(0\), %o0
+105c: 92 02 20 78 add %o0, 0x78, %o1 ! 78 <.*>
+1060: d0 5d c0 09 ldx \[ %l7 \+ %o1 \], %o0
+1064: 90 01 c0 08 add %g7, %o0, %o0
+1068: 01 00 00 00 nop *
+106c: 01 00 00 00 nop *
+1070: 01 00 00 00 nop *
+1074: 01 00 00 00 nop *
+1078: 01 00 00 00 nop *
+107c: 19 00 00 00 sethi %hi\(0\), %o4
+1080: 98 03 20 08 add %o4, 8, %o4 ! 8 <.*>
+1084: 90 05 c0 0c add %l7, %o4, %o0
+1088: 40 04 04 be call [0-9a-f]+ <__tls_get_addr@plt>
+108c: 01 00 00 00 nop *
+1090: 01 00 00 00 nop *
+1094: 01 00 00 00 nop *
+1098: 01 00 00 00 nop *
+109c: 01 00 00 00 nop *
+10a0: 11 00 00 00 sethi %hi\(0\), %o0
+10a4: 90 02 20 18 add %o0, 0x18, %o0 ! 18 <.*>
+10a8: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0
+10ac: 90 01 c0 08 add %g7, %o0, %o0
+10b0: 01 00 00 00 nop *
+10b4: 01 00 00 00 nop *
+10b8: 01 00 00 00 nop *
+10bc: 01 00 00 00 nop *
+10c0: 01 00 00 00 nop *
+10c4: 19 00 00 00 sethi %hi\(0\), %o4
+10c8: 98 03 20 80 add %o4, 0x80, %o4 ! 80 <.*>
+10cc: 90 05 c0 0c add %l7, %o4, %o0
+10d0: 40 04 04 ac call [0-9a-f]+ <__tls_get_addr@plt>
+10d4: 01 00 00 00 nop *
+10d8: 01 00 00 00 nop *
+10dc: 01 00 00 00 nop *
+10e0: 01 00 00 00 nop *
+10e4: 01 00 00 00 nop *
+10e8: 11 00 00 00 sethi %hi\(0\), %o0
+10ec: 90 02 20 90 add %o0, 0x90, %o0 ! 90 <.*>
+10f0: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0
+10f4: 90 01 c0 08 add %g7, %o0, %o0
+10f8: 01 00 00 00 nop *
+10fc: 01 00 00 00 nop *
+1100: 01 00 00 00 nop *
+1104: 01 00 00 00 nop *
+1108: 01 00 00 00 nop *
+110c: 19 00 00 00 sethi %hi\(0\), %o4
+1110: 98 03 20 38 add %o4, 0x38, %o4 ! 38 <.*>
+1114: 90 05 c0 0c add %l7, %o4, %o0
+1118: 40 04 04 9a call [0-9a-f]+ <__tls_get_addr@plt>
+111c: 01 00 00 00 nop *
+1120: 01 00 00 00 nop *
+1124: 01 00 00 00 nop *
+1128: 01 00 00 00 nop *
+112c: 01 00 00 00 nop *
+1130: 11 00 00 00 sethi %hi\(0\), %o0
+1134: 90 02 20 48 add %o0, 0x48, %o0 ! 48 <.*>
+1138: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0
+113c: 90 01 c0 08 add %g7, %o0, %o0
+1140: 01 00 00 00 nop *
+1144: 01 00 00 00 nop *
+1148: 01 00 00 00 nop *
+114c: 01 00 00 00 nop *
+1150: 01 00 00 00 nop *
+1154: 23 00 00 00 sethi %hi\(0\), %l1
+1158: 01 00 00 00 nop *
+115c: a4 04 60 28 add %l1, 0x28, %l2
+1160: 01 00 00 00 nop *
+1164: 90 05 c0 12 add %l7, %l2, %o0
+1168: 01 00 00 00 nop *
+116c: 40 04 04 85 call [0-9a-f]+ <__tls_get_addr@plt>
+1170: 01 00 00 00 nop *
+1174: 27 00 00 00 sethi %hi\(0\), %l3
+1178: 01 00 00 00 nop *
+117c: a8 1c e0 20 xor %l3, 0x20, %l4
+1180: 01 00 00 00 nop *
+1184: aa 02 00 14 add %o0, %l4, %l5
+1188: 01 00 00 00 nop *
+118c: 25 00 00 00 sethi %hi\(0\), %l2
+1190: 01 00 00 00 nop *
+1194: a6 1c a0 26 xor %l2, 0x26, %l3
+1198: 01 00 00 00 nop *
+119c: ec 12 00 13 lduh \[ %o0 \+ %l3 \], %l6
+11a0: 01 00 00 00 nop *
+11a4: 01 00 00 00 nop *
+11a8: 01 00 00 00 nop *
+11ac: 01 00 00 00 nop *
+11b0: 13 00 00 00 sethi %hi\(0\), %o1
+11b4: 27 00 00 00 sethi %hi\(0\), %l3
+11b8: 94 02 60 28 add %o1, 0x28, %o2
+11bc: 25 00 00 00 sethi %hi\(0\), %l2
+11c0: 90 05 c0 0a add %l7, %o2, %o0
+11c4: a8 1c e0 40 xor %l3, 0x40, %l4
+11c8: 40 04 04 6e call [0-9a-f]+ <__tls_get_addr@plt>
+11cc: a6 1c a0 45 xor %l2, 0x45, %l3
+11d0: ea 5a 00 14 ldx \[ %o0 \+ %l4 \], %l5
+11d4: ac 02 00 13 add %o0, %l3, %l6
+11d8: 01 00 00 00 nop *
+11dc: 01 00 00 00 nop *
+11e0: 01 00 00 00 nop *
+11e4: 01 00 00 00 nop *
+11e8: 13 00 00 00 sethi %hi\(0\), %o1
+11ec: 27 00 00 00 sethi %hi\(0\), %l3
+11f0: 94 02 60 28 add %o1, 0x28, %o2
+11f4: 25 00 00 00 sethi %hi\(0\), %l2
+11f8: 90 05 c0 0a add %l7, %o2, %o0
+11fc: a8 1c e0 63 xor %l3, 0x63, %l4
+1200: 40 04 04 60 call [0-9a-f]+ <__tls_get_addr@plt>
+1204: a6 1c a0 64 xor %l2, 0x64, %l3
+1208: aa 02 00 14 add %o0, %l4, %l5
+120c: ec 02 00 13 ld \[ %o0 \+ %l3 \], %l6
+1210: 01 00 00 00 nop *
+1214: 01 00 00 00 nop *
+1218: 01 00 00 00 nop *
+121c: 01 00 00 00 nop *
+1220: 23 00 00 00 sethi %hi\(0\), %l1
+1224: 01 00 00 00 nop *
+1228: a4 04 60 78 add %l1, 0x78, %l2
+122c: 01 00 00 00 nop *
+1230: e4 5d c0 12 ldx \[ %l7 \+ %l2 \], %l2
+1234: 01 00 00 00 nop *
+1238: a4 01 c0 12 add %g7, %l2, %l2
+123c: 01 00 00 00 nop *
+1240: 01 00 00 00 nop *
+1244: 01 00 00 00 nop *
+1248: 01 00 00 00 nop *
+124c: 17 00 00 00 sethi %hi\(0\), %o3
+1250: 96 02 e0 18 add %o3, 0x18, %o3 ! 18 <.*>
+1254: d4 5d c0 0b ldx \[ %l7 \+ %o3 \], %o2
+1258: 98 01 c0 0a add %g7, %o2, %o4
+125c: 01 00 00 00 nop *
+1260: 01 00 00 00 nop *
+1264: 01 00 00 00 nop *
+1268: 01 00 00 00 nop *
+126c: 23 00 00 00 sethi %hi\(0\), %l1
+1270: a4 04 60 90 add %l1, 0x90, %l2 ! 90 <.*>
+1274: e4 5d c0 12 ldx \[ %l7 \+ %l2 \], %l2
+1278: a4 01 c0 12 add %g7, %l2, %l2
+127c: 01 00 00 00 nop *
+1280: 01 00 00 00 nop *
+1284: 01 00 00 00 nop *
+1288: 01 00 00 00 nop *
+128c: 23 00 00 00 sethi %hi\(0\), %l1
+1290: a4 04 60 48 add %l1, 0x48, %l2 ! 48 <.*>
+1294: e4 5d c0 12 ldx \[ %l7 \+ %l2 \], %l2
+1298: a4 01 c0 12 add %g7, %l2, %l2
+129c: 01 00 00 00 nop *
+12a0: 01 00 00 00 nop *
+12a4: 01 00 00 00 nop *
+12a8: 01 00 00 00 nop *
+12ac: 23 00 00 00 sethi %hi\(0\), %l1
+12b0: a4 04 60 50 add %l1, 0x50, %l2 ! 50 <.*>
+12b4: e4 5d c0 12 ldx \[ %l7 \+ %l2 \], %l2
+12b8: e4 59 c0 12 ldx \[ %g7 \+ %l2 \], %l2
+12bc: 01 00 00 00 nop *
+12c0: 01 00 00 00 nop *
+12c4: 01 00 00 00 nop *
+12c8: 01 00 00 00 nop *
+12cc: 17 00 00 00 sethi %hi\(0\), %o3
+12d0: 98 02 e0 20 add %o3, 0x20, %o4 ! 20 <.*>
+12d4: da 5d c0 0c ldx \[ %l7 \+ %o4 \], %o5
+12d8: e4 29 c0 0d stb %l2, \[ %g7 \+ %o5 \]
+12dc: 01 00 00 00 nop *
+12e0: 01 00 00 00 nop *
+12e4: 01 00 00 00 nop *
+12e8: 01 00 00 00 nop *
+12ec: 17 00 00 00 sethi %hi\(0\), %o3
+12f0: 98 02 e0 68 add %o3, 0x68, %o4 ! 68 <.*>
+12f4: da 5d c0 0c ldx \[ %l7 \+ %o4 \], %o5
+12f8: e4 71 c0 0d stx %l2, \[ %g7 \+ %o5 \]
+12fc: 01 00 00 00 nop *
+1300: 01 00 00 00 nop *
+1304: 01 00 00 00 nop *
+1308: 01 00 00 00 nop *
+130c: 17 00 00 00 sethi %hi\(0\), %o3
+1310: 98 02 e0 70 add %o3, 0x70, %o4 ! 70 <.*>
+1314: da 5d c0 0c ldx \[ %l7 \+ %o4 \], %o5
+1318: e4 21 c0 0d st %l2, \[ %g7 \+ %o5 \]
+131c: 01 00 00 00 nop *
+1320: 01 00 00 00 nop *
+1324: 01 00 00 00 nop *
+1328: 01 00 00 00 nop *
+132c: 81 cf e0 08 rett %i7 \+ 8
+1330: 01 00 00 00 nop *
#pass
/binutils/ld/testsuite/ld-sparc/gotop64.dd
0,0 → 1,34
#source: gotop64.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Disassembly of section .text:
0000000000001000 <foo-0x8>:
+1000: 81 c3 e0 08 retl *
+1004: ae 03 c0 17 add %o7, %l7, %l7
 
0000000000001008 <foo>:
+1008: 9d e3 bf 60 save %sp, -160, %sp
+100c: 2f 00 04 04 sethi %hi\(0x101000\), %l7
+1010: 7f ff ff fc call 1000 <_.*>
+1014: ae 05 e0 d0 add %l7, 0xd0, %l7 ! 1010d0 <.*>
+1018: 01 00 00 00 nop *
+101c: 23 00 00 00 sethi %hi\(0\), %l1
+1020: 01 00 00 00 nop *
+1024: a2 1c 60 08 xor %l1, 8, %l1
+1028: 01 00 00 00 nop *
+102c: f0 5d c0 11 ldx \[ %l7 \+ %l1 \], %i0
+1030: 01 00 00 00 nop *
+1034: 23 00 00 03 sethi %hi\(0xc00\), %l1
+1038: 01 00 00 00 nop *
+103c: a2 1c 63 24 xor %l1, 0x324, %l1
+1040: 01 00 00 00 nop *
+1044: b0 05 c0 11 add %l7, %l1, %i0
+1048: 01 00 00 00 nop *
+104c: 81 c7 e0 08 ret
+1050: 81 e8 00 00 restore
#pass
/binutils/ld/testsuite/ld-sparc/tlsg64.sd
0,0 → 1,10
#source: tlsg.s
#as: --64 -Av9
#ld: -melf64_sparc
#objdump: -sj.debug_foobar
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .debug_foobar:
0+ 0+ 0+18 .*
/binutils/ld/testsuite/ld-sparc/tlslib.s
0,0 → 1,20
.section ".tdata", #alloc, #write, #tls
.align 4
.globl sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8
sG1: .word 513
sG2: .word 514
sG3: .word 515
sG4: .word 516
sG5: .word 517
sG6: .word 518
sG7: .word 519
sG8: .word 520
 
.text
/* Dummy. */
.globl __tls_get_addr
.type __tls_get_addr,#function
.proc 04
__tls_get_addr:
ret
restore
/binutils/ld/testsuite/ld-sparc/vxworks1.dd
0,0 → 1,52
 
.*: file format .*
 
Disassembly of section \.plt:
 
00080800 <_PROCEDURE_LINKAGE_TABLE_>:
80800: 05 00 02 41 sethi %hi\(0x90400\), %g2
80800: R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_\+0x8
80804: 84 10 a0 08 or %g2, 8, %g2 ! 90408 <_GLOBAL_OFFSET_TABLE_\+0x8>
80804: R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_\+0x8
80808: c4 00 80 00 ld \[ %g2 \], %g2
8080c: 81 c0 80 00 jmp %g2
80810: 01 00 00 00 nop
80814: 03 00 02 41 sethi %hi\(0x90400\), %g1
80814: R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_\+0xc
80818: 82 10 60 0c or %g1, 0xc, %g1 ! 9040c <sglobal@plt>
80818: R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_\+0xc
8081c: c2 00 40 00 ld \[ %g1 \], %g1
80820: 81 c0 40 00 jmp %g1
80824: 01 00 00 00 nop
80828: 03 00 00 00 sethi %hi\(0\), %g1
8082c: 10 bf ff f5 b 80800 <_PROCEDURE_LINKAGE_TABLE_>
80830: 82 10 60 00 mov %g1, %g1 ! 0 <_PROCEDURE_LINKAGE_TABLE_-0x80800>
80834: 03 00 02 41 sethi %hi\(0x90400\), %g1
80834: R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_\+0x10
80838: 82 10 60 10 or %g1, 0x10, %g1 ! 90410 <foo@plt>
80838: R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_\+0x10
8083c: c2 00 40 00 ld \[ %g1 \], %g1
80840: 81 c0 40 00 jmp %g1
80844: 01 00 00 00 nop
80848: 03 00 00 00 sethi %hi\(0\), %g1
8084c: 10 bf ff ed b 80800 <_PROCEDURE_LINKAGE_TABLE_>
80850: 82 10 60 01 or %g1, 1, %g1 ! 1 <_PROCEDURE_LINKAGE_TABLE_-0x807ff>
Disassembly of section \.text:
 
00080c00 <_start>:
80c00: 9d e3 bf 98 save %sp, -104, %sp
80c04: 7f ff ff 0c call 80834 <_PROCEDURE_LINKAGE_TABLE_\+0x34>
80c04: R_SPARC_WDISP30 \.plt\+0x34
80c08: 01 00 00 00 nop
80c0c: 40 00 00 06 call 80c24 <sexternal>
80c0c: R_SPARC_WDISP30 sexternal
80c10: 01 00 00 00 nop
80c14: 7f ff ff 00 call 80814 <_PROCEDURE_LINKAGE_TABLE_\+0x14>
80c14: R_SPARC_WDISP30 \.plt\+0x14
80c18: 01 00 00 00 nop
80c1c: 81 c7 e0 08 ret
80c20: 81 e8 00 00 restore
 
00080c24 <sexternal>:
80c24: 81 c3 e0 08 retl
80c28: 01 00 00 00 nop
/binutils/ld/testsuite/ld-sparc/tlssunbin32.sd
0,0 → 1,11
#source: tlssunbin32.s
#as: --32
#ld: -shared -melf32_sparc tmpdir/libtlslib32.so tmpdir/tlssunbinbin32.o
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .got:
23274 000231f4 0+ 0+ 0+ .*
23284 0+ .*
/binutils/ld/testsuite/ld-sparc/tlssunnopic32.sd
0,0 → 1,12
#source: tlssunnopic32.s
#source: tlsnopic.s
#as: --32
#ld: -shared -melf32_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: file format elf32-sparc
 
Contents of section \.got:
12080 0+12000 0+ 0+ 0+ .*
12090 0+ 0+ 0+ .*
/binutils/ld/testsuite/ld-sparc/tlssunbin64.s
0,0 → 1,118
.section ".tbss"
.align 4
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1: .word 0
bg2: .word 0
bg3: .word 0
bg4: .word 0
bg5: .word 0
bg6: .word 0
bg7: .word 0
bg8: .word 0
bl1: .word 0
bl2: .word 0
bl3: .word 0
bl4: .word 0
bl5: .word 0
bl6: .word 0
bl7: .word 0
bl8: .word 0
.text
.globl _start
.type _start,#function
.proc 04
_start:
save %sp, -160, %sp
.hidden _GLOBAL_OFFSET_TABLE_
sethi %hh(_GLOBAL_OFFSET_TABLE_), %l1
sethi %lm(_GLOBAL_OFFSET_TABLE_), %l2
or %l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1
or %l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2
sllx %l1, 32, %l1
add %l1, %l2, %l4
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sG6), %o3
add %o3, %tie_lo10(sG6), %o3
ldx [%l4 + %o3], %o2, %tie_ldx(sG6)
add %g7, %o2, %o4, %tie_add(sG6)
nop;nop;nop;nop
 
/* IE -> LE against global var defined in exec */
sethi %tie_hi22(bg6), %o3
add %o3, %tie_lo10(bg6), %o5
ldx [%l4 + %o5], %o2, %tie_ldx(bg6)
add %g7, %o2, %o4, %tie_add(bg6)
nop;nop;nop;nop
 
/* IE -> LE against local var */
sethi %tie_hi22(bl6), %o3
add %o3, %tie_lo10(bl6), %o5
ldx [%l4 + %o5], %l2, %tie_ldx(bl6)
add %g7, %l2, %l2, %tie_add(bl6)
nop;nop;nop;nop
 
/* direct %g7 access IE -> LE against local var */
sethi %tie_hi22(bl8), %o3
add %o3, %tie_lo10(bl8), %o5
ldx [%l4 + %o5], %l2, %tie_ldx(bl8)
ldsw [%g7 + %l2], %l2, %tie_add(bl8)
nop;nop;nop;nop
 
/* IE -> LE against hidden but not local var */
sethi %tie_hi22(sh6), %o3
add %o3, %tie_lo10(sh6), %o5
ldx [%l4 + %o5], %l2, %tie_ldx(sh6)
add %g7, %l2, %l2, %tie_add(sh6)
nop;nop;nop;nop
 
/* direct %g7 access IE -> LE against hidden but not local var */
sethi %tie_hi22(bl8), %o3
add %o3, %tie_lo10(bl8), %o5
ldx [%l4 + %o5], %l2, %tie_ldx(bl8)
stb %l1, [%g7 + %l2], %tie_add(bl8)
nop;nop;nop;nop
 
/* LE, global var defined in exec */
sethi %tle_hix22(sg2), %l1
nop
xor %l1, %tle_lox10(sg2), %l2
nop
add %g7, %l2, %l3
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl2+2), %o0
xor %o0, %tle_lox10(bl2+2), %o0
add %g7, %o0, %o0
nop;nop;nop;nop
 
/* LE, hidden var defined in exec */
sethi %tle_hix22(sh2+1), %l1
xor %l1, %tle_lox10(sh2+1), %o5
add %g7, %o5, %o1
nop;nop;nop;nop
 
/* Direct %g7 access */
 
/* LE, global var defined in exec */
sethi %tle_hix22(sg3), %l1
xor %l1, %tle_lox10(sg3), %o5
ldx [%g7 + %o5], %o1
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl3 + 3), %o0
xor %o0, %tle_lox10(bl3 + 3), %o0
stb %o1, [%g7 + %o0]
nop;nop;nop;nop
 
/* LE, hidden var defined in exec */
sethi %tle_hix22(sh3 + 3), %o2
xor %o2, %tle_lox10(sh3 + 3), %o4
ldstub [%g7 + %o4], %o5
nop;nop;nop;nop
 
ret
restore
/binutils/ld/testsuite/ld-sparc/tlsnopic.s
0,0 → 1,8
.section ".tbss"
.align 4
.globl sh1, sh2, sh3, sh4
.hidden sh1, sh2, sh3, sh4
sh1: .word 0
sh2: .word 0
sh3: .word 0
sh4: .word 0
/binutils/ld/testsuite/ld-sparc/tlssunnopic64.s
0,0 → 1,81
.data
.align 4096
.section ".tbss"
.align 4
bl1: .word 0
bl2: .word 0
bl3: .word 0
bl4: .word 0
bl5: .word 0
.text
.align 4096
.globl fn3
.type fn3,#function
.proc 04
fn3:
save %sp, -160, %sp
.hidden _GLOBAL_OFFSET_TABLE_
sethi %hh(_GLOBAL_OFFSET_TABLE_), %l1
sethi %lm(_GLOBAL_OFFSET_TABLE_), %l2
or %l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1
or %l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2
sllx %l1, 32, %l1
add %l1, %l2, %l1
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sg1), %o3
add %o3, %tie_lo10(sg1), %o3
ldx [%l1 + %o3], %o2, %tie_ldx(sg1)
add %g7, %o2, %o4, %tie_add(sg1)
nop;nop;nop;nop
 
/* direct %g7 access IE against global var */
sethi %tie_hi22(sg2), %o0
add %o0, %tie_lo10(sg2), %o0
ldx [%l1 + %o0], %o0, %tie_ldx(sg2)
lduw [%g7 + %o0], %o0, %tie_add(sg2)
nop;nop;nop;nop
 
/* IE against hidden var */
sethi %tie_hi22(sh1), %o0
add %o0, %tie_lo10(sh1), %o0
ldx [%l1 + %o0], %o0, %tie_ldx(sh1)
add %g7, %o0, %o0, %tie_add(sh1)
nop;nop;nop;nop
 
/* direct %g7 access IE against hidden var */
sethi %tie_hi22(sh2), %o5
add %o5, %tie_lo10(sh2), %o1
ldx [%l1 + %o1], %o2, %tie_ldx(sh2)
stb %o3, [%g7 + %o2], %tie_add(sh2)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(bl1), %o0
add %o0, %tie_lo10(bl1), %o0
ldx [%l1 + %o0], %o0, %tie_ldx(bl1)
add %g7, %o0, %o0, %tie_add(bl1)
nop;nop;nop;nop
 
/* direct %g7 access IE against local var */
sethi %tie_hi22(bl2), %o5
add %o5, %tie_lo10(bl2), %o1
ldx [%l1 + %o1], %o2, %tie_ldx(bl2)
stb %o3, [%g7 + %o2], %tie_add(bl2)
nop;nop;nop;nop
 
/* LE, local var */
sethi %tle_hix22(bl3+1), %o2
xor %o2, %tle_lox10(bl3+1), %o4
add %g7, %o4, %o0
nop;nop;nop;nop
 
/* LE, hidden var, direct %g7 access */
sethi %tle_hix22(sh3), %o2
xor %o2, %tle_lox10(sh3), %o2
ld [%g7 + %o2], %o2
nop;nop;nop;nop
 
return %i7 + 8
nop
/binutils/ld/testsuite/ld-sparc/tlssunpic32.rd
0,0 → 1,135
#source: tlssunpic32.s
#source: tlspic.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .rela.plt +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .tdata +PROGBITS +0+12000 0+2000 0+60 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .tbss +NOBITS +0+12060 0+2060 0+20 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+12060 0+2060 0+98 08 +WA +3 +0 +4
+\[[ 0-9]+\] .got +PROGBITS +0+120f8 0+20f8 0+4c 04 +WA +0 +0 +4
+\[[ 0-9]+\] .plt +.*
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000
+LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000
+DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4
+TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+24
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+30
[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+
[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+64
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+50
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+70
[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+44
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+10 +sg5 \+ 0
[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_DTPOFF32 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+4 +sg2 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +10 *
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* SECTION +LOCAL +DEFAULT +9 *
.* SECTION +LOCAL +DEFAULT +10 *
.* SECTION +LOCAL +DEFAULT +11 *
.* TLS +LOCAL +DEFAULT +7 sl1
.* TLS +LOCAL +DEFAULT +7 sl2
.* TLS +LOCAL +DEFAULT +7 sl3
.* TLS +LOCAL +DEFAULT +7 sl4
.* TLS +LOCAL +DEFAULT +7 sl5
.* TLS +LOCAL +DEFAULT +7 sl6
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* TLS +LOCAL +DEFAULT +8 sH1
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +7 sh3
.* TLS +LOCAL +DEFAULT +8 sH2
.* TLS +LOCAL +DEFAULT +8 sH7
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh7
.* TLS +LOCAL +DEFAULT +7 sh8
.* TLS +LOCAL +DEFAULT +8 sH4
.* TLS +LOCAL +DEFAULT +7 sh4
.* TLS +LOCAL +DEFAULT +8 sH3
.* TLS +LOCAL +DEFAULT +7 sh5
.* TLS +LOCAL +DEFAULT +8 sH5
.* TLS +LOCAL +DEFAULT +8 sH6
.* TLS +LOCAL +DEFAULT +8 sH8
.* TLS +LOCAL +DEFAULT +7 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh2
.* TLS +LOCAL +DEFAULT +7 sh6
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/binutils/ld/testsuite/ld-sparc/tlspic.s
0,0 → 1,12
.section ".tbss"
.align 4
.globl sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
.hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
sH1: .word 0
sH2: .word 0
sH3: .word 0
sH4: .word 0
sH5: .word 0
sH6: .word 0
sH7: .word 0
sH8: .word 0
/binutils/ld/testsuite/ld-sparc/tlssunpic32.td
0,0 → 1,16
#source: tlssunpic32.s
#source: tlspic.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -sj.tdata
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .tdata:
12000 00000011 00000012 00000013 00000014 .*
12010 00000015 00000016 00000017 00000018 .*
12020 00000041 00000042 00000043 00000044 .*
12030 00000045 00000046 00000047 00000048 .*
12040 00000101 00000102 00000103 00000104 .*
12050 00000105 00000106 00000107 00000108 .*
/binutils/ld/testsuite/ld-sparc/tlssunpic64.s
0,0 → 1,228
.data
.align 4096
.section ".tdata", #alloc, #write, #tls
.align 4
.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: .word 17
sg2: .word 18
sg3: .word 19
sg4: .word 20
sg5: .word 21
sg6: .word 22
sg7: .word 23
sg8: .word 24
sl1: .word 65
sl2: .word 66
sl3: .word 67
sl4: .word 68
sl5: .word 69
sl6: .word 70
sl7: .word 71
sl8: .word 72
sh1: .word 257
sh2: .word 258
sh3: .word 259
sh4: .word 260
sh5: .word 261
sh6: .word 262
sh7: .word 263
sh8: .word 264
 
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl fn1
.type fn1,#function
.proc 04
fn1:
save %sp, -160, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop;nop;nop;nop
 
/* GD */
sethi %tgd_hi22(sg1), %l1
nop
add %l1, %tgd_lo10(sg1), %l2
nop
add %l7, %l2, %o0, %tgd_add(sg1)
nop
call __tls_get_addr, %tgd_call(sg1)
nop
nop;nop;nop;nop
 
/* GD -> IE because variable is referenced through IE too */
sethi %tgd_hi22(sg2), %o0
add %o0, %tgd_lo10(sg2), %o1
add %l7, %o1, %o0, %tgd_add(sg2)
call __tls_get_addr, %tgd_call(sg2)
nop
nop;nop;nop;nop
 
/* GD against local variable */
sethi %tgd_hi22(sl1), %o4
add %o4, %tgd_lo10(sl1), %o4
add %l7, %o4, %o0, %tgd_add(sl1)
call __tls_get_addr, %tgd_call(sl1)
nop
nop;nop;nop;nop
 
/* GD -> IE against local variable referenced through IE too */
sethi %tgd_hi22(sl2), %o0
add %o0, %tgd_lo10(sl2), %o0
add %l7, %o0, %o0, %tgd_add(sl2)
call __tls_get_addr, %tgd_call(sl2)
nop
nop;nop;nop;nop
 
/* GD against hidden and local variable */
sethi %tgd_hi22(sh1), %o4
add %o4, %tgd_lo10(sh1), %o4
add %l7, %o4, %o0, %tgd_add(sh1)
call __tls_get_addr, %tgd_call(sh1)
nop
nop;nop;nop;nop
 
/* GD -> IE against hidden and local variable referenced through
IE too */
sethi %tgd_hi22(sh2), %o0
add %o0, %tgd_lo10(sh2), %o0
add %l7, %o0, %o0, %tgd_add(sh2)
call __tls_get_addr, %tgd_call(sh2)
nop
nop;nop;nop;nop
 
/* GD against hidden but not local variable */
sethi %tgd_hi22(sH1), %o4
add %o4, %tgd_lo10(sH1), %o4
add %l7, %o4, %o0, %tgd_add(sH1)
call __tls_get_addr, %tgd_call(sH1)
nop
nop;nop;nop;nop
 
/* GD -> IE against hidden but not local variable referenced through
IE too */
sethi %tgd_hi22(sH2), %o0
add %o0, %tgd_lo10(sH2), %o0
add %l7, %o0, %o0, %tgd_add(sH2)
call __tls_get_addr, %tgd_call(sH2)
nop
nop;nop;nop;nop
 
/* LD */
sethi %tldm_hi22(sl1), %l1
nop
add %l1, %tldm_lo10(sl1), %l2
nop
add %l7, %l2, %o0, %tldm_add(sl1)
nop
call __tls_get_addr, %tldm_call(sl1)
nop
sethi %tldo_hix22(sl1), %l3
nop
xor %l3, %tldo_lox10(sl1), %l4
nop
add %o0, %l4, %l5, %tldo_add(sl1)
nop
sethi %tldo_hix22(sl2 + 2), %l2
nop
xor %l2, %tldo_lox10(sl2 + 2), %l3
nop
lduh [%o0 + %l3], %l6, %tldo_add(sl2 + 2)
nop;nop;nop;nop
 
/* LD against hidden and local variables */
sethi %tldm_hi22(sh1), %o1
sethi %tldo_hix22(sh1), %l3
add %o1, %tldm_lo10(sh1), %o2
sethi %tldo_hix22(sh2 + 1), %l2
add %l7, %o2, %o0, %tldm_add(sh1)
xor %l3, %tldo_lox10(sh1), %l4
call __tls_get_addr, %tldm_call(sh1)
xor %l2, %tldo_lox10(sh2 + 1), %l3
ldx [%o0 + %l4], %l5, %tldo_add(sh1)
add %o0, %l3, %l6, %tldo_add(sh2 + 1)
nop;nop;nop;nop
 
/* LD against hidden but not local variables */
sethi %tldm_hi22(sH1), %o1
sethi %tldo_hix22(sH1 + 3), %l3
add %o1, %tldm_lo10(sH1), %o2
sethi %tldo_hix22(sH2), %l2
add %l7, %o2, %o0, %tldm_add(sH1)
xor %l3, %tldo_lox10(sH1 + 3), %l4
call __tls_get_addr, %tldm_call(sH1)
xor %l2, %tldo_lox10(sH2), %l3
add %o0, %l4, %l5, %tldo_add(sH1 + 3)
ld [%o0 + %l3], %l6, %tldo_add(sH2)
nop;nop;nop;nop
 
/* IE against global var */
sethi %tie_hi22(sg2), %l1
nop
add %l1, %tie_lo10(sg2), %l2
nop
ldx [%l7 + %l2], %l2, %tie_ldx(sg2)
nop
add %g7, %l2, %l2, %tie_add(sg2)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(sl2), %o3
add %o3, %tie_lo10(sl2), %o3
ldx [%l7 + %o3], %o2, %tie_ldx(sl2)
add %g7, %o2, %o4, %tie_add(sl2)
nop;nop;nop;nop
 
/* IE against hidden and local var */
sethi %tie_hi22(sh2), %l1
add %l1, %tie_lo10(sh2), %l2
ldx [%l7 + %l2], %l2, %tie_ldx(sh2)
add %g7, %l2, %l2, %tie_add(sh2)
nop;nop;nop;nop
 
/* IE against hidden but not local var */
sethi %tie_hi22(sH2), %l1
add %l1, %tie_lo10(sH2), %l2
ldx [%l7 + %l2], %l2, %tie_ldx(sH2)
add %g7, %l2, %l2, %tie_add(sH2)
nop;nop;nop;nop
 
/* Direct access through %g7 */
 
/* IE against global var */
sethi %tie_hi22(sg5), %l1
add %l1, %tie_lo10(sg5), %l2
ldx [%l7 + %l2], %l2, %tie_ldx(sg5)
ldx [%g7 + %l2], %l2, %tie_add(sg5)
nop;nop;nop;nop
 
/* IE against local var */
sethi %tie_hi22(sl5), %o3
add %o3, %tie_lo10(sl5), %o4
ldx [%l7 + %o4], %o5, %tie_ldx(sl5)
stb %l2, [%g7 + %o5], %tie_add(sl5)
nop;nop;nop;nop
 
/* IE against hidden and local var */
sethi %tie_hi22(sh5), %o3
add %o3, %tie_lo10(sh5), %o4
ldx [%l7 + %o4], %o5, %tie_ldx(sh5)
stx %l2, [%g7 + %o5], %tie_add(sh5)
nop;nop;nop;nop
 
/* IE against hidden but not local var */
sethi %tie_hi22(sH5), %o3
add %o3, %tie_lo10(sH5), %o4
ldx [%l7 + %o4], %o5, %tie_ldx(sH5)
st %l2, [%g7 + %o5], %tie_add(sH5)
nop;nop;nop;nop
 
return %i7 + 8
nop
/binutils/ld/testsuite/ld-sparc/vxworks2-static.sd
0,0 → 1,9
#...
Elf file type is EXEC \(Executable file\)
Entry point 0x80000
#...
Program Headers:
Type .*
LOAD .* 0x00080000 0x00080000 .* R E 0x10000
 
#...
/binutils/ld/testsuite/ld-sparc/tlssunbin64.sd
0,0 → 1,12
#source: tlssunbin64.s
#as: --64
#ld: -shared -melf64_sparc tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o
#objdump: -sj.got
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .got:
202308 0+ 0+202208 0+ 0+ .*
202318 0+ 0+ 0+ 0+ .*
202328 0+ 0+ +.*
/binutils/ld/testsuite/ld-sparc/tlssunnopic64.sd
0,0 → 1,14
#source: tlssunnopic64.s
#source: tlsnopic.s
#as: --64 -Av9
#ld: -shared -melf64_sparc
#objdump: -sj.got
#target: sparc*-*-*
 
.*: file format elf64-sparc
 
Contents of section \.got:
102100 0+ 0+102000 0+ 0+ .*
102110 0+ 0+ 0+ 0+ .*
102120 0+ 0+ 0+ 0+ .*
102130 0+ 0+ .*
/binutils/ld/testsuite/ld-sparc/gotop32.rd
0,0 → 1,71
#source: gotop32.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+12000 0+2000 0+70 08 +WA +3 +0 +4
+\[[ 0-9]+\] .got +PROGBITS +0+12070 0+2070 0+8 04 +WA +0 +0 +4
+\[[ 0-9]+\] .data +PROGBITS +0+13000 0+3000 0+1000 00 +WA +0 +0 4096
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000
+LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000
+DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_GLOB_DAT +0+13000 +sym \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +7 *
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* FUNC +GLOBAL +DEFAULT +5 foo
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* NOTYPE +GLOBAL +DEFAULT +8 sym
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* NOTYPE +LOCAL +DEFAULT +8 local_sym
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* FUNC +GLOBAL +DEFAULT +5 foo
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* NOTYPE +GLOBAL +DEFAULT +8 sym
 
/binutils/ld/testsuite/ld-sparc/tlssunpic64.rd
0,0 → 1,135
#source: tlssunpic64.s
#source: tlspic.s
#as: --64 -Av9 -K PIC
#ld: -shared -melf64_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .rela.plt +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .tdata +PROGBITS +0+102000 0+2000 0+60 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .tbss +NOBITS +0+102060 0+2060 0+20 0+ WAT +0 +0 +4
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+102060 0+2060 0+130 10 +WA +3 +0 +8
+\[[ 0-9]+\] .got +PROGBITS +0+102190 0+2190 0+98 08 +WA +0 +0 +8
+\[[ 0-9]+\] .plt +.*
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000
+LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000
+DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8
+TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+24
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+30
[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+
[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+64
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+50
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+70
[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+44
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+10 +sg5 \+ 0
[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_DTPOFF64 +0+ +sg1 \+ 0
[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+4 +sg2 \+ 0
 
Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +10 *
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* SECTION +LOCAL +DEFAULT +9 *
.* SECTION +LOCAL +DEFAULT +10 *
.* SECTION +LOCAL +DEFAULT +11 *
.* TLS +LOCAL +DEFAULT +7 sl1
.* TLS +LOCAL +DEFAULT +7 sl2
.* TLS +LOCAL +DEFAULT +7 sl3
.* TLS +LOCAL +DEFAULT +7 sl4
.* TLS +LOCAL +DEFAULT +7 sl5
.* TLS +LOCAL +DEFAULT +7 sl6
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* TLS +LOCAL +DEFAULT +8 sH1
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +7 sh3
.* TLS +LOCAL +DEFAULT +8 sH2
.* TLS +LOCAL +DEFAULT +8 sH7
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh7
.* TLS +LOCAL +DEFAULT +7 sh8
.* TLS +LOCAL +DEFAULT +8 sH4
.* TLS +LOCAL +DEFAULT +7 sh4
.* TLS +LOCAL +DEFAULT +8 sH3
.* TLS +LOCAL +DEFAULT +7 sh5
.* TLS +LOCAL +DEFAULT +8 sH5
.* TLS +LOCAL +DEFAULT +8 sH6
.* TLS +LOCAL +DEFAULT +8 sH8
.* TLS +LOCAL +DEFAULT +7 sh1
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh2
.* TLS +LOCAL +DEFAULT +7 sh6
.* TLS +GLOBAL +DEFAULT +7 sg8
.* TLS +GLOBAL +DEFAULT +7 sg3
.* TLS +GLOBAL +DEFAULT +7 sg4
.* TLS +GLOBAL +DEFAULT +7 sg5
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
.* TLS +GLOBAL +DEFAULT +7 sg1
.* FUNC +GLOBAL +DEFAULT +6 fn1
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* TLS +GLOBAL +DEFAULT +7 sg2
.* TLS +GLOBAL +DEFAULT +7 sg6
.* TLS +GLOBAL +DEFAULT +7 sg7
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
/binutils/ld/testsuite/ld-sparc/vxworks1.ld
0,0 → 1,30
SECTIONS
{
. = 0x80000;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
 
. = ALIGN (0x400);
.rela.dyn : { *(.rela.dyn) }
.rela.plt : { *(.rela.plt) }
 
. = ALIGN (0x400);
.plt : { *(.plt) }
 
. = ALIGN (0x400);
.text : { *(.text) }
 
. = ALIGN (0x10000);
.dynamic : { *(.dynamic) }
 
. = ALIGN (0x400);
.got : { *(.got.plt) *(.got) }
 
. = ALIGN (0x400);
.data : { *(.data) }
 
. = ALIGN (0x400);
.bss : { *(.bss) }
}
/binutils/ld/testsuite/ld-sparc/gotop32.td
0,0 → 1,12
#source: gotop32.s
#as: --32 -K PIC
#ld: -shared -melf32_sparc
#objdump: -sj.data
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Contents of section .data:
13000 12345678 deadbeef 00000000 00000000 .*
13010 00000000 00000000 00000000 00000000 .*
#pass
/binutils/ld/testsuite/ld-sparc/gotop64.s
0,0 → 1,37
.data
.align 4096
.globl sym
sym: .word 0x12345678
 
local_sym:
.word 0xdeadbeef
 
.text
.align 4096
.LLGETPC0:
retl
add %o7, %l7, %l7
 
.globl foo
.type foo,#function
.proc 04
foo:
save %sp, -160, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
nop
sethi %gdop_hix22(sym), %l1
nop
xor %l1, %gdop_lox10(sym), %l1
nop
ldx [%l7 + %l1], %i0, %gdop(sym)
nop
sethi %gdop_hix22(local_sym), %l1
nop
xor %l1, %gdop_lox10(local_sym), %l1
nop
ldx [%l7 + %l1], %i0, %gdop(local_sym)
nop
ret
restore
/binutils/ld/testsuite/ld-sparc/tlssunpic64.td
0,0 → 1,16
#source: tlssunpic64.s
#source: tlspic.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#objdump: -sj.tdata
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .tdata:
102000 00000011 00000012 00000013 00000014 .*
102010 00000015 00000016 00000017 00000018 .*
102020 00000041 00000042 00000043 00000044 .*
102030 00000045 00000046 00000047 00000048 .*
102040 00000101 00000102 00000103 00000104 .*
102050 00000105 00000106 00000107 00000108 .*
/binutils/ld/testsuite/ld-sparc/vxworks1.s
0,0 → 1,25
.text
.globl _start
.type _start, %function
_start:
save %sp, -104, %sp
 
call foo, 0
nop
 
call sexternal, 0
nop
 
call sglobal, 0
nop
 
ret
restore
.size _start, .-_start
 
.globl sexternal
.type sexternal, %function
sexternal:
retl
nop
.size sexternal, .-sexternal
/binutils/ld/testsuite/ld-sparc/gotop64.rd
0,0 → 1,71
#source: gotop64.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#readelf: -WSsrl
#target: sparc*-*-*
 
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
 
Section Headers:
+\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+\[[ 0-9]+\] .hash +.*
+\[[ 0-9]+\] .dynsym +.*
+\[[ 0-9]+\] .dynstr +.*
+\[[ 0-9]+\] .rela.dyn +.*
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096
+\[[ 0-9]+\] .dynamic +DYNAMIC +0+102000 0+2000 0+e0 10 +WA +3 +0 +8
+\[[ 0-9]+\] .got +PROGBITS +0+1020e0 0+20e0 0+10 08 +WA +0 +0 +8
+\[[ 0-9]+\] .data +PROGBITS +0+103000 0+3000 0+1000 00 +WA +0 +0 4096
+\[[ 0-9]+\] .shstrtab +.*
+\[[ 0-9]+\] .symtab +.*
+\[[ 0-9]+\] .strtab +.*
#...
 
Elf file type is DYN \(Shared object file\)
Entry point 0x1000
There are [0-9]+ program headers, starting at offset [0-9]+
 
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000
+LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000
+DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8
#...
 
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
[0-9a-f ]+R_SPARC_GLOB_DAT +0+103000 +sym \+ 0
 
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +7 *
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* FUNC +GLOBAL +DEFAULT +5 foo
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* NOTYPE +GLOBAL +DEFAULT +8 sym
 
Symbol table '\.symtab' contains [0-9]+ entries:
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
.* NOTYPE +LOCAL +DEFAULT +UND *
.* SECTION +LOCAL +DEFAULT +1 *
.* SECTION +LOCAL +DEFAULT +2 *
.* SECTION +LOCAL +DEFAULT +3 *
.* SECTION +LOCAL +DEFAULT +4 *
.* SECTION +LOCAL +DEFAULT +5 *
.* SECTION +LOCAL +DEFAULT +6 *
.* SECTION +LOCAL +DEFAULT +7 *
.* SECTION +LOCAL +DEFAULT +8 *
.* NOTYPE +LOCAL +DEFAULT +8 local_sym
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* NOTYPE +GLOBAL +DEFAULT +ABS __bss_start
.* FUNC +GLOBAL +DEFAULT +5 foo
.* NOTYPE +GLOBAL +DEFAULT +ABS _edata
.* NOTYPE +GLOBAL +DEFAULT +ABS _end
.* NOTYPE +GLOBAL +DEFAULT +8 sym
 
/binutils/ld/testsuite/ld-sparc/vxworks2.s
0,0 → 1,6
.globl _start
.type _start, %function
_start:
retl
nop
.end _start
/binutils/ld/testsuite/ld-sparc/gotop64.td
0,0 → 1,12
#source: gotop64.s
#as: --64 -K PIC
#ld: -shared -melf64_sparc
#objdump: -sj.data
#target: sparc*-*-*
 
.*: +file format elf64-sparc
 
Contents of section .data:
103000 12345678 deadbeef 00000000 00000000 .*
103010 00000000 00000000 00000000 00000000 .*
#pass
/binutils/ld/testsuite/ld-sparc/vxworks1.rd
0,0 → 1,22
 
Relocation section '\.rela\.plt' at offset .* contains 2 entries:
Offset Info Type Sym\.Value Sym\. Name \+ Addend
0009040c .*15 R_SPARC_JMP_SLOT 00080814 sglobal \+ 0
00090410 .*15 R_SPARC_JMP_SLOT 00080834 foo \+ 0
 
Relocation section '\.rela\.text' at offset .* contains 3 entries:
Offset Info Type Sym\.Value Sym\. Name \+ Addend
00080c04 .*07 R_SPARC_WDISP30 00080800 \.plt \+ 34
00080c0c .*07 R_SPARC_WDISP30 00080c24 sexternal \+ 0
00080c14 .*07 R_SPARC_WDISP30 00080800 \.plt \+ 14
 
Relocation section '\.rela\.plt\.unloaded' at offset .* contains 8 entries:
Offset Info Type Sym\.Value Sym\. Name \+ Addend
00080800 .*09 R_SPARC_HI22 00090400 _GLOBAL_OFFSET_TABLE_ \+ 8
00080804 .*0c R_SPARC_LO10 00090400 _GLOBAL_OFFSET_TABLE_ \+ 8
00080814 .*09 R_SPARC_HI22 00090400 _GLOBAL_OFFSET_TABLE_ \+ c
00080818 .*0c R_SPARC_LO10 00090400 _GLOBAL_OFFSET_TABLE_ \+ c
0009040c .*03 R_SPARC_32 00080800 _PROCEDURE_LINKAGE_TAB.* \+ 28
00080834 .*09 R_SPARC_HI22 00090400 _GLOBAL_OFFSET_TABLE_ \+ 10
00080838 .*0c R_SPARC_LO10 00090400 _GLOBAL_OFFSET_TABLE_ \+ 10
00090410 .*03 R_SPARC_32 00080800 _PROCEDURE_LINKAGE_TAB.* \+ 48
/binutils/ld/testsuite/ld-sparc/vxworks2.sd
0,0 → 1,13
#...
Elf file type is EXEC \(Executable file\)
Entry point 0x80400
#...
Program Headers:
Type .*
PHDR .*
#...
LOAD .* 0x00080000 0x00080000 .* R E 0x10000
LOAD .* 0x00090000 0x00090000 .* RW 0x10000
DYNAMIC .*
 
#...
/binutils/ld/testsuite/ld-sparc/tlssunnopic32.dd
0,0 → 1,84
#source: tlssunnopic32.s
#source: tlsnopic.s
#as: --32
#ld: -shared -melf32_sparc
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Disassembly of section .text:
 
00001000 <fn3>:
+1000: 9d e3 bf 98 save %sp, -104, %sp
+1004: 23 00 00 00 sethi %hi\(0\), %l1
+1008: a2 14 60 00 mov %l1, %l1 ! 0 <.*>
+100c: 01 00 00 00 nop *
+1010: 01 00 00 00 nop *
+1014: 01 00 00 00 nop *
+1018: 01 00 00 00 nop *
+101c: 17 00 00 00 sethi %hi\(0\), %o3
+1020: 96 02 e0 0c add %o3, 0xc, %o3 ! c <.*>
+1024: d4 04 40 0b ld \[ %l1 \+ %o3 \], %o2
+1028: 98 01 c0 0a add %g7, %o2, %o4
+102c: 01 00 00 00 nop *
+1030: 01 00 00 00 nop *
+1034: 01 00 00 00 nop *
+1038: 01 00 00 00 nop *
+103c: 11 00 00 00 sethi %hi\(0\), %o0
+1040: 90 02 20 10 add %o0, 0x10, %o0 ! 10 <.*>
+1044: d0 04 40 08 ld \[ %l1 \+ %o0 \], %o0
+1048: d0 01 c0 08 ld \[ %g7 \+ %o0 \], %o0
+104c: 01 00 00 00 nop *
+1050: 01 00 00 00 nop *
+1054: 01 00 00 00 nop *
+1058: 01 00 00 00 nop *
+105c: 11 00 00 00 sethi %hi\(0\), %o0
+1060: 90 02 20 14 add %o0, 0x14, %o0 ! 14 <.*>
+1064: d0 04 40 08 ld \[ %l1 \+ %o0 \], %o0
+1068: 90 01 c0 08 add %g7, %o0, %o0
+106c: 01 00 00 00 nop *
+1070: 01 00 00 00 nop *
+1074: 01 00 00 00 nop *
+1078: 01 00 00 00 nop *
+107c: 1b 00 00 00 sethi %hi\(0\), %o5
+1080: 92 03 60 18 add %o5, 0x18, %o1 ! 18 <.*>
+1084: d4 04 40 09 ld \[ %l1 \+ %o1 \], %o2
+1088: d6 29 c0 0a stb %o3, \[ %g7 \+ %o2 \]
+108c: 01 00 00 00 nop *
+1090: 01 00 00 00 nop *
+1094: 01 00 00 00 nop *
+1098: 01 00 00 00 nop *
+109c: 11 00 00 00 sethi %hi\(0\), %o0
+10a0: 90 02 20 04 add %o0, 4, %o0 ! 4 <.*>
+10a4: d0 04 40 08 ld \[ %l1 \+ %o0 \], %o0
+10a8: 90 01 c0 08 add %g7, %o0, %o0
+10ac: 01 00 00 00 nop *
+10b0: 01 00 00 00 nop *
+10b4: 01 00 00 00 nop *
+10b8: 01 00 00 00 nop *
+10bc: 1b 00 00 00 sethi %hi\(0\), %o5
+10c0: 92 03 60 08 add %o5, 8, %o1 ! 8 <.*>
+10c4: d4 04 40 09 ld \[ %l1 \+ %o1 \], %o2
+10c8: d6 29 c0 0a stb %o3, \[ %g7 \+ %o2 \]
+10cc: 01 00 00 00 nop *
+10d0: 01 00 00 00 nop *
+10d4: 01 00 00 00 nop *
+10d8: 01 00 00 00 nop *
+10dc: 15 00 00 00 sethi %hi\(0\), %o2
+10e0: 98 1a a0 00 xor %o2, 0, %o4
+10e4: 90 01 c0 0c add %g7, %o4, %o0
+10e8: 01 00 00 00 nop *
+10ec: 01 00 00 00 nop *
+10f0: 01 00 00 00 nop *
+10f4: 01 00 00 00 nop *
+10f8: 15 00 00 00 sethi %hi\(0\), %o2
+10fc: 94 1a a0 00 xor %o2, 0, %o2
+1100: d4 01 c0 0a ld \[ %g7 \+ %o2 \], %o2
+1104: 01 00 00 00 nop *
+1108: 01 00 00 00 nop *
+110c: 01 00 00 00 nop *
+1110: 01 00 00 00 nop *
+1114: 81 c7 e0 08 ret *
+1118: 81 e8 00 00 restore *
#pass
/binutils/ld/testsuite/ld-sparc/tlssunbin32.dd
0,0 → 1,273
#source: tlssunbin32.s
#as: --32
#ld: -shared -melf32_sparc tmpdir/libtlslib32.so tmpdir/tlssunbinpic32.o
#objdump: -drj.text
#target: sparc*-*-*
 
.*: +file format elf32-sparc
 
Disassembly of section .text:
 
0+11000 <fn2-0x8>:
+11000: 81 c3 e0 08 retl *
+11004: ae 03 c0 17 add %o7, %l7, %l7
 
0+11008 <fn2>:
+11008: 9d e3 bf 98 save %sp, -104, %sp
+1100c: 2f 00 00 48 sethi %hi\(0x12000\), %l7
+11010: 7f ff ff fc call 11000 <.*>
+11014: ae 05 e2 64 add %l7, 0x264, %l7 ! 12264 <.*>
+11018: 01 00 00 00 nop *
+1101c: 01 00 00 00 nop *
+11020: 01 00 00 00 nop *
+11024: 01 00 00 00 nop *
+11028: 23 00 00 00 sethi %hi\(0\), %l1
+1102c: 01 00 00 00 nop *
+11030: a4 04 60 10 add %l1, 0x10, %l2
+11034: 01 00 00 00 nop *
+11038: d0 05 c0 12 ld \[ %l7 \+ %l2 \], %o0
+1103c: 01 00 00 00 nop *
+11040: 90 01 c0 08 add %g7, %o0, %o0
+11044: 01 00 00 00 nop *
+11048: 01 00 00 00 nop *
+1104c: 01 00 00 00 nop *
+11050: 01 00 00 00 nop *
+11054: 01 00 00 00 nop *
+11058: 11 00 00 00 sethi %hi\(0\), %o0
+1105c: 92 02 20 08 add %o0, 8, %o1 ! 8 <.*>
+11060: d0 05 c0 09 ld \[ %l7 \+ %o1 \], %o0
+11064: 90 01 c0 08 add %g7, %o0, %o0
+11068: 01 00 00 00 nop *
+1106c: 01 00 00 00 nop *
+11070: 01 00 00 00 nop *
+11074: 01 00 00 00 nop *
+11078: 01 00 00 00 nop *
+1107c: 21 00 00 04 sethi %hi\(0x1000\), %l0
+11080: aa 1c 3f 60 xor %l0, -160, %l5
+11084: 90 01 c0 15 add %g7, %l5, %o0
+11088: 01 00 00 00 nop *
+1108c: 01 00 00 00 nop *
+11090: 01 00 00 00 nop *
+11094: 01 00 00 00 nop *
+11098: 01 00 00 00 nop *
+1109c: 01 00 00 00 nop *
+110a0: 11 00 00 00 sethi %hi\(0\), %o0
+110a4: 92 1a 3f 80 xor %o0, -128, %o1
+110a8: 90 01 c0 09 add %g7, %o1, %o0
+110ac: 01 00 00 00 nop *
+110b0: 01 00 00 00 nop *
+110b4: 01 00 00 00 nop *
+110b8: 01 00 00 00 nop *
+110bc: 01 00 00 00 nop *
+110c0: 01 00 00 00 nop *
+110c4: 11 00 00 00 sethi %hi\(0\), %o0
+110c8: 92 1a 3f a0 xor %o0, -96, %o1
+110cc: 90 01 c0 09 add %g7, %o1, %o0
+110d0: 01 00 00 00 nop *
+110d4: 01 00 00 00 nop *
+110d8: 01 00 00 00 nop *
+110dc: 01 00 00 00 nop *
+110e0: 01 00 00 00 nop *
+110e4: 01 00 00 00 nop *
+110e8: 01 00 00 00 nop *
+110ec: 01 00 00 00 nop *
+110f0: 01 00 00 00 nop *
+110f4: 01 00 00 00 nop *
+110f8: 01 00 00 00 nop *
+110fc: 01 00 00 00 nop *
+11100: 90 10 00 00 mov %g0, %o0
+11104: 01 00 00 00 nop *
+11108: 27 00 00 00 sethi %hi\(0\), %l3
+1110c: 01 00 00 00 nop *
+11110: a8 1c ff 80 xor %l3, -128, %l4
+11114: 01 00 00 00 nop *
+11118: aa 01 c0 14 add %g7, %l4, %l5
+1111c: 01 00 00 00 nop *
+11120: 25 00 00 00 sethi %hi\(0\), %l2
+11124: 01 00 00 00 nop *
+11128: a6 1c bf 86 xor %l2, -122, %l3
+1112c: 01 00 00 00 nop *
+11130: ec 11 c0 13 lduh \[ %g7 \+ %l3 \], %l6
+11134: 01 00 00 00 nop *
+11138: 01 00 00 00 nop *
+1113c: 01 00 00 00 nop *
+11140: 01 00 00 00 nop *
+11144: 01 00 00 00 nop *
+11148: 27 00 00 00 sethi %hi\(0\), %l3
+1114c: 01 00 00 00 nop *
+11150: 25 00 00 00 sethi %hi\(0\), %l2
+11154: 01 00 00 00 nop *
+11158: a8 1c ff a0 xor %l3, -96, %l4
+1115c: 90 10 00 00 mov %g0, %o0
+11160: a6 1c bf a5 xor %l2, -91, %l3
+11164: aa 01 c0 14 add %g7, %l4, %l5
+11168: ec 09 c0 13 ldub \[ %g7 \+ %l3 \], %l6
+1116c: 01 00 00 00 nop *
+11170: 01 00 00 00 nop *
+11174: 01 00 00 00 nop *
+11178: 01 00 00 00 nop *
+1117c: 23 00 00 00 sethi %hi\(0\), %l1
+11180: 01 00 00 00 nop *
+11184: a4 04 60 08 add %l1, 8, %l2
+11188: 01 00 00 00 nop *
+1118c: e4 05 c0 12 ld \[ %l7 \+ %l2 \], %l2
+11190: 01 00 00 00 nop *
+11194: a4 01 c0 12 add %g7, %l2, %l2
+11198: 01 00 00 00 nop *
+1119c: 01 00 00 00 nop *
+111a0: 01 00 00 00 nop *
+111a4: 01 00 00 00 nop *
+111a8: 17 00 00 04 sethi %hi\(0x1000\), %o3
+111ac: 96 1a ff 60 xor %o3, -160, %o3
+111b0: 01 00 00 00 nop *
+111b4: 98 01 c0 0b add %g7, %o3, %o4
+111b8: 01 00 00 00 nop *
+111bc: 01 00 00 00 nop *
+111c0: 01 00 00 00 nop *
+111c4: 01 00 00 00 nop *
+111c8: 29 00 00 00 sethi %hi\(0\), %l4
+111cc: a2 1d 3f 80 xor %l4, -128, %l1
+111d0: a6 10 00 11 mov %l1, %l3
+111d4: a6 01 c0 13 add %g7, %l3, %l3
+111d8: 01 00 00 00 nop *
+111dc: 01 00 00 00 nop *
+111e0: 01 00 00 00 nop *
+111e4: 01 00 00 00 nop *
+111e8: 13 00 00 00 sethi %hi\(0\), %o1
+111ec: 96 1a 7f a0 xor %o1, -96, %o3
+111f0: 90 10 00 0b mov %o3, %o0
+111f4: 96 01 c0 08 add %g7, %o0, %o3
+111f8: 01 00 00 00 nop *
+111fc: 01 00 00 00 nop *
+11200: 01 00 00 00 nop *
+11204: 01 00 00 00 nop *
+11208: 17 00 00 00 sethi %hi\(0\), %o3
+1120c: 96 02 e0 04 add %o3, 4, %o3 ! 4 <.*>
+11210: d4 05 c0 0b ld \[ %l7 \+ %o3 \], %o2
+11214: d8 01 c0 0a ld \[ %g7 \+ %o2 \], %o4
+11218: 01 00 00 00 nop *
+1121c: 01 00 00 00 nop *
+11220: 01 00 00 00 nop *
+11224: 01 00 00 00 nop *
+11228: 17 00 00 00 sethi %hi\(0\), %o3
+1122c: 96 1a ff 90 xor %o3, -112, %o3
+11230: 94 10 00 0b mov %o3, %o2
+11234: d8 29 c0 0a stb %o4, \[ %g7 \+ %o2 \]
+11238: 01 00 00 00 nop *
+1123c: 01 00 00 00 nop *
+11240: 01 00 00 00 nop *
+11244: 01 00 00 00 nop *
+11248: 1b 00 00 00 sethi %hi\(0\), %o5
+1124c: 96 1b 7f b0 xor %o5, -80, %o3
+11250: 94 10 00 0b mov %o3, %o2
+11254: d8 49 c0 0a ldsb \[ %g7 \+ %o2 \], %o4
+11258: 01 00 00 00 nop *
+1125c: 01 00 00 00 nop *
+11260: 01 00 00 00 nop *
+11264: 01 00 00 00 nop *
+11268: 81 c7 e0 08 ret *
+1126c: 81 e8 00 00 restore *
#...
 
00012000 <_start>:
+12000: 9d e3 bf 98 save %sp, -104, %sp
+12004: 29 00 00 8c sethi %hi\(0x23000\), %l4
+12008: a8 15 22 74 or %l4, 0x274, %l4 ! 23274 <.*>
+1200c: 01 00 00 00 nop *
+12010: 01 00 00 00 nop *
+12014: 01 00 00 00 nop *
+12018: 01 00 00 00 nop *
+1201c: 17 00 00 00 sethi %hi\(0\), %o3
+12020: 96 02 e0 0c add %o3, 0xc, %o3 ! c <.*>
+12024: d4 05 00 0b ld \[ %l4 \+ %o3 \], %o2
+12028: 98 01 c0 0a add %g7, %o2, %o4
+1202c: 01 00 00 00 nop *
+12030: 01 00 00 00 nop *
+12034: 01 00 00 00 nop *
+12038: 01 00 00 00 nop *
+1203c: 17 00 00 00 sethi %hi\(0\), %o3
+12040: 9a 1a ff d4 xor %o3, -44, %o5
+12044: 94 10 00 0d mov %o5, %o2
+12048: 98 01 c0 0a add %g7, %o2, %o4
+1204c: 01 00 00 00 nop *
+12050: 01 00 00 00 nop *
+12054: 01 00 00 00 nop *
+12058: 01 00 00 00 nop *
+1205c: 17 00 00 00 sethi %hi\(0\), %o3
+12060: 9a 1a ff f4 xor %o3, -12, %o5
+12064: a4 10 00 0d mov %o5, %l2
+12068: a4 01 c0 12 add %g7, %l2, %l2
+1206c: 01 00 00 00 nop *
+12070: 01 00 00 00 nop *
+12074: 01 00 00 00 nop *
+12078: 01 00 00 00 nop *
+1207c: 17 00 00 00 sethi %hi\(0\), %o3
+12080: 9a 1a ff fc xor %o3, -4, %o5
+12084: a4 10 00 0d mov %o5, %l2
+12088: e4 01 c0 12 ld \[ %g7 \+ %l2 \], %l2
+1208c: 01 00 00 00 nop *
+12090: 01 00 00 00 nop *
+12094: 01 00 00 00 nop *
+12098: 01 00 00 00 nop *
+1209c: 17 00 00 00 sethi %hi\(0\), %o3
+120a0: 9a 1a ff b4 xor %o3, -76, %o5
+120a4: a4 10 00 0d mov %o5, %l2
+120a8: a4 01 c0 12 add %g7, %l2, %l2
+120ac: 01 00 00 00 nop *
+120b0: 01 00 00 00 nop *
+120b4: 01 00 00 00 nop *
+120b8: 01 00 00 00 nop *
+120bc: 17 00 00 00 sethi %hi\(0\), %o3
+120c0: 9a 1a ff fc xor %o3, -4, %o5
+120c4: a4 10 00 0d mov %o5, %l2
+120c8: e2 29 c0 12 stb %l1, \[ %g7 \+ %l2 \]
+120cc: 01 00 00 00 nop *
+120d0: 01 00 00 00 nop *
+120d4: 01 00 00 00 nop *
+120d8: 01 00 00 00 nop *
+120dc: 23 00 00 00 sethi %hi\(0\), %l1
+120e0: 01 00 00 00 nop *
+120e4: a4 1c 7f 64 xor %l1, -156, %l2
+120e8: 01 00 00 00 nop *
+120ec: a6 01 c0 12 add %g7, %l2, %l3
+120f0: 01 00 00 00 nop *
+120f4: 01 00 00 00 nop *
+120f8: 01 00 00 00 nop *
+120fc: 01 00 00 00 nop *
+12100: 11 00 00 00 sethi %hi\(0\), %o0
+12104: 90 1a 3f e6 xor %o0, -26, %o0
+12108: 90 01 c0 08 add %g7, %o0, %o0
+1210c: 01 00 00 00 nop *
+12110: 01 00 00 00 nop *
+12114: 01 00 00 00 nop *
+12118: 01 00 00 00 nop *
+1211c: 23 00 00 00 sethi %hi\(0\), %l1
+12120: 9a 1c 7f a5 xor %l1, -91, %o5
+12124: 92 01 c0 0d add %g7, %o5, %o1
+12128: 01 00 00 00 nop *
+1212c: 01 00 00 00 nop *
+12130: 01 00 00 00 nop *
+12134: 01 00 00 00 nop *
+12138: 23 00 00 00 sethi %hi\(0\), %l1
+1213c: 9a 1c 7f 68 xor %l1, -152, %o5
+12140: d2 01 c0 0d ld \[ %g7 \+ %o5 \], %o1
+12144: 01 00 00 00 nop *
+12148: 01 00 00 00 nop *
+1214c: 01 00 00 00 nop *
+12150: 01 00 00 00 nop *
+12154: 11 00 00 00 sethi %hi\(0\), %o0
+12158: 90 1a 3f eb xor %o0, -21, %o0
+1215c: d2 29 c0 08 stb %o1, \[ %g7 \+ %o0 \]
+12160: 01 00 00 00 nop *
+12164: 01 00 00 00 nop *
+12168: 01 00 00 00 nop *
+1216c: 01 00 00 00 nop *
+12170: 15 00 00 00 sethi %hi\(0\), %o2
+12174: 98 1a bf ab xor %o2, -85, %o4
+12178: da 69 c0 0c ldstub \[ %g7 \+ %o4 \], %o5
+1217c: 01 00 00 00 nop *
+12180: 01 00 00 00 nop *
+12184: 01 00 00 00 nop *
+12188: 01 00 00 00 nop *
+1218c: 81 c7 e0 08 ret *
+12190: 81 e8 00 00 restore *

powered by: WebSVN 2.1.0

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