[PATCH] D95843: [tools][llvm-libtool] Emit warnings for files without symbols

Alexander Shaposhnikov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 17:22:29 PST 2021


alexshap updated this revision to Diff 321274.
alexshap added a comment.

Address comments


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D95843/new/

https://reviews.llvm.org/D95843

Files:
  llvm/test/tools/llvm-libtool-darwin/no-symbols-warning.test
  llvm/tools/llvm-libtool-darwin/llvm-libtool-darwin.cpp


Index: llvm/tools/llvm-libtool-darwin/llvm-libtool-darwin.cpp
===================================================================
--- llvm/tools/llvm-libtool-darwin/llvm-libtool-darwin.cpp
+++ llvm/tools/llvm-libtool-darwin/llvm-libtool-darwin.cpp
@@ -89,6 +89,11 @@
     VersionOption("V", cl::desc("Print the version number and exit"),
                   cl::cat(LibtoolCategory));
 
+static cl::opt<bool> NoWarningForNoSymbols(
+    "no_warning_for_no_symbols",
+    cl::desc("Do not warn about files that have no symbols."),
+    cl::cat(LibtoolCategory), cl::init(false));
+
 static const std::array<std::string, 3> StandardSearchDirs{
     "/lib",
     "/usr/lib",
@@ -251,6 +256,9 @@
     return Error::success();
   }
 
+  if (!NoWarningForNoSymbols && O->symbols().empty())
+    WithColor::warning() << Member.MemberName + " has no symbols.\n";
+
   uint64_t FileCPUID = getCPUID(FileCPUType, FileCPUSubtype);
   Members[FileCPUID].push_back(std::move(Member));
   return Error::success();
Index: llvm/test/tools/llvm-libtool-darwin/no-symbols-warning.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-libtool-darwin/no-symbols-warning.test
@@ -0,0 +1,50 @@
+## This test verifies that the tool emits a warning for object files
+## without symbols.
+
+# RUN: yaml2obj --docnum=1 %s -o %t-x86_64-empty.o
+# RUN: yaml2obj --docnum=2 %s -o %t-armv7-empty.o
+# RUN: echo 'target triple = "arm64-apple-ios8.0.0"' | llvm-as -o %t-empty.bc
+# RUN: yaml2obj %S/Inputs/input1.yaml -o %t-non-empty.o
+
+# RUN: llvm-libtool-darwin -static -o %t.lib %t-x86_64-empty.o 2>&1 | \
+# RUN:   FileCheck --check-prefix=WARNING %s -DPREFIX=%basename_t.tmp
+
+# WARNING: warning: [[PREFIX]]-x86_64-empty.o has no symbols.
+
+# RUN: llvm-libtool-darwin -no_warning_for_no_symbols -static -o %t.lib \
+# RUN:   %t-x86_64-empty.o 2>&1 | \
+# RUN:   FileCheck %s --allow-empty --implicit-check-not='warning:'
+
+# RUN: llvm-libtool-darwin -static -o %t.lib %t-non-empty.o 2>&1 | \
+# RUN:   FileCheck %s --allow-empty --implicit-check-not='warning:'
+
+# RUN: llvm-libtool-darwin -arch_only x86_64 -static -o %t.lib \
+# RUN:   %t-non-empty.o %t-armv7-empty.o 2>&1 | \
+# RUN:   FileCheck %s --allow-empty --implicit-check-not='warning:'
+
+# RUN: llvm-libtool-darwin -static -o %t.lib %t-empty.bc 2>&1 | \
+# RUN:   FileCheck %s --allow-empty --implicit-check-not='warning:'
+
+## x86_64
+--- !mach-o
+FileHeader:
+  magic:           0xFEEDFACF
+  cputype:         0x1000007
+  cpusubtype:      0x3
+  filetype:        0x1
+  ncmds:           0
+  sizeofcmds:      0
+  flags:           0x2000
+  reserved:        0x0
+...
+
+## armv7
+--- !mach-o
+FileHeader:
+  magic:           0xFEEDFACE
+  cputype:         0x0000000C
+  cpusubtype:      0x00000009
+  filetype:        0x00000001
+  ncmds:           0
+  sizeofcmds:      0
+  flags:           0x00002000


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95843.321274.patch
Type: text/x-patch
Size: 2907 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210204/aafb9090/attachment.bin>


More information about the llvm-commits mailing list