diff options
Diffstat (limited to 'ELF/Writer.cpp')
-rw-r--r-- | ELF/Writer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ELF/Writer.cpp b/ELF/Writer.cpp index 1926f1bd7..ee9af7c51 100644 --- a/ELF/Writer.cpp +++ b/ELF/Writer.cpp @@ -1910,14 +1910,16 @@ template <class ELFT> void Writer<ELFT>::writeSections() { // In -r or -emit-relocs mode, write the relocation sections first as in // ELf_Rel targets we might find out that we need to modify the relocated // section while doing it. - for (OutputSection *Sec : OutputSections) + parallelForEach(OutputSections, [&](OutputSection *Sec) { if (Sec->Type == SHT_REL || Sec->Type == SHT_RELA) Sec->writeTo<ELFT>(Buf + Sec->Offset); + }); - for (OutputSection *Sec : OutputSections) + parallelForEach(OutputSections, [&](OutputSection *Sec) { if (Sec != Out::Opd && Sec != EhFrameHdr && Sec->Type != SHT_REL && Sec->Type != SHT_RELA) Sec->writeTo<ELFT>(Buf + Sec->Offset); + }); // The .eh_frame_hdr depends on .eh_frame section contents, therefore // it should be written after .eh_frame is written. |