forked from OSchip/llvm-project
Pass OutputSectionCommand to forEachExecInputSection's callback.
NFC, just makes the OutputSectionCommand available. llvm-svn: 308056
This commit is contained in:
parent
6fdfede10d
commit
e8b087c7e4
|
@ -1066,7 +1066,7 @@ std::pair<Thunk *, bool> ThunkCreator::getThunk(SymbolBody &Body,
|
|||
// InputSectionDescription::Sections.
|
||||
void ThunkCreator::forEachExecInputSection(
|
||||
ArrayRef<OutputSectionCommand *> OutputSections,
|
||||
std::function<void(OutputSection *, std::vector<InputSection *> *,
|
||||
std::function<void(OutputSectionCommand *, std::vector<InputSection *> *,
|
||||
InputSection *)>
|
||||
Fn) {
|
||||
for (OutputSectionCommand *Cmd : OutputSections) {
|
||||
|
@ -1077,7 +1077,7 @@ void ThunkCreator::forEachExecInputSection(
|
|||
if (auto *ISD = dyn_cast<InputSectionDescription>(BC)) {
|
||||
CurTS = nullptr;
|
||||
for (InputSection *IS : ISD->Sections)
|
||||
Fn(OS, &ISD->Sections, IS);
|
||||
Fn(Cmd, &ISD->Sections, IS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1104,8 +1104,8 @@ bool ThunkCreator::createThunks(
|
|||
// ThunkSections back into the OutputSection as ThunkSections are not always
|
||||
// inserted into the same OutputSection as the caller.
|
||||
forEachExecInputSection(
|
||||
OutputSections, [&](OutputSection *OS, std::vector<InputSection*> *ISR,
|
||||
InputSection *IS) {
|
||||
OutputSections, [&](OutputSectionCommand *Cmd,
|
||||
std::vector<InputSection *> *ISR, InputSection *IS) {
|
||||
for (Relocation &Rel : IS->Relocations) {
|
||||
SymbolBody &Body = *Rel.Sym;
|
||||
if (Thunks.find(&Body) != Thunks.end() ||
|
||||
|
@ -1118,9 +1118,9 @@ bool ThunkCreator::createThunks(
|
|||
// Find or create a ThunkSection for the new Thunk
|
||||
ThunkSection *TS;
|
||||
if (auto *TIS = T->getTargetInputSection())
|
||||
TS = getISThunkSec(TIS, OS);
|
||||
TS = getISThunkSec(TIS, Cmd->Sec);
|
||||
else
|
||||
TS = getOSThunkSec(OS, ISR);
|
||||
TS = getOSThunkSec(Cmd->Sec, ISR);
|
||||
TS->addThunk(T);
|
||||
Thunks[T->ThunkSym] = T;
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ private:
|
|||
ThunkSection *getISThunkSec(InputSection *IS, OutputSection *OS);
|
||||
void forEachExecInputSection(
|
||||
ArrayRef<OutputSectionCommand *> OutputSections,
|
||||
std::function<void(OutputSection *, std::vector<InputSection *> *,
|
||||
std::function<void(OutputSectionCommand *, std::vector<InputSection *> *,
|
||||
InputSection *)>
|
||||
Fn);
|
||||
std::pair<Thunk *, bool> getThunk(SymbolBody &Body, uint32_t Type);
|
||||
|
|
Loading…
Reference in New Issue