[llvm] r336126 - nm: Add -no-weak flag for hiding weak symbols

Dave Lee via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 2 10:24:37 PDT 2018


Author: kastiglione
Date: Mon Jul  2 10:24:37 2018
New Revision: 336126

URL: http://llvm.org/viewvc/llvm-project?rev=336126&view=rev
Log:
nm: Add -no-weak flag for hiding weak symbols

Summary:
This adds a new -no-weak flag to nm to hide weak symbols in its output.
This also adds a -W alias for this which is analogous to -U.

Patch by Keith Smiley

Reviewers: kastiglione, enderby, compnerd

Reviewed By: kastiglione

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D48751

Modified:
    llvm/trunk/docs/CommandGuide/llvm-nm.rst
    llvm/trunk/test/tools/llvm-nm/X86/weak.test
    llvm/trunk/tools/llvm-nm/llvm-nm.cpp

Modified: llvm/trunk/docs/CommandGuide/llvm-nm.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/llvm-nm.rst?rev=336126&r1=336125&r2=336126&view=diff
==============================================================================
--- llvm/trunk/docs/CommandGuide/llvm-nm.rst (original)
+++ llvm/trunk/docs/CommandGuide/llvm-nm.rst Mon Jul  2 10:24:37 2018
@@ -93,6 +93,10 @@ OPTIONS
  Print only symbols whose definitions are external; that is, accessible
  from other files.
 
+.. option:: --no-weak, -W
+
+ Don't print any weak symbols in the output.
+
 .. option:: --format=format, -f format
 
  Select an output format; *format* may be *sysv*, *posix*, or *bsd*.  The default

Modified: llvm/trunk/test/tools/llvm-nm/X86/weak.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-nm/X86/weak.test?rev=336126&r1=336125&r2=336126&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-nm/X86/weak.test (original)
+++ llvm/trunk/test/tools/llvm-nm/X86/weak.test Mon Jul  2 10:24:37 2018
@@ -1,4 +1,5 @@
 # RUN: llvm-nm -B -S %p/Inputs/weak.obj.elf-x86_64 | FileCheck --match-full-lines %s
+# RUN: llvm-nm -W -B -S %p/Inputs/weak.obj.elf-x86_64 | count 0
 
 CHECK:                  w weak_extern_func
 CHECK:                  w weak_extern_var

Modified: llvm/trunk/tools/llvm-nm/llvm-nm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-nm/llvm-nm.cpp?rev=336126&r1=336125&r2=336126&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-nm/llvm-nm.cpp (original)
+++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp Mon Jul  2 10:24:37 2018
@@ -81,6 +81,11 @@ cl::alias ExternalOnly2("g", cl::desc("A
                         cl::aliasopt(ExternalOnly), cl::Grouping,
                         cl::ZeroOrMore);
 
+cl::opt<bool> NoWeakSymbols("no-weak",
+                            cl::desc("Show only non-weak symbols"));
+cl::alias NoWeakSymbols2("W", cl::desc("Alias for --no-weak"),
+                         cl::aliasopt(NoWeakSymbols), cl::Grouping);
+
 cl::opt<bool> BSDFormat("B", cl::desc("Alias for --format=bsd"),
                         cl::Grouping);
 cl::opt<bool> POSIXFormat("P", cl::desc("Alias for --format=posix"),
@@ -768,8 +773,10 @@ static void sortAndPrintSymbolList(Symbo
 
     bool Undefined = SymFlags & SymbolRef::SF_Undefined;
     bool Global = SymFlags & SymbolRef::SF_Global;
+    bool Weak = SymFlags & SymbolRef::SF_Weak;
     if ((!Undefined && UndefinedOnly) || (Undefined && DefinedOnly) ||
-        (!Global && ExternalOnly) || (SizeSort && !PrintAddress))
+        (!Global && ExternalOnly) || (SizeSort && !PrintAddress) ||
+        (Weak && NoWeakSymbols))
       continue;
     if (PrintFileName) {
       if (!ArchitectureName.empty())




More information about the llvm-commits mailing list