[lld] r226255 - [Mips] Make MipsLinkingContext owner of MipsELFFlagsMerger
Simon Atanasyan
simon at atanasyan.com
Fri Jan 16 00:57:26 PST 2015
Author: atanasyan
Date: Fri Jan 16 02:57:26 2015
New Revision: 226255
URL: http://llvm.org/viewvc/llvm-project?rev=226255&view=rev
Log:
[Mips] Make MipsLinkingContext owner of MipsELFFlagsMerger
That reduce class dependencies and simplify the code a bit.
No functional changes.
Modified:
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h Fri Jan 16 02:57:26 2015
@@ -25,8 +25,7 @@ template <class ELFT>
class MipsDynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {
public:
MipsDynamicLibraryWriter(MipsLinkingContext &ctx,
- MipsTargetLayout<ELFT> &layout,
- MipsELFFlagsMerger &elfFlagsMerger);
+ MipsTargetLayout<ELFT> &layout);
protected:
// Add any runtime files and their atoms to the output
@@ -54,11 +53,9 @@ private:
template <class ELFT>
MipsDynamicLibraryWriter<ELFT>::MipsDynamicLibraryWriter(
- MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout,
- MipsELFFlagsMerger &elfFlagsMerger)
- : DynamicLibraryWriter<ELFT>(ctx, layout),
- _writeHelper(ctx, layout, elfFlagsMerger), _mipsContext(ctx),
- _mipsTargetLayout(layout) {}
+ MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout)
+ : DynamicLibraryWriter<ELFT>(ctx, layout), _writeHelper(ctx, layout),
+ _mipsContext(ctx), _mipsTargetLayout(layout) {}
template <class ELFT>
bool MipsDynamicLibraryWriter<ELFT>::createImplicitFiles(
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h Fri Jan 16 02:57:26 2015
@@ -12,6 +12,7 @@
#include "ELFReader.h"
#include "MipsELFFile.h"
#include "MipsELFFlagsMerger.h"
+#include "MipsLinkingContext.h"
namespace lld {
namespace elf {
@@ -44,9 +45,9 @@ class MipsELFObjectReader
BaseReaderType;
public:
- MipsELFObjectReader(MipsELFFlagsMerger &flagMerger, bool atomizeStrings)
+ MipsELFObjectReader(MipsLinkingContext &ctx, bool atomizeStrings)
: BaseReaderType(atomizeStrings, llvm::ELF::EM_MIPS),
- _flagMerger(flagMerger) {}
+ _flagMerger(ctx.getELFFlagsMerger()) {}
std::error_code
loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry ®istry,
@@ -67,9 +68,9 @@ class MipsELFDSOReader
BaseReaderType;
public:
- MipsELFDSOReader(MipsELFFlagsMerger &flagMerger, bool useUndefines)
+ MipsELFDSOReader(MipsLinkingContext &ctx, bool useUndefines)
: BaseReaderType(useUndefines, llvm::ELF::EM_MIPS),
- _flagMerger(flagMerger) {}
+ _flagMerger(ctx.getELFFlagsMerger()) {}
std::error_code
loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry ®istry,
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h Fri Jan 16 02:57:26 2015
@@ -9,7 +9,6 @@
#ifndef LLD_READER_WRITER_ELF_MIPS_MIPS_ELF_WRITERS_H
#define LLD_READER_WRITER_ELF_MIPS_MIPS_ELF_WRITERS_H
-#include "MipsELFFlagsMerger.h"
#include "MipsLinkingContext.h"
#include "OutputELFWriter.h"
@@ -22,10 +21,8 @@ template <class ELFT> class MipsTargetLa
template <typename ELFT> class MipsELFWriter {
public:
- MipsELFWriter(MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &targetLayout,
- MipsELFFlagsMerger &elfFlagsMerger)
- : _ctx(ctx), _targetLayout(targetLayout),
- _elfFlagsMerger(elfFlagsMerger) {}
+ MipsELFWriter(MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &targetLayout)
+ : _ctx(ctx), _targetLayout(targetLayout) {}
void setELFHeader(ELFHeader<ELFT> &elfHeader) {
elfHeader.e_version(1);
@@ -36,7 +33,7 @@ public:
else
elfHeader.e_ident(llvm::ELF::EI_ABIVERSION, 0);
- elfHeader.e_flags(_elfFlagsMerger.getMergedELFFlags());
+ elfHeader.e_flags(_ctx.getMergedELFFlags());
}
void finalizeMipsRuntimeAtomValues() {
@@ -71,7 +68,6 @@ public:
private:
MipsLinkingContext &_ctx;
MipsTargetLayout<ELFT> &_targetLayout;
- MipsELFFlagsMerger &_elfFlagsMerger;
void setAtomValue(StringRef name, uint64_t value) {
auto atom = _targetLayout.findAbsoluteAtom(name);
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsExecutableWriter.h Fri Jan 16 02:57:26 2015
@@ -22,8 +22,7 @@ template <typename ELFT> class MipsTarge
template <class ELFT>
class MipsExecutableWriter : public ExecutableWriter<ELFT> {
public:
- MipsExecutableWriter(MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout,
- MipsELFFlagsMerger &elfFlagsMerger);
+ MipsExecutableWriter(MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout);
protected:
void buildDynamicSymbolTable(const File &file) override;
@@ -47,12 +46,10 @@ private:
};
template <class ELFT>
-MipsExecutableWriter<ELFT>::MipsExecutableWriter(
- MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout,
- MipsELFFlagsMerger &elfFlagsMerger)
- : ExecutableWriter<ELFT>(ctx, layout),
- _writeHelper(ctx, layout, elfFlagsMerger), _mipsContext(ctx),
- _mipsTargetLayout(layout) {}
+MipsExecutableWriter<ELFT>::MipsExecutableWriter(MipsLinkingContext &ctx,
+ MipsTargetLayout<ELFT> &layout)
+ : ExecutableWriter<ELFT>(ctx, layout), _writeHelper(ctx, layout),
+ _mipsContext(ctx), _mipsTargetLayout(layout) {}
template <class ELFT>
std::error_code MipsExecutableWriter<ELFT>::setELFHeader() {
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp Fri Jan 16 02:57:26 2015
@@ -21,9 +21,11 @@ MipsLinkingContext::MipsLinkingContext(l
new MipsTargetHandler(*this))) {}
uint32_t MipsLinkingContext::getMergedELFFlags() const {
- const auto &handler = static_cast<MipsTargetHandler &>(
- ELFLinkingContext::getTargetHandler<Mips32ElELFType>());
- return handler.getELFFlagsMerger().getMergedELFFlags();
+ return _flagsMerger.getMergedELFFlags();
+}
+
+MipsELFFlagsMerger &MipsLinkingContext::getELFFlagsMerger() {
+ return _flagsMerger;
}
uint64_t MipsLinkingContext::getBaseAddress() const {
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h Fri Jan 16 02:57:26 2015
@@ -9,6 +9,7 @@
#ifndef LLD_READER_WRITER_ELF_MIPS_MIPS_LINKING_CONTEXT_H
#define LLD_READER_WRITER_ELF_MIPS_MIPS_LINKING_CONTEXT_H
+#include "MipsELFFlagsMerger.h"
#include "lld/ReaderWriter/ELFLinkingContext.h"
namespace lld {
@@ -41,6 +42,7 @@ public:
MipsLinkingContext(llvm::Triple triple);
uint32_t getMergedELFFlags() const;
+ MipsELFFlagsMerger &getELFFlagsMerger();
// ELFLinkingContext
uint64_t getBaseAddress() const override;
@@ -52,6 +54,9 @@ public:
const Reference &r) const override;
bool isCopyRelocation(const Reference &r) const override;
bool isPLTRelocation(const DefinedAtom &, const Reference &r) const override;
+
+private:
+ MipsELFFlagsMerger _flagsMerger;
};
} // elf
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp Fri Jan 16 02:57:26 2015
@@ -27,12 +27,11 @@ MipsTargetHandler::MipsTargetHandler(Mip
std::unique_ptr<Writer> MipsTargetHandler::getWriter() {
switch (_ctx.getOutputELFType()) {
case llvm::ELF::ET_EXEC:
- return std::unique_ptr<Writer>(new MipsExecutableWriter<Mips32ElELFType>(
- _ctx, *_targetLayout, _elfFlagsMerger));
+ return std::unique_ptr<Writer>(
+ new MipsExecutableWriter<Mips32ElELFType>(_ctx, *_targetLayout));
case llvm::ELF::ET_DYN:
return std::unique_ptr<Writer>(
- new MipsDynamicLibraryWriter<Mips32ElELFType>(_ctx, *_targetLayout,
- _elfFlagsMerger));
+ new MipsDynamicLibraryWriter<Mips32ElELFType>(_ctx, *_targetLayout));
case llvm::ELF::ET_REL:
llvm_unreachable("TODO: support -r mode");
default:
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=226255&r1=226254&r2=226255&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h Fri Jan 16 02:57:26 2015
@@ -10,7 +10,6 @@
#define LLD_READER_WRITER_ELF_MIPS_MIPS_TARGET_HANDLER_H
#include "DefaultTargetHandler.h"
-#include "MipsELFFlagsMerger.h"
#include "MipsELFReader.h"
#include "MipsLinkingContext.h"
#include "MipsRelocationHandler.h"
@@ -87,22 +86,18 @@ class MipsTargetHandler final : public D
public:
MipsTargetHandler(MipsLinkingContext &ctx);
- const MipsELFFlagsMerger &getELFFlagsMerger() const {
- return _elfFlagsMerger;
- }
-
MipsTargetLayout<Mips32ElELFType> &getTargetLayout() override {
return *_targetLayout;
}
std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {
return std::unique_ptr<Reader>(
- new MipsELFObjectReader(_elfFlagsMerger, atomizeStrings));
+ new MipsELFObjectReader(_ctx, atomizeStrings));
}
std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {
return std::unique_ptr<Reader>(
- new MipsELFDSOReader(_elfFlagsMerger, useShlibUndefines));
+ new MipsELFDSOReader(_ctx, useShlibUndefines));
}
const MipsTargetRelocationHandler &getRelocationHandler() const override {
@@ -116,7 +111,6 @@ public:
private:
static const Registry::KindStrings kindStrings[];
MipsLinkingContext &_ctx;
- MipsELFFlagsMerger _elfFlagsMerger;
std::unique_ptr<MipsRuntimeFile<Mips32ElELFType>> _runtimeFile;
std::unique_ptr<MipsTargetLayout<Mips32ElELFType>> _targetLayout;
std::unique_ptr<MipsTargetRelocationHandler> _relocationHandler;
More information about the llvm-commits
mailing list