<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/129518>129518</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [bolt][relocation] In rewiteInstance, an error relocation is generated
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            BOLT
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          WangJee
      </td>
    </tr>
</table>

<pre>
    In the RISC V architecture, when rewirteInstance.cpp processes relocation, In the following code, the final value of the variable Value is 0x004006B7ffb08617, as shown in the following assembly, which is two consecutive instructions; but the auip and load instructions in this program are not two consecutive instructions, their correct values ​​should be 0x0044e63603ffb08617, so the relocation result is incorrect, which eventually leads to segmentation failure.

```
ErrorOr<uint64_t> Value =
      BC->getUnsignedValueAtAddress(Rel.getOffset(), RelSize);
```
  
```
**_7bde24: ffb08617             auipc   a2, 0xffb08_**
  7bde28: 004006b7      lui     a3, 0x400
  7bde2c: ffbc0597      auipc   a1, 0xffbc0
  7bde30: ff8c9717      auipc   a4, 0xff8c9
  7bde34: ff8c9797      auipc   a5, 0xff8c9
  7bde38: fd070713      addi    a4, a4, -0x30
  7bde3c: cdb87057      vsetivli        zero, 0x10, e64, m8, ta, ma
  7bde40: 02077407      vle64.v v8, (a4)
  7bde44: 5cc58593      addi    a1, a1, 0x5cc
  7bde48: 04c78713      addi    a4, a5, 0x4c
  7bde4c: 08058793      addi    a5, a1, 0x80
  7bde50: 0207f427      vse64.v v8, (a5)
  7bde54: 02077407      vle64.v v8, (a4)
  7bde58: ff8c9717      auipc   a4, 0xff8c9
  _**7bde5c: 44e63603           ld      a2, 0x44e(a2)**_
  7bde60: 10058793      addi    a5, a1, 0x100
  7bde64: 0207f427      vse64.v v8, (a5)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVV2P6yYQ_TXkBW2E-bDxgx-S_ZBuVelKe9vbxxXGY4eKmAhwdvf--gqctdPdbdXbCAVCOHPmDDOMCsEMI0CDxB6Ju42a4sH55g81Dr8AbFrXvTZfRhwPgB-_fLvF37Hy-mAi6Dh5QPQWPx9gxB6ejY_wZQxRjRq2-nTCJ-80hAABe7BOq2jcmAAXc72z1j2bccDaddlS3jWjsvis7ATY9XnrrLxRrQX8Pe-agMkLIZyQcl_1fUtkWVQJrgIOB_c8YvOeQIUAx9a-zu4afUhG4rPD2o0B9BTNGbAZQ_STTl4GxPa4nWI2oyZzwmrssHWq-9upmciEpHTw6oiVBzy6-O-mZ6HGY-28Bx1nsQGje4okQXK_LMLBTbbDLcyCOZSsJOxacnDZxTW-2EOYbEz6zHghWFXDGcY4KWtfsQXVBRwdDjAcYYwzulfGTh62iOzSKMllkN29985_9YjdTmaMJX-KiN1fbgSxO0R2OH_2tzeI3Q8Qfx9zYnX5yC7uus5DCIjKR7DbAeLXvg8QEZWI1snDR7DfzA9Iv9j-HTnG7zYQTeOpajugHLEdfgtK9gGROl2aTjNNtslL_v9phmWDGSoTdE6ldoHaySQgm4GckPW8vlBpIuqPVMVCpVcMIzNG6rr6xD3-hpG6XjF8xXzCIz7FZC19RypSFWzBdJ1ZaObvG_LCrtzLknTXyoqIheocIJqzTdAf4N3MV5A0Q5mtHGXOY5XXajHHs1pCSVVxspqzUPLtOa0yDFGZfFmd51mw0FpIUX9wPsf1LbpC6xU23x_XlfxHzZdg8StUlkwkEbL6SCauyeQaKLEo6zm9DtQHZeJameD_KyBC_lzWXDI7Q7O8t8diSeruqhg4h8RIc-XlQlqIyyyzIP8hOMVVZZT8J6OzFPOma1hXs1ptoCkqXhDCCK83h6buKqaKVKSaF3XfU-CiFSWTLdFdqbuNaSihgjDCikJUtN5CJTnImiqtmaKyRZzAURm7tfZ83Do_bEwIEzQFrUUhN1a1YEPue5Tuv_76G6I0dUDfpPM37TQExIk1IYbVQjTR5l7ZOhuRuENif9XcxF1qbqkXrq0wh2zEkN7P64faBDzACF5F6DaTt80hxlNAbIfoA6IPg4mHqd1qd0T0IdFfppuTd3_mR_0hqwmIPlwEnRv6VwAAAP__blU6ww">