diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 1926f1bd7b00..ee9af7c51213 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -1910,14 +1910,16 @@ template void Writer::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(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(Buf + Sec->Offset); + }); // The .eh_frame_hdr depends on .eh_frame section contents, therefore // it should be written after .eh_frame is written.