From 8cdc842c51626b94fc20af604f640f6f195eeadb Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Wed, 16 Oct 2019 21:48:41 +0000 Subject: [PATCH] [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 --- llvm/test/tools/dsymutil/cmdline.test | 6 ++++++ llvm/tools/dsymutil/dsymutil.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/llvm/test/tools/dsymutil/cmdline.test b/llvm/test/tools/dsymutil/cmdline.test index 7e9223c..bce40a7e 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 983e868..88a8593 100644 --- a/llvm/tools/dsymutil/dsymutil.cpp +++ b/llvm/tools/dsymutil/dsymutil.cpp @@ -148,6 +148,11 @@ static Expected> 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("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] ").c_str(), -- 2.7.4