<div dir="ltr"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+int relocHexGOTREL(uint8_t *location, uint64_t P, uint64_t S, uint64_t A,</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+                   uint64_t GOT, int shiftBits = 0) {</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  uint32_t result = (uint32_t)((S + A - GOT) >> shiftBits);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  result = lld::scatterBits<uint32_t>(</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">result, FINDV4BITMASK(location));</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  *reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location) =</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      result |</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      (uint32_t) * reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  return 0;</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+}</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+int relocHexGOTREL_HILO16(uint8_t *location, uint64_t P, uint64_t S, uint64_t A,</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+                          uint64_t GOT, int shiftBits = 0) {</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  uint32_t result = (uint32_t)((S + A - GOT) >> shiftBits);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  result = lld::scatterBits<uint32_t>(</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">result, 0x00c03fff);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  *reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location) =</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      result |</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      (uint32_t) * reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  return 0;</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+}</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+int relocHexGOTREL_32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A,</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+                      uint64_t GOT) {</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  uint32_t result = (uint32_t)(S + A - GOT);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  *reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location) =</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      result |</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+      (uint32_t) * reinterpret_cast<llvm::</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">support::ulittle32_t *>(location);</span><br style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">+  return 0;</span><br><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px"><br>
</span></div><div style><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">It would be a lot cleaner if you assigned `</span><span style="font-size:13px;color:rgb(0,0,0);font-family:arial,sans-serif">reinterpret_cast<llvm::</span><span style="font-size:13px;color:rgb(0,0,0);font-family:arial,sans-serif">support::ulittle32_t *>(location)` into a variable, instead of repeating it.</span></div>
<div style><span style="font-size:13px;color:rgb(0,0,0);font-family:arial,sans-serif"><br></span></div><div style><span style="font-size:13px;color:rgb(0,0,0);font-family:arial,sans-serif">-- Sean Silva</span></div></div>