// Handle /lldmingw early, since it can potentially affect how other
// options are handled.
config->mingw = args.hasArg(OPT_lldmingw);
+ if (config->mingw)
+ ctx.e.errorLimitExceededMsg = "too many errors emitted, stopping now"
+ " (use --error-limit=0 to see all errors)";
// Handle /linkrepro and /reproduce.
if (Optional<std::string> path = getReproduceFile(args)) {
" only takes effect when used with --guard-cf");
}
+ if (auto *a = args.getLastArg(OPT_error_limit)) {
+ int n;
+ StringRef s = a->getValue();
+ if (s.getAsInteger(10, n))
+ error(a->getSpelling() + ": number expected, but got " + s);
+ else
+ add("-errorlimit:" + s);
+ }
+
for (auto *a : args.filtered(OPT_mllvm))
add("-mllvm:" + StringRef(a->getValue()));
defm guard_longjmp : B<"guard-longjmp",
"Enable Control Flow Guard long jump hardening (default for --guard-cf)" ,
"Do not enable Control Flow Guard long jump hardening">;
+defm error_limit:
+ EqLong<"error-limit", "Maximum number of errors to emit before stopping (0 = no limit)">;
// Alias
def alias_Bdynamic_call_shared: Flag<["-"], "call_shared">, Alias<Bdynamic>;
RUN: 15 16 17 18 19 20 21 22 2>&1 | FileCheck -check-prefix=WRONG %s
WRONG: /errorlimit: number expected, but got XYZ
+
+RUN: not lld-link -lldmingw 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 \
+RUN: 21 22 2>&1 | FileCheck -check-prefix=MINGW-DEFAULT %s
+
+MINGW-DEFAULT: could not open '01'
+MINGW-DEFAULT: could not open '20'
+MINGW-DEFAULT-NEXT: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
+MINGW-DEFAULT-NOT: could not open '21'
--- /dev/null
+RUN: ld.lld -### foo.o -m i386pep 2>&1 | FileCheck -check-prefix=DEFAULT %s
+DEFAULT-NOT: -errorlimit:
+DEFAULT-NOT: /errorlimit:
+
+RUN: ld.lld -### foo.o -m i386pep --error-limit=5 2>&1 | FileCheck -check-prefix=NUMERIC %s
+NUMERIC: -errorlimit:5
+
+RUN: ld.lld -### foo.o -m i386pep --error-limit=0 2>&1 | FileCheck -check-prefix=UNLIMITED %s
+UNLIMITED: -errorlimit:0
+
+RUN: not ld.lld -### foo.o -m i386pep --error-limit=XYZ 2>&1 | FileCheck -check-prefix=WRONG %s
+WRONG: --error-limit: number expected, but got XYZ