aboutsummaryrefslogtreecommitdiff
path: root/lld/MinGW
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2019-10-10 09:46:41 +0000
committerRui Ueyama <ruiu@google.com>2019-10-10 09:46:41 +0000
commit37bf9bb405ffcbd2dbca8d645ec2251ba34ac230 (patch)
tree283e5ce717efae9f388848643579d6ce2d5b0ada /lld/MinGW
parent9d9ac46a08d7c4081ef3ff89ceecd3ab9ec69a14 (diff)
downloadllvm-project-37bf9bb405ffcbd2dbca8d645ec2251ba34ac230.tar.gz
Use error instead of fatal to report usage errors
Differential Revision: https://reviews.llvm.org/D68768 llvm-svn: 374297
Diffstat (limited to 'lld/MinGW')
-rw-r--r--lld/MinGW/Driver.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp
index 2ed001fcf9af..a5f64496eae9 100644
--- a/lld/MinGW/Driver.cpp
+++ b/lld/MinGW/Driver.cpp
@@ -103,9 +103,9 @@ opt::InputArgList MinGWOptTable::parse(ArrayRef<const char *> argv) {
opt::InputArgList args = this->ParseArgs(vec, missingIndex, missingCount);
if (missingCount)
- fatal(StringRef(args.getArgString(missingIndex)) + ": missing argument");
+ error(StringRef(args.getArgString(missingIndex)) + ": missing argument");
for (auto *arg : args.filtered(OPT_UNKNOWN))
- fatal("unknown argument: " + arg->getAsString(args));
+ error("unknown argument: " + arg->getAsString(args));
return args;
}
@@ -160,9 +160,14 @@ searchLibrary(StringRef name, ArrayRef<StringRef> searchPaths, bool bStatic) {
// Convert Unix-ish command line arguments to Windows-ish ones and
// then call coff::link.
bool mingw::link(ArrayRef<const char *> argsArr, raw_ostream &diag) {
+ enableColors(diag.has_colors());
+
MinGWOptTable parser;
opt::InputArgList args = parser.parse(argsArr.slice(1));
+ if (errorCount())
+ return false;
+
if (args.hasArg(OPT_help)) {
printHelp(argsArr[0]);
return true;
@@ -183,8 +188,10 @@ bool mingw::link(ArrayRef<const char *> argsArr, raw_ostream &diag) {
if (args.hasArg(OPT_version))
return true;
- if (!args.hasArg(OPT_INPUT) && !args.hasArg(OPT_l))
- fatal("no input files");
+ if (!args.hasArg(OPT_INPUT) && !args.hasArg(OPT_l)) {
+ error("no input files");
+ return false;
+ }
std::vector<std::string> linkArgs;
auto add = [&](const Twine &s) { linkArgs.push_back(s.str()); };
@@ -290,7 +297,7 @@ bool mingw::link(ArrayRef<const char *> argsArr, raw_ostream &diag) {
else if (s == "safe" || s == "none")
add("-opt:noicf");
else
- fatal("unknown parameter: --icf=" + s);
+ error("unknown parameter: --icf=" + s);
} else {
add("-opt:noicf");
}
@@ -306,7 +313,7 @@ bool mingw::link(ArrayRef<const char *> argsArr, raw_ostream &diag) {
else if (s == "arm64pe")
add("-machine:arm64");
else
- fatal("unknown parameter: -m" + s);
+ error("unknown parameter: -m" + s);
}
for (auto *a : args.filtered(OPT_mllvm))