mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-22 10:29:35 +00:00
[MCJIT] Replace a c-style cast with reinterpret_cast + static_cast.
C-style casts (and reinterpret_casts) result in implementation defined values when a pointer is cast to a larger integer type. On some platforms this was leading to bogus address computations in RuntimeDyldMachOAArch64. This should fix http://llvm.org/PR20501. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215143 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c00ae93432
commit
362510890f
@ -362,9 +362,9 @@ private:
|
||||
assert(RE.Size == 2);
|
||||
SectionEntry &Section = Sections[RE.SectionID];
|
||||
StubMap::const_iterator i = Stubs.find(Value);
|
||||
uint8_t *Addr;
|
||||
uintptr_t Addr;
|
||||
if (i != Stubs.end())
|
||||
Addr = Section.Address + i->second;
|
||||
Addr = reinterpret_cast<uintptr_t>(Section.Address) + i->second;
|
||||
else {
|
||||
// FIXME: There must be a better way to do this then to check and fix the
|
||||
// alignment every time!!!
|
||||
@ -385,11 +385,11 @@ private:
|
||||
else
|
||||
addRelocationForSection(GOTRE, Value.SectionID);
|
||||
Section.StubOffset = StubOffset + getMaxStubSize();
|
||||
Addr = (uint8_t *)StubAddress;
|
||||
Addr = StubAddress;
|
||||
}
|
||||
RelocationEntry TargetRE(RE.SectionID, RE.Offset, RE.RelType, /*Addend=*/0,
|
||||
RE.IsPCRel, RE.Size);
|
||||
resolveRelocation(TargetRE, (uint64_t)Addr);
|
||||
resolveRelocation(TargetRE, static_cast<uint64_t>(Addr));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user