summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp36
1 files changed, 2 insertions, 34 deletions
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
index a22689a40d9..c89978411dd 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
@@ -28,23 +28,10 @@ using namespace llvm::object;
namespace llvm {
int64_t RuntimeDyldMachO::memcpyAddend(const RelocationEntry &RE) const {
- const SectionEntry &Section = Sections[RE.SectionID];
unsigned NumBytes = 1 << RE.Size;
- int64_t Addend = 0;
- uint8_t *LocalAddress = Section.Address + RE.Offset;
- uint8_t *Dst = reinterpret_cast<uint8_t*>(&Addend);
-
- if (IsTargetLittleEndian == sys::IsLittleEndianHost) {
- if (!sys::IsLittleEndianHost)
- Dst += sizeof(Addend) - NumBytes;
- memcpy(Dst, LocalAddress, NumBytes);
- } else {
- Dst += NumBytes - 1;
- for (unsigned i = 0; i < NumBytes; ++i)
- *Dst-- = *LocalAddress++;
- }
+ uint8_t *Src = Sections[RE.SectionID].Address + RE.Offset;
- return Addend;
+ return static_cast<int64_t>(readBytesUnaligned(Src, NumBytes));
}
RelocationValueRef RuntimeDyldMachO::getRelocationValueRef(
@@ -121,25 +108,6 @@ void RuntimeDyldMachO::dumpRelocationToResolve(const RelocationEntry &RE,
<< " Size: " << (1 << RE.Size) << "\n";
}
-bool RuntimeDyldMachO::writeBytesUnaligned(uint8_t *Dst, uint64_t Value,
- unsigned Size) {
-
- uint8_t *Src = reinterpret_cast<uint8_t*>(&Value);
- // If host and target endianness match use memcpy, otherwise copy in reverse
- // order.
- if (IsTargetLittleEndian == sys::IsLittleEndianHost) {
- if (!sys::IsLittleEndianHost)
- Src += sizeof(Value) - Size;
- memcpy(Dst, Src, Size);
- } else {
- Src += Size - 1;
- for (unsigned i = 0; i < Size; ++i)
- *Dst++ = *Src--;
- }
-
- return false;
-}
-
bool
RuntimeDyldMachO::isCompatibleFormat(const ObjectBuffer *InputBuffer) const {
if (InputBuffer->getBufferSize() < 4)
OpenPOWER on IntegriCloud