[Mips] Do not inherit MipsDynamicLibraryWriter and MipsExecutableWriter
from MipsELFWriter class. MipsELFWriter is just a helper. llvm-svn: 203402
This commit is contained in:
parent
16c425e985
commit
6af34b9661
|
@ -20,8 +20,7 @@ namespace elf {
|
|||
template <typename ELFT> class MipsTargetLayout;
|
||||
|
||||
template <class ELFT>
|
||||
class MipsDynamicLibraryWriter : public DynamicLibraryWriter<ELFT>,
|
||||
public MipsELFWriter<ELFT> {
|
||||
class MipsDynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {
|
||||
public:
|
||||
MipsDynamicLibraryWriter(MipsLinkingContext &context,
|
||||
MipsTargetLayout<ELFT> &layout);
|
||||
|
@ -34,7 +33,7 @@ protected:
|
|||
|
||||
error_code setELFHeader() override {
|
||||
DynamicLibraryWriter<ELFT>::setELFHeader();
|
||||
MipsELFWriter<ELFT>::setELFHeader(*this->_elfHeader);
|
||||
_writeHelper.setELFHeader(*this->_elfHeader);
|
||||
return error_code::success();
|
||||
}
|
||||
|
||||
|
@ -51,6 +50,7 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
MipsELFWriter<ELFT> _writeHelper;
|
||||
std::unique_ptr<MipsRuntimeFile<ELFT>> _mipsRuntimeFile;
|
||||
MipsLinkingContext &_mipsContext;
|
||||
MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout;
|
||||
|
@ -60,7 +60,7 @@ template <class ELFT>
|
|||
MipsDynamicLibraryWriter<ELFT>::MipsDynamicLibraryWriter(
|
||||
MipsLinkingContext &context, MipsTargetLayout<ELFT> &layout)
|
||||
: DynamicLibraryWriter<ELFT>(context, layout),
|
||||
MipsELFWriter<ELFT>(context, layout),
|
||||
_writeHelper(context, layout),
|
||||
_mipsRuntimeFile(new MipsRuntimeFile<ELFT>(context)),
|
||||
_mipsContext(context), _mipsTargetLayout(layout) {}
|
||||
|
||||
|
@ -78,7 +78,7 @@ template <class ELFT>
|
|||
void MipsDynamicLibraryWriter<ELFT>::finalizeDefaultAtomValues() {
|
||||
// Finalize the atom values that are part of the parent.
|
||||
DynamicLibraryWriter<ELFT>::finalizeDefaultAtomValues();
|
||||
MipsELFWriter<ELFT>::finalizeMipsRuntimeAtomValues();
|
||||
_writeHelper.finalizeMipsRuntimeAtomValues();
|
||||
}
|
||||
|
||||
/// \brief create dynamic table
|
||||
|
|
|
@ -23,7 +23,6 @@ public:
|
|||
MipsTargetLayout<ELFT> &targetLayout)
|
||||
: _mipsLinkingContext(context), _mipsTargetLayout(targetLayout) {}
|
||||
|
||||
protected:
|
||||
bool setELFHeader(ELFHeader<ELFT> &elfHeader) {
|
||||
elfHeader.e_version(1);
|
||||
elfHeader.e_ident(llvm::ELF::EI_VERSION, llvm::ELF::EV_CURRENT);
|
||||
|
|
|
@ -20,8 +20,7 @@ namespace elf {
|
|||
template <typename ELFT> class MipsTargetLayout;
|
||||
|
||||
template <class ELFT>
|
||||
class MipsExecutableWriter : public ExecutableWriter<ELFT>,
|
||||
public MipsELFWriter<ELFT> {
|
||||
class MipsExecutableWriter : public ExecutableWriter<ELFT> {
|
||||
public:
|
||||
MipsExecutableWriter(MipsLinkingContext &context,
|
||||
MipsTargetLayout<ELFT> &layout);
|
||||
|
@ -36,7 +35,7 @@ protected:
|
|||
|
||||
error_code setELFHeader() override {
|
||||
ExecutableWriter<ELFT>::setELFHeader();
|
||||
MipsELFWriter<ELFT>::setELFHeader(*this->_elfHeader);
|
||||
_writeHelper.setELFHeader(*this->_elfHeader);
|
||||
return error_code::success();
|
||||
}
|
||||
|
||||
|
@ -53,6 +52,7 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
MipsELFWriter<ELFT> _writeHelper;
|
||||
std::unique_ptr<MipsRuntimeFile<ELFT>> _mipsRuntimeFile;
|
||||
MipsLinkingContext &_mipsContext;
|
||||
MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout;
|
||||
|
@ -62,7 +62,7 @@ template <class ELFT>
|
|||
MipsExecutableWriter<ELFT>::MipsExecutableWriter(MipsLinkingContext &context,
|
||||
MipsTargetLayout<ELFT> &layout)
|
||||
: ExecutableWriter<ELFT>(context, layout),
|
||||
MipsELFWriter<ELFT>(context, layout),
|
||||
_writeHelper(context, layout),
|
||||
_mipsRuntimeFile(new MipsRuntimeFile<ELFT>(context)),
|
||||
_mipsContext(context), _mipsTargetLayout(layout) {}
|
||||
|
||||
|
@ -74,7 +74,7 @@ void MipsExecutableWriter<ELFT>::buildDynamicSymbolTable(const File &file) {
|
|||
// FIXME (simon): Consider to move this check to the
|
||||
// MipsELFUndefinedAtom class method. That allows to
|
||||
// handle more complex coditions in the future.
|
||||
if (this->hasGlobalGOTEntry(a))
|
||||
if (_writeHelper.hasGlobalGOTEntry(a))
|
||||
this->_dynamicSymbolTable->addSymbol(a, ELF::SHN_UNDEF);
|
||||
|
||||
ExecutableWriter<ELFT>::buildDynamicSymbolTable(file);
|
||||
|
@ -94,7 +94,7 @@ template <class ELFT>
|
|||
void MipsExecutableWriter<ELFT>::finalizeDefaultAtomValues() {
|
||||
// Finalize the atom values that are part of the parent.
|
||||
ExecutableWriter<ELFT>::finalizeDefaultAtomValues();
|
||||
MipsELFWriter<ELFT>::finalizeMipsRuntimeAtomValues();
|
||||
_writeHelper.finalizeMipsRuntimeAtomValues();
|
||||
}
|
||||
|
||||
/// \brief create dynamic table
|
||||
|
|
Loading…
Reference in New Issue