Selaa lähdekoodia

[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375044 91177308-0d34-0410-b5e6-96231b3b80d8
Jonas Devlieghere 5 vuotta sitten
vanhempi
commit
aa4a46afe8
2 muutettua tiedostoa jossa 16 lisäystä ja 0 poistoa
  1. 6 0
      test/tools/dsymutil/cmdline.test
  2. 10 0
      tools/dsymutil/dsymutil.cpp

+ 6 - 0
test/tools/dsymutil/cmdline.test

@@ -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

+ 10 - 0
tools/dsymutil/dsymutil.cpp

@@ -148,6 +148,11 @@ static Expected<std::vector<std::string>> getInputs(opt::InputArgList &Args,
 
 // 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(),