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

References

tools/lld/ELF/Arch/Mips.cpp
  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);