<html>
  <head>
    
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Cool stuff! Thanks!<br>
    <br>
    <div class="moz-cite-prefix">On 04/01/2015 01:38 AM, Rui Ueyama
      wrote:<br>
    </div>
    <blockquote cite="mid:20150331223800.481DB1BEA78@llvm.org"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="MS Exchange Server version
        08.03.0377.000">
      <title>[lld] r233769 - ELF: Make findAbsoluteAtom return
        AtomLayout* instead of an iterator.</title>
      <!-- Converted from text/plain format -->
      <p><font size="2">Author: ruiu<br>
          Date: Tue Mar 31 17:37:59 2015<br>
          New Revision: 233769<br>
          <br>
          URL: <a moz-do-not-send="true"
            href="http://llvm.org/viewvc/llvm-project?rev=233769&view=rev">http://llvm.org/viewvc/llvm-project?rev=233769&view=rev</a><br>
          Log:<br>
          ELF: Make findAbsoluteAtom return AtomLayout* instead of an
          iterator.<br>
          <br>
          All calls of findAbsoluteAtoms seem a bit awkward because of
          the type<br>
          of the function. It semantically returns a pointer to an
          AtomLayout or<br>
          nothing, so I made the function return AtomLayout*.<br>
          <br>
          In this patch, I also expanded some "auto"s because their
          actual type<br>
          were not obvious in their contexts.<br>
          <br>
          Modified:<br>
              lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h<br>
              lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h<br>
              lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
              lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h<br>
              lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h<br>
             
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
             
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
              lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
              lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
              lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h
          Tue Mar 31 17:37:59 2015<br>
          @@ -66,9 +66,8 @@ template <class ELFT><br>
           void
          ARMExecutableWriter<ELFT>::finalizeDefaultAtomValues() {<br>
             // Finalize the atom values that are part of the parent.<br>
             ExecutableWriter<ELFT>::finalizeDefaultAtomValues();<br>
          -  auto gotAtomIter = _armLayout.findAbsoluteAtom(gotSymbol);<br>
          -  if (gotAtomIter != _armLayout.absoluteAtoms().end()) {<br>
          -    auto *gotAtom = *gotAtomIter;<br>
          +  AtomLayout *gotAtom =
          _armLayout.findAbsoluteAtom(gotSymbol);<br>
          +  if (gotAtom) {<br>
               if (auto gotpltSection =
          _armLayout.findOutputSection(".got.plt"))<br>
                 gotAtom->_virtualAddr =
          gotpltSection->virtualAddr();<br>
               else if (auto gotSection =
          _armLayout.findOutputSection(".got"))<br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h Tue
          Mar 31 17:37:59 2015<br>
          @@ -27,10 +27,8 @@ public:<br>
          <br>
             uint64_t getGOTSymAddr() {<br>
               if (!_gotSymAddr.hasValue()) {<br>
          -      auto gotAtomIter =
          this->findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
          -      _gotSymAddr = (gotAtomIter !=
          this->absoluteAtoms().end())<br>
          -                        ? (*gotAtomIter)->_virtualAddr<br>
          -                        : 0;<br>
          +      AtomLayout *gotAtom =
          this->findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
          +      _gotSymAddr = gotAtom ? gotAtom->_virtualAddr : 0;<br>
               }<br>
               return *_gotSymAddr;<br>
             }<br>
          <br>
          Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Tue Mar 31
          17:37:59 2015<br>
          @@ -204,10 +204,13 @@ public:<br>
             }<br>
          <br>
             /// \brief find a absolute atom given a name<br>
          -  AbsoluteAtomIterT findAbsoluteAtom(StringRef name) {<br>
          -    return std::find_if(<br>
          +  lld::AtomLayout *findAbsoluteAtom(StringRef name) {<br>
          +    auto iter = std::find_if(<br>
                   _absoluteAtoms.begin(), _absoluteAtoms.end(),<br>
                   [=](const AtomLayout *a) { return
          a->_atom->name() == name; });<br>
          +    if (iter == _absoluteAtoms.end())<br>
          +      return nullptr;<br>
          +    return *iter;<br>
             }<br>
          <br>
             // Output sections with the same name into a OutputSection<br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/DynamicLibraryWriter.h Tue
          Mar 31 17:37:59 2015<br>
          @@ -79,13 +79,14 @@ bool
          DynamicLibraryWriter<ELFT>::createI<br>
          <br>
           template <class ELFT><br>
           void
          DynamicLibraryWriter<ELFT>::finalizeDefaultAtomValues()
          {<br>
          -  auto underScoreEndAtomIter =
          this->_layout.findAbsoluteAtom("_end");<br>
          +  lld::AtomLayout *underScoreEndAtom =
          this->_layout.findAbsoluteAtom("_end");<br>
          +  assert(underScoreEndAtom);<br>
          <br>
             if (auto bssSection =
          this->_layout.findOutputSection(".bss")) {<br>
          -    (*underScoreEndAtomIter)->_virtualAddr =<br>
          +    underScoreEndAtom->_virtualAddr =<br>
                   bssSection->virtualAddr() +
          bssSection->memSize();<br>
             } else if (auto dataSection =
          this->_layout.findOutputSection(".data")) {<br>
          -    (*underScoreEndAtomIter)->_virtualAddr =<br>
          +    underScoreEndAtom->_virtualAddr =<br>
                   dataSection->virtualAddr() +
          dataSection->memSize();<br>
             }<br>
           }<br>
          <br>
          Modified: lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h Tue Mar
          31 17:37:59 2015<br>
          @@ -126,23 +126,26 @@ template <class ELFT> void
          ExecutableWri<br>
           /// created<br>
           template <class ELFT> void
          ExecutableWriter<ELFT>::finalizeDefaultAtomValues() {<br>
             OutputELFWriter<ELFT>::finalizeDefaultAtomValues();<br>
          -  auto bssStartAtomIter =
          this->_layout.findAbsoluteAtom("__bss_start");<br>
          -  auto bssEndAtomIter =
          this->_layout.findAbsoluteAtom("__bss_end");<br>
          -  auto underScoreEndAtomIter =
          this->_layout.findAbsoluteAtom("_end");<br>
          -  auto endAtomIter =
          this->_layout.findAbsoluteAtom("end");<br>
          +  AtomLayout *bssStartAtom =
          this->_layout.findAbsoluteAtom("__bss_start");<br>
          +  AtomLayout *bssEndAtom =
          this->_layout.findAbsoluteAtom("__bss_end");<br>
          +  AtomLayout *underScoreEndAtom =
          this->_layout.findAbsoluteAtom("_end");<br>
          +  AtomLayout *endAtom =
          this->_layout.findAbsoluteAtom("end");<br>
          +<br>
          +  assert((bssStartAtom || bssEndAtom || underScoreEndAtom ||
          endAtom) &&<br>
          +         "Unable to find the absolute atoms that have been
          added by lld");<br>
          <br>
             auto startEnd = [&](StringRef sym, StringRef sec) ->
          void {<br>
               std::string start = ("__" + sym + "_start").str();<br>
               std::string end = ("__" + sym + "_end").str();<br>
          -    auto s = this->_layout.findAbsoluteAtom(start);<br>
          -    auto e = this->_layout.findAbsoluteAtom(end);<br>
          -    auto section = this->_layout.findOutputSection(sec);<br>
          +    AtomLayout *s = this->_layout.findAbsoluteAtom(start);<br>
          +    AtomLayout *e = this->_layout.findAbsoluteAtom(end);<br>
          +    OutputSection<ELFT> *section =
          this->_layout.findOutputSection(sec);<br>
               if (section) {<br>
          -      (*s)->_virtualAddr = section->virtualAddr();<br>
          -      (*e)->_virtualAddr = section->virtualAddr() +
          section->memSize();<br>
          +      s->_virtualAddr = section->virtualAddr();<br>
          +      e->_virtualAddr = section->virtualAddr() +
          section->memSize();<br>
               } else {<br>
          -      (*s)->_virtualAddr = 0;<br>
          -      (*e)->_virtualAddr = 0;<br>
          +      s->_virtualAddr = 0;<br>
          +      e->_virtualAddr = 0;<br>
               }<br>
             };<br>
          <br>
          @@ -154,25 +157,19 @@ template <class ELFT> void
          ExecutableWri<br>
               startEnd("rel_iplt", ".rel.plt");<br>
             startEnd("fini_array", ".fini_array");<br>
          <br>
          -  assert(!(bssStartAtomIter ==
          this->_layout.absoluteAtoms().end() ||<br>
          -           bssEndAtomIter ==
          this->_layout.absoluteAtoms().end() ||<br>
          -           underScoreEndAtomIter ==
          this->_layout.absoluteAtoms().end() ||<br>
          -           endAtomIter ==
          this->_layout.absoluteAtoms().end()) &&<br>
          -         "Unable to find the absolute atoms that have been
          added by lld");<br>
          -<br>
             auto bssSection =
          this->_layout.findOutputSection(".bss");<br>
          <br>
             // If we don't find a bss section, then don't set these
          values<br>
             if (bssSection) {<br>
          -    (*bssStartAtomIter)->_virtualAddr =
          bssSection->virtualAddr();<br>
          -    (*bssEndAtomIter)->_virtualAddr =<br>
          +    bssStartAtom->_virtualAddr =
          bssSection->virtualAddr();<br>
          +    bssEndAtom->_virtualAddr =<br>
                   bssSection->virtualAddr() +
          bssSection->memSize();<br>
          -    (*underScoreEndAtomIter)->_virtualAddr =
          (*bssEndAtomIter)->_virtualAddr;<br>
          -    (*endAtomIter)->_virtualAddr =
          (*bssEndAtomIter)->_virtualAddr;<br>
          +    underScoreEndAtom->_virtualAddr =
          bssEndAtom->_virtualAddr;<br>
          +    endAtom->_virtualAddr = bssEndAtom->_virtualAddr;<br>
             } else if (auto dataSection =
          this->_layout.findOutputSection(".data")) {<br>
          -    (*underScoreEndAtomIter)->_virtualAddr =<br>
          +    underScoreEndAtom->_virtualAddr =<br>
                   dataSection->virtualAddr() +
          dataSection->memSize();<br>
          -    (*endAtomIter)->_virtualAddr =
          (*underScoreEndAtomIter)->_virtualAddr;<br>
          +    endAtom->_virtualAddr =
          underScoreEndAtom->_virtualAddr;<br>
             }<br>
           }<br>
          <br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          ---
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h
          (original)<br>
          +++
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h
          Tue Mar 31 17:37:59 2015<br>
          @@ -70,9 +70,8 @@ template <class ELFT><br>
           void
          HexagonExecutableWriter<ELFT>::finalizeDefaultAtomValues()
          {<br>
             // Finalize the atom values that are part of the parent.<br>
             ExecutableWriter<ELFT>::finalizeDefaultAtomValues();<br>
          -  auto sdabaseAtomIter =
          _targetLayout.findAbsoluteAtom("_SDA_BASE_");<br>
          -  (*sdabaseAtomIter)->_virtualAddr =<br>
          -      _targetLayout.getSDataSection()->virtualAddr();<br>
          +  AtomLayout *sdabaseAtom =
          _targetLayout.findAbsoluteAtom("_SDA_BASE_");<br>
          +  sdabaseAtom->_virtualAddr =
          _targetLayout.getSDataSection()->virtualAddr();<br>
             if (_ctx.isDynamic())<br>
               finalizeHexagonRuntimeAtomValues(_targetLayout);<br>
           }<br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          ---
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
          (original)<br>
          +++
          lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
          Tue Mar 31 17:37:59 2015<br>
          @@ -83,10 +83,8 @@ public:<br>
             }<br>
          <br>
             uint64_t getGOTSymAddr() {<br>
          -    if (!_gotSymAtom.hasValue()) {<br>
          -      auto iter =
          this->findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
          -      _gotSymAtom = (iter == this->absoluteAtoms().end())
          ? nullptr : *iter;<br>
          -    }<br>
          +    if (!_gotSymAtom.hasValue())<br>
          +      _gotSymAtom =
          this->findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
               if (*_gotSymAtom)<br>
                 return (*_gotSymAtom)->_virtualAddr;<br>
               return 0;<br>
          @@ -131,18 +129,18 @@ private:<br>
          <br>
           template <class ELFT><br>
           void
          finalizeHexagonRuntimeAtomValues(HexagonTargetLayout<ELFT>
          &layout) {<br>
          -  auto gotAtomIter =
          layout.findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
          -  auto gotpltSection = layout.findOutputSection(".got.plt");<br>
          +  AtomLayout *gotAtom =
          layout.findAbsoluteAtom("_GLOBAL_OFFSET_TABLE_");<br>
          +  OutputSection<ELFT> *gotpltSection =
          layout.findOutputSection(".got.plt");<br>
             if (gotpltSection)<br>
          -    (*gotAtomIter)->_virtualAddr =
          gotpltSection->virtualAddr();<br>
          +    gotAtom->_virtualAddr =
          gotpltSection->virtualAddr();<br>
             else<br>
          -    (*gotAtomIter)->_virtualAddr = 0;<br>
          -  auto dynamicAtomIter = layout.findAbsoluteAtom("_DYNAMIC");<br>
          -  auto dynamicSection = layout.findOutputSection(".dynamic");<br>
          +    gotAtom->_virtualAddr = 0;<br>
          +  AtomLayout *dynamicAtom =
          layout.findAbsoluteAtom("_DYNAMIC");<br>
          +  OutputSection<ELFT> *dynamicSection =
          layout.findOutputSection(".dynamic");<br>
             if (dynamicSection)<br>
          -    (*dynamicAtomIter)->_virtualAddr =
          dynamicSection->virtualAddr();<br>
          +    dynamicAtom->_virtualAddr =
          dynamicSection->virtualAddr();<br>
             else<br>
          -    (*dynamicAtomIter)->_virtualAddr = 0;<br>
          +    dynamicAtom->_virtualAddr = 0;<br>
           }<br>
          <br>
           } // end namespace elf<br>
          <br>
          Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h Tue
          Mar 31 17:37:59 2015<br>
          @@ -68,9 +68,9 @@ private:<br>
             MipsTargetLayout<ELFT> &_targetLayout;<br>
          <br>
             void setAtomValue(StringRef name, uint64_t value) {<br>
          -    auto atom = _targetLayout.findAbsoluteAtom(name);<br>
          -    assert(atom != _targetLayout.absoluteAtoms().end());<br>
          -    (*atom)->_virtualAddr = value;<br>
          +    AtomLayout *atom = _targetLayout.findAbsoluteAtom(name);<br>
          +    assert(atom);<br>
          +    atom->_virtualAddr = value;<br>
             }<br>
           };<br>
          <br>
          <br>
          Modified:
          lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
          Tue Mar 31 17:37:59 2015<br>
          @@ -48,19 +48,15 @@ public:<br>
          <br>
             /// \brief Get '_gp' symbol atom layout.<br>
             AtomLayout *getGP() {<br>
          -    if (!_gpAtom.hasValue()) {<br>
          -      auto atom = this->findAbsoluteAtom("_gp");<br>
          -      _gpAtom = atom != this->absoluteAtoms().end() ?
          *atom : nullptr;<br>
          -    }<br>
          +    if (!_gpAtom.hasValue())<br>
          +      _gpAtom = this->findAbsoluteAtom("_gp");<br>
               return *_gpAtom;<br>
             }<br>
          <br>
             /// \brief Get '_gp_disp' symbol atom layout.<br>
             AtomLayout *getGPDisp() {<br>
          -    if (!_gpDispAtom.hasValue()) {<br>
          -      auto atom = this->findAbsoluteAtom("_gp_disp");<br>
          -      _gpDispAtom = atom != this->absoluteAtoms().end() ?
          *atom : nullptr;<br>
          -    }<br>
          +    if (!_gpDispAtom.hasValue())<br>
          +      _gpDispAtom = this->findAbsoluteAtom("_gp_disp");<br>
               return *_gpDispAtom;<br>
             }<br>
          <br>
          <br>
          Modified: lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
          URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=233769&r1=233768&r2=233769&view=diff">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=233769&r1=233768&r2=233769&view=diff</a><br>
==============================================================================<br>
          --- lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h
          (original)<br>
          +++ lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h Tue Mar
          31 17:37:59 2015<br>
          @@ -384,8 +384,9 @@ void
          OutputELFWriter<ELFT>::finalizeDefa<br>
             for (auto &sym : symbols) {<br>
               uint64_t res =<br>
                  
          _ctx.linkerScriptSema().getLinkerScriptExprValue(sym.getKey());<br>
          -    auto a = _layout.findAbsoluteAtom(sym.getKey());<br>
          -    (*a)->_virtualAddr = res;<br>
          +    AtomLayout *a = _layout.findAbsoluteAtom(sym.getKey());<br>
          +    assert(a);<br>
          +    a->_virtualAddr = res;<br>
             }<br>
           }<br>
          <br>
          <br>
          <br>
          _______________________________________________<br>
          llvm-commits mailing list<br>
          <a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
          <a moz-do-not-send="true"
            href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
        </font>
      </p>
    </blockquote>
    <br>
  </body>
</html>