diff --git a/llvm/test/tools/llvm-nm/libtool-version.test b/llvm/test/tools/llvm-nm/libtool-version.test new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-nm/libtool-version.test @@ -0,0 +1,5 @@ +RUN: llvm-nm -V | FileCheck %s +RUN: llvm-nm --version | FileCheck %s +Check that the output of llvm-nm -V (and --version) contains the text +"GNU" somewhere, to let libtool know that it is compatible with GNU nm. +CHECK: GNU 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 @@ -229,6 +229,8 @@ "TBD(Mach-O) only"), cl::cat(NMCat)); +cl::opt Version("V", cl::desc("Print version info"), cl::cat(NMCat)); + cl::extrahelp HelpResponse("\nPass @FILE as argument to read options from FILE.\n"); bool PrintAddress = true; @@ -2235,11 +2237,22 @@ } } +static void printExtraVersionInfo(raw_ostream &outs) { + outs << "llvm-nm, compatible with GNU nm\n"; +} + int main(int argc, char **argv) { InitLLVM X(argc, argv); cl::HideUnrelatedOptions(NMCat); + cl::AddExtraVersionPrinter(printExtraVersionInfo); cl::ParseCommandLineOptions(argc, argv, "llvm symbol table dumper\n"); + if (Version) { + printExtraVersionInfo(outs()); + cl::PrintVersionMessage(); + return 0; + } + // llvm-nm only reads binary files. if (error(sys::ChangeStdinToBinary())) return 1;