1 .section ".tdata", "awT", @progbits 2 .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 3 .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 4 .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 5 sg1: .long 17 6 sg2: .long 18 7 sg3: .long 19 8 sg4: .long 20 9 sg5: .long 21 10 sg6: .long 22 11 sg7: .long 23 12 sg8: .long 24 13 sl1: .long 65 14 sl2: .long 66 15 sl3: .long 67 16 sl4: .long 68 17 sl5: .long 69 18 sl6: .long 70 19 sl7: .long 71 20 sl8: .long 72 21 sh1: .long 257 22 sh2: .long 258 23 sh3: .long 259 24 sh4: .long 260 25 sh5: .long 261 26 sh6: .long 262 27 sh7: .long 263 28 sh8: .long 264 29 .text 30 .globl fn1 31 .type fn1,@function 32 fn1: 33 pushl %ebp 34 movl %esp, %ebp 35 pushl %ebx 36 pushl %eax 37 call 1f 38 1: popl %ebx 39 addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx 40 nop;nop;nop;nop 41 42 /* GD */ 43 leal sg1@tlsdesc(%ebx), %eax 44 call *sg1@tlscall(%eax) 45 nop;nop;nop;nop 46 47 /* GD -> IE because variable is referenced through @gottpoff too */ 48 leal sg2@tlsdesc(%ebx), %eax 49 call *sg2@tlscall(%eax) 50 nop;nop;nop;nop 51 52 /* GD -> IE because variable is referenced through @gotntpoff too */ 53 leal sg3@tlsdesc(%ebx), %eax 54 call *sg3@tlscall(%eax) 55 nop;nop;nop;nop 56 57 /* GD -> IE because variable is referenced through @gottpoff and 58 @gotntpoff too */ 59 leal sg4@tlsdesc(%ebx), %eax 60 call *sg4@tlscall(%eax) 61 nop;nop;nop;nop 62 63 /* GD against local variable */ 64 leal sl1@tlsdesc(%ebx), %eax 65 call *sl1@tlscall(%eax) 66 nop;nop;nop;nop 67 68 /* GD -> IE against local variable referenced through @gottpoff too */ 69 leal sl2@tlsdesc(%ebx), %eax 70 call *sl2@tlscall(%eax) 71 nop;nop;nop;nop 72 73 /* GD -> IE against local variable referenced through @gotntpoff 74 too */ 75 leal sl3@tlsdesc(%ebx), %eax 76 call *sl3@tlscall(%eax) 77 nop;nop;nop;nop 78 79 /* GD -> IE against local variable referenced through @gottpoff and 80 @gotntpoff too */ 81 leal sl4@tlsdesc(%ebx), %eax 82 call *sl4@tlscall(%eax) 83 nop;nop;nop;nop 84 85 /* GD against hidden and local variable */ 86 leal sh1@tlsdesc(%ebx), %eax 87 call *sh1@tlscall(%eax) 88 nop;nop;nop;nop 89 90 /* GD -> IE against hidden and local variable referenced through 91 @gottpoff too */ 92 leal sh2@tlsdesc(%ebx), %eax 93 call *sh2@tlscall(%eax) 94 nop;nop;nop;nop 95 96 /* GD -> IE against hidden and local variable referenced through 97 @gotntpoff too */ 98 leal sh3@tlsdesc(%ebx), %eax 99 call *sh3@tlscall(%eax) 100 nop;nop;nop;nop 101 102 /* GD -> IE against hidden and local variable referenced through 103 @gottpoff and @gotntpoff too */ 104 leal sh4@tlsdesc(%ebx), %eax 105 call *sh4@tlscall(%eax) 106 nop;nop;nop;nop 107 108 /* GD against hidden but not local variable */ 109 leal sH1@tlsdesc(%ebx), %eax 110 call *sH1@tlscall(%eax) 111 nop;nop;nop;nop 112 113 /* GD -> IE against hidden but not local variable referenced through 114 @gottpoff too */ 115 leal sH2@tlsdesc(%ebx), %eax 116 call *sH2@tlscall(%eax) 117 nop;nop;nop;nop 118 119 /* GD -> IE against hidden but not local variable referenced through 120 @gotntpoff too */ 121 leal sH3@tlsdesc(%ebx), %eax 122 call *sH3@tlscall(%eax) 123 nop;nop;nop;nop 124 125 /* GD -> IE against hidden but not local variable referenced through 126 @gottpoff and @gotntpoff too */ 127 leal sH4@tlsdesc(%ebx), %eax 128 call *sH4@tlscall(%eax) 129 nop;nop;nop;nop 130 131 /* LD */ 132 leal _TLS_MODULE_BASE_@tlsdesc(%ebx), %eax 133 call *_TLS_MODULE_BASE_@tlscall(%eax) 134 nop;nop 135 leal sl1@dtpoff(%eax), %edx 136 nop;nop 137 leal 2+sl2@dtpoff(%eax), %ecx 138 nop;nop;nop;nop 139 140 /* LD against hidden and local variables */ 141 leal sh1@dtpoff(%eax), %edx 142 nop;nop 143 leal sh2@dtpoff+3(%eax), %ecx 144 nop;nop;nop;nop 145 146 /* LD against hidden but not local variables */ 147 leal sH1@dtpoff(%eax), %edx 148 nop;nop 149 leal sH2@dtpoff+1(%eax), %ecx 150 nop;nop 151 152 /* @gottpoff IE against global var */ 153 movl %gs:0, %ecx 154 nop;nop 155 subl sg2@gottpoff(%ebx), %ecx 156 nop;nop;nop;nop 157 158 /* @gottpoff IE against global var */ 159 movl %gs:0, %eax 160 nop;nop 161 subl sg4@gottpoff(%ebx), %eax 162 nop;nop;nop;nop 163 164 /* @gotntpoff IE against global var */ 165 movl %gs:0, %ecx 166 nop;nop 167 addl sg3@gotntpoff(%ebx), %ecx 168 nop;nop;nop;nop 169 170 /* @gotntpoff IE against global var */ 171 movl %gs:0, %eax 172 nop;nop 173 addl sg4@gotntpoff(%ebx), %eax 174 nop;nop;nop;nop 175 176 /* @gottpoff IE against local var */ 177 movl %gs:0, %ecx 178 nop;nop 179 subl sl2@gottpoff(%ebx), %ecx 180 nop;nop;nop;nop 181 182 /* @gottpoff IE against local var */ 183 movl %gs:0, %eax 184 nop;nop 185 subl sl4@gottpoff(%ebx), %eax 186 nop;nop;nop;nop 187 188 /* @gotntpoff IE against local var */ 189 movl %gs:0, %ecx 190 nop;nop 191 addl sl3@gotntpoff(%ebx), %ecx 192 nop;nop;nop;nop 193 194 /* @gotntpoff IE against local var */ 195 movl %gs:0, %eax 196 nop;nop 197 addl sl4@gotntpoff(%ebx), %eax 198 nop;nop;nop;nop 199 200 /* @gottpoff IE against hidden and local var */ 201 movl %gs:0, %ecx 202 nop;nop 203 subl sh2@gottpoff(%ebx), %ecx 204 nop;nop;nop;nop 205 206 /* @gottpoff IE against hidden and local var */ 207 movl %gs:0, %eax 208 nop;nop 209 subl sh4@gottpoff(%ebx), %eax 210 nop;nop;nop;nop 211 212 /* @gotntpoff IE against hidden and local var */ 213 movl %gs:0, %ecx 214 nop;nop 215 addl sh3@gotntpoff(%ebx), %ecx 216 nop;nop;nop;nop 217 218 /* @gotntpoff IE against hidden and local var */ 219 movl %gs:0, %eax 220 nop;nop 221 addl sh4@gotntpoff(%ebx), %eax 222 nop;nop;nop;nop 223 224 /* @gottpoff IE against hidden but not local var */ 225 movl %gs:0, %ecx 226 nop;nop 227 subl sH2@gottpoff(%ebx), %ecx 228 nop;nop;nop;nop 229 230 /* @gottpoff IE against hidden but not local var */ 231 movl %gs:0, %eax 232 nop;nop 233 subl sH4@gottpoff(%ebx), %eax 234 nop;nop;nop;nop 235 236 /* @gotntpoff IE against hidden but not local var */ 237 movl %gs:0, %ecx 238 nop;nop 239 addl sH3@gotntpoff(%ebx), %ecx 240 nop;nop;nop;nop 241 242 /* @gotntpoff IE against hidden but not local var */ 243 movl %gs:0, %eax 244 nop;nop 245 addl sH4@gotntpoff(%ebx), %eax 246 nop;nop;nop;nop 247 248 /* Direct access through %gs */ 249 250 /* @gotntpoff IE against global var */ 251 movl sg5@gotntpoff(%ebx), %ecx 252 nop;nop 253 movl %gs:(%ecx), %edx 254 nop;nop;nop;nop 255 256 /* @gotntpoff IE against local var */ 257 movl sl5@gotntpoff(%ebx), %eax 258 nop;nop 259 movl %gs:(%eax), %edx 260 nop;nop;nop;nop 261 262 /* @gotntpoff IE against hidden and local var */ 263 movl sh5@gotntpoff(%ebx), %edx 264 nop;nop 265 movl %gs:(%edx), %edx 266 nop;nop;nop;nop 267 268 /* @gotntpoff IE against hidden but not local var */ 269 movl sH5@gotntpoff(%ebx), %ecx 270 nop;nop 271 movl %gs:(%ecx), %edx 272 nop;nop;nop;nop 273 274 movl -4(%ebp), %ebx 275 leave 276 ret 277