mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 03:29:57 +00:00
[COFF] Add support for /WX
link.exe supports this option to convert warnings into errors, and it's useful to support in LLD as well. Differential Revision: https://reviews.llvm.org/D39148 llvm-svn: 316502
This commit is contained in:
parent
59bf362974
commit
b57e640f3a
@ -90,6 +90,7 @@ struct Configuration {
|
||||
uint64_t ErrorLimit = 20;
|
||||
bool Relocatable = true;
|
||||
bool Force = false;
|
||||
bool FatalWarnings = false;
|
||||
bool Debug = false;
|
||||
bool WriteSymtab = true;
|
||||
unsigned DebugTypes = static_cast<unsigned>(DebugType::None);
|
||||
|
@ -738,6 +738,9 @@ opt::InputArgList ArgParser::parse(ArrayRef<const char *> Argv) {
|
||||
message(Msg);
|
||||
}
|
||||
|
||||
// Handle /WX early since it converts missing argument warnings to errors.
|
||||
Config->FatalWarnings = Args.hasFlag(OPT_WX, OPT_WX_no, false);
|
||||
|
||||
if (MissingCount)
|
||||
fatal(Twine(Args.getArgString(MissingIndex)) + ": missing argument");
|
||||
for (auto *Arg : Args.filtered(OPT_UNKNOWN))
|
||||
|
@ -106,6 +106,11 @@ void fatal(llvm::Error &Err, const Twine &Msg) {
|
||||
}
|
||||
|
||||
void warn(const Twine &Msg) {
|
||||
if (Config->FatalWarnings) {
|
||||
error(Msg);
|
||||
return;
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> Lock(Mu);
|
||||
print("warning: ", raw_ostream::MAGENTA);
|
||||
*ErrorOS << Msg << "\n";
|
||||
|
@ -85,6 +85,7 @@ def wholearchive_flag : F<"wholearchive">;
|
||||
def force : F<"force">,
|
||||
HelpText<"Allow undefined symbols when creating executables">;
|
||||
def force_unresolved : F<"force:unresolved">;
|
||||
defm WX : B<"WX", "Treat warnings as errors", "Don't treat warnings as errors">;
|
||||
|
||||
defm allowbind : B<"allowbind", "Enable DLL binding (default)",
|
||||
"Disable DLL binding">;
|
||||
@ -162,5 +163,3 @@ def tlbid : QF<"tlbid">;
|
||||
def tlbout : QF<"tlbout">;
|
||||
def verbose_all : QF<"verbose">;
|
||||
def guardsym : QF<"guardsym">;
|
||||
|
||||
defm wx : QB<"wx">;
|
||||
|
17
lld/test/COFF/wx.s
Normal file
17
lld/test/COFF/wx.s
Normal file
@ -0,0 +1,17 @@
|
||||
# REQUIRES: x86
|
||||
|
||||
# RUN: llvm-mc -triple=x86_64-windows-msvc -filetype=obj -o %t.obj %s
|
||||
# RUN: not lld-link /out:%t.exe /entry:main -notarealoption /WX %t.obj 2>&1 | \
|
||||
# RUN: FileCheck -check-prefix=ERROR %s
|
||||
# RUN: not lld-link /out:%t.exe /entry:main -notarealoption /WX:NO /WX %t.obj 2>&1 | \
|
||||
# RUN: FileCheck -check-prefix=ERROR %s
|
||||
# RUN: lld-link /out:%t.exe /entry:main -notarealoption /WX /WX:NO %t.obj 2>&1 | \
|
||||
# RUN: FileCheck -check-prefix=WARNING %s
|
||||
|
||||
# ERROR: error: ignoring unknown argument: -notarealoption
|
||||
# WARNING: warning: ignoring unknown argument: -notarealoption
|
||||
|
||||
.text
|
||||
.global main
|
||||
main:
|
||||
ret
|
Loading…
Reference in New Issue
Block a user