From: Jonas Devlieghere Date: Wed, 16 Oct 2019 21:48:41 +0000 (+0000) Subject: [dsymutil] Print warning/error for unknown/missing arguments. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa4a46afe84f5f3609fb3b44e7d79a4c3d1e1f25;p=llvm [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 --- diff --git a/test/tools/dsymutil/cmdline.test b/test/tools/dsymutil/cmdline.test index 7e9223c9401..bce40a7e033 100644 --- a/test/tools/dsymutil/cmdline.test +++ b/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/tools/dsymutil/dsymutil.cpp b/tools/dsymutil/dsymutil.cpp index 983e86808e7..88a85937a62 100644 --- a/tools/dsymutil/dsymutil.cpp +++ b/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(),