[lld] r259444 - Always initialize Out<ELFT> members.
Sean Silva via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 2 22:15:04 PST 2016
On Mon, Feb 1, 2016 at 4:35 PM, Rui Ueyama via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: ruiu
> Date: Mon Feb 1 18:35:49 2016
> New Revision: 259444
>
> URL: http://llvm.org/viewvc/llvm-project?rev=259444&view=rev
> Log:
> Always initialize Out<ELFT> members.
>
> Instead of leave unused fields as is, set them to nullptr.
> Currnetly this is NFC, but if you call writeResults more than
> once, you should be able to see the difference.
>
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.
-- Sean Silva
>
> Modified:
> lld/trunk/ELF/Writer.cpp
>
> Modified: lld/trunk/ELF/Writer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=259444&r1=259443&r2=259444&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Writer.cpp (original)
> +++ lld/trunk/ELF/Writer.cpp Mon Feb 1 18:35:49 2016
> @@ -114,6 +114,8 @@ template <class ELFT> void elf2::writeRe
> StringTableSection<ELFT> StrTab(".strtab", false);
> if (!Config->StripAll)
> Out<ELFT>::StrTab = &StrTab;
> + else
> + Out<ELFT>::StrTab = nullptr;
> StringTableSection<ELFT> DynStrTab(".dynstr", true);
> Out<ELFT>::DynStrTab = &DynStrTab;
> GotSection<ELFT> Got;
> @@ -121,27 +123,37 @@ template <class ELFT> void elf2::writeRe
> GotPltSection<ELFT> GotPlt;
> if (Target->UseLazyBinding)
> Out<ELFT>::GotPlt = &GotPlt;
> + else
> + Out<ELFT>::GotPlt = nullptr;
> PltSection<ELFT> Plt;
> Out<ELFT>::Plt = &Plt;
> std::unique_ptr<SymbolTableSection<ELFT>> SymTab;
> if (!Config->StripAll) {
> SymTab.reset(new SymbolTableSection<ELFT>(*Symtab,
> *Out<ELFT>::StrTab));
> Out<ELFT>::SymTab = SymTab.get();
> + } else {
> + Out<ELFT>::SymTab = nullptr;
> }
> SymbolTableSection<ELFT> DynSymTab(*Symtab, *Out<ELFT>::DynStrTab);
> Out<ELFT>::DynSymTab = &DynSymTab;
> HashTableSection<ELFT> HashTab;
> if (Config->SysvHash)
> Out<ELFT>::HashTab = &HashTab;
> + else
> + Out<ELFT>::HashTab = nullptr;
> GnuHashTableSection<ELFT> GnuHashTab;
> if (Config->GnuHash)
> Out<ELFT>::GnuHashTab = &GnuHashTab;
> + else
> + Out<ELFT>::GnuHashTab = nullptr;
> bool IsRela = shouldUseRela<ELFT>();
> RelocationSection<ELFT> RelaDyn(IsRela ? ".rela.dyn" : ".rel.dyn",
> IsRela);
> Out<ELFT>::RelaDyn = &RelaDyn;
> RelocationSection<ELFT> RelaPlt(IsRela ? ".rela.plt" : ".rel.plt",
> IsRela);
> if (Target->UseLazyBinding)
> Out<ELFT>::RelaPlt = &RelaPlt;
> + else
> + Out<ELFT>::RelaPlt = nullptr;
> DynamicSection<ELFT> Dynamic(*Symtab);
> Out<ELFT>::Dynamic = &Dynamic;
> EhFrameHeader<ELFT> EhFrameHdr;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160202/cb593a7e/attachment.html>
More information about the llvm-commits
mailing list