[lld] r336599 - Factor out code to parse -pack-dyn-relocs. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 9 13:22:28 PDT 2018


Author: ruiu
Date: Mon Jul  9 13:22:28 2018
New Revision: 336599

URL: http://llvm.org/viewvc/llvm-project?rev=336599&view=rev
Log:
Factor out code to parse -pack-dyn-relocs. NFC.

Modified:
    lld/trunk/ELF/Config.h
    lld/trunk/ELF/Driver.cpp

Modified: lld/trunk/ELF/Config.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=336599&r1=336598&r2=336599&view=diff
==============================================================================
--- lld/trunk/ELF/Config.h (original)
+++ lld/trunk/ELF/Config.h Mon Jul  9 13:22:28 2018
@@ -113,7 +113,7 @@ struct Configuration {
                   uint64_t>
       CallGraphProfile;
   bool AllowMultipleDefinition;
-  bool AndroidPackDynRelocs = false;
+  bool AndroidPackDynRelocs;
   bool ARMHasBlx = false;
   bool ARMHasMovtMovw = false;
   bool ARMJ1J2BranchEncoding = false;
@@ -153,7 +153,7 @@ struct Configuration {
   bool PrintGcSections;
   bool PrintIcfSections;
   bool Relocatable;
-  bool RelrPackDynRelocs = false;
+  bool RelrPackDynRelocs;
   bool SaveTemps;
   bool SingleRoRx;
   bool Shared;

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=336599&r1=336598&r2=336599&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Mon Jul  9 13:22:28 2018
@@ -607,6 +607,20 @@ getBuildId(opt::InputArgList &Args) {
   return {BuildIdKind::None, {}};
 }
 
+static std::pair<bool, bool> getPackDynRelocs(opt::InputArgList &Args) {
+  StringRef S = Args.getLastArgValue(OPT_pack_dyn_relocs, "none");
+  if (S == "android")
+    return {true, false};
+  if (S == "relr")
+    return {false, true};
+  if (S == "android+relr")
+    return {true, true};
+
+  if (S != "none")
+    error("unknown -pack-dyn-relocs format: " + S);
+  return {false, false};
+}
+
 static void readCallGraph(MemoryBufferRef MB) {
   // Build a map from symbol name to section
   DenseMap<StringRef, const Symbol *> SymbolNameToSymbol;
@@ -873,19 +887,8 @@ void LinkerDriver::readConfigs(opt::Inpu
 
   std::tie(Config->BuildId, Config->BuildIdVector) = getBuildId(Args);
 
-  if (auto *Arg = Args.getLastArg(OPT_pack_dyn_relocs)) {
-    StringRef S = Arg->getValue();
-    if (S == "android") {
-      Config->AndroidPackDynRelocs = true;
-    } else if (S == "relr") {
-      Config->RelrPackDynRelocs = true;
-    } else if (S == "android+relr") {
-      Config->AndroidPackDynRelocs = true;
-      Config->RelrPackDynRelocs = true;
-    } else if (S != "none") {
-      error("unknown -pack-dyn-relocs format: " + S);
-    }
-  }
+  std::tie(Config->AndroidPackDynRelocs, Config->RelrPackDynRelocs) =
+      getPackDynRelocs(Args);
 
   if (auto *Arg = Args.getLastArg(OPT_symbol_ordering_file))
     if (Optional<MemoryBufferRef> Buffer = readFile(Arg->getValue()))




More information about the llvm-commits mailing list