]> granicus.if.org Git - llvm/commitdiff
[llvm-nm] Allow --size-sort to print symbols with only Symbol size
authorSaurabh Badhwar <sbsaurabhbadhwar9@gmail.com>
Wed, 16 Jan 2019 14:38:22 +0000 (14:38 +0000)
committerSaurabh Badhwar <sbsaurabhbadhwar9@gmail.com>
Wed, 16 Jan 2019 14:38:22 +0000 (14:38 +0000)
Summary:
When llvm-nm is passed only the --size-sort option for an object file, there is no output generated.
The commit modifies the behavior to print the symbols sorted and their size which is also inline with
the output of the GNU nm tool.

Signed-off-by: Saurabh Badhwar <sbsaurabhbadhwar9@gmail.com>
Reviewers: enderby, rupprecht

Reviewed By: rupprecht

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351347 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-nm/X86/size-sort.test [new file with mode: 0644]
tools/llvm-nm/llvm-nm.cpp

diff --git a/test/tools/llvm-nm/X86/size-sort.test b/test/tools/llvm-nm/X86/size-sort.test
new file mode 100644 (file)
index 0000000..64ea99e
--- /dev/null
@@ -0,0 +1,12 @@
+# RUN: llvm-nm --size-sort %p/Inputs/hello.obj.elf-x86_64 | FileCheck --check-prefix=SIZE-SORT-NO-ADDR %s
+# RUN: llvm-nm --size-sort -S %p/Inputs/hello.obj.elf-x86_64 | FileCheck --check-prefix=SIZE-SORT-PRINT-ADDR %s
+# RUN: llvm-nm -S %p/Inputs/hello.obj.elf-x86_64 | FileCheck --check-prefix=NO-SIZE-SORT-PRINT-ADDR %s
+
+# SIZE-SORT-NO-ADDR:                  U puts
+# SIZE-SORT-NO-ADDR: 0000000000000015 T main
+
+# SIZE-SORT-PRINT-ADDR:                                   U puts
+# SIZE-SORT-PRINT-ADDR: 0000000000000000 0000000000000015 T main
+
+# NO-SIZE-SORT-PRINT-ADDR: 0000000000000000 0000000000000015 T main
+# NO-SIZE-SORT-PRINT-ADDR:                                   U puts
index 042e284e8369f2e2309f87bd9713f21bd31d837c..084e30540a1254bb7291cb11b12476317704aaa4 100644 (file)
@@ -798,8 +798,7 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName,
     bool Global = SymFlags & SymbolRef::SF_Global;
     bool Weak = SymFlags & SymbolRef::SF_Weak;
     if ((!Undefined && UndefinedOnly) || (Undefined && DefinedOnly) ||
-        (!Global && ExternalOnly) || (SizeSort && !PrintAddress) ||
-        (Weak && NoWeakSymbols))
+        (!Global && ExternalOnly) || (Weak && NoWeakSymbols))
       continue;
     if (PrintFileName)
       writeFileName(outs());