diff options
-rw-r--r-- | lld/ELF/Writer.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index ecb95e575ba..2a66c362776 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -1508,33 +1508,33 @@ static uintX_t getFileAlignment(uintX_t Off, OutputSectionBase *Sec) { } template <class ELFT, class uintX_t> -void setOffset(OutputSectionBase *Sec, uintX_t &Off) { +uintX_t setOffset(OutputSectionBase *Sec, uintX_t Off) { if (Sec->Type == SHT_NOBITS) { Sec->Offset = Off; - return; + return Off; } Off = getFileAlignment<ELFT>(Off, Sec); Sec->Offset = Off; - Off += Sec->Size; + return Off + Sec->Size; } template <class ELFT> void Writer<ELFT>::assignFileOffsetsBinary() { uintX_t Off = 0; for (OutputSectionBase *Sec : OutputSections) if (Sec->Flags & SHF_ALLOC) - setOffset<ELFT>(Sec, Off); + Off = setOffset<ELFT>(Sec, Off); FileSize = alignTo(Off, sizeof(uintX_t)); } // Assign file offsets to output sections. template <class ELFT> void Writer<ELFT>::assignFileOffsets() { uintX_t Off = 0; - setOffset<ELFT>(Out<ELFT>::ElfHeader, Off); - setOffset<ELFT>(Out<ELFT>::ProgramHeaders, Off); + Off = setOffset<ELFT>(Out<ELFT>::ElfHeader, Off); + Off = setOffset<ELFT>(Out<ELFT>::ProgramHeaders, Off); for (OutputSectionBase *Sec : OutputSections) - setOffset<ELFT>(Sec, Off); + Off = setOffset<ELFT>(Sec, Off); SectionHeaderOff = alignTo(Off, sizeof(uintX_t)); FileSize = SectionHeaderOff + (OutputSections.size() + 1) * sizeof(Elf_Shdr); |