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:
Rafael Espindola 2013-04-24 16:10:49 +00:00
parent 85a1d4cbc0
commit b68c5f6bc3
1 changed files with 24 additions and 29 deletions

View File

@ -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 {