diff options
Diffstat (limited to 'lld/ELF/Writer.cpp')
-rw-r--r-- | lld/ELF/Writer.cpp | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 5458b872cc2..d5b61a6da92 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -98,8 +98,6 @@ template <class ELFT> void lld::elf2::writeResult(SymbolTable<ELFT> *Symtab) { Out<ELFT>::Bss = &Bss; GotSection<ELFT> Got; Out<ELFT>::Got = &Got; - GotPltSection<ELFT> GotPlt; - Out<ELFT>::GotPlt = &GotPlt; PltSection<ELFT> Plt; Out<ELFT>::Plt = &Plt; SymbolTableSection<ELFT> SymTab(*Symtab, *Out<ELFT>::StrTab); @@ -108,11 +106,8 @@ template <class ELFT> void lld::elf2::writeResult(SymbolTable<ELFT> *Symtab) { Out<ELFT>::DynSymTab = &DynSymTab; HashTableSection<ELFT> HashTab; Out<ELFT>::HashTab = &HashTab; - bool IsRela = Symtab->shouldUseRela(); - RelocationSection<ELFT> RelaDyn(IsRela ? ".rela.dyn" : ".rel.dyn", IsRela); + RelocationSection<ELFT> RelaDyn(Symtab->shouldUseRela()); Out<ELFT>::RelaDyn = &RelaDyn; - RelocationSection<ELFT> RelaPlt(IsRela ? ".rela.plt" : ".rel.plt", IsRela); - Out<ELFT>::RelaPlt = &RelaPlt; DynamicSection<ELFT> Dynamic(*Symtab); Out<ELFT>::Dynamic = &Dynamic; @@ -192,8 +187,8 @@ void Writer<ELFT>::scanRelocs( if (Body->isInPlt()) continue; Out<ELFT>::Plt->addEntry(Body); - Out<ELFT>::GotPlt->addEntry(Body); - } else if (Target->relocNeedsGot(Type, *Body)) { + } + if (Target->relocNeedsGot(Type, *Body)) { if (Body->isInGot()) continue; Out<ELFT>::Got->addEntry(Body); @@ -205,10 +200,7 @@ void Writer<ELFT>::scanRelocs( continue; if (CBP) Body->setUsedInDynamicReloc(); - if (Body && Target->relocNeedsPlt(Type, *Body)) - Out<ELFT>::RelaPlt->addReloc({ C, RI }); - else - Out<ELFT>::RelaDyn->addReloc({ C, RI }); + Out<ELFT>::RelaDyn->addReloc({C, RI}); } } @@ -455,13 +447,9 @@ template <class ELFT> void Writer<ELFT>::createSections() { OutputSections.push_back(Out<ELFT>::DynStrTab); if (Out<ELFT>::RelaDyn->hasRelocs()) OutputSections.push_back(Out<ELFT>::RelaDyn); - if (Out<ELFT>::RelaPlt->hasRelocs()) - OutputSections.push_back(Out<ELFT>::RelaPlt); } if (!Out<ELFT>::Got->empty()) OutputSections.push_back(Out<ELFT>::Got); - if (!Out<ELFT>::GotPlt->empty()) - OutputSections.push_back(Out<ELFT>::GotPlt); if (!Out<ELFT>::Plt->empty()) OutputSections.push_back(Out<ELFT>::Plt); |