diff options
author | Rui Ueyama <ruiu@google.com> | 2015-11-12 19:00:37 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2015-11-12 19:00:37 +0000 |
commit | 1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b (patch) | |
tree | 3be907d30ba3662aef37d3a51311f9127663309e | |
parent | f5bcf2a72fc5f4b2ac69b5b7edc993fb3a1434c3 (diff) | |
download | bcm5719-llvm-1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b.tar.gz bcm5719-llvm-1a8fffa2fb803bbe2d07eb6c78ea4d99f293086b.zip |
ELF2: Simplify -z option handling. NFC.
llvm-svn: 252924
-rw-r--r-- | lld/ELF/Driver.cpp | 21 |
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: |