diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-05-28 20:00:13 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-05-28 20:00:13 +0000 |
commit | 0cbea2997c41ab4bdf6453d256251953cd4d4be6 (patch) | |
tree | d3964672c740f0db1782a7ce900d3a2af75b8fad /llvm/lib/MC/ELFObjectWriter.cpp | |
parent | 386aafa6e3f82f3d41dcdea0ef7461590a1b634a (diff) | |
download | llvm-0cbea2997c41ab4bdf6453d256251953cd4d4be6.zip llvm-0cbea2997c41ab4bdf6453d256251953cd4d4be6.tar.gz llvm-0cbea2997c41ab4bdf6453d256251953cd4d4be6.tar.bz2 |
Merge redundant loops. NFC.
llvm-svn: 238471
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index 639f8e7..e5a5996 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -935,6 +935,11 @@ void ELFObjectWriter::computeSymbolTable( StrTabBuilder.finalize(StringTableBuilder::ELF); + for (const std::string &Name : FileNames) + Writer.writeSymbol(StrTabBuilder.getOffset(Name), + ELF::STT_FILE | ELF::STB_LOCAL, 0, 0, ELF::STV_DEFAULT, + ELF::SHN_ABS, true); + // Symbols are required to be in lexicographic order. array_pod_sort(LocalSymbolData.begin(), LocalSymbolData.end()); array_pod_sort(ExternalSymbolData.begin(), ExternalSymbolData.end()); @@ -949,28 +954,15 @@ void ELFObjectWriter::computeSymbolTable( ? 0 : StrTabBuilder.getOffset(MSD.Name); MSD.Symbol->setIndex(Index++); - } - for (ELFSymbolData &MSD : ExternalSymbolData) { - MSD.StringIndex = StrTabBuilder.getOffset(MSD.Name); - MSD.Symbol->setIndex(Index++); - } - for (ELFSymbolData &MSD : UndefinedSymbolData) { - MSD.StringIndex = StrTabBuilder.getOffset(MSD.Name); - MSD.Symbol->setIndex(Index++); + WriteSymbol(Writer, MSD, Layout); } - for (const std::string &Name : FileNames) - Writer.writeSymbol(StrTabBuilder.getOffset(Name), - ELF::STT_FILE | ELF::STB_LOCAL, 0, 0, ELF::STV_DEFAULT, - ELF::SHN_ABS, true); - // Write the symbol table entries. - LastLocalSymbolIndex = FileNames.size() + LocalSymbolData.size() + 1; - - for (ELFSymbolData &MSD : LocalSymbolData) - WriteSymbol(Writer, MSD, Layout); + LastLocalSymbolIndex = Index; for (ELFSymbolData &MSD : ExternalSymbolData) { + MSD.StringIndex = StrTabBuilder.getOffset(MSD.Name); + MSD.Symbol->setIndex(Index++); MCSymbolData &Data = MSD.Symbol->getData(); assert(((Data.getFlags() & ELF_STB_Global) || (Data.getFlags() & ELF_STB_Weak)) && @@ -978,8 +970,9 @@ void ELFObjectWriter::computeSymbolTable( WriteSymbol(Writer, MSD, Layout); assert(MCELF::GetBinding(Data) != ELF::STB_LOCAL); } - for (ELFSymbolData &MSD : UndefinedSymbolData) { + MSD.StringIndex = StrTabBuilder.getOffset(MSD.Name); + MSD.Symbol->setIndex(Index++); MCSymbolData &Data = MSD.Symbol->getData(); WriteSymbol(Writer, MSD, Layout); assert(MCELF::GetBinding(Data) != ELF::STB_LOCAL); |