diff options
-rw-r--r-- | lld/ELF/InputFiles.cpp | 4 | ||||
-rw-r--r-- | lld/test/ELF/Inputs/merge-shentsize-zero.elf (renamed from lld/test/ELF/Inputs/invalid-shentsize-zero.elf) | bin | 512 -> 512 bytes | |||
-rw-r--r-- | lld/test/ELF/invalid-elf.test | 4 | ||||
-rw-r--r-- | lld/test/ELF/merge-zero-size.test | 4 |
4 files changed, 7 insertions, 5 deletions
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index 3622dc2b8c3..e8ee5816498 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -148,7 +148,9 @@ template <class ELFT> static bool shouldMerge(const typename ELFT::Shdr &Sec) { if (Flags & SHF_WRITE) fatal("writable SHF_MERGE sections are not supported"); uintX_t EntSize = Sec.sh_entsize; - if (!EntSize || Sec.sh_size % EntSize) + if (!EntSize) + return false; + if (Sec.sh_size % EntSize) fatal("SHF_MERGE section size must be a multiple of sh_entsize"); // Don't try to merge if the aligment is larger than the sh_entsize and this diff --git a/lld/test/ELF/Inputs/invalid-shentsize-zero.elf b/lld/test/ELF/Inputs/merge-shentsize-zero.elf Binary files differindex 5fa7df24561..5fa7df24561 100644 --- a/lld/test/ELF/Inputs/invalid-shentsize-zero.elf +++ b/lld/test/ELF/Inputs/merge-shentsize-zero.elf diff --git a/lld/test/ELF/invalid-elf.test b/lld/test/ELF/invalid-elf.test index c3a97d37ffa..73516a41a8c 100644 --- a/lld/test/ELF/invalid-elf.test +++ b/lld/test/ELF/invalid-elf.test @@ -24,10 +24,6 @@ # RUN: FileCheck --check-prefix=INVALID-SECTION-INDEX %s # INVALID-SECTION-INDEX: Invalid section index -# RUN: not ld.lld %p/Inputs/invalid-shentsize-zero.elf -o %t2 2>&1 | \ -# RUN: FileCheck --check-prefix=INVALID-SHENTSIZE-ZERO %s -# INVALID-SHENTSIZE-ZERO: SHF_MERGE section size must be a multiple of sh_entsize - # RUN: not ld.lld %p/Inputs/invalid-multiple-eh-relocs.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-EH-RELOCS %s # INVALID-EH-RELOCS: multiple relocation sections to .eh_frame are not supported diff --git a/lld/test/ELF/merge-zero-size.test b/lld/test/ELF/merge-zero-size.test new file mode 100644 index 00000000000..e00b7a2315b --- /dev/null +++ b/lld/test/ELF/merge-zero-size.test @@ -0,0 +1,4 @@ +# RUN: ld.lld %p/Inputs/merge-shentsize-zero.elf -o %t2 2>&1 | \ +# RUN: FileCheck -allow-empty %s +# CHECK-NOT: SHF_MERGE section size must be a multiple of sh_entsize + |