summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/InputFiles.cpp4
-rw-r--r--lld/test/ELF/Inputs/merge-shentsize-zero.elf (renamed from lld/test/ELF/Inputs/invalid-shentsize-zero.elf)bin512 -> 512 bytes
-rw-r--r--lld/test/ELF/invalid-elf.test4
-rw-r--r--lld/test/ELF/merge-zero-size.test4
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
index 5fa7df24561..5fa7df24561 100644
--- a/lld/test/ELF/Inputs/invalid-shentsize-zero.elf
+++ b/lld/test/ELF/Inputs/merge-shentsize-zero.elf
Binary files differ
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
+
OpenPOWER on IntegriCloud