[lld] r283226 - [ELF] - Do not crash on MIPS if there is no object files in input.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 4 08:19:21 PDT 2016


Author: grimar
Date: Tue Oct  4 10:19:20 2016
New Revision: 283226

URL: http://llvm.org/viewvc/llvm-project?rev=283226&view=rev
Log:
[ELF] - Do not crash on MIPS if there is no object files in input.

If we have input without object files, for example if we have only .so
code crashes in checkFlags(), getPicFlags(), getArchFlags() functions.

Patch fixes the issue.

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

Added:
    lld/trunk/test/ELF/mips-no-objects.s
Modified:
    lld/trunk/ELF/Mips.cpp

Modified: lld/trunk/ELF/Mips.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Mips.cpp?rev=283226&r1=283225&r2=283226&view=diff
==============================================================================
--- lld/trunk/ELF/Mips.cpp (original)
+++ lld/trunk/ELF/Mips.cpp Tue Oct  4 10:19:20 2016
@@ -285,6 +285,8 @@ template <class ELFT> uint32_t elf::getM
   std::vector<FileFlags> V;
   for (elf::ObjectFile<ELFT> *F : Symtab<ELFT>::X->getObjectFiles())
     V.push_back({F->getName(), F->getObj().getHeader()->e_flags});
+  if (V.empty())
+    return 0;
   checkFlags(V);
   return getMiscFlags(V) | getPicFlags(V) | getArchFlags(V);
 }

Added: lld/trunk/test/ELF/mips-no-objects.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-no-objects.s?rev=283226&view=auto
==============================================================================
--- lld/trunk/test/ELF/mips-no-objects.s (added)
+++ lld/trunk/test/ELF/mips-no-objects.s Tue Oct  4 10:19:20 2016
@@ -0,0 +1,5 @@
+# REQUIRES: mips
+# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o
+# RUN: ld.lld %t.o -shared -o %t.so
+# RUN: ld.lld %t.so -shared -o %t2.so
+# RUN: llvm-readobj %t2.so > /dev/null 2>&1




More information about the llvm-commits mailing list