diff options
Diffstat (limited to 'lld/MinGW/Driver.cpp')
-rw-r--r-- | lld/MinGW/Driver.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 37d2439..90d210e 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -379,6 +379,17 @@ bool mingw::link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS, error("unknown parameter: -m" + s); } + if (args.hasFlag(OPT_guard_cf, OPT_no_guard_cf, false)) { + if (args.hasFlag(OPT_guard_longjmp, OPT_no_guard_longjmp, true)) + add("-guard:cf,longjmp"); + else + add("-guard:cf,nolongjmp"); + } else if (args.hasFlag(OPT_guard_longjmp, OPT_no_guard_longjmp, false)) { + auto *a = args.getLastArg(OPT_guard_longjmp); + warn("parameter " + a->getSpelling() + + " only takes effect when used with --guard-cf"); + } + for (auto *a : args.filtered(OPT_mllvm)) add("-mllvm:" + StringRef(a->getValue())); |