summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-11-12 19:00:37 +0000
committerRui Ueyama <ruiu@google.com>2015-11-12 19:00:37 +0000
commit1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b (patch)
tree3be907d30ba3662aef37d3a51311f9127663309e
parentf5bcf2a72fc5f4b2ac69b5b7edc993fb3a1434c3 (diff)
downloadbcm5719-llvm-1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b.tar.gz
bcm5719-llvm-1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b.zip
ELF2: Simplify -z option handling. NFC.
llvm-svn: 252924
-rw-r--r--lld/ELF/Driver.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 79ffd3039e4..e592a739d1e 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -94,6 +94,13 @@ getString(opt::InputArgList &Args, unsigned Key, StringRef Default = "") {
return Default;
}
+static bool hasZOption(opt::InputArgList &Args, StringRef Key) {
+ for (auto *Arg : Args.filtered(OPT_z))
+ if (Key == Arg->getValue())
+ return true;
+ return false;
+}
+
void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
initSymbols();
@@ -164,6 +171,10 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) {
Config->SoName = getString(Args, OPT_soname);
Config->Sysroot = getString(Args, OPT_sysroot);
+ Config->ZNodelete = hasZOption(Args, "nodelete");
+ Config->ZNow = hasZOption(Args, "now");
+ Config->ZOrigin = hasZOption(Args, "origin");
+
if (auto *Arg = Args.getLastArg(OPT_O)) {
StringRef Val = Arg->getValue();
if (Val.getAsInteger(10, Config->Optimize))
@@ -184,16 +195,6 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) {
for (auto *Arg : Args.filtered(OPT_undefined))
Config->Undefined.push_back(Arg->getValue());
- for (auto *Arg : Args.filtered(OPT_z)) {
- StringRef S = Arg->getValue();
- if (S == "nodelete")
- Config->ZNodelete = true;
- else if (S == "now")
- Config->ZNow = true;
- else if (S == "origin")
- Config->ZOrigin = true;
- }
-
for (auto *Arg : Args) {
switch (Arg->getOption().getID()) {
case OPT_l:
OpenPOWER on IntegriCloud