<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 1, 2016 at 4:35 PM, Rui Ueyama via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ruiu<br>
Date: Mon Feb  1 18:35:49 2016<br>
New Revision: 259444<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=259444&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=259444&view=rev</a><br>
Log:<br>
Always initialize Out<ELFT> members.<br>
<br>
Instead of leave unused fields as is, set them to nullptr.<br>
Currnetly this is NFC, but if you call writeResults more than<br>
once, you should be able to see the difference.<br></blockquote><div><br></div><div>This might be simpler if Out<ELFT> were a struct. Then you can just do `Out<ELFT> = OutTy<ELFT>();` to reset it in one statement. OutTy would just be a struct with appropriate default member initializers.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Modified:<br>
    lld/trunk/ELF/Writer.cpp<br>
<br>
Modified: lld/trunk/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=259444&r1=259443&r2=259444&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=259444&r1=259443&r2=259444&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Writer.cpp (original)<br>
+++ lld/trunk/ELF/Writer.cpp Mon Feb  1 18:35:49 2016<br>
@@ -114,6 +114,8 @@ template <class ELFT> void elf2::writeRe<br>
   StringTableSection<ELFT> StrTab(".strtab", false);<br>
   if (!Config->StripAll)<br>
     Out<ELFT>::StrTab = &StrTab;<br>
+  else<br>
+    Out<ELFT>::StrTab = nullptr;<br>
   StringTableSection<ELFT> DynStrTab(".dynstr", true);<br>
   Out<ELFT>::DynStrTab = &DynStrTab;<br>
   GotSection<ELFT> Got;<br>
@@ -121,27 +123,37 @@ template <class ELFT> void elf2::writeRe<br>
   GotPltSection<ELFT> GotPlt;<br>
   if (Target->UseLazyBinding)<br>
     Out<ELFT>::GotPlt = &GotPlt;<br>
+  else<br>
+    Out<ELFT>::GotPlt = nullptr;<br>
   PltSection<ELFT> Plt;<br>
   Out<ELFT>::Plt = &Plt;<br>
   std::unique_ptr<SymbolTableSection<ELFT>> SymTab;<br>
   if (!Config->StripAll) {<br>
     SymTab.reset(new SymbolTableSection<ELFT>(*Symtab, *Out<ELFT>::StrTab));<br>
     Out<ELFT>::SymTab = SymTab.get();<br>
+  } else {<br>
+    Out<ELFT>::SymTab = nullptr;<br>
   }<br>
   SymbolTableSection<ELFT> DynSymTab(*Symtab, *Out<ELFT>::DynStrTab);<br>
   Out<ELFT>::DynSymTab = &DynSymTab;<br>
   HashTableSection<ELFT> HashTab;<br>
   if (Config->SysvHash)<br>
     Out<ELFT>::HashTab = &HashTab;<br>
+  else<br>
+    Out<ELFT>::HashTab = nullptr;<br>
   GnuHashTableSection<ELFT> GnuHashTab;<br>
   if (Config->GnuHash)<br>
     Out<ELFT>::GnuHashTab = &GnuHashTab;<br>
+  else<br>
+    Out<ELFT>::GnuHashTab = nullptr;<br>
   bool IsRela = shouldUseRela<ELFT>();<br>
   RelocationSection<ELFT> RelaDyn(IsRela ? ".rela.dyn" : ".rel.dyn", IsRela);<br>
   Out<ELFT>::RelaDyn = &RelaDyn;<br>
   RelocationSection<ELFT> RelaPlt(IsRela ? ".rela.plt" : ".rel.plt", IsRela);<br>
   if (Target->UseLazyBinding)<br>
     Out<ELFT>::RelaPlt = &RelaPlt;<br>
+  else<br>
+    Out<ELFT>::RelaPlt = nullptr;<br>
   DynamicSection<ELFT> Dynamic(*Symtab);<br>
   Out<ELFT>::Dynamic = &Dynamic;<br>
   EhFrameHeader<ELFT> EhFrameHdr;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>