[PATCH] D42421: [LLD][ELF] Make --fix-cortex-a53-843419 work on big endian hosts

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 23 08:28:50 PST 2018


peter.smith updated this revision to Diff 131082.
peter.smith added a comment.

>> +  const ulittle32_t *InstBuf = reinterpret_cast<const ulittle32_t *>(Buf + Off);
> 
> This is OK.
> 
>> +  ulittle32_t Instr1 = *InstBuf++;
>>  +  ulittle32_t Instr2 = *InstBuf++;
>>  +  ulittle32_t Instr3 = *InstBuf++;
> 
> But the values should still be uint32_t. The endian.h types should only
> ever be used to form pointers.
> 
> Cheers,
> Rafael

Thanks for pointing that out. I've updated the diff accordingly.


https://reviews.llvm.org/D42421

Files:
  ELF/AArch64ErrataFix.cpp


Index: ELF/AArch64ErrataFix.cpp
===================================================================
--- ELF/AArch64ErrataFix.cpp
+++ ELF/AArch64ErrataFix.cpp
@@ -47,6 +47,7 @@
 using namespace llvm;
 using namespace llvm::ELF;
 using namespace llvm::object;
+using namespace llvm::support;
 using namespace llvm::support::endian;
 
 using namespace lld;
@@ -357,14 +358,14 @@
 
   uint64_t PatchOff = 0;
   const uint8_t *Buf = IS->Data.begin();
-  const uint32_t *InstBuf = reinterpret_cast<const uint32_t *>(Buf + Off);
+  const ulittle32_t *InstBuf = reinterpret_cast<const ulittle32_t *>(Buf + Off);
   uint32_t Instr1 = *InstBuf++;
   uint32_t Instr2 = *InstBuf++;
   uint32_t Instr3 = *InstBuf++;
   if (is843419ErratumSequence(Instr1, Instr2, Instr3)) {
     PatchOff = Off + 8;
   } else if (OptionalAllowed && !isBranch(Instr3)) {
-    uint32_t Instr4 = *InstBuf++;
+    ulittle32_t Instr4 = *InstBuf++;
     if (is843419ErratumSequence(Instr1, Instr2, Instr4))
       PatchOff = Off + 12;
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42421.131082.patch
Type: text/x-patch
Size: 1004 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180123/14842d24/attachment.bin>


More information about the llvm-commits mailing list