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()); }
void Mips64GNULDBackend::initTargetSections(Module& pModule, ObjectBuilder& pBuilder) { MipsGNULDBackend::initTargetSections(pModule, pBuilder); if (LinkerConfig::Object == config().codeGenType()) return; ELFFileFormat* fileFormat = getOutputFormat(); // initialize .got LDSection& got = fileFormat->getGOT(); m_pGOT = new Mips64GOT(got); // initialize .got.plt LDSection& gotplt = fileFormat->getGOTPLT(); m_pGOTPLT = new MipsGOTPLT(gotplt); // initialize .plt LDSection& plt = fileFormat->getPLT(); m_pPLT = new MipsPLT(plt); }
void ARMELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) { // applyPLTGOT if (pFormat.hasGOT()) applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOT().addr()); }