forked from OSchip/llvm-project
Revert r180189.
This should bring the ppc bots back. I will try to write a test that would have found the problem on a little endian system too. llvm-svn: 180194
This commit is contained in:
parent
85a1d4cbc0
commit
b68c5f6bc3
|
@ -769,47 +769,31 @@ MachOObjectFile::sectionContainsSymbol(DataRefImpl Sec, DataRefImpl Symb,
|
|||
}
|
||||
|
||||
relocation_iterator MachOObjectFile::getSectionRelBegin(DataRefImpl Sec) const {
|
||||
uint32_t Offset;
|
||||
if (is64Bit()) {
|
||||
macho::Section64 Sect = getSection64(Sec);
|
||||
Offset = Sect.RelocationTableOffset;
|
||||
} else {
|
||||
macho::Section Sect = getSection(Sec);
|
||||
Offset = Sect.RelocationTableOffset;
|
||||
}
|
||||
|
||||
DataRefImpl Ret;
|
||||
Ret.p = reinterpret_cast<uintptr_t>(getPtr(this, Offset));
|
||||
return relocation_iterator(RelocationRef(Ret, this));
|
||||
DataRefImpl ret;
|
||||
ret.d.b = Sec.d.a;
|
||||
return relocation_iterator(RelocationRef(ret, this));
|
||||
}
|
||||
|
||||
relocation_iterator
|
||||
MachOObjectFile::getSectionRelEnd(DataRefImpl Sec) const {
|
||||
uint32_t Offset;
|
||||
uint32_t Num;
|
||||
uint32_t LastReloc;
|
||||
if (is64Bit()) {
|
||||
macho::Section64 Sect = getSection64(Sec);
|
||||
Offset = Sect.RelocationTableOffset;
|
||||
Num = Sect.NumRelocationTableEntries;
|
||||
LastReloc = Sect.NumRelocationTableEntries;
|
||||
} else {
|
||||
macho::Section Sect = getSection(Sec);
|
||||
Offset = Sect.RelocationTableOffset;
|
||||
Num = Sect.NumRelocationTableEntries;
|
||||
LastReloc = Sect.NumRelocationTableEntries;
|
||||
}
|
||||
|
||||
const macho::RelocationEntry *P =
|
||||
reinterpret_cast<const macho::RelocationEntry*>(getPtr(this, Offset));
|
||||
|
||||
DataRefImpl Ret;
|
||||
Ret.p = reinterpret_cast<uintptr_t>(P + Num);
|
||||
Ret.d.a = LastReloc;
|
||||
Ret.d.b = Sec.d.a;
|
||||
return relocation_iterator(RelocationRef(Ret, this));
|
||||
}
|
||||
|
||||
error_code MachOObjectFile::getRelocationNext(DataRefImpl Rel,
|
||||
RelocationRef &Res) const {
|
||||
const macho::RelocationEntry *P =
|
||||
reinterpret_cast<const macho::RelocationEntry *>(Rel.p);
|
||||
Rel.p = reinterpret_cast<uintptr_t>(P + 1);
|
||||
error_code MachOObjectFile::getRelocationNext(DataRefImpl Rel,
|
||||
RelocationRef &Res) const {
|
||||
++Rel.d.a;
|
||||
Res = RelocationRef(Rel, this);
|
||||
return object_error::success;
|
||||
}
|
||||
|
@ -1402,8 +1386,19 @@ MachOObjectFile::getLinkeditDataLoadCommand(const MachOObjectFile::LoadCommandIn
|
|||
|
||||
macho::RelocationEntry
|
||||
MachOObjectFile::getRelocation(DataRefImpl Rel) const {
|
||||
const char *P = reinterpret_cast<const char *>(Rel.p);
|
||||
return getStruct<macho::RelocationEntry>(this, P);
|
||||
uint32_t RelOffset;
|
||||
DataRefImpl Sec;
|
||||
Sec.d.a = Rel.d.b;
|
||||
if (is64Bit()) {
|
||||
macho::Section64 Sect = getSection64(Sec);
|
||||
RelOffset = Sect.RelocationTableOffset;
|
||||
} else {
|
||||
macho::Section Sect = getSection(Sec);
|
||||
RelOffset = Sect.RelocationTableOffset;
|
||||
}
|
||||
|
||||
uint64_t Offset = RelOffset + Rel.d.a * sizeof(macho::RelocationEntry);
|
||||
return getStruct<macho::RelocationEntry>(this, getPtr(this, Offset));
|
||||
}
|
||||
|
||||
macho::Header MachOObjectFile::getHeader() const {
|
||||
|
|
Loading…
Reference in New Issue