mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-30 00:32:53 +00:00
Refactor padding writing into a helper function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239174 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fffd691439
commit
aa4466db93
@ -133,6 +133,8 @@ class ELFObjectWriter : public MCObjectWriter {
|
||||
return TargetObjectWriter->GetRelocType(Target, Fixup, IsPCRel);
|
||||
}
|
||||
|
||||
void align(unsigned Alignment);
|
||||
|
||||
public:
|
||||
ELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
|
||||
bool IsLittleEndian)
|
||||
@ -231,6 +233,11 @@ class ELFObjectWriter : public MCObjectWriter {
|
||||
};
|
||||
}
|
||||
|
||||
void ELFObjectWriter::align(unsigned Alignment) {
|
||||
uint64_t Padding = OffsetToAlignment(OS.tell(), Alignment);
|
||||
WriteZeros(Padding);
|
||||
}
|
||||
|
||||
unsigned ELFObjectWriter::addToSectionTable(const MCSectionELF *Sec) {
|
||||
SectionTable.push_back(Sec);
|
||||
StrTabBuilder.add(Sec->getSectionName());
|
||||
@ -758,10 +765,7 @@ void ELFObjectWriter::computeSymbolTable(
|
||||
SymtabSection->setAlignment(is64Bit() ? 8 : 4);
|
||||
SymbolTableIndex = addToSectionTable(SymtabSection);
|
||||
|
||||
uint64_t Padding =
|
||||
OffsetToAlignment(OS.tell(), SymtabSection->getAlignment());
|
||||
WriteZeros(Padding);
|
||||
|
||||
align(SymtabSection->getAlignment());
|
||||
uint64_t SecStart = OS.tell();
|
||||
|
||||
// The first entry is the undefined symbol entry.
|
||||
@ -1196,8 +1200,7 @@ void ELFObjectWriter::writeObject(MCAssembler &Asm,
|
||||
for (MCSection &Sec : Asm) {
|
||||
MCSectionELF &Section = static_cast<MCSectionELF &>(Sec);
|
||||
|
||||
uint64_t Padding = OffsetToAlignment(OS.tell(), Section.getAlignment());
|
||||
WriteZeros(Padding);
|
||||
align(Section.getAlignment());
|
||||
|
||||
// Remember the offset into the file for this section.
|
||||
uint64_t SecStart = OS.tell();
|
||||
@ -1234,8 +1237,7 @@ void ELFObjectWriter::writeObject(MCAssembler &Asm,
|
||||
}
|
||||
|
||||
for (MCSectionELF *Group : Groups) {
|
||||
uint64_t Padding = OffsetToAlignment(OS.tell(), Group->getAlignment());
|
||||
WriteZeros(Padding);
|
||||
align(Group->getAlignment());
|
||||
|
||||
// Remember the offset into the file for this section.
|
||||
uint64_t SecStart = OS.tell();
|
||||
@ -1256,8 +1258,7 @@ void ELFObjectWriter::writeObject(MCAssembler &Asm,
|
||||
computeSymbolTable(Asm, Layout, SectionIndexMap, RevGroupMap, SectionOffsets);
|
||||
|
||||
for (MCSectionELF *RelSection : Relocations) {
|
||||
uint64_t Padding = OffsetToAlignment(OS.tell(), RelSection->getAlignment());
|
||||
WriteZeros(Padding);
|
||||
align(RelSection->getAlignment());
|
||||
|
||||
// Remember the offset into the file for this section.
|
||||
uint64_t SecStart = OS.tell();
|
||||
@ -1276,8 +1277,7 @@ void ELFObjectWriter::writeObject(MCAssembler &Asm,
|
||||
}
|
||||
|
||||
uint64_t NaturalAlignment = is64Bit() ? 8 : 4;
|
||||
uint64_t Padding = OffsetToAlignment(OS.tell(), NaturalAlignment);
|
||||
WriteZeros(Padding);
|
||||
align(NaturalAlignment);
|
||||
|
||||
const unsigned SectionHeaderOffset = OS.tell();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user