forked from OSchip/llvm-project
[ELF] - Refactor of Writer<ELFT>::forEachRelSec.
There is no need to scan over all input sections for relocatable output. As we do not process or scan relocations anyways. Patch moves check for Config->Relocatable out to avoid that and also removes excessive check for isa<EhInputSection> from first for loop. It is excessive because we handle all of them in a second for loop below. That all allowed to simplify code. Differential revision: https://reviews.llvm.org/D37746 llvm-svn: 313127
This commit is contained in:
parent
2b6bfda561
commit
cb888a620d
|
@ -880,24 +880,16 @@ template <class ELFT> static void sortBySymbolsOrder() {
|
|||
|
||||
template <class ELFT>
|
||||
void Writer<ELFT>::forEachRelSec(std::function<void(InputSectionBase &)> Fn) {
|
||||
for (InputSectionBase *IS : InputSections) {
|
||||
if (!IS->Live)
|
||||
continue;
|
||||
// Scan all relocations. Each relocation goes through a series
|
||||
// of tests to determine if it needs special treatment, such as
|
||||
// creating GOT, PLT, copy relocations, etc.
|
||||
// Note that relocations for non-alloc sections are directly
|
||||
// processed by InputSection::relocateNonAlloc.
|
||||
if (!(IS->Flags & SHF_ALLOC))
|
||||
continue;
|
||||
if (isa<InputSection>(IS) || isa<EhInputSection>(IS))
|
||||
for (InputSectionBase *IS : InputSections)
|
||||
if (IS->Live && isa<InputSection>(IS) && (IS->Flags & SHF_ALLOC))
|
||||
Fn(*IS);
|
||||
}
|
||||
|
||||
if (!Config->Relocatable) {
|
||||
for (EhInputSection *ES : In<ELFT>::EhFrame->Sections)
|
||||
Fn(*ES);
|
||||
}
|
||||
}
|
||||
|
||||
template <class ELFT> void Writer<ELFT>::createSections() {
|
||||
|
@ -1280,6 +1272,7 @@ template <class ELFT> void Writer<ELFT>::finalizeSections() {
|
|||
|
||||
// Scan relocations. This must be done after every symbol is declared so that
|
||||
// we can correctly decide if a dynamic relocation is needed.
|
||||
if (!Config->Relocatable)
|
||||
forEachRelSec(scanRelocations<ELFT>);
|
||||
|
||||
if (InX::Plt && !InX::Plt->empty())
|
||||
|
|
Loading…
Reference in New Issue