[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