summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Writer.cpp12
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;
OpenPOWER on IntegriCloud