[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 &registry,
@@ -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 &registry,

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