From: Michael Trent Date: Sat, 18 May 2019 03:17:27 +0000 (+0000) Subject: Update llvm-nm -s to use a multi-var option X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dbfee4daea034f192d1faa8fae33e87f8101f6f;p=llvm Update llvm-nm -s to use a multi-var option Summary: Previously llvm-nm relied on a positional parameter to read two values into the SegSect list. This worked, but required the "-s" paramater and its arguments to be the last elements on the command-line. The CommandLine library now supports mutli-var parameters, so it can naturally deal with "-s" expecting two arguments, and now the input file can appear anywhere (within reason) in the command line invocation. E.g. llvm-nm -s __TEXT __text /bin/ls llvm-nm /bin/ls -s __TEXT __text rdar://27284011 Reviewers: lhames, pete Reviewed By: pete Subscribers: rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62070 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361091 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index f427f376497..f21978d50cc 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -183,12 +183,7 @@ cl::alias JustSymbolNames("j", cl::desc("Alias for --just-symbol-name"), cl::opt SpecialSyms("special-syms", cl::desc("No-op. Used for GNU compatibility only")); -// FIXME: This option takes exactly two strings and should be allowed anywhere -// on the command line. Such that "llvm-nm -s __TEXT __text foo.o" would work. -// But that does not as the CommandLine Library does not have a way to make -// this work. For now the "-s __TEXT __text" has to be last on the command -// line. -cl::list SegSect("s", cl::Positional, cl::ZeroOrMore, +cl::list SegSect("s", cl::multi_val(2), cl::ZeroOrMore, cl::value_desc("segment section"), cl::Hidden, cl::desc("Dump only symbols from this segment " "and section name, Mach-O only"),