[Mips] Do not inherit MipsDynamicLibraryWriter and MipsExecutableWriter

from MipsELFWriter class. MipsELFWriter is just a helper.

llvm-svn: 203402
This commit is contained in:
Simon Atanasyan 2014-03-09 13:05:09 +00:00
parent 16c425e985
commit 6af34b9661
3 changed files with 11 additions and 12 deletions

View File

@ -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

View File

@ -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);

View File

@ -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