summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h')
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h79
1 files changed, 0 insertions, 79 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
index 1cad6a40ccd..b34f0f15a36 100644
--- a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
+++ b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
@@ -116,85 +116,6 @@ private:
MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout;
};
-class MipsDynamicTable : public DynamicTable<Mips32ElELFType> {
-public:
- MipsDynamicTable(MipsLinkingContext &context,
- MipsTargetLayout<Mips32ElELFType> &layout)
- : DynamicTable<Mips32ElELFType>(
- context, layout, ".dynamic",
- DefaultLayout<Mips32ElELFType>::ORDER_DYNAMIC),
- _mipsTargetLayout(layout) {}
-
- virtual void createDefaultEntries() {
- DynamicTable<Mips32ElELFType>::createDefaultEntries();
-
- Elf_Dyn dyn;
-
- // Version id for the Runtime Linker Interface.
- dyn.d_un.d_val = 1;
- dyn.d_tag = DT_MIPS_RLD_VERSION;
- addEntry(dyn);
-
- // MIPS flags.
- dyn.d_un.d_val = RHF_NOTPOT;
- dyn.d_tag = DT_MIPS_FLAGS;
- addEntry(dyn);
-
- // The base address of the segment.
- dyn.d_un.d_ptr = 0;
- dyn.d_tag = DT_MIPS_BASE_ADDRESS;
- _dt_baseaddr = addEntry(dyn);
-
- // Number of local global offset table entries.
- dyn.d_un.d_val = 0;
- dyn.d_tag = DT_MIPS_LOCAL_GOTNO;
- _dt_localgot = addEntry(dyn);
-
- // Number of entries in the .dynsym section.
- dyn.d_un.d_val = 0;
- dyn.d_tag = DT_MIPS_SYMTABNO;
- _dt_symtabno = addEntry(dyn);
-
- // The index of the first dynamic symbol table entry that corresponds
- // to an entry in the global offset table.
- dyn.d_un.d_val = 0;
- dyn.d_tag = DT_MIPS_GOTSYM;
- _dt_gotsym = addEntry(dyn);
-
- // Address of the .got section.
- dyn.d_un.d_val = 0;
- dyn.d_tag = DT_PLTGOT;
- _dt_pltgot = addEntry(dyn);
- }
-
- virtual void updateDynamicTable() {
- DynamicTable<Mips32ElELFType>::updateDynamicTable();
-
- // Assign the minimum segment address to the DT_MIPS_BASE_ADDRESS tag.
- auto baseAddr = std::numeric_limits<uint64_t>::max();
- for (auto si : _mipsTargetLayout.segments())
- if (si->segmentType() != llvm::ELF::PT_NULL)
- baseAddr = std::min(baseAddr, si->virtualAddr());
- _entries[_dt_baseaddr].d_un.d_val = baseAddr;
-
- auto &got = _mipsTargetLayout.getGOTSection();
-
- _entries[_dt_symtabno].d_un.d_val = getSymbolTable()->size();
- _entries[_dt_gotsym].d_un.d_val =
- getSymbolTable()->size() - got.getGlobalCount();
- _entries[_dt_localgot].d_un.d_val = got.getLocalCount();
- _entries[_dt_pltgot].d_un.d_ptr =
- _mipsTargetLayout.findOutputSection(".got")->virtualAddr();
- }
-
-private:
- std::size_t _dt_symtabno;
- std::size_t _dt_localgot;
- std::size_t _dt_gotsym;
- std::size_t _dt_pltgot;
- std::size_t _dt_baseaddr;
- MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout;
-};
} // end namespace elf
} // end namespace lld
OpenPOWER on IntegriCloud