[ELF] Fix circular initialization bug.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 30 Jan 2013 20:36:56 +0000 (20:36 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 30 Jan 2013 20:36:56 +0000 (20:36 +0000)
llvm-svn: 173968

lld/include/lld/ReaderWriter/ELFTargetInfo.h
lld/lib/ReaderWriter/ELF/DefaultLayout.h

index 078ea1b..5a28ee5 100644 (file)
@@ -48,6 +48,7 @@ public:
 
   template <typename ELFT>
   lld::elf::TargetHandler<ELFT> &getTargetHandler() const {
+    assert(_targetHandler && "Got null TargetHandler!");
     return static_cast<lld::elf::TargetHandler<ELFT> &>(*_targetHandler.get());
   }
 
index 035600a..8b87a66 100644 (file)
@@ -142,7 +142,7 @@ public:
   typedef typename std::vector<AtomLayout *>::iterator AbsoluteAtomIterT;
 
   DefaultLayout(const ELFTargetInfo &ti)
-      : _targetInfo(ti), _targetHandler(ti.getTargetHandler<ELFT>()) {
+      : _targetInfo(ti) {
   }
 
   /// \brief Return the section order for a input section
@@ -258,7 +258,6 @@ private:
   std::vector<AtomLayout *> _absoluteAtoms;
   llvm::BumpPtrAllocator _allocator;
   const ELFTargetInfo &_targetInfo;
-  TargetHandler<ELFT> &_targetHandler;
 };
 
 template <class ELFT>