[lld] r298456 - Rename LinkerScriptBase -> LinkerScript.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 21 16:02:51 PDT 2017
Author: ruiu
Date: Tue Mar 21 18:02:51 2017
New Revision: 298456
URL: http://llvm.org/viewvc/llvm-project?rev=298456&view=rev
Log:
Rename LinkerScriptBase -> LinkerScript.
Modified:
lld/trunk/ELF/Driver.cpp
lld/trunk/ELF/LinkerScript.cpp
lld/trunk/ELF/LinkerScript.h
Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=298456&r1=298455&r2=298456&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Tue Mar 21 18:02:51 2017
@@ -855,7 +855,7 @@ template <class ELFT> void LinkerDriver:
SymbolTable<ELFT> Symtab;
elf::Symtab<ELFT>::X = &Symtab;
Target = createTarget();
- Script = make<LinkerScriptBase>();
+ Script = make<LinkerScript>();
Config->MaxPageSize = getMaxPageSize(Args);
Config->ImageBase = getImageBase(Args);
Modified: lld/trunk/ELF/LinkerScript.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=298456&r1=298455&r2=298456&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.cpp (original)
+++ lld/trunk/ELF/LinkerScript.cpp Tue Mar 21 18:02:51 2017
@@ -109,7 +109,7 @@ static ExprValue bitOr(ExprValue A, Expr
static ExprValue bitNot(ExprValue A) { return ~A.getValue(); }
static ExprValue minus(ExprValue A) { return -A.getValue(); }
-LinkerScriptBase *elf::Script;
+LinkerScript *elf::Script;
ScriptConfiguration *elf::ScriptConfig;
template <class ELFT> static SymbolBody *addRegular(SymbolAssignment *Cmd) {
@@ -135,8 +135,8 @@ static bool isUnderSysroot(StringRef Pat
return false;
}
-OutputSection *LinkerScriptBase::getOutputSection(const Twine &Loc,
- StringRef Name) {
+OutputSection *LinkerScript::getOutputSection(const Twine &Loc,
+ StringRef Name) {
static OutputSection FakeSec("", 0, 0);
for (OutputSection *Sec : *OutputSections)
@@ -154,14 +154,14 @@ OutputSection *LinkerScriptBase::getOutp
// Linker script does not create an output section if its content is empty.
// We want to allow SIZEOF(.foo) where .foo is a section which happened to
// be empty. That is why this function is different from getOutputSection().
-uint64_t LinkerScriptBase::getOutputSectionSize(StringRef Name) {
+uint64_t LinkerScript::getOutputSectionSize(StringRef Name) {
for (OutputSection *Sec : *OutputSections)
if (Sec->Name == Name)
return Sec->Size;
return 0;
}
-void LinkerScriptBase::setDot(Expr E, const Twine &Loc, bool InSec) {
+void LinkerScript::setDot(Expr E, const Twine &Loc, bool InSec) {
uint64_t Val = E().getValue();
if (Val < Dot) {
if (InSec)
@@ -179,7 +179,7 @@ void LinkerScriptBase::setDot(Expr E, co
// Sets value of a symbol. Two kinds of symbols are processed: synthetic
// symbols, whose value is an offset from beginning of section and regular
// symbols whose value is absolute.
-void LinkerScriptBase::assignSymbol(SymbolAssignment *Cmd, bool InSec) {
+void LinkerScript::assignSymbol(SymbolAssignment *Cmd, bool InSec) {
if (Cmd->Name == ".") {
setDot(Cmd->Expression, Cmd->Location, InSec);
return;
@@ -231,7 +231,7 @@ static SymbolBody *addRegularSymbol(Symb
}
}
-void LinkerScriptBase::addSymbol(SymbolAssignment *Cmd) {
+void LinkerScript::addSymbol(SymbolAssignment *Cmd) {
if (Cmd->Name == ".")
return;
@@ -270,7 +270,7 @@ static StringRef basename(InputSectionBa
return "";
}
-bool LinkerScriptBase::shouldKeep(InputSectionBase *S) {
+bool LinkerScript::shouldKeep(InputSectionBase *S) {
for (InputSectionDescription *ID : Opt.KeptSections)
if (ID->FilePat.match(basename(S)))
for (SectionPattern &P : ID->SectionPatterns)
@@ -327,7 +327,7 @@ static void sortSections(InputSectionBas
}
// Compute and remember which sections the InputSectionDescription matches.
-void LinkerScriptBase::computeInputSections(InputSectionDescription *I) {
+void LinkerScript::computeInputSections(InputSectionDescription *I) {
// Collects all sections that satisfy constraints of I
// and attach them to I.
for (SectionPattern &Pat : I->SectionPatterns) {
@@ -374,7 +374,7 @@ void LinkerScriptBase::computeInputSecti
}
}
-void LinkerScriptBase::discard(ArrayRef<InputSectionBase *> V) {
+void LinkerScript::discard(ArrayRef<InputSectionBase *> V) {
for (InputSectionBase *S : V) {
S->Live = false;
if (S == InX::ShStrTab)
@@ -384,7 +384,7 @@ void LinkerScriptBase::discard(ArrayRef<
}
std::vector<InputSectionBase *>
-LinkerScriptBase::createInputSectionList(OutputSectionCommand &OutCmd) {
+LinkerScript::createInputSectionList(OutputSectionCommand &OutCmd) {
std::vector<InputSectionBase *> Ret;
for (const std::unique_ptr<BaseCommand> &Base : OutCmd.Commands) {
@@ -399,7 +399,7 @@ LinkerScriptBase::createInputSectionList
return Ret;
}
-void LinkerScriptBase::processCommands(OutputSectionFactory &Factory) {
+void LinkerScript::processCommands(OutputSectionFactory &Factory) {
// A symbol can be assigned before any section is mentioned in the linker
// script. In an DSO, the symbol values are addresses, so the only important
// section values are:
@@ -473,7 +473,7 @@ void LinkerScriptBase::processCommands(O
}
// Add sections that didn't match any sections command.
-void LinkerScriptBase::addOrphanSections(OutputSectionFactory &Factory) {
+void LinkerScript::addOrphanSections(OutputSectionFactory &Factory) {
for (InputSectionBase *S : InputSections)
if (S->Live && !S->OutSec)
Factory.addInputSec(S, getOutputSectionName(S->Name));
@@ -483,7 +483,7 @@ static bool isTbss(OutputSection *Sec) {
return (Sec->Flags & SHF_TLS) && Sec->Type == SHT_NOBITS;
}
-void LinkerScriptBase::output(InputSection *S) {
+void LinkerScript::output(InputSection *S) {
if (!AlreadyOutputIS.insert(S).second)
return;
bool IsTbss = isTbss(CurOutSec);
@@ -517,7 +517,7 @@ void LinkerScriptBase::output(InputSecti
Dot = Pos;
}
-void LinkerScriptBase::flush() {
+void LinkerScript::flush() {
assert(CurOutSec);
if (!AlreadyOutputOS.insert(CurOutSec).second)
return;
@@ -525,7 +525,7 @@ void LinkerScriptBase::flush() {
output(I);
}
-void LinkerScriptBase::switchTo(OutputSection *Sec) {
+void LinkerScript::switchTo(OutputSection *Sec) {
if (CurOutSec == Sec)
return;
if (AlreadyOutputOS.count(Sec))
@@ -544,7 +544,7 @@ void LinkerScriptBase::switchTo(OutputSe
CurOutSec->LMAOffset = LMAOffset();
}
-void LinkerScriptBase::process(BaseCommand &Base) {
+void LinkerScript::process(BaseCommand &Base) {
// This handles the assignments to symbol or to a location counter (.)
if (auto *AssignCmd = dyn_cast<SymbolAssignment>(&Base)) {
assignSymbol(AssignCmd, true);
@@ -599,8 +599,8 @@ findSection(StringRef Name, const std::v
// This function searches for a memory region to place the given output
// section in. If found, a pointer to the appropriate memory region is
// returned. Otherwise, a nullptr is returned.
-MemoryRegion *LinkerScriptBase::findMemoryRegion(OutputSectionCommand *Cmd,
- OutputSection *Sec) {
+MemoryRegion *LinkerScript::findMemoryRegion(OutputSectionCommand *Cmd,
+ OutputSection *Sec) {
// If a memory region name was specified in the output section command,
// then try to find that region first.
if (!Cmd->MemoryRegionName.empty()) {
@@ -633,7 +633,7 @@ MemoryRegion *LinkerScriptBase::findMemo
// This function assigns offsets to input sections and an output section
// for a single sections command (e.g. ".text { *(.text); }").
-void LinkerScriptBase::assignOffsets(OutputSectionCommand *Cmd) {
+void LinkerScript::assignOffsets(OutputSectionCommand *Cmd) {
OutputSection *Sec = findSection(Cmd->Name, *OutputSections);
if (!Sec)
return;
@@ -670,7 +670,7 @@ void LinkerScriptBase::assignOffsets(Out
[this](std::unique_ptr<BaseCommand> &B) { process(*B.get()); });
}
-void LinkerScriptBase::removeEmptyCommands() {
+void LinkerScript::removeEmptyCommands() {
// It is common practice to use very generic linker scripts. So for any
// given run some of the output sections in the script will be empty.
// We could create corresponding empty output sections, but that would
@@ -694,7 +694,7 @@ static bool isAllSectionDescription(cons
return true;
}
-void LinkerScriptBase::adjustSectionsBeforeSorting() {
+void LinkerScript::adjustSectionsBeforeSorting() {
// If the output section contains only symbol assignments, create a
// corresponding output section. The bfd linker seems to only create them if
// '.' is assigned to, but creating these section should not have any bad
@@ -719,7 +719,7 @@ void LinkerScriptBase::adjustSectionsBef
}
}
-void LinkerScriptBase::adjustSectionsAfterSorting() {
+void LinkerScript::adjustSectionsAfterSorting() {
placeOrphanSections();
// If output section command doesn't specify any segments,
@@ -795,7 +795,7 @@ static bool shouldSkip(const BaseCommand
// determine whether a new output command should be added before or
// after another commands. For the details, look at shouldSkip
// function.
-void LinkerScriptBase::placeOrphanSections() {
+void LinkerScript::placeOrphanSections() {
// The OutputSections are already in the correct order.
// This loops creates or moves commands as needed so that they are in the
// correct order.
@@ -850,7 +850,7 @@ void LinkerScriptBase::placeOrphanSectio
}
}
-void LinkerScriptBase::processNonSectionCommands() {
+void LinkerScript::processNonSectionCommands() {
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands) {
if (auto *Cmd = dyn_cast<SymbolAssignment>(Base.get()))
assignSymbol(Cmd);
@@ -859,7 +859,7 @@ void LinkerScriptBase::processNonSection
}
}
-void LinkerScriptBase::assignAddresses(std::vector<PhdrEntry> &Phdrs) {
+void LinkerScript::assignAddresses(std::vector<PhdrEntry> &Phdrs) {
// Assign addresses as instructed by linker script SECTIONS sub-commands.
Dot = 0;
ErrorOnMissingSection = true;
@@ -892,7 +892,7 @@ void LinkerScriptBase::assignAddresses(s
}
// Creates program headers as instructed by PHDRS linker script command.
-std::vector<PhdrEntry> LinkerScriptBase::createPhdrs() {
+std::vector<PhdrEntry> LinkerScript::createPhdrs() {
std::vector<PhdrEntry> Ret;
// Process PHDRS and FILEHDR keywords because they are not
@@ -927,7 +927,7 @@ std::vector<PhdrEntry> LinkerScriptBase:
return Ret;
}
-bool LinkerScriptBase::ignoreInterpSection() {
+bool LinkerScript::ignoreInterpSection() {
// Ignore .interp section in case we have PHDRS specification
// and PT_INTERP isn't listed.
return !Opt.PhdrsCommands.empty() &&
@@ -936,7 +936,7 @@ bool LinkerScriptBase::ignoreInterpSecti
}) == Opt.PhdrsCommands.end();
}
-uint32_t LinkerScriptBase::getFiller(StringRef Name) {
+uint32_t LinkerScript::getFiller(StringRef Name) {
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands)
if (auto *Cmd = dyn_cast<OutputSectionCommand>(Base.get()))
if (Cmd->Name == Name)
@@ -963,7 +963,7 @@ static void writeInt(uint8_t *Buf, uint6
}
}
-void LinkerScriptBase::writeDataBytes(StringRef Name, uint8_t *Buf) {
+void LinkerScript::writeDataBytes(StringRef Name, uint8_t *Buf) {
int I = getSectionIndex(Name);
if (I == INT_MAX)
return;
@@ -974,7 +974,7 @@ void LinkerScriptBase::writeDataBytes(St
writeInt(Buf + Data->Offset, Data->Expression().getValue(), Data->Size);
}
-bool LinkerScriptBase::hasLMA(StringRef Name) {
+bool LinkerScript::hasLMA(StringRef Name) {
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands)
if (auto *Cmd = dyn_cast<OutputSectionCommand>(Base.get()))
if (Cmd->LMAExpr && Cmd->Name == Name)
@@ -986,7 +986,7 @@ bool LinkerScriptBase::hasLMA(StringRef
// SECTIONS commands. Sections are laid out as the same order as they
// were in the script. If a given name did not appear in the script,
// it returns INT_MAX, so that it will be laid out at end of file.
-int LinkerScriptBase::getSectionIndex(StringRef Name) {
+int LinkerScript::getSectionIndex(StringRef Name) {
for (int I = 0, E = Opt.Commands.size(); I != E; ++I)
if (auto *Cmd = dyn_cast<OutputSectionCommand>(Opt.Commands[I].get()))
if (Cmd->Name == Name)
@@ -994,7 +994,7 @@ int LinkerScriptBase::getSectionIndex(St
return INT_MAX;
}
-ExprValue LinkerScriptBase::getSymbolValue(const Twine &Loc, StringRef S) {
+ExprValue LinkerScript::getSymbolValue(const Twine &Loc, StringRef S) {
if (S == ".")
return {CurOutSec, Dot - CurOutSec->Addr};
if (SymbolBody *B = findSymbol(S)) {
@@ -1007,14 +1007,12 @@ ExprValue LinkerScriptBase::getSymbolVal
return 0;
}
-bool LinkerScriptBase::isDefined(StringRef S) {
- return findSymbol(S) != nullptr;
-}
+bool LinkerScript::isDefined(StringRef S) { return findSymbol(S) != nullptr; }
// Returns indices of ELF headers containing specific section, identified
// by Name. Each index is a zero based number of ELF header listed within
// PHDRS {} script block.
-std::vector<size_t> LinkerScriptBase::getPhdrIndices(StringRef SectionName) {
+std::vector<size_t> LinkerScript::getPhdrIndices(StringRef SectionName) {
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands) {
auto *Cmd = dyn_cast<OutputSectionCommand>(Base.get());
if (!Cmd || Cmd->Name != SectionName)
@@ -1028,7 +1026,7 @@ std::vector<size_t> LinkerScriptBase::ge
return {};
}
-size_t LinkerScriptBase::getPhdrIndex(const Twine &Loc, StringRef PhdrName) {
+size_t LinkerScript::getPhdrIndex(const Twine &Loc, StringRef PhdrName) {
size_t I = 0;
for (PhdrsCommand &Cmd : Opt.PhdrsCommands) {
if (Cmd.Name == PhdrName)
Modified: lld/trunk/ELF/LinkerScript.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.h?rev=298456&r1=298455&r2=298456&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.h (original)
+++ lld/trunk/ELF/LinkerScript.h Tue Mar 21 18:02:51 2017
@@ -221,7 +221,7 @@ struct ScriptConfiguration {
extern ScriptConfiguration *ScriptConfig;
-class LinkerScriptBase {
+class LinkerScript {
protected:
void assignSymbol(SymbolAssignment *Cmd, bool InSec = false);
void computeInputSections(InputSectionDescription *);
@@ -289,7 +289,7 @@ public:
void processCommands(OutputSectionFactory &Factory);
};
-extern LinkerScriptBase *Script;
+extern LinkerScript *Script;
} // end namespace elf
} // end namespace lld
More information about the llvm-commits
mailing list