[llvm-commits] [lld] r171125 - /lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp

Shankar Easwaran shankare at codeaurora.org
Wed Dec 26 17:04:00 PST 2012


Author: shankare
Date: Wed Dec 26 19:04:00 2012
New Revision: 171125

URL: http://llvm.org/viewvc/llvm-project?rev=171125&view=rev
Log:
changes to fix Hexagon Relocation so that it accounts for the bitmask properly as documented in the ABI

Modified:
    lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp

Modified: lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp?rev=171125&r1=171124&r2=171125&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/HexagonReference.cpp Wed Dec 26 19:04:00 2012
@@ -67,7 +67,7 @@
 /// \brief Word32_LO: 0x00c03fff : (S + A) : Truncate
 int relocLO16(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {
   uint32_t result = (uint32_t)(S + A);
-  result = ((result & 0x3fff) | ((result << 2) & 0x00c00000));
+  result = ((result & 0x3fff) | ((result << 8) & 0x00c00000));
   *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result |
             (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);
   return HexagonKindHandler::NoError;
@@ -76,7 +76,7 @@
 /// \brief Word32_LO: 0x00c03fff : (S + A) >> 16 : Truncate
 int relocHI16(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {
   uint32_t result = (uint32_t)((S + A)>>16);
-  result = ((result & 0x3fff) | ((result << 2) & 0x00c00000));
+  result = ((result & 0x3fff) | ((result << 8) & 0x00c00000));
   *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result |
             (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);
   return HexagonKindHandler::NoError;





More information about the llvm-commits mailing list