mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 06:06:19 +00:00
Fix MachO's getRelocationAdditionalInfo.
It was returning the loaded address of the section containing the relocation, which really doesn't seem to be the intent of this function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179255 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4b04029481
commit
8bf80061ba
@ -271,6 +271,8 @@ protected:
|
||||
|
||||
virtual error_code getLibraryNext(DataRefImpl LibData, LibraryRef &Res) const;
|
||||
virtual error_code getLibraryPath(DataRefImpl LibData, StringRef &Res) const;
|
||||
virtual error_code getRelocationAdditionalInfo(DataRefImpl Rel,
|
||||
int64_t &Res) const;
|
||||
|
||||
std::size_t getSectionIndex(DataRefImpl Sec) const;
|
||||
|
||||
@ -346,8 +348,6 @@ public:
|
||||
virtual error_code getRelocationAddress(DataRefImpl Rel, uint64_t &Res) const;
|
||||
virtual error_code getRelocationOffset(DataRefImpl Rel, uint64_t &Res) const;
|
||||
virtual error_code getRelocationSymbol(DataRefImpl Rel, SymbolRef &Res) const;
|
||||
virtual error_code getRelocationAdditionalInfo(DataRefImpl Rel,
|
||||
int64_t &Res) const;
|
||||
virtual error_code getRelocationType(DataRefImpl Rel, uint64_t &Res) const;
|
||||
virtual error_code getRelocationTypeName(DataRefImpl Rel,
|
||||
SmallVectorImpl<char> &Result) const;
|
||||
@ -531,22 +531,6 @@ MachOObjectFile<MachOT>::getRelocationSymbol(DataRefImpl Rel,
|
||||
return object_error::success;
|
||||
}
|
||||
|
||||
template<class MachOT>
|
||||
error_code
|
||||
MachOObjectFile<MachOT>::getRelocationAdditionalInfo(DataRefImpl Rel,
|
||||
int64_t &Res) const {
|
||||
const RelocationEntry *RE = getRelocation(Rel);
|
||||
bool isExtern = (RE->Word1 >> 27) & 1;
|
||||
Res = 0;
|
||||
if (!isExtern) {
|
||||
const uint8_t* sectAddress = base();
|
||||
const Section *Sect = getSection(Sections[Rel.d.b]);
|
||||
sectAddress += Sect->Offset;
|
||||
Res = reinterpret_cast<uintptr_t>(sectAddress);
|
||||
}
|
||||
return object_error::success;
|
||||
}
|
||||
|
||||
template<class MachOT>
|
||||
error_code MachOObjectFile<MachOT>::getRelocationType(DataRefImpl Rel,
|
||||
uint64_t &Res) const {
|
||||
|
@ -512,6 +512,12 @@ error_code MachOObjectFileBase::getLibraryPath(DataRefImpl LibData,
|
||||
report_fatal_error("Needed libraries unimplemented in MachOObjectFileBase");
|
||||
}
|
||||
|
||||
error_code MachOObjectFileBase::getRelocationAdditionalInfo(DataRefImpl Rel,
|
||||
int64_t &Res) const {
|
||||
Res = 0;
|
||||
return object_error::success;
|
||||
}
|
||||
|
||||
|
||||
/*===-- Miscellaneous -----------------------------------------------------===*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user