summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaurabh Badhwar <sbsaurabhbadhwar9@gmail.com>2019-01-16 14:38:22 +0000
committerSaurabh Badhwar <sbsaurabhbadhwar9@gmail.com>2019-01-16 14:38:22 +0000
commit148569f7a6f961f9f17346189721b861212ec2ae (patch)
tree8a64c818f737d1da3bd59c23f10dea16b4580af0
parent0dbecd05ed7685f2956ba94827e416b250414d39 (diff)
downloadbcm5719-llvm-148569f7a6f961f9f17346189721b861212ec2ae.tar.gz
bcm5719-llvm-148569f7a6f961f9f17346189721b861212ec2ae.zip
[llvm-nm] Allow --size-sort to print symbols with only Symbol size
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 llvm-svn: 351347
-rw-r--r--llvm/test/tools/llvm-nm/X86/size-sort.test12
-rw-r--r--llvm/tools/llvm-nm/llvm-nm.cpp3
2 files changed, 13 insertions, 2 deletions
diff --git a/llvm/test/tools/llvm-nm/X86/size-sort.test b/llvm/test/tools/llvm-nm/X86/size-sort.test
new file mode 100644
index 00000000000..64ea99e35b1
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/X86/size-sort.test
@@ -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
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp
index 042e284e836..084e30540a1 100644
--- a/llvm/tools/llvm-nm/llvm-nm.cpp
+++ b/llvm/tools/llvm-nm/llvm-nm.cpp
@@ -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());
OpenPOWER on IntegriCloud