コード例 #1
0
void MipsELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) {
  if (pFormat.hasGOT())
    applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOT().addr());

  applyOne(llvm::ELF::DT_MIPS_RLD_VERSION, 1);
  applyOne(llvm::ELF::DT_MIPS_FLAGS, llvm::ELF::RHF_NOTPOT);
  applyOne(llvm::ELF::DT_MIPS_BASE_ADDRESS, getBaseAddress());
  applyOne(llvm::ELF::DT_MIPS_LOCAL_GOTNO, getLocalGotNum(pFormat));
  applyOne(llvm::ELF::DT_MIPS_SYMTABNO, getSymTabNum(pFormat));
  applyOne(llvm::ELF::DT_MIPS_GOTSYM, getGotSym(pFormat));

  if (pFormat.hasGOTPLT())
    applyOne(llvm::ELF::DT_MIPS_PLTGOT, pFormat.getGOTPLT().addr());
}
コード例 #2
0
void MipsELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat) {
  if (pFormat.hasGOT())
    reserveOne(llvm::ELF::DT_PLTGOT);

  reserveOne(llvm::ELF::DT_MIPS_RLD_VERSION);
  reserveOne(llvm::ELF::DT_MIPS_FLAGS);
  reserveOne(llvm::ELF::DT_MIPS_BASE_ADDRESS);
  reserveOne(llvm::ELF::DT_MIPS_LOCAL_GOTNO);
  reserveOne(llvm::ELF::DT_MIPS_SYMTABNO);
  reserveOne(llvm::ELF::DT_MIPS_GOTSYM);

  if (pFormat.hasGOTPLT())
    reserveOne(llvm::ELF::DT_MIPS_PLTGOT);
}
コード例 #3
0
void X86ELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) {
  // applyPLTGOT
  if (pFormat.hasGOTPLT())
    applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOTPLT().addr());
}
コード例 #4
0
void X86ELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat) {
  // reservePLTGOT
  if (pFormat.hasGOTPLT())
    reserveOne(llvm::ELF::DT_PLTGOT);
}