[lld] r276586 - Simplify. NFC.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 24 16:47:32 PDT 2016
Author: ruiu
Date: Sun Jul 24 18:47:31 2016
New Revision: 276586
URL: http://llvm.org/viewvc/llvm-project?rev=276586&view=rev
Log:
Simplify. NFC.
Modified:
lld/trunk/ELF/LinkerScript.cpp
lld/trunk/ELF/LinkerScript.h
Modified: lld/trunk/ELF/LinkerScript.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=276586&r1=276585&r2=276586&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.cpp (original)
+++ lld/trunk/ELF/LinkerScript.cpp Sun Jul 24 18:47:31 2016
@@ -224,16 +224,14 @@ void LinkerScript<ELFT>::assignAddresses
template <class ELFT>
std::vector<PhdrEntry<ELFT>>
LinkerScript<ELFT>::createPhdrs(ArrayRef<OutputSectionBase<ELFT> *> Sections) {
- int TlsNum = -1;
- int NoteNum = -1;
- int RelroNum = -1;
- PhdrEntry<ELFT> *Load = nullptr;
- uintX_t Flags = PF_R;
- std::vector<PhdrEntry<ELFT>> Phdrs;
+ std::vector<PhdrEntry<ELFT>> Ret;
+ PhdrEntry<ELFT> *TlsPhdr = nullptr;
+ PhdrEntry<ELFT> *NotePhdr = nullptr;
+ PhdrEntry<ELFT> *RelroPhdr = nullptr;
for (const PhdrsCommand &Cmd : Opt.PhdrsCommands) {
- Phdrs.emplace_back(Cmd.Type, Cmd.Flags == UINT_MAX ? PF_R : Cmd.Flags);
- PhdrEntry<ELFT> &Phdr = Phdrs.back();
+ Ret.emplace_back(Cmd.Type, Cmd.Flags == UINT_MAX ? PF_R : Cmd.Flags);
+ PhdrEntry<ELFT> &Phdr = Ret.back();
if (Cmd.HasFilehdr)
Phdr.add(Out<ELFT>::ElfHeader);
@@ -252,13 +250,13 @@ LinkerScript<ELFT>::createPhdrs(ArrayRef
}
break;
case PT_TLS:
- TlsNum = Phdrs.size() - 1;
+ TlsPhdr = &Phdr;
break;
case PT_NOTE:
- NoteNum = Phdrs.size() - 1;
+ NotePhdr = &Phdr;
break;
case PT_GNU_RELRO:
- RelroNum = Phdrs.size() - 1;
+ RelroPhdr = &Phdr;
break;
case PT_GNU_EH_FRAME:
if (!Out<ELFT>::EhFrame->empty() && Out<ELFT>::EhFrameHdr) {
@@ -269,42 +267,43 @@ LinkerScript<ELFT>::createPhdrs(ArrayRef
}
}
+ PhdrEntry<ELFT> *Load = nullptr;
+ uintX_t Flags = PF_R;
for (OutputSectionBase<ELFT> *Sec : Sections) {
if (!(Sec->getFlags() & SHF_ALLOC))
break;
- if (TlsNum != -1 && (Sec->getFlags() & SHF_TLS))
- Phdrs[TlsNum].add(Sec);
+ if (TlsPhdr && (Sec->getFlags() & SHF_TLS))
+ TlsPhdr->add(Sec);
if (!needsPtLoad<ELFT>(Sec))
continue;
- const std::vector<size_t> &PhdrIds =
- getPhdrIndicesForSection(Sec->getName());
+ std::vector<size_t> PhdrIds = getPhdrIndices(Sec->getName());
if (!PhdrIds.empty()) {
// Assign headers specified by linker script
for (size_t Id : PhdrIds) {
- Phdrs[Id].add(Sec);
+ Ret[Id].add(Sec);
if (Opt.PhdrsCommands[Id].Flags == UINT_MAX)
- Phdrs[Id].H.p_flags |= toPhdrFlags(Sec->getFlags());
+ Ret[Id].H.p_flags |= toPhdrFlags(Sec->getFlags());
}
} else {
// If we have no load segment or flags've changed then we want new load
// segment.
uintX_t NewFlags = toPhdrFlags(Sec->getFlags());
if (Load == nullptr || Flags != NewFlags) {
- Load = &*Phdrs.emplace(Phdrs.end(), PT_LOAD, NewFlags);
+ Load = &*Ret.emplace(Ret.end(), PT_LOAD, NewFlags);
Flags = NewFlags;
}
Load->add(Sec);
}
- if (RelroNum != -1 && isRelroSection(Sec))
- Phdrs[RelroNum].add(Sec);
- if (NoteNum != -1 && Sec->getType() == SHT_NOTE)
- Phdrs[NoteNum].add(Sec);
+ if (RelroPhdr && isRelroSection(Sec))
+ RelroPhdr->add(Sec);
+ if (NotePhdr && Sec->getType() == SHT_NOTE)
+ NotePhdr->add(Sec);
}
- return Phdrs;
+ return Ret;
}
template <class ELFT>
@@ -369,11 +368,10 @@ template <class ELFT> bool LinkerScript<
// by Name. Each index is a zero based number of ELF header listed within
// PHDRS {} script block.
template <class ELFT>
-std::vector<size_t>
-LinkerScript<ELFT>::getPhdrIndicesForSection(StringRef Name) {
+std::vector<size_t> LinkerScript<ELFT>::getPhdrIndices(StringRef SectionName) {
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands) {
auto *Cmd = dyn_cast<OutputSectionCommand>(Base.get());
- if (!Cmd || Cmd->Name != Name)
+ if (!Cmd || Cmd->Name != SectionName)
continue;
std::vector<size_t> Indices;
Modified: lld/trunk/ELF/LinkerScript.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.h?rev=276586&r1=276585&r2=276586&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.h (original)
+++ lld/trunk/ELF/LinkerScript.h Sun Jul 24 18:47:31 2016
@@ -134,7 +134,7 @@ private:
ScriptConfiguration &Opt = *ScriptConfig;
int getSectionIndex(StringRef Name);
- std::vector<size_t> getPhdrIndicesForSection(StringRef Name);
+ std::vector<size_t> getPhdrIndices(StringRef SectionName);
void dispatchAssignment(SymbolAssignment *Cmd);
uintX_t Dot;
More information about the llvm-commits
mailing list