[lld] c2419aa - [lld-macho] Add option --error-limit=N

Greg McGary via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 26 07:11:03 PDT 2021


Author: Greg McGary
Date: 2021-04-26T07:10:12-07:00
New Revision: c2419aae762a040b4f7b5bc7b701444949e2d9f8

URL: https://github.com/llvm/llvm-project/commit/c2419aae762a040b4f7b5bc7b701444949e2d9f8
DIFF: https://github.com/llvm/llvm-project/commit/c2419aae762a040b4f7b5bc7b701444949e2d9f8.diff

LOG: [lld-macho] Add option --error-limit=N

Add option to limit (or remove limits) on the number of errors printed before exiting. This option exists in the other lld ports: COFF & ELF.

Differential Revision: https://reviews.llvm.org/D101274

Added: 
    lld/test/MachO/error-limit.test

Modified: 
    lld/MachO/Driver.cpp
    lld/MachO/Options.td

Removed: 
    


################################################################################
diff  --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp
index 0b626baa47b62..207a329eeff80 100644
--- a/lld/MachO/Driver.cpp
+++ b/lld/MachO/Driver.cpp
@@ -876,6 +876,11 @@ bool macho::link(ArrayRef<const char *> argsArr, bool canExitEarly,
   MachOOptTable parser;
   InputArgList args = parser.parse(argsArr.slice(1));
 
+  errorHandler().errorLimitExceededMsg =
+      "too many errors emitted, stopping now "
+      "(use --error-limit=0 to see all errors)";
+  errorHandler().errorLimit = args::getInteger(args, OPT_error_limit_eq, 20);
+
   if (args.hasArg(OPT_help_hidden)) {
     parser.printHelp(argsArr[0], /*showHidden=*/true);
     return true;

diff  --git a/lld/MachO/Options.td b/lld/MachO/Options.td
index 66d1ed90f5616..e502ed4d734b7 100644
--- a/lld/MachO/Options.td
+++ b/lld/MachO/Options.td
@@ -10,6 +10,9 @@ def help : Flag<["-", "--"], "help">,
 def help_hidden : Flag<["--"], "help-hidden">,
     HelpText<"Display help for hidden options">,
     Group<grp_lld>;
+def error_limit_eq : Joined<["--"], "error-limit=">,
+    HelpText<"Maximum number of errors to print before exiting (default: 20)">,
+    Group<grp_lld>;
 def color_diagnostics: Flag<["--"], "color-diagnostics">,
     HelpText<"Alias for --color-diagnostics=always">,
     Group<grp_lld>;

diff  --git a/lld/test/MachO/error-limit.test b/lld/test/MachO/error-limit.test
new file mode 100644
index 0000000000000..79eaa3d522311
--- /dev/null
+++ b/lld/test/MachO/error-limit.test
@@ -0,0 +1,28 @@
+## Check that we only see 20 (the default error-limit) "cannot open" errors
+RUN: not %lld A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2>&1 | \
+RUN:     FileCheck -check-prefix=DEFAULT %s
+
+DEFAULT:      cannot open A:
+DEFAULT:      cannot open T:
+DEFAULT-NOT:  cannot open U:
+DEFAULT-NEXT: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
+
+## Check that we only see 5 "cannot open" errors when --error-limit=5
+RUN: not %lld --error-limit=5 A B C D E F G H I J 2>&1 \
+RUN:   | FileCheck -check-prefix=LIMIT5 %s
+
+LIMIT5:      cannot open A:
+LIMIT5:      cannot open E:
+LIMIT5-NOT:  cannot open F:
+LIMIT5-NEXT: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
+
+## Check that we see all "cannot open" errors when --error-limit=0 (unimited)
+RUN: not %lld --error-limit=0 A B C D E F G H I J K L M N O P Q R S T U V W 2>&1 | \
+RUN:     FileCheck -check-prefix=UNLIMITED %s
+
+UNLIMITED:     cannot open A:
+UNLIMITED:     cannot open T:
+UNLIMITED:     cannot open U:
+UNLIMITED:     cannot open V:
+UNLIMITED:     cannot open W:
+UNLIMITED-NOT: too many errors emitted, stopping now (use --error-limit=0 to see all errors)


        


More information about the llvm-commits mailing list