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

    <tr>
        <th>Summary</th>
        <td>
            [LLD][AArch64]  Keep relocation type after relocation relax
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            lld
      </td>
    </tr>

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

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

<pre>
    Keeping the relocation type after relocation relax resulted in a mismatch between instructions and relocation items. Humbly ask why the linker does this. 
Use examples are as follows:

```
## a.s
.rodata
x:
.word 10
.text
.global _start
_start:
  adrp    x30, x
  add     x30, x30, :lo12:x
  adrp    x1, x
  add     x1, x1, :lo12:x
  adrp    x15, x
  add     x15, x15, :lo12:x
  adrp    x2, x
  add     x3, x2, :lo12:x
  adrp    x2, x
  add     x2, x3, :lo12:x
```
```
llvm-mc -filetype=obj -triple=aarch64 a.s -o a.o 
ld.lld a.o  -o a.exe -emit-relocs
objdump -dr a.o > a.dump
```

result is :
```
0000000000210124 <_start>:
  210124:       d503201f        nop
                        210124: R_AARCH64_ADR_PREL_PG_HI21      .rodata   ### nop instruction with R_AARCH64_ADR_PREL_PG_HI21 reloction type 
  210128:       10f7ffde        adr     x30, 200120 <x>
                        210128: R_AARCH64_ADD_ABS_LO12_NC       .rodata  ### adr instruction with add relocation
  21012c:       d503201f        nop
                        21012c: R_AARCH64_ADR_PREL_PG_HI21      .rodata
  210130:       10f7ff81        adr     x1, 200120 <x>
                        210130: R_AARCH64_ADD_ABS_LO12_NC       .rodata
  210134:       d503201f        nop
                        210134: R_AARCH64_ADR_PREL_PG_HI21      .rodata
  210138:       10f7ff4f        adr     x15, 200120 <x>
                        210138: R_AARCH64_ADD_ABS_LO12_NC       .rodata
  21013c:       90ffff82        adrp    x2, 200000 <x-0x120>
                        21013c: R_AARCH64_ADR_PREL_PG_HI21      .rodata
  210140:       91048043        add     x3, x2, #0x120
                        210140: R_AARCH64_ADD_ABS_LO12_NC       .rodata
  210144:       90ffff82        adrp    x2, 200000 <x-0x120>
                        210144: R_AARCH64_ADR_PREL_PG_HI21      .rodata
  210148:       91048062        add     x2, x3, #0x120
                        210148: R_AARCH64_ADD_ABS_LO12_NC       .rodata
```
It would be greatly appreciated if anyone could help answer this question.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vk1v4zYQ_TX0ZWCBX1Ksgw9KHDeLBu0iRc8GJVEWs5SoklSt9NcX-kgt29lN4kUFwxRHHPLN4yNnhHNqX0u5RuEtCjcL0frS2PU_ZetUKer9IjX5y_pXKRtV78GXEqzUJhNemRr8SyNBFF7audVKLTqw0rXayxxUDQIq5SrhsxJS6Q9S1qBq522b9Q4ORJ3PJ1BeVi6Ah7ZK9QsI9w0O5cuwtlb1N2khN9KBL5ULAOENwsmfToLsRNVo6UBYCcJBYbQ2B4fut-j2DsXJOHL6j_D0G7uUIcpABG7sB9bkwoux0yE2eQUHY3Mgk1PgZeen1702qdCwc17YyTa9v_oCiNw2AAAdw4jeQXe05zC3jw1iiTaEIpZ0FxOQt_1HM3nXO_yO-2gfmx9NQL8DfzDTK71HM3vT-3y3Trta_10tqwyWhdKyVyRiG5M-w9Jb1ei-J4TNyoj3-wtLAyIwk2x0HmidD4bxg-wkLGWl_HKQ4yQHkz7nbdXAMrejM7sHEfSmt_EN_6P-QTk4V-DpaPzfQwkmlANid6_auZ_JZ_yKWALjk4eYUUyKqQu1aV6Hvv0cJ3jaJcnT3UPEd8nmaff16f5x9_WX3cMXSsaRk_wBYDwY_dmoTTM_s3BQvvzRRAN_x0viJIrVMQqCi5uiyOUrSJHb-WGgGBOKe0q6no3341udx7fZJbd_7B5_J3T32x2cxXcMr1_3IrxenMdr6SSE7Gc3IvvERsxXZvicvBW5II9cw9048we5O4H0s6pkn1HlycoXSuLFJRnhVWx8RkknmGbSiHFRFMWKzjDNLkE6nPoB0hJ3hOKPAbtWOXymnJhgvsKcHYG9cYlTNqJ6FxK_Vjmc_79c8WuFxVfnXEX0gqt5yvo4V5_X1VnC-OLhYFqdQyphb6XwfY3UNFZmSgz1VgGifjG1hGwYVkrdgKjdQdqhZoK_Wun6Cy1Y5GuWxywWC7kmURxSwlm0WpRrnNGUr9KYZGnIC74iYRSJ8EbQG1JkWUQXak0xZTimmNCQ8lXA4pjIPKM8JPSG8hBxLCuhdNBn58DY_UI518p1FMUYL7RIpXZDyUmp1jmitK897XrI5Wm7d4hjrZx3R3-vvB6q1MfHDQo3KLxNkiGto3AD0BeoH6xMF63V69L7xvXZlW4R3e6VL9s0yEyF6LZfcWqWjTXPMvOIbgf4DtHtEMG_AQAA__9pQ-l4">