Remove redundant argument.
But always set Script<ELFT>::X->OutputSections.
llvm-svn: 277720
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp
index d47b519..b69c02a 100644
--- a/lld/ELF/LinkerScript.cpp
+++ b/lld/ELF/LinkerScript.cpp
@@ -159,10 +159,7 @@
template <class ELFT>
void LinkerScript<ELFT>::createSections(
- std::vector<OutputSectionBase<ELFT> *> *Out,
OutputSectionFactory<ELFT> &Factory) {
- OutputSections = Out;
-
for (auto &P : getSectionMap()) {
StringRef OutputName = P.first;
const InputSectionDescription *Cmd = P.second;
@@ -181,7 +178,7 @@
SectionsSorter<ELFT>(Cmd->Sort));
for (InputSectionBase<ELFT> *S : Sections)
- addSection(Factory, *Out, S, OutputName);
+ addSection(Factory, *OutputSections, S, OutputName);
}
// Add all other input sections, which are not listed in script.
@@ -189,7 +186,7 @@
Symtab<ELFT>::X->getObjectFiles())
for (InputSectionBase<ELFT> *S : F->getSections())
if (!isDiscarded(S) && !S->OutSec)
- addSection(Factory, *Out, S, getOutputSectionName(S));
+ addSection(Factory, *OutputSections, S, getOutputSectionName(S));
// Remove from the output all the sections which did not meet
// the optional constraints.
@@ -224,9 +221,8 @@
}
}
-template <class ELFT>
-void LinkerScript<ELFT>::assignAddresses(
- ArrayRef<OutputSectionBase<ELFT> *> Sections) {
+template <class ELFT> void LinkerScript<ELFT>::assignAddresses() {
+ ArrayRef<OutputSectionBase<ELFT> *> Sections = *OutputSections;
// Orphan sections are sections present in the input files which
// are not explicitly placed into the output file by the linker script.
// We place orphan sections at end of file.
@@ -300,8 +296,8 @@
}
template <class ELFT>
-std::vector<PhdrEntry<ELFT>>
-LinkerScript<ELFT>::createPhdrs(ArrayRef<OutputSectionBase<ELFT> *> Sections) {
+std::vector<PhdrEntry<ELFT>> LinkerScript<ELFT>::createPhdrs() {
+ ArrayRef<OutputSectionBase<ELFT> *> Sections = *OutputSections;
std::vector<PhdrEntry<ELFT>> Ret;
for (const PhdrsCommand &Cmd : Opt.PhdrsCommands) {
diff --git a/lld/ELF/LinkerScript.h b/lld/ELF/LinkerScript.h
index dc61e90..642c7c7 100644
--- a/lld/ELF/LinkerScript.h
+++ b/lld/ELF/LinkerScript.h
@@ -137,20 +137,20 @@
typedef typename ELFT::uint uintX_t;
public:
- void createSections(std::vector<OutputSectionBase<ELFT> *> *Out,
- OutputSectionFactory<ELFT> &Factory);
+ void createSections(OutputSectionFactory<ELFT> &Factory);
- std::vector<PhdrEntry<ELFT>>
- createPhdrs(ArrayRef<OutputSectionBase<ELFT> *> S);
+ std::vector<PhdrEntry<ELFT>> createPhdrs();
ArrayRef<uint8_t> getFiller(StringRef Name);
bool shouldKeep(InputSectionBase<ELFT> *S);
- void assignAddresses(ArrayRef<OutputSectionBase<ELFT> *> S);
+ void assignAddresses();
int compareSections(StringRef A, StringRef B);
void addScriptedSymbols();
bool hasPhdrsCommands();
uintX_t getOutputSectionSize(StringRef Name);
+ std::vector<OutputSectionBase<ELFT> *> *OutputSections;
+
private:
std::vector<std::pair<StringRef, const InputSectionDescription *>>
getSectionMap();
@@ -167,7 +167,6 @@
std::vector<size_t> getPhdrIndices(StringRef SectionName);
size_t getPhdrIndex(StringRef PhdrName);
- std::vector<OutputSectionBase<ELFT> *> *OutputSections;
uintX_t Dot;
};
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 7dafdb7..dd28c68 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -233,8 +233,9 @@
CommonInputSection<ELFT> Common(getCommonSymbols<ELFT>());
CommonInputSection<ELFT>::X = &Common;
+ Script<ELFT>::X->OutputSections = &OutputSections;
if (ScriptConfig->HasContents)
- Script<ELFT>::X->createSections(&OutputSections, Factory);
+ Script<ELFT>::X->createSections(Factory);
else
createSections();
@@ -245,12 +246,11 @@
if (Config->Relocatable) {
assignFileOffsets();
} else {
- Phdrs = Script<ELFT>::X->hasPhdrsCommands()
- ? Script<ELFT>::X->createPhdrs(OutputSections)
- : createPhdrs();
+ Phdrs = Script<ELFT>::X->hasPhdrsCommands() ? Script<ELFT>::X->createPhdrs()
+ : createPhdrs();
fixHeaders();
if (ScriptConfig->HasContents) {
- Script<ELFT>::X->assignAddresses(OutputSections);
+ Script<ELFT>::X->assignAddresses();
} else {
fixSectionAlignments();
assignAddresses();