reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/lld/ELF/Arch/Mips.cpp
  314     memset(buf, 0, pltEntrySize);
  317       write16(buf, 0x7840);      // addiupc $2, (GOTPLT) - .
  318       write16(buf + 4, 0xff22);  // lw $25, 0($2)
  319       write16(buf + 8, 0x0f02);  // move $24, $2
  320       write16(buf + 10, 0x4723); // jrc $25 / jr16 $25
  321       relocateOne(buf, R_MICROMIPS_PC19_S2, gotPltEntryAddr - pltEntryAddr);
  323       write16(buf, 0x7900);      // addiupc $2, (GOTPLT) - .
  324       write16(buf + 4, 0xff22);  // lw $25, 0($2)
  325       write16(buf + 8, 0x4599);  // jrc $25 / jr16 $25
  326       write16(buf + 10, 0x0f02); // move $24, $2
  327       relocateOne(buf, R_MICROMIPS_PC23_S2, gotPltEntryAddr - pltEntryAddr);
  337   write32(buf, 0x3c0f0000);     // lui   $15, %hi(.got.plt entry)
  338   write32(buf + 4, loadInst);   // l[wd] $25, %lo(.got.plt entry)($15)
  339   write32(buf + 8, jrInst);     // jr  $25 / jr.hb $25
  340   write32(buf + 12, addInst);   // [d]addiu $24, $15, %lo(.got.plt entry)
  341   writeValue(buf, gotPltEntryAddr + 0x8000, 16, 16);
  342   writeValue(buf + 4, gotPltEntryAddr, 16, 0);
  343   writeValue(buf + 12, gotPltEntryAddr, 16, 0);