[llvm] r375044 - [dsymutil] Print warning/error for unknown/missing arguments.

Jonas Devlieghere via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 16 14:48:42 PDT 2019


Author: jdevlieghere
Date: Wed Oct 16 14:48:41 2019
New Revision: 375044

URL: http://llvm.org/viewvc/llvm-project?rev=375044&view=rev
Log:
[dsymutil] Print warning/error for unknown/missing arguments.

After changing dsymutil to use libOption, we lost error reporting for
missing required arguments (input files). Additionally, we stopped
complaining about unknown arguments. This patch fixes both and adds a
test.

Modified:
    llvm/trunk/test/tools/dsymutil/cmdline.test
    llvm/trunk/tools/dsymutil/dsymutil.cpp

Modified: llvm/trunk/test/tools/dsymutil/cmdline.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/cmdline.test?rev=375044&r1=375043&r2=375044&view=diff
==============================================================================
--- llvm/trunk/test/tools/dsymutil/cmdline.test (original)
+++ llvm/trunk/test/tools/dsymutil/cmdline.test Wed Oct 16 14:48:41 2019
@@ -26,3 +26,9 @@ HELP-NOT: -reverse-iterate
 
 RUN: dsymutil --version 2>&1 | FileCheck --check-prefix=VERSION %s
 VERSION: {{ version }}
+
+RUN: not dsymutil 2>&1 | FileCheck --check-prefix=NOINPUT %s
+NOINPUT: error: no input files specified
+
+RUN: dsymutil -bogus -help 2>&1 | FileCheck --check-prefix=BOGUS %s
+BOGUS: warning: ignoring unknown option: -bogus

Modified: llvm/trunk/tools/dsymutil/dsymutil.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=375044&r1=375043&r2=375044&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/dsymutil.cpp (original)
+++ llvm/trunk/tools/dsymutil/dsymutil.cpp Wed Oct 16 14:48:41 2019
@@ -148,6 +148,11 @@ static Expected<std::vector<std::string>
 
 // Verify that the given combination of options makes sense.
 static Error verifyOptions(const DsymutilOptions &Options) {
+  if (Options.InputFiles.empty()) {
+    return make_error<StringError>("no input files specified",
+                                   errc::invalid_argument);
+  }
+
   if (Options.LinkOpts.Update &&
       std::find(Options.InputFiles.begin(), Options.InputFiles.end(), "-") !=
           Options.InputFiles.end()) {
@@ -440,6 +445,11 @@ int main(int argc, char **argv) {
   std::string SDKPath = sys::fs::getMainExecutable(argv[0], P);
   SDKPath = sys::path::parent_path(SDKPath);
 
+  for (auto *Arg : Args.filtered(OPT_UNKNOWN)) {
+    WithColor::warning() << "ignoring unknown option: " << Arg->getSpelling()
+                         << '\n';
+  }
+
   if (Args.hasArg(OPT_help)) {
     T.PrintHelp(
         outs(), (std::string(argv[0]) + " [options] <input files>").c_str(),




More information about the llvm-commits mailing list