[RuntimeDyld] Allow processRelocationRef to process more than one relocation entry at a time.

Some targets require more than one relocation entry to perform a relocation.
This change allows processRelocationRef to process more than one relocation
entry at a time by passing the relocation iterator itself instead of just
the relocation entry.

Related to <rdar://problem/16199095>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204439 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Juergen Ributzka
2014-03-21 07:26:41 +00:00
parent fc029f2983
commit 4923eea4f6
13 changed files with 90 additions and 46 deletions

View File

@ -91,6 +91,7 @@ protected:
bool &Result) const override;
relocation_iterator section_rel_begin(DataRefImpl Sec) const override;
relocation_iterator section_rel_end(DataRefImpl Sec) const override;
bool section_rel_empty(DataRefImpl Sec) const override;
section_iterator getRelocatedSection(DataRefImpl Sec) const override;
void moveRelocationNext(DataRefImpl &Rel) const override;
@ -557,6 +558,12 @@ ELFObjectFile<ELFT>::section_rel_end(DataRefImpl Sec) const {
return relocation_iterator(RelocationRef(RelData, this));
}
template <class ELFT>
bool ELFObjectFile<ELFT>::section_rel_empty(DataRefImpl Sec) const {
const Elf_Shdr *S = reinterpret_cast<const Elf_Shdr *>(Sec.p);
return S->sh_size == 0;
}
template <class ELFT>
section_iterator
ELFObjectFile<ELFT>::getRelocatedSection(DataRefImpl Sec) const {