From d80f5165d1a4e6991b30444653cc806221e05e13 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 30 Apr 2015 21:10:06 +0000 Subject: [PATCH] Don't create a MCSectionData when we don't have to. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236260 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/ELFObjectWriter.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 98d6c77698a..2ace9843a77 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -226,8 +226,8 @@ class ELFObjectWriter : public MCObjectWriter { void CompressDebugSections(MCAssembler &Asm, MCAsmLayout &Layout); - const MCSectionELF *createSectionHeaderStringTable(MCAssembler &Asm); - const MCSectionELF *createStringTable(MCAssembler &Asm); + const MCSectionELF *createSectionHeaderStringTable(); + const MCSectionELF *createStringTable(MCContext &Ctx); void ExecutePostLayoutBinding(MCAssembler &Asm, const MCAsmLayout &Layout) override; @@ -1308,20 +1308,16 @@ void ELFObjectWriter::writeRelocations(const MCAssembler &Asm, } } -const MCSectionELF * -ELFObjectWriter::createSectionHeaderStringTable(MCAssembler &Asm) { +const MCSectionELF *ELFObjectWriter::createSectionHeaderStringTable() { const MCSectionELF *ShstrtabSection = SectionTable[ShstrtabIndex - 1]; - Asm.getOrCreateSectionData(*ShstrtabSection); ShStrTabBuilder.finalize(StringTableBuilder::ELF); OS << ShStrTabBuilder.data(); return ShstrtabSection; } -const MCSectionELF *ELFObjectWriter::createStringTable(MCAssembler &Asm) { - MCContext &Ctx = Asm.getContext(); +const MCSectionELF *ELFObjectWriter::createStringTable(MCContext &Ctx) { const MCSectionELF *StrtabSection = Ctx.getELFSection(".strtab", ELF::SHT_STRTAB, 0); - Asm.getOrCreateSectionData(*StrtabSection); StringTableIndex = addToSectionTable(StrtabSection); OS << StrTabBuilder.data(); return StrtabSection; @@ -1384,7 +1380,7 @@ void ELFObjectWriter::writeSectionHeader( MCAssembler &Asm, const MCAsmLayout &Layout, const SectionIndexMapTy &SectionIndexMap, const SectionOffsetsTy &SectionOffsets) { - const unsigned NumSections = Asm.size(); + const unsigned NumSections = SectionTable.size(); // Null section first. uint64_t FirstSectionSize = @@ -1497,14 +1493,14 @@ void ELFObjectWriter::WriteObject(MCAssembler &Asm, { uint64_t SecStart = OS.tell(); - const MCSectionELF *Sec = createStringTable(Asm); + const MCSectionELF *Sec = createStringTable(Ctx); uint64_t SecEnd = OS.tell(); SectionOffsets[Sec] = std::make_pair(SecStart, SecEnd); } { uint64_t SecStart = OS.tell(); - const MCSectionELF *Sec = createSectionHeaderStringTable(Asm); + const MCSectionELF *Sec = createSectionHeaderStringTable(); uint64_t SecEnd = OS.tell(); SectionOffsets[Sec] = std::make_pair(SecStart, SecEnd); } -- 2.34.1