diff --git a/llvm/docs/CommandGuide/llvm-nm.rst b/llvm/docs/CommandGuide/llvm-nm.rst --- a/llvm/docs/CommandGuide/llvm-nm.rst +++ b/llvm/docs/CommandGuide/llvm-nm.rst @@ -204,6 +204,10 @@ Show symbol size as well as address (not applicable for Mach-O). +.. option:: --quiet + + Suppress 'no symbols' diagnostic. + .. option:: --radix=, -t Specify the radix of the symbol address(es). Values accepted are *d* (decimal), diff --git a/llvm/test/tools/llvm-nm/X86/nm-no-symbols.test b/llvm/test/tools/llvm-nm/X86/nm-no-symbols.test --- a/llvm/test/tools/llvm-nm/X86/nm-no-symbols.test +++ b/llvm/test/tools/llvm-nm/X86/nm-no-symbols.test @@ -9,3 +9,5 @@ Machine: EM_X86_64 # CHECK: [[FILE]]: no symbols{{$}} + +# RUN: llvm-nm --quiet %t.o 2>&1 | count 0 diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -117,6 +117,9 @@ cl::alias PrintFileNameo("o", cl::desc("Alias for --print-file-name"), cl::aliasopt(PrintFileName), cl::Grouping); +cl::opt Quiet("quiet", cl::desc("Suppress 'no symbols' diagnostic"), + cl::cat(NMCat)); + cl::opt DebugSyms("debug-syms", cl::desc("Show all symbols, even debugger only"), cl::cat(NMCat)); @@ -1861,7 +1864,7 @@ CurrentFilename = Obj.getFileName(); - if (Symbols.empty() && SymbolList.empty()) { + if (Symbols.empty() && SymbolList.empty() && !Quiet) { writeFileName(errs(), ArchiveName, ArchitectureName); errs() << "no symbols\n"; }