reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
252 memset(buf, 0, pltHeaderSize); 254 write16(buf, isMipsR6() ? 0x7860 : 0x7980); // addiupc v1, (GOTPLT) - . 255 write16(buf + 4, 0xff23); // lw $25, 0($3) 256 write16(buf + 8, 0x0535); // subu16 $2, $2, $3 257 write16(buf + 10, 0x2525); // srl16 $2, $2, 2 258 write16(buf + 12, 0x3302); // addiu $24, $2, -2 259 write16(buf + 14, 0xfffe); 260 write16(buf + 16, 0x0dff); // move $15, $31 262 write16(buf + 18, 0x0f83); // move $28, $3 263 write16(buf + 20, 0x472b); // jalrc $25 264 write16(buf + 22, 0x0c00); // nop 265 relocateOne(buf, R_MICROMIPS_PC19_S2, gotPlt - plt); 267 write16(buf + 18, 0x45f9); // jalrc $25 268 write16(buf + 20, 0x0f83); // move $28, $3 269 write16(buf + 22, 0x0c00); // nop 270 relocateOne(buf, R_MICROMIPS_PC23_S2, gotPlt - plt); 276 write32(buf, 0x3c0e0000); // lui $14, %hi(&GOTPLT[0]) 277 write32(buf + 4, 0x8dd90000); // lw $25, %lo(&GOTPLT[0])($14) 278 write32(buf + 8, 0x25ce0000); // addiu $14, $14, %lo(&GOTPLT[0]) 279 write32(buf + 12, 0x030ec023); // subu $24, $24, $14 280 write32(buf + 16, 0x03e07825); // move $15, $31 281 write32(buf + 20, 0x0018c082); // srl $24, $24, 2 283 write32(buf, 0x3c0e0000); // lui $14, %hi(&GOTPLT[0]) 284 write32(buf + 4, 0xddd90000); // ld $25, %lo(&GOTPLT[0])($14) 285 write32(buf + 8, 0x25ce0000); // addiu $14, $14, %lo(&GOTPLT[0]) 286 write32(buf + 12, 0x030ec023); // subu $24, $24, $14 287 write32(buf + 16, 0x03e07825); // move $15, $31 288 write32(buf + 20, 0x0018c0c2); // srl $24, $24, 3 290 write32(buf, 0x3c1c0000); // lui $28, %hi(&GOTPLT[0]) 291 write32(buf + 4, 0x8f990000); // lw $25, %lo(&GOTPLT[0])($28) 292 write32(buf + 8, 0x279c0000); // addiu $28, $28, %lo(&GOTPLT[0]) 293 write32(buf + 12, 0x031cc023); // subu $24, $24, $28 294 write32(buf + 16, 0x03e07825); // move $15, $31 295 write32(buf + 20, 0x0018c082); // srl $24, $24, 2 299 write32(buf + 24, jalrInst); // jalr.hb $25 or jalr $25 300 write32(buf + 28, 0x2718fffe); // subu $24, $24, 2 303 writeValue(buf, gotPlt + 0x8000, 16, 16); 304 writeValue(buf + 4, gotPlt, 16, 0); 305 writeValue(buf + 8, gotPlt, 16, 0);