[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