From c0e4020c927134b1dfe4181f54147af95f482558 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Fri, 20 Nov 2020 16:44:55 -0500 Subject: [PATCH] [lld-macho] Implement -fatal_warnings Differential Revision: https://reviews.llvm.org/D91894 --- lld/MachO/DriverUtils.cpp | 4 ++++ lld/MachO/Options.td | 3 +-- lld/test/MachO/fatal-warnings.s | 13 +++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 lld/test/MachO/fatal-warnings.s diff --git a/lld/MachO/DriverUtils.cpp b/lld/MachO/DriverUtils.cpp index 90f1dd323f02..ec57c6898129 100644 --- a/lld/MachO/DriverUtils.cpp +++ b/lld/MachO/DriverUtils.cpp @@ -76,6 +76,10 @@ opt::InputArgList MachOOptTable::parse(ArrayRef argv) { cl::ExpandResponseFiles(saver, cl::TokenizeGNUCommandLine, vec); opt::InputArgList args = ParseArgs(vec, missingIndex, missingCount); + // Handle -fatal_warnings early since it converts missing argument warnings + // to errors. + errorHandler().fatalWarnings = args.hasArg(OPT_fatal_warnings); + if (missingCount) error(Twine(args.getArgString(missingIndex)) + ": missing argument"); diff --git a/lld/MachO/Options.td b/lld/MachO/Options.td index f36820b22b17..ed3d00452bd3 100644 --- a/lld/MachO/Options.td +++ b/lld/MachO/Options.td @@ -610,8 +610,7 @@ def no_application_extension : Flag<["-"], "no_application_extension">, Flags<[HelpHidden]>, Group; def fatal_warnings : Flag<["-"], "fatal_warnings">, - HelpText<"Escalate warnings as errors">, - Flags<[HelpHidden]>, + HelpText<"Treat warnings as errors">, Group; def no_eh_labels : Flag<["-"], "no_eh_labels">, HelpText<"In -r mode, suppress .eh labels in the __eh_frame section">, diff --git a/lld/test/MachO/fatal-warnings.s b/lld/test/MachO/fatal-warnings.s new file mode 100644 index 000000000000..4ab5589cde08 --- /dev/null +++ b/lld/test/MachO/fatal-warnings.s @@ -0,0 +1,13 @@ +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t1.o + +# RUN: %lld %t1.o -o /dev/null -single_module 2>&1 \ +# RUN: | FileCheck -check-prefix=WARNING %s +# RUN: not %lld %t1.o -fatal_warnings -o /dev/null -single_module 2>&1 \ +# RUN: | FileCheck -check-prefix=ERROR %s + +# ERROR: error: Option `-single_module' is deprecated +# WARNING: warning: Option `-single_module' is deprecated + +.globl _main +_main: