[lld] r263664 - [ELF] SHF_MERGE section with 0 entsize is not fatal

Ed Maste via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 14:12:54 PDT 2016


Author: emaste
Date: Wed Mar 16 16:12:53 2016
New Revision: 263664

URL: http://llvm.org/viewvc/llvm-project?rev=263664&view=rev
Log:
[ELF] SHF_MERGE section with 0 entsize is not fatal

For now just treat such sections as non-mergeable.

Resubmit r263660 with test fix.

Differential Revision:     http://reviews.llvm.org/D18225

Added:
    lld/trunk/test/ELF/Inputs/merge-shentsize-zero.elf
      - copied unchanged from r263660, lld/trunk/test/ELF/Inputs/invalid-shentsize-zero.elf
    lld/trunk/test/ELF/merge-zero-size.test
Removed:
    lld/trunk/test/ELF/Inputs/invalid-shentsize-zero.elf
Modified:
    lld/trunk/ELF/InputFiles.cpp
    lld/trunk/test/ELF/invalid-elf.test

Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=263664&r1=263663&r2=263664&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Wed Mar 16 16:12:53 2016
@@ -148,7 +148,9 @@ template <class ELFT> static bool should
   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

Removed: lld/trunk/test/ELF/Inputs/invalid-shentsize-zero.elf
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/invalid-shentsize-zero.elf?rev=263663&view=auto
==============================================================================
Binary file - no diff available.

Modified: lld/trunk/test/ELF/invalid-elf.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/invalid-elf.test?rev=263664&r1=263663&r2=263664&view=diff
==============================================================================
--- lld/trunk/test/ELF/invalid-elf.test (original)
+++ lld/trunk/test/ELF/invalid-elf.test Wed Mar 16 16:12:53 2016
@@ -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

Added: lld/trunk/test/ELF/merge-zero-size.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-zero-size.test?rev=263664&view=auto
==============================================================================
--- lld/trunk/test/ELF/merge-zero-size.test (added)
+++ lld/trunk/test/ELF/merge-zero-size.test Wed Mar 16 16:12:53 2016
@@ -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
+




More information about the llvm-commits mailing list