diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-05-21 19:54:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-05-21 19:54:44 +0000 |
commit | 883dec058fe9037ae779ae608b027ee33e852b7b (patch) | |
tree | dfca6d09b7fbe1002e3fef3fa3cd7c1c0f183901 /llvm/lib/MC/ELFObjectWriter.cpp | |
parent | 1aa20fcb41ea4d940aca67135fe6200ad568f867 (diff) | |
download | llvm-883dec058fe9037ae779ae608b027ee33e852b7b.zip llvm-883dec058fe9037ae779ae608b027ee33e852b7b.tar.gz llvm-883dec058fe9037ae779ae608b027ee33e852b7b.tar.bz2 |
writeSymbolTable now only needs a MCContext.
It used to use an MCAssembler just to record the alignment of the sections.
llvm-svn: 237944
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index ad3debf..7437aff 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -193,7 +193,7 @@ class ELFObjectWriter : public MCObjectWriter { typedef std::map<const MCSectionELF *, std::pair<uint64_t, uint64_t>> SectionOffsetsTy; - void WriteSymbolTable(MCAssembler &Asm, const MCAsmLayout &Layout, + void writeSymbolTable(MCContext &Ctx, const MCAsmLayout &Layout, SectionOffsetsTy &SectionOffsets); bool shouldRelocateWithSymbol(const MCAssembler &Asm, @@ -538,19 +538,15 @@ void ELFObjectWriter::WriteSymbol(SymbolTableWriter &Writer, ELFSymbolData &MSD, MSD.SectionIndex, IsReserved); } -void ELFObjectWriter::WriteSymbolTable(MCAssembler &Asm, +void ELFObjectWriter::writeSymbolTable(MCContext &Ctx, const MCAsmLayout &Layout, SectionOffsetsTy &SectionOffsets) { - - MCContext &Ctx = Asm.getContext(); - unsigned EntrySize = is64Bit() ? ELF::SYMENTRY_SIZE64 : ELF::SYMENTRY_SIZE32; // Symbol table MCSectionELF *SymtabSection = Ctx.getELFSection(".symtab", ELF::SHT_SYMTAB, 0, EntrySize, ""); - MCSectionData &SymtabSD = Asm.getOrCreateSectionData(*SymtabSection); - SymtabSD.setAlignment(is64Bit() ? 8 : 4); + SymtabSection->setAlignment(is64Bit() ? 8 : 4); SymbolTableIndex = addToSectionTable(SymtabSection); // The string table must be emitted first because we need the index @@ -558,7 +554,8 @@ void ELFObjectWriter::WriteSymbolTable(MCAssembler &Asm, SymbolTableWriter Writer(*this, is64Bit()); - uint64_t Padding = OffsetToAlignment(OS.tell(), SymtabSD.getAlignment()); + uint64_t Padding = + OffsetToAlignment(OS.tell(), SymtabSection->getAlignment()); WriteZeros(Padding); uint64_t SecStart = OS.tell(); @@ -609,9 +606,7 @@ void ELFObjectWriter::WriteSymbolTable(MCAssembler &Asm, MCSectionELF *SymtabShndxSection = Ctx.getELFSection(".symtab_shndxr", ELF::SHT_SYMTAB_SHNDX, 0, 4, ""); addToSectionTable(SymtabShndxSection); - MCSectionData *SymtabShndxSD = - &Asm.getOrCreateSectionData(*SymtabShndxSection); - SymtabShndxSD->setAlignment(4); + SymtabShndxSection->setAlignment(4); for (uint32_t Index : ShndxIndexes) write(Index); SecEnd = OS.tell(); @@ -1412,7 +1407,7 @@ void ELFObjectWriter::WriteObject(MCAssembler &Asm, ComputedSymtab = true; } - WriteSymbolTable(Asm, Layout, SectionOffsets); + writeSymbolTable(Ctx, Layout, SectionOffsets); { uint64_t SecStart = OS.tell(); |