aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-05-21 19:54:44 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-05-21 19:54:44 +0000
commit883dec058fe9037ae779ae608b027ee33e852b7b (patch)
treedfca6d09b7fbe1002e3fef3fa3cd7c1c0f183901 /llvm/lib/MC/ELFObjectWriter.cpp
parent1aa20fcb41ea4d940aca67135fe6200ad568f867 (diff)
downloadllvm-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.cpp19
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();