From edc3201b11bb7fcf9f8ccdfb72be506c41849978 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Tue, 23 Oct 2018 21:17:00 +0000 Subject: [PATCH] Simplify. NFC. A higher order function `applySyntehtic` can be replaced with a simpler function. llvm-svn: 345081 --- lld/ELF/Writer.cpp | 63 +++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 729a666..3fcf703 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -1461,11 +1461,9 @@ template void Writer::resolveShfLinkOrder() { } } -static void applySynthetic(const std::vector &Sections, - llvm::function_ref Fn) { - for (SyntheticSection *SS : Sections) - if (SS && SS->getParent() && !SS->empty()) - Fn(SS); +static void finalizeSynthetic(SyntheticSection *Sec) { + if (Sec && !Sec->empty() && Sec->getParent()) + Sec->finalizeContents(); } // In order to allow users to manipulate linker-synthesized sections, @@ -1567,8 +1565,7 @@ template void Writer::finalizeSections() { // This responsible for splitting up .eh_frame section into // pieces. The relocation scan uses those pieces, so this has to be // earlier. - applySynthetic({In.EhFrame}, - [](SyntheticSection *SS) { SS->finalizeContents(); }); + finalizeSynthetic(In.EhFrame); for (Symbol *S : Symtab->getSymbols()) S->IsPreemptible |= computeIsPreemptible(*S); @@ -1664,31 +1661,30 @@ template void Writer::finalizeSections() { // Dynamic section must be the last one in this list and dynamic // symbol table section (DynSymTab) must be the first one. - applySynthetic({In.DynSymTab, - In.Bss, - In.BssRelRo, - In.GnuHashTab, - In.HashTab, - In.SymTabShndx, - In.ShStrTab, - In.StrTab, - In.VerDef, - In.DynStrTab, - In.Got, - In.MipsGot, - In.IgotPlt, - In.GotPlt, - In.RelaDyn, - In.RelrDyn, - In.RelaIplt, - In.RelaPlt, - In.Plt, - In.Iplt, - In.EhFrameHdr, - InX::VerSym, - InX::VerNeed, - In.Dynamic}, - [](SyntheticSection *SS) { SS->finalizeContents(); }); + finalizeSynthetic(In.DynSymTab); + finalizeSynthetic(In.Bss); + finalizeSynthetic(In.BssRelRo); + finalizeSynthetic(In.GnuHashTab); + finalizeSynthetic(In.HashTab); + finalizeSynthetic(In.SymTabShndx); + finalizeSynthetic(In.ShStrTab); + finalizeSynthetic(In.StrTab); + finalizeSynthetic(In.VerDef); + finalizeSynthetic(In.DynStrTab); + finalizeSynthetic(In.Got); + finalizeSynthetic(In.MipsGot); + finalizeSynthetic(In.IgotPlt); + finalizeSynthetic(In.GotPlt); + finalizeSynthetic(In.RelaDyn); + finalizeSynthetic(In.RelrDyn); + finalizeSynthetic(In.RelaIplt); + finalizeSynthetic(In.RelaPlt); + finalizeSynthetic(In.Plt); + finalizeSynthetic(In.Iplt); + finalizeSynthetic(In.EhFrameHdr); + finalizeSynthetic(InX::VerSym); + finalizeSynthetic(InX::VerNeed); + finalizeSynthetic(In.Dynamic); if (!Script->HasSectionsCommand && !Config->Relocatable) fixSectionAlignments(); @@ -1726,8 +1722,7 @@ template void Writer::finalizeSections() { } // createThunks may have added local symbols to the static symbol table - applySynthetic({In.SymTab}, - [](SyntheticSection *SS) { SS->finalizeContents(); }); + finalizeSynthetic(In.SymTab); // Fill other section headers. The dynamic table is finalized // at the end because some tags like RELSZ depend on result -- 2.7.4