Lines Matching refs:buf

30   int64_t getImplicitAddend(const uint8_t *buf, RelType type) const override;
32 void writeGotPlt(uint8_t *buf, const Symbol &s) const override;
33 void writePltHeader(uint8_t *buf) const override;
34 void writePlt(uint8_t *buf, const Symbol &sym,
207 void MIPS<ELFT>::writeGotPlt(uint8_t *buf, const Symbol &) const { in writeGotPlt() argument
211 write32(buf, va); in writeGotPlt()
258 template <class ELFT> void MIPS<ELFT>::writePltHeader(uint8_t *buf) const { in writePltHeader()
263 memset(buf, 0, pltHeaderSize); in writePltHeader()
265 write16(buf, isMipsR6() ? 0x7860 : 0x7980); // addiupc v1, (GOTPLT) - . in writePltHeader()
266 write16(buf + 4, 0xff23); // lw $25, 0($3) in writePltHeader()
267 write16(buf + 8, 0x0535); // subu16 $2, $2, $3 in writePltHeader()
268 write16(buf + 10, 0x2525); // srl16 $2, $2, 2 in writePltHeader()
269 write16(buf + 12, 0x3302); // addiu $24, $2, -2 in writePltHeader()
270 write16(buf + 14, 0xfffe); in writePltHeader()
271 write16(buf + 16, 0x0dff); // move $15, $31 in writePltHeader()
273 write16(buf + 18, 0x0f83); // move $28, $3 in writePltHeader()
274 write16(buf + 20, 0x472b); // jalrc $25 in writePltHeader()
275 write16(buf + 22, 0x0c00); // nop in writePltHeader()
276 relocateNoSym(buf, R_MICROMIPS_PC19_S2, gotPlt - plt); in writePltHeader()
278 write16(buf + 18, 0x45f9); // jalrc $25 in writePltHeader()
279 write16(buf + 20, 0x0f83); // move $28, $3 in writePltHeader()
280 write16(buf + 22, 0x0c00); // nop in writePltHeader()
281 relocateNoSym(buf, R_MICROMIPS_PC23_S2, gotPlt - plt); in writePltHeader()
287 write32(buf, 0x3c0e0000); // lui $14, %hi(&GOTPLT[0]) in writePltHeader()
288 write32(buf + 4, 0x8dd90000); // lw $25, %lo(&GOTPLT[0])($14) in writePltHeader()
289 write32(buf + 8, 0x25ce0000); // addiu $14, $14, %lo(&GOTPLT[0]) in writePltHeader()
290 write32(buf + 12, 0x030ec023); // subu $24, $24, $14 in writePltHeader()
291 write32(buf + 16, 0x03e07825); // move $15, $31 in writePltHeader()
292 write32(buf + 20, 0x0018c082); // srl $24, $24, 2 in writePltHeader()
294 write32(buf, 0x3c0e0000); // lui $14, %hi(&GOTPLT[0]) in writePltHeader()
295 write32(buf + 4, 0xddd90000); // ld $25, %lo(&GOTPLT[0])($14) in writePltHeader()
296 write32(buf + 8, 0x25ce0000); // addiu $14, $14, %lo(&GOTPLT[0]) in writePltHeader()
297 write32(buf + 12, 0x030ec023); // subu $24, $24, $14 in writePltHeader()
298 write32(buf + 16, 0x03e07825); // move $15, $31 in writePltHeader()
299 write32(buf + 20, 0x0018c0c2); // srl $24, $24, 3 in writePltHeader()
301 write32(buf, 0x3c1c0000); // lui $28, %hi(&GOTPLT[0]) in writePltHeader()
302 write32(buf + 4, 0x8f990000); // lw $25, %lo(&GOTPLT[0])($28) in writePltHeader()
303 write32(buf + 8, 0x279c0000); // addiu $28, $28, %lo(&GOTPLT[0]) in writePltHeader()
304 write32(buf + 12, 0x031cc023); // subu $24, $24, $28 in writePltHeader()
305 write32(buf + 16, 0x03e07825); // move $15, $31 in writePltHeader()
306 write32(buf + 20, 0x0018c082); // srl $24, $24, 2 in writePltHeader()
310 write32(buf + 24, jalrInst); // jalr.hb $25 or jalr $25 in writePltHeader()
311 write32(buf + 28, 0x2718fffe); // subu $24, $24, 2 in writePltHeader()
314 writeValue(buf, gotPlt + 0x8000, 16, 16); in writePltHeader()
315 writeValue(buf + 4, gotPlt, 16, 0); in writePltHeader()
316 writeValue(buf + 8, gotPlt, 16, 0); in writePltHeader()
320 void MIPS<ELFT>::writePlt(uint8_t *buf, const Symbol &sym, in writePlt() argument
325 memset(buf, 0, pltEntrySize); in writePlt()
328 write16(buf, 0x7840); // addiupc $2, (GOTPLT) - . in writePlt()
329 write16(buf + 4, 0xff22); // lw $25, 0($2) in writePlt()
330 write16(buf + 8, 0x0f02); // move $24, $2 in writePlt()
331 write16(buf + 10, 0x4723); // jrc $25 / jr16 $25 in writePlt()
332 relocateNoSym(buf, R_MICROMIPS_PC19_S2, gotPltEntryAddr - pltEntryAddr); in writePlt()
334 write16(buf, 0x7900); // addiupc $2, (GOTPLT) - . in writePlt()
335 write16(buf + 4, 0xff22); // lw $25, 0($2) in writePlt()
336 write16(buf + 8, 0x4599); // jrc $25 / jr16 $25 in writePlt()
337 write16(buf + 10, 0x0f02); // move $24, $2 in writePlt()
338 relocateNoSym(buf, R_MICROMIPS_PC23_S2, gotPltEntryAddr - pltEntryAddr); in writePlt()
348 write32(buf, 0x3c0f0000); // lui $15, %hi(.got.plt entry) in writePlt()
349 write32(buf + 4, loadInst); // l[wd] $25, %lo(.got.plt entry)($15) in writePlt()
350 write32(buf + 8, jrInst); // jr $25 / jr.hb $25 in writePlt()
351 write32(buf + 12, addInst); // [d]addiu $24, $15, %lo(.got.plt entry) in writePlt()
352 writeValue(buf, gotPltEntryAddr + 0x8000, 16, 16); in writePlt()
353 writeValue(buf + 4, gotPltEntryAddr, 16, 0); in writePlt()
354 writeValue(buf + 12, gotPltEntryAddr, 16, 0); in writePlt()
382 int64_t MIPS<ELFT>::getImplicitAddend(const uint8_t *buf, RelType type) const { in getImplicitAddend() argument
391 return SignExtend64<32>(read32(buf)); in getImplicitAddend()
396 return SignExtend64<28>(read32(buf) << 2); in getImplicitAddend()
402 return SignExtend64<16>(read32(buf)) << 16; in getImplicitAddend()
416 return SignExtend64<16>(read32(buf)); in getImplicitAddend()
419 return SignExtend64<16>(readShuffle<e>(buf)) << 16; in getImplicitAddend()
430 return SignExtend64<16>(readShuffle<e>(buf)); in getImplicitAddend()
432 return SignExtend64<9>(readShuffle<e>(buf) << 2); in getImplicitAddend()
434 return SignExtend64<18>(read32(buf) << 2); in getImplicitAddend()
436 return SignExtend64<21>(read32(buf) << 2); in getImplicitAddend()
438 return SignExtend64<23>(read32(buf) << 2); in getImplicitAddend()
440 return SignExtend64<28>(read32(buf) << 2); in getImplicitAddend()
442 return SignExtend64<32>(read32(buf)); in getImplicitAddend()
444 return SignExtend64<27>(readShuffle<e>(buf) << 1); in getImplicitAddend()
446 return SignExtend64<8>(read16(buf) << 1); in getImplicitAddend()
448 return SignExtend64<11>(read16(buf) << 1); in getImplicitAddend()
450 return SignExtend64<17>(readShuffle<e>(buf) << 1); in getImplicitAddend()
452 return SignExtend64<21>(readShuffle<e>(buf) << 3); in getImplicitAddend()
454 return SignExtend64<21>(readShuffle<e>(buf) << 2); in getImplicitAddend()
456 return SignExtend64<22>(readShuffle<e>(buf) << 1); in getImplicitAddend()
458 return SignExtend64<25>(readShuffle<e>(buf) << 2); in getImplicitAddend()
460 return SignExtend64<27>(readShuffle<e>(buf) << 1); in getImplicitAddend()
466 return read64(buf); in getImplicitAddend()
468 return config->is64 ? read64(buf) : read32(buf); in getImplicitAddend()
475 internalLinkerError(getErrorLocation(buf), in getImplicitAddend()