[llvm] r343887 - [llvm-nm] Write "no symbol" output to stderr

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 5 14:10:03 PDT 2018


Author: phosek
Date: Fri Oct  5 14:10:03 2018
New Revision: 343887

URL: http://llvm.org/viewvc/llvm-project?rev=343887&view=rev
Log:
[llvm-nm] Write "no symbol" output to stderr

This matches the output of binutils' nm and ensures that any scripts
or tools that use nm and expect empty output in case there no symbols
don't break.

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

Modified:
    llvm/trunk/test/Object/nm-shared-object.test
    llvm/trunk/test/ThinLTO/X86/empty-module.ll
    llvm/trunk/test/tools/llvm-nm/X86/nm-no-symbols.test
    llvm/trunk/tools/llvm-nm/llvm-nm.cpp

Modified: llvm/trunk/test/Object/nm-shared-object.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/nm-shared-object.test?rev=343887&r1=343886&r2=343887&view=diff
==============================================================================
--- llvm/trunk/test/Object/nm-shared-object.test (original)
+++ llvm/trunk/test/Object/nm-shared-object.test Fri Oct  5 14:10:03 2018
@@ -30,5 +30,6 @@ RUN:         | FileCheck %s -check-prefi
 
 ERROR: File format has no dynamic symbol table.
 
-RUN: llvm-nm -D %p/Inputs/trivial-object-test.elf-i386 | FileCheck %s -check-prefix=NO-SYMBOLS
+RUN: llvm-nm -D %p/Inputs/trivial-object-test.elf-i386 2>&1 \
+RUN:         | FileCheck %s -check-prefix=NO-SYMBOLS
 NO-SYMBOLS: no symbols

Modified: llvm/trunk/test/ThinLTO/X86/empty-module.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ThinLTO/X86/empty-module.ll?rev=343887&r1=343886&r2=343887&view=diff
==============================================================================
--- llvm/trunk/test/ThinLTO/X86/empty-module.ll (original)
+++ llvm/trunk/test/ThinLTO/X86/empty-module.ll Fri Oct  5 14:10:03 2018
@@ -3,7 +3,7 @@
 ; RUN: rm -f %t2.0
 ; RUN: llvm-lto2 run  %t.bc -r %t.bc,foo,pl -o %t2 -thinlto-distributed-indexes
 ; RUN: llvm-readobj -h %t2.0 | FileCheck %s
-; RUN: llvm-nm %t2.0 | FileCheck %s -check-prefix=NO-SYMBOLS
+; RUN: llvm-nm %t2.0 2>&1 | FileCheck %s -check-prefix=NO-SYMBOLS
 ; NO-SYMBOLS: no symbols
 
 ; CHECK: Format: ELF64-x86-64

Modified: llvm/trunk/test/tools/llvm-nm/X86/nm-no-symbols.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-nm/X86/nm-no-symbols.test?rev=343887&r1=343886&r2=343887&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-nm/X86/nm-no-symbols.test (original)
+++ llvm/trunk/test/tools/llvm-nm/X86/nm-no-symbols.test Fri Oct  5 14:10:03 2018
@@ -1,6 +1,6 @@
 # RUN: yaml2obj %s > %t.o
-# RUN: llvm-nm %t.o | FileCheck %s
-# RUN: llvm-nm --print-file-name %t.o | FileCheck %s --check-prefix=CHECK-PRINT-FILE-NAME
+# RUN: llvm-nm %t.o 2>&1 | FileCheck %s
+# RUN: llvm-nm --print-file-name %t.o 2>&1 | FileCheck %s --check-prefix=CHECK-PRINT-FILE-NAME
 
 !ELF
 FileHeader:

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=343887&r1=343886&r2=343887&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-nm/llvm-nm.cpp (original)
+++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp Fri Oct  5 14:10:03 2018
@@ -757,22 +757,22 @@ static void sortAndPrintSymbolList(Symbo
     }
   }
 
-  auto writeFileName = [&]() {
+  auto writeFileName = [&](raw_ostream &S) {
     if (!ArchitectureName.empty())
-      outs() << "(for architecture " << ArchitectureName << "):";
+      S << "(for architecture " << ArchitectureName << "):";
     if (OutputFormat == posix && !ArchiveName.empty())
-      outs() << ArchiveName << "[" << CurrentFilename << "]: ";
+      S << ArchiveName << "[" << CurrentFilename << "]: ";
     else {
       if (!ArchiveName.empty())
-        outs() << ArchiveName << ":";
-      outs() << CurrentFilename << ": ";
+        S << ArchiveName << ":";
+      S << CurrentFilename << ": ";
     }
   };
 
   if (SymbolList.empty()) {
     if (PrintFileName)
-      writeFileName();
-    outs() << "no symbols\n";
+      writeFileName(errs());
+    errs() << "no symbols\n";
   }
 
   for (SymbolListT::iterator I = SymbolList.begin(), E = SymbolList.end();
@@ -797,7 +797,7 @@ static void sortAndPrintSymbolList(Symbo
         (Weak && NoWeakSymbols))
       continue;
     if (PrintFileName)
-      writeFileName();
+      writeFileName(outs());
     if ((JustSymbolName ||
          (UndefinedOnly && MachO && OutputFormat != darwin)) &&
         OutputFormat != posix) {




More information about the llvm-commits mailing list