mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
MCJIT: relocation addends encoded in the target aren't quite so easy.
The assumption that the target address for the relocation will always be sizeof(intptr_t) and will always contain an addend for the relocation value is very wrong. Default to no addend for now. rdar://12157052 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163765 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
01e1a97021
commit
7639f98c5f
@ -246,7 +246,12 @@ void RuntimeDyldMachO::processRelocationRef(const ObjRelocationInfo &Rel,
|
||||
}
|
||||
assert(si != se && "No section containing relocation!");
|
||||
Value.SectionID = findOrEmitSection(Obj, *si, true, ObjSectionToID);
|
||||
Value.Addend = *(const intptr_t *)Target;
|
||||
Value.Addend = 0;
|
||||
// FIXME: The size and type of the relocation determines if we can
|
||||
// encode an Addend in the target location itself, and if so, how many
|
||||
// bytes we should read in order to get it. We don't yet support doing
|
||||
// that, and just assuming it's sizeof(intptr_t) is blatantly wrong.
|
||||
//Value.Addend = *(const intptr_t *)Target;
|
||||
if (Value.Addend) {
|
||||
// The MachO addend is an offset from the current section. We need it
|
||||
// to be an offset from the destination section
|
||||
|
Loading…
Reference in New Issue
Block a user