Don't create a MCSectionData when we don't have to.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 30 Apr 2015 21:10:06 +0000 (21:10 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 30 Apr 2015 21:10:06 +0000 (21:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236260 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp

index 98d6c77698ad91956d2716260346e42a0f2206ef..2ace9843a77de5876caa3feea0edac95cd30a037 100644 (file)
@@ -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);
   }