[lld] r283197 - [ELF] - Do not crash if common symbol has alignment 0.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 4 01:49:53 PDT 2016


Author: grimar
Date: Tue Oct  4 03:49:52 2016
New Revision: 283197

URL: http://llvm.org/viewvc/llvm-project?rev=283197&view=rev
Log:
[ELF] - Do not crash if common symbol has alignment 0.

Testcase contains a common symbol with zero alignment,
previously lld would crash, patch fixes that.

Differential revision: https://reviews.llvm.org/D25085

Added:
    lld/trunk/test/ELF/invalid/Inputs/common-symbol-alignment.elf   (with props)
    lld/trunk/test/ELF/invalid/common-symbol-alignment.s
Modified:
    lld/trunk/ELF/InputFiles.cpp

Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=283197&r1=283196&r2=283197&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Tue Oct  4 03:49:52 2016
@@ -400,6 +400,9 @@ SymbolBody *elf::ObjectFile<ELFT>::creat
                                               /*CanOmitFromDynSym*/ false, this)
         ->body();
   case SHN_COMMON:
+    if (Sym->st_value == 0)
+      fatal(getFilename(this) + ": common symbol '" + Name +
+            "' alignment is 0");
     return elf::Symtab<ELFT>::X->addCommon(Name, Sym->st_size, Sym->st_value,
                                            Binding, Sym->st_other,
                                            Sym->getType(), this)

Added: lld/trunk/test/ELF/invalid/Inputs/common-symbol-alignment.elf
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/invalid/Inputs/common-symbol-alignment.elf?rev=283197&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lld/trunk/test/ELF/invalid/Inputs/common-symbol-alignment.elf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lld/trunk/test/ELF/invalid/common-symbol-alignment.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/invalid/common-symbol-alignment.s?rev=283197&view=auto
==============================================================================
--- lld/trunk/test/ELF/invalid/common-symbol-alignment.s (added)
+++ lld/trunk/test/ELF/invalid/common-symbol-alignment.s Tue Oct  4 03:49:52 2016
@@ -0,0 +1,6 @@
+# REQUIRES: x86
+
+## common-symbol-alignment.elf contains common symbol with zero alignment.
+# RUN: not ld.lld %S/Inputs/common-symbol-alignment.elf \
+# RUN:   -o %t 2>&1 | FileCheck %s
+# CHECK: common symbol 'bar' alignment is 0




More information about the llvm-commits mailing list