- if (getRTDyld().IsTargetLittleEndian == sys::IsLittleEndianHost)
- memcpy(&Result, Src, Size);
- else {
- uint8_t *Dst = reinterpret_cast<uint8_t*>(&Result) + Size - 1;
+ if (getRTDyld().IsTargetLittleEndian == sys::IsLittleEndianHost) {
+ if (!sys::IsLittleEndianHost)
+ Dst += sizeof(Result) - Size;
+ memcpy(Dst, Src, Size);
+ } else {
+ Dst += Size - 1;