1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

Don't create a MCSectionData when we don't have to.

llvm-svn: 236260
This commit is contained in:
Rafael Espindola 2015-04-30 21:10:06 +00:00
parent 2fddd75212
commit 5eb4acbada

View 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);
}