diff options
| author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-10-16 21:48:41 +0000 |
|---|---|---|
| committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-10-16 21:48:41 +0000 |
| commit | 8cdc842c51626b94fc20af604f640f6f195eeadb (patch) | |
| tree | ec1d9e999e948f80688b3801fac973e1b6d84040 | |
| parent | 6d1891c508fecf189d1d76b43740b144b91aae23 (diff) | |
| download | bcm5719-llvm-8cdc842c51626b94fc20af604f640f6f195eeadb.tar.gz bcm5719-llvm-8cdc842c51626b94fc20af604f640f6f195eeadb.zip | |
[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.
llvm-svn: 375044
| -rw-r--r-- | llvm/test/tools/dsymutil/cmdline.test | 6 | ||||
| -rw-r--r-- | llvm/tools/dsymutil/dsymutil.cpp | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/test/tools/dsymutil/cmdline.test b/llvm/test/tools/dsymutil/cmdline.test index 7e9223c9401..bce40a7e033 100644 --- a/llvm/test/tools/dsymutil/cmdline.test +++ b/llvm/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 diff --git a/llvm/tools/dsymutil/dsymutil.cpp b/llvm/tools/dsymutil/dsymutil.cpp index 983e86808e7..88a85937a62 100644 --- a/llvm/tools/dsymutil/dsymutil.cpp +++ b/llvm/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(), |

