diff --git a/llvm/lib/ObjCopy/ELF/ELFObject.cpp b/llvm/lib/ObjCopy/ELF/ELFObject.cpp index 5352736bdcb9b..c8b66d6fcb5eb 100644 --- a/llvm/lib/ObjCopy/ELF/ELFObject.cpp +++ b/llvm/lib/ObjCopy/ELF/ELFObject.cpp @@ -2638,7 +2638,7 @@ template Error ELFWriter::finalize() { Error BinaryWriter::write() { SmallVector SectionsToWrite; for (const SectionBase &Sec : Obj.allocSections()) { - if (Sec.Type != SHT_NOBITS) + if (Sec.Type != SHT_NOBITS && Sec.Size > 0) SectionsToWrite.push_back(&Sec); } diff --git a/llvm/test/tools/llvm-objcopy/ELF/gap-fill.test b/llvm/test/tools/llvm-objcopy/ELF/gap-fill.test index c11909746330b..23dd6a302891b 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/gap-fill.test +++ b/llvm/test/tools/llvm-objcopy/ELF/gap-fill.test @@ -106,6 +106,11 @@ Sections: Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Address: 0x0108 Content: 'AABBCCDDFEDCBA' + - Name: .zero_size + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x0110 + Size: 0 - Name: .space2 Type: Fill Pattern: 'DC'