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

    <tr>
        <th>Summary</th>
        <td>
            [RISC-V][lld] ld.lld ULEB128 legacy sub addend compat emits wrong value
        </td>
    </tr>

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

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

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

<pre>
    I ran into this while reducing a RISC-V linker testcase. The reproducer is small, and I have been seeing the same result consistently across three reruns.

### Summary
ld.lld links the object but emits 00000302 in .text, while GNU ld.bfd warns about the legacy form and emits the expected compatible bytes 00000303.

### Expected behavior
A relocatable object carries two semantically equivalent ULEB128 encodings of the same bar-foo+1 delta: one emitted by .uleb128 and one emulating the legacy non-zero SUB_ULEB128 addend form that GNU ld keeps compatible. Both encodings should materialize the same final byte value after link.

### Environment
- linker route: gas+ld.lld with gas+ld.bfd --check-uleb128 control
- march: rv64i
- mabi: lp64
- first failing stage: link
- local stability check: True

### Reduced testcase
These are the reduced input files from the minimized reproducer I used locally:

#### `pr31179.s`
```asm
.globl _start
_start:

foo:
.2byte 0
bar:

.uleb128 bar - foo + 1

reloc:
.reloc reloc, R_RISCV_SET_ULEB128, bar + 1
.reloc reloc, R_RISCV_SUB_ULEB128, foo + 1
.byte 0x0
```

### Reproduction notes
- This packaged root does not have a single canonical `run.ps1` wrapper.
- Use the reduced inputs under `case/` and follow the commands documented in `case/README.md`.
- Stable witness outputs, when present, are preserved under `verify/run1..run3/`.

### What I checked
- Reduced inputs are preserved under case/.
- Stable witness outputs are preserved under verify/run1..run3/.
- The strict recheck says stable normalized run signatures across three runs: True.
- Tracker guidance link: https://llvm.org/docs/HowToSubmitABug.html
- evidence summary: 3 clean reproductions under hunt/verify/lld_pr31179_uleb128_compat/run1..run3 show stable GNU ld.bfd output bytes 00000303 and stable ld.lld output bytes 00000302 from the same pr31179.s object.

### Notes
upstream///binutils-gdb/ld/testsuite/ld-riscv-elf/pr31179.s

Root key: `lld.riscv.uleb128_legacy_sub_addend_compat_emits_wrong_value`
Case id: `20260526-lld-pr31179-uleb128-compat`

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVslu4zwSfhr5UpCgxUty8MHuxPMHmOlDlp65GRRZkjihSA-LtNv99ANSku0ECf7ASGKy1o9VXxUjkq1GXCeLbbJ4mDHvOmPX_5HM1FK3fxlflMX9rDbivH4CyzRI7Qy4ThKcOqkQLArPpW6BwfPTy4_0Fyip39GCQ3KcEWbw2gWxgzXCc7QgCahnSiXlD2BawBN07IhQI2ogxGDLdQjE-qBGXjngRpMkh9qpMzBuDRG4zmIQsF5TluQPSb4Zf5fV8IEX3_fMnodjJTKlRIyOogNT_xe5g9o7wF46gjz8VHkJUkPm8LcLEQ5Z_uPnGyiR1Y2AE7OagNXGu2hGYcv4GRpj-5jOYCvc4O8DcocCuOkPzMlaIdRnhxdP1TdxP06KNXbsKI0dBDZgURnOHAuWxvA5s1YigTsZIOyZdpIzpc6A__PyyBRqB2__fNwW5R2g5kZI3RKY5opxzWzaGJOU2wIEKseSagNGY8wkRnGGzCusg4mQ4XDnFXPTW40YaKPTP2gNvLxt95NTJgRqMeDjOuZGLOEd8UA30GSwNa67iZE645WAnjm0kin5B68xN1IzFcGEI1MegTUObXzc7zDVR2mN7lG74SqdCtUa7zDk3DJKyu1YJyfpuutJePg05R3y93SCghvtrFGTtZ5Z3gUz9ricy-tpLcOhOizn01kjLTlomFQBP3Ksje5DOJfQDGcqXNVSSXeG6DkIvVqPXyf4HBoRxaXvhvvXDgmB2QE7O8pIffAOGqmQoLGmj5e91LKXf1DcNusTeEIxxKPOSbX50nnwnyzzg62KYnWfUbLMR4llPnwY9cNJ1ipTK9iTY3Z8ifH_j7ZDRU4nWRlferRZM_tJ9lKdNbOQQmMMJOUWiluZ2DpXi_Hr0E-hy5_3gbx-7V8eX6fCDcfB3o2lb7Wu5R6OP_nPhuB_f4bku2ccsHfSaNDGIU018RpI98D4O2vDGxnjQBikIDQwKAOSulUInGmjAw2ER7FeZwcqkmUOJ8sOB7TZZPGNvigLAq8F2qAay6jcBVUWW1gpc4oa3PQ904JAGO5DT0XtG53nx83Dvx6zXiTL_OLvZWCuk3QaicB4F_wNLIsaDhYptGeYCxaHr_aI4hrQEa1szkm5s14XWWa9rob4vmn6fwe-eRq6B8UUxvPHdL_yNWbxN5F_qfp1jNn1FRHIWckdWIyBAbEzxV5XCNrYPnKdAOs1hOnMnLdIn8ae1zTRwdW0ZTwQWuulYJrjwCjVBjrnDkE8YFXulDr2mbFtUu6E4ZSUu7_M6dW8-LqXbrP1bda5_kJreJQCgzEah2m1gQq4QqYvPBFqdSqbzocX3F1QUErsR17Yj226H0j_A0SB7U8TCDfTdkD609iM1TjKjnT9lVx55bY4NC70NM7Ob4rm57Xp_IGcRdYPwCXlrpbaO6kobUUdkhNJuQuES146jAeplcSPKaomKXdXQrzx9Bw69x0jkskyV0pkUWdisf0wTffk6_0wPEfA9nG12J-s0e0-jr0Li_xghCDFaLLMy2W-KJepUiIdY5jGVjqCP2nOxLoS99U9m-G6WN3ld9VysZrPunVR5PWqbJYrXt9jWa045vNqJRhWizy_axYzuY5-lvmqKOf31TzjecNW93zR3OVYzPMimefYM6myqeJmkshjUCuq-UyxGhXFzbMsVYCyDCuoXQfxtPYtJfNcSXJ0NeCkU3FZHXbNZPGQLLZBd_EwVcK0d4w7Cfl6WkGGzMcFLaI4LA8zb9X6Y4-00nW-zrjpx4YZ_6QHa0LpJOUu5hK6Z0znuC7_HwAA__-dZ5wD">