diff options
-rw-r--r-- | lld/ELF/Writer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index c67567c7b26..24e5fb458e3 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -114,6 +114,8 @@ template <class ELFT> void elf2::writeResult(SymbolTable<ELFT> *Symtab) { 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::writeResult(SymbolTable<ELFT> *Symtab) { 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; |