1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
|
.section ".tdata", "awT", @progbits
.globl sg1, sg2
.globl sh1, sh2
.hidden sh1, sh2
sg1: .long 17
sg2: .long 18
sl1: .long 65
sl2: .long 66
sh1: .long 257
sh2: .long 258
.text
.align 1
.globl fn1
.type fn1,@function
fn1:
mov.l r12,@-r15
mov.l r14,@-r15
sts.l pr,@-r15
mova .L3,r0
mov.l .L3,r12
add r0,r12
mov r15,r14
nop;nop;nop;nop
! GD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE because variable is referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sg2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against local variable referenced through @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden and local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden and local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sh2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD against hidden but not local variable
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! GD -> IE against hidden but not local variable referenced through
! @GOTTPOFF too
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH2@TLSGD
2: .long __tls_get_addr@PLT
3:
nop;nop;nop;nop
! LD
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L4,r1
add r0,r1
nop;nop
mov.l .L5,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden and local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sl1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L6,r1
add r0,r1
nop;nop
mov.l .L7,r2
add r0,r2
nop;nop;nop;nop
! LD against hidden but not local variables
mov.l 1f,r4
mova 2f,r0
mov.l 2f,r1
add r0,r1
jsr @r1
add r12,r4
bra 3f
nop
.align 2
1: .long sH1@TLSLDM
2: .long __tls_get_addr@PLT
3:
nop;nop
mov.l .L8,r1
add r0,r1
nop;nop
mov.l .L9,r2
add r0,r2
nop;nop;nop;nop
! @GOTTPOFF IE against global var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sg2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sl2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden and local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sh2@GOTTPOFF
2:
nop;nop;nop;nop
! @GOTTPOFF IE against hidden but not local var
mov.l 1f,r0
stc gbr,r1
mov.l @(r0,r12),r0
bra 2f
add r0,r1
.align 2
1: .long sH2@GOTTPOFF
2:
nop;nop;nop;nop
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
rts
mov.l @r15+,r12
.align 2
.L3: .long _GLOBAL_OFFSET_TABLE_
.L4: .long sl1@DTPOFF
.L5: .long sl1@DTPOFF + 4
.L6: .long sh1@DTPOFF
.L7: .long sh2@DTPOFF
.L8: .long sH1@DTPOFF
.L9: .long sH2@DTPOFF
|