mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-05 12:31:33 +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 getLibraryNext(DataRefImpl LibData, LibraryRef &Res) const;
|
||||||
virtual error_code getLibraryPath(DataRefImpl LibData, StringRef &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;
|
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 getRelocationAddress(DataRefImpl Rel, uint64_t &Res) const;
|
||||||
virtual error_code getRelocationOffset(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 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 getRelocationType(DataRefImpl Rel, uint64_t &Res) const;
|
||||||
virtual error_code getRelocationTypeName(DataRefImpl Rel,
|
virtual error_code getRelocationTypeName(DataRefImpl Rel,
|
||||||
SmallVectorImpl<char> &Result) const;
|
SmallVectorImpl<char> &Result) const;
|
||||||
@ -531,22 +531,6 @@ MachOObjectFile<MachOT>::getRelocationSymbol(DataRefImpl Rel,
|
|||||||
return object_error::success;
|
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>
|
template<class MachOT>
|
||||||
error_code MachOObjectFile<MachOT>::getRelocationType(DataRefImpl Rel,
|
error_code MachOObjectFile<MachOT>::getRelocationType(DataRefImpl Rel,
|
||||||
uint64_t &Res) const {
|
uint64_t &Res) const {
|
||||||
|
@ -512,6 +512,12 @@ error_code MachOObjectFileBase::getLibraryPath(DataRefImpl LibData,
|
|||||||
report_fatal_error("Needed libraries unimplemented in MachOObjectFileBase");
|
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 -----------------------------------------------------===*/
|
/*===-- Miscellaneous -----------------------------------------------------===*/
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user