diff options
-rw-r--r-- | llvm/tools/yaml2obj/yaml2elf.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp index a30093a042f..974acbd40c9 100644 --- a/llvm/tools/yaml2obj/yaml2elf.cpp +++ b/llvm/tools/yaml2obj/yaml2elf.cpp @@ -503,17 +503,16 @@ void ELFState<ELFT>::addSymbols(ArrayRef<ELFYAML::Symbol> Symbols, } template <class ELFT> -void -ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader, - const ELFYAML::RawContentSection &Section, - ContiguousBlobAccumulator &CBA) { +void ELFState<ELFT>::writeSectionContent( + Elf_Shdr &SHeader, const ELFYAML::RawContentSection &Section, + ContiguousBlobAccumulator &CBA) { assert(Section.Size >= Section.Content.binary_size() && "Section size and section content are inconsistent"); raw_ostream &OS = CBA.getOSAndAlignedOffset(SHeader.sh_offset, SHeader.sh_addralign); Section.Content.writeAsBinary(OS); - for (auto i = Section.Content.binary_size(); i < Section.Size; ++i) - OS.write(0); + OS.write_zeros(Section.Size - Section.Content.binary_size()); + if (Section.EntSize) SHeader.sh_entsize = *Section.EntSize; else if (Section.Type == llvm::ELF::SHT_RELR) |