<div dir="ltr">This is great. Thanks Daniel!<div><br></div><div>- Lang.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Nov 1, 2014 at 8:52 AM, Daniel Sanders <span dir="ltr"><<a href="mailto:daniel.sanders@imgtec.com" target="_blank">daniel.sanders@imgtec.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dsanders<br>
Date: Sat Nov  1 10:52:31 2014<br>
New Revision: 221047<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=221047&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=221047&view=rev</a><br>
Log:<br>
[JIT] Fix some more missing endian conversions in RuntimeDyld<br>
<br>
Summary: This fixes MachO_i386_eh_frame.s on a big-endian Mips host.<br>
<br>
Reviewers: lhames<br>
<br>
Reviewed By: lhames<br>
<br>
Subscribers: llvm-commits<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D6019" target="_blank">http://reviews.llvm.org/D6019</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp<br>
<br>
Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp?rev=221047&r1=221046&r2=221047&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp?rev=221047&r1=221046&r2=221047&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp (original)<br>
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp Sat Nov  1 10:52:31 2014<br>
@@ -216,17 +216,18 @@ unsigned char *RuntimeDyldMachOCRTPBase<<br>
<br>
   DEBUG(dbgs() << "Processing FDE: Delta for text: " << DeltaForText<br>
                << ", Delta for EH: " << DeltaForEH << "\n");<br>
-  uint32_t Length = *((uint32_t *)P);<br>
+  uint32_t Length = readBytesUnaligned(P, 4);<br>
   P += 4;<br>
   unsigned char *Ret = P + Length;<br>
-  uint32_t Offset = *((uint32_t *)P);<br>
+  uint32_t Offset = readBytesUnaligned(P, 4);<br>
   if (Offset == 0) // is a CIE<br>
     return Ret;<br>
<br>
   P += 4;<br>
-  TargetPtrT FDELocation = *((TargetPtrT*)P);<br>
+  TargetPtrT FDELocation = readBytesUnaligned(P, sizeof(TargetPtrT));<br>
   TargetPtrT NewLocation = FDELocation - DeltaForText;<br>
-  *((TargetPtrT*)P) = NewLocation;<br>
+  writeBytesUnaligned(NewLocation, P, sizeof(TargetPtrT));<br>
+<br>
   P += sizeof(TargetPtrT);<br>
<br>
   // Skip the FDE address range<br>
@@ -235,9 +236,9 @@ unsigned char *RuntimeDyldMachOCRTPBase<<br>
   uint8_t Augmentationsize = *P;<br>
   P += 1;<br>
   if (Augmentationsize != 0) {<br>
-    TargetPtrT LSDA = *((TargetPtrT *)P);<br>
+    TargetPtrT LSDA = readBytesUnaligned(P, sizeof(TargetPtrT));<br>
     TargetPtrT NewLSDA = LSDA - DeltaForEH;<br>
-    *((TargetPtrT *)P) = NewLSDA;<br>
+    writeBytesUnaligned(NewLSDA, P, sizeof(TargetPtrT));<br>
   }<br>
<br>
   return Ret;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>