]> granicus.if.org Git - llvm/commitdiff
[dsymutil] Print warning/error for unknown/missing arguments.
authorJonas Devlieghere <jonas@devlieghere.com>
Wed, 16 Oct 2019 21:48:41 +0000 (21:48 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Wed, 16 Oct 2019 21:48:41 +0000 (21:48 +0000)
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

test/tools/dsymutil/cmdline.test
tools/dsymutil/dsymutil.cpp

index 7e9223c94019946582d50388c2571ae43fb3bb85..bce40a7e033c5c15f8be882eb6046754371fdd0f 100644 (file)
@@ -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
index 983e86808e7e41207ba1fad2fd7abcdf02b01c31..88a85937a627ca35a385325e2e8902b81170b903 100644 (file)
@@ -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(),