[PATCH] D45902: Add "-z lazy" and "-z relro".
Rui Ueyama via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 20 13:51:55 PDT 2018
ruiu created this revision.
ruiu added a reviewer: tmsriram.
Herald added subscribers: arichardson, emaste.
Herald added a reviewer: espindola.
Add "-z lazy" and "-z relro".
https://reviews.llvm.org/D45902
Files:
lld/ELF/Driver.cpp
Index: lld/ELF/Driver.cpp
===================================================================
--- lld/ELF/Driver.cpp
+++ lld/ELF/Driver.cpp
@@ -313,6 +313,17 @@
return false;
}
+static bool
+getZFlag(opt::InputArgList &Args, StringRef K1, StringRef K2, bool Default) {
+ for (auto *Arg : llvm::reverse(Args.filtered(OPT_z))) {
+ if (K1 == Arg->getValue())
+ return true;
+ if (K2 == Arg->getValue())
+ return false;
+ }
+ return Default;
+}
+
void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
ELFOptTable Parser;
opt::InputArgList Args = Parser.parse(ArgsArr.slice(1));
@@ -754,9 +765,9 @@
Config->ZNocopyreloc = hasZOption(Args, "nocopyreloc");
Config->ZNodelete = hasZOption(Args, "nodelete");
Config->ZNodlopen = hasZOption(Args, "nodlopen");
- Config->ZNow = hasZOption(Args, "now");
+ Config->ZNow = getZFlag(Args, "now", "lazy", true);
Config->ZOrigin = hasZOption(Args, "origin");
- Config->ZRelro = !hasZOption(Args, "norelro");
+ Config->ZRelro = getZFlag(Args, "relro", "norelro", true);
Config->ZRetpolineplt = hasZOption(Args, "retpolineplt");
Config->ZRodynamic = hasZOption(Args, "rodynamic");
Config->ZStackSize = args::getZOptionValue(Args, OPT_z, "stack-size", 0);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45902.143382.patch
Type: text/x-patch
Size: 1247 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180420/8fa0acbd/attachment.bin>
More information about the llvm-commits
mailing list