diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2014-05-25 09:04:57 +0000 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2014-05-25 09:04:57 +0000 |
| commit | 23fe15a62d75733433ae924ca4ba41dadaba81d5 (patch) | |
| tree | 2fbc55bc0c7d6a0466c5decdbee2e0b2403ceaf0 | |
| parent | f7534383f58f6df4ce5e737ce4a1c05396a453ba (diff) | |
| download | bcm5719-llvm-23fe15a62d75733433ae924ca4ba41dadaba81d5.tar.gz bcm5719-llvm-23fe15a62d75733433ae924ca4ba41dadaba81d5.zip | |
[Mips] Factor out the code create Mips specific runtime file into
the MipsELFWriters member function.
llvm-svn: 209592
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h | 14 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h | 10 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h | 17 |
3 files changed, 13 insertions, 28 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h b/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h index 9811d8e056a..ed889db0715 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h @@ -42,16 +42,7 @@ protected: LLD_UNIQUE_BUMP_PTR(DynamicSymbolTable<ELFT>) createDynamicSymbolTable(); private: - void addDefaultAtoms() { - if (this->_context.isDynamic()) { - _mipsRuntimeFile->addAbsoluteAtom("_GLOBAL_OFFSET_TABLE_"); - _mipsRuntimeFile->addAbsoluteAtom("_gp"); - _mipsRuntimeFile->addAbsoluteAtom("_gp_disp"); - } - } - MipsELFWriter<ELFT> _writeHelper; - std::unique_ptr<MipsRuntimeFile<ELFT>> _mipsRuntimeFile; MipsLinkingContext &_mipsContext; MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout; }; @@ -61,16 +52,13 @@ MipsDynamicLibraryWriter<ELFT>::MipsDynamicLibraryWriter( MipsLinkingContext &context, MipsTargetLayout<ELFT> &layout) : DynamicLibraryWriter<ELFT>(context, layout), _writeHelper(context, layout), - _mipsRuntimeFile(new MipsRuntimeFile<ELFT>(context)), _mipsContext(context), _mipsTargetLayout(layout) {} template <class ELFT> bool MipsDynamicLibraryWriter<ELFT>::createImplicitFiles( std::vector<std::unique_ptr<File>> &result) { DynamicLibraryWriter<ELFT>::createImplicitFiles(result); - // Add the default atoms as defined for mips - addDefaultAtoms(); - result.push_back(std::move(_mipsRuntimeFile)); + result.push_back(std::move(_writeHelper.createRuntimeFile())); return true; } diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h b/lld/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h index 5e24d6f00e6..51734c97109 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h @@ -66,6 +66,16 @@ public: return _targetLayout.getGOTSection().hasGlobalGOTEntry(a); } + std::unique_ptr<MipsRuntimeFile<ELFT>> createRuntimeFile() { + auto file = llvm::make_unique<MipsRuntimeFile<ELFT>>(_context); + if (_context.isDynamic()) { + file->addAbsoluteAtom("_GLOBAL_OFFSET_TABLE_"); + file->addAbsoluteAtom("_gp"); + file->addAbsoluteAtom("_gp_disp"); + } + return file; + } + private: MipsLinkingContext &_context; MipsTargetLayout<ELFT> &_targetLayout; diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h b/lld/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h index 6275ef8e361..27997f636df 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h @@ -44,16 +44,7 @@ protected: LLD_UNIQUE_BUMP_PTR(DynamicSymbolTable<ELFT>) createDynamicSymbolTable(); private: - void addDefaultAtoms() { - if (this->_context.isDynamic()) { - _mipsRuntimeFile->addAbsoluteAtom("_GLOBAL_OFFSET_TABLE_"); - _mipsRuntimeFile->addAbsoluteAtom("_gp"); - _mipsRuntimeFile->addAbsoluteAtom("_gp_disp"); - } - } - MipsELFWriter<ELFT> _writeHelper; - std::unique_ptr<MipsRuntimeFile<ELFT>> _mipsRuntimeFile; MipsLinkingContext &_mipsContext; MipsTargetLayout<Mips32ElELFType> &_mipsTargetLayout; }; @@ -61,9 +52,7 @@ private: template <class ELFT> MipsExecutableWriter<ELFT>::MipsExecutableWriter(MipsLinkingContext &context, MipsTargetLayout<ELFT> &layout) - : ExecutableWriter<ELFT>(context, layout), - _writeHelper(context, layout), - _mipsRuntimeFile(new MipsRuntimeFile<ELFT>(context)), + : ExecutableWriter<ELFT>(context, layout), _writeHelper(context, layout), _mipsContext(context), _mipsTargetLayout(layout) {} template <class ELFT> @@ -84,9 +73,7 @@ template <class ELFT> bool MipsExecutableWriter<ELFT>::createImplicitFiles( std::vector<std::unique_ptr<File>> &result) { ExecutableWriter<ELFT>::createImplicitFiles(result); - // Add the default atoms as defined for mips - addDefaultAtoms(); - result.push_back(std::move(_mipsRuntimeFile)); + result.push_back(std::move(_writeHelper.createRuntimeFile())); return true; } |

