[PATCH] D25044: Warn on empty archive files.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 28 14:00:35 PDT 2016


ruiu created this revision.
ruiu added a reviewer: davide.
ruiu added a subscriber: llvm-commits.

Warn on empty archive files.

https://reviews.llvm.org/D25044

Files:
  ELF/InputFiles.cpp
  test/ELF/empty-archive.s

Index: test/ELF/empty-archive.s
===================================================================
--- test/ELF/empty-archive.s
+++ test/ELF/empty-archive.s
@@ -1,3 +1,5 @@
 // RUN: llvm-ar rc %t.a
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: ld.lld -shared %t.o %t.a -o t
+// RUN: ld.lld -shared %t.o %t.a -o t 2>&1 | FileCheck %s
+
+// CHECK: has no symbol. If you are doing an LTO build LTO, make sure you are using llvm-ar instead of ar.
Index: ELF/InputFiles.cpp
===================================================================
--- ELF/InputFiles.cpp
+++ ELF/InputFiles.cpp
@@ -422,8 +422,15 @@
   File = check(Archive::create(MB), "failed to parse archive");
 
   // Read the symbol table to construct Lazy objects.
-  for (const Archive::Symbol &Sym : File->symbols())
+  bool IsEmpty = true;
+  for (const Archive::Symbol &Sym : File->symbols()) {
     Symtab<ELFT>::X->addLazyArchive(this, Sym);
+    IsEmpty = false;
+  }
+
+  if (IsEmpty)
+    warning(getName() + " has no symbol. If you are doing an LTO build LTO, "
+            "make sure you are using llvm-ar instead of ar.");
 }
 
 // Returns a buffer pointing to a member file containing a given symbol.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25044.72893.patch
Type: text/x-patch
Size: 1206 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160928/97d7f55d/attachment.bin>


More information about the llvm-commits mailing list