summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Writer.cpp13
1 files changed, 3 insertions, 10 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 02f805b5251..553938ac386 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -174,6 +174,7 @@ private:
std::unique_ptr<llvm::FileOutputBuffer> Buffer;
llvm::SpecificBumpPtrAllocator<OutputSection<ELFT>> CAlloc;
std::vector<OutputSectionBase<ELFT::Is64Bits> *> OutputSections;
+ unsigned getNumSections() const { return OutputSections.size() + 1; }
uintX_t FileSize;
uintX_t SizeOfHeaders;
@@ -184,8 +185,6 @@ private:
SymbolTableSection<ELFT> SymTable;
- unsigned NumSections;
-
void addOutputSection(OutputSectionBase<ELFT::Is64Bits> *Sec) {
OutputSections.push_back(Sec);
Sec->setSectionIndex(OutputSections.size());
@@ -525,17 +524,11 @@ template <class ELFT> void Writer<ELFT>::assignAddresses() {
FileOff += RoundUpToAlignment(Size, Align);
}
- // Regular sections.
- NumSections = OutputSections.size();
-
- // First dummy section.
- NumSections++;
-
FileOff += OffsetToAlignment(FileOff, ELFT::Is64Bits ? 8 : 4);
// Add space for section headers.
SectionHeaderOff = FileOff;
- FileOff += NumSections * sizeof(Elf_Shdr_Impl<ELFT>);
+ FileOff += getNumSections() * sizeof(Elf_Shdr_Impl<ELFT>);
FileSize = SizeOfHeaders + RoundUpToAlignment(FileOff - SizeOfHeaders, 8);
}
@@ -565,7 +558,7 @@ template <class ELFT> void Writer<ELFT>::writeHeader() {
EHdr->e_phentsize = sizeof(Elf_Phdr_Impl<ELFT>);
EHdr->e_phnum = 1;
EHdr->e_shentsize = sizeof(Elf_Shdr_Impl<ELFT>);
- EHdr->e_shnum = NumSections;
+ EHdr->e_shnum = getNumSections();
EHdr->e_shstrndx = StringTableIndex;
auto PHdrs = reinterpret_cast<Elf_Phdr_Impl<ELFT> *>(Buf + EHdr->e_phoff);
OpenPOWER on IntegriCloud