https://sourceware.org/bugzilla/show_bug.cgi?id=34172

            Bug ID: 34172
           Summary: [RISC-V ld] intra section boundary misses C.J relax
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: l784896635 at gmail dot com
  Target Milestone: ---

During RISC-V linker regression/conformance testing, I reduced this
linker-stage issue.

## Actual behavior

GNU ld.bfd leaves the final tail call as a 32-bit jal zero even though the
resolved displacement is 0x7fe, which is inside the c.j range, while ld.lld
emits c.j on the same object.

## Expected behavior

The linker should produce the semantically correct RISC-V output for this
reduced testcase, or issue a controlled diagnostic when the input is outside
the supported semantics. It should not silently emit a wrong output, lose
required metadata/relocations/attributes, miss a required relaxation, report a
false range/non-PIC/non-convergence error, or crash.

## Test input and intent

A same-section tail call sits exactly near the c.j boundary and should use the
16-bit compressed form once the exact post-relax displacement is known.

## Target and route

- Target tracker: GNU binutils / ld
- Target ISA / ABI: `rv64imac` / `lp64`
- First failing stage: link
- Toolchain route used in reduction: gas+ld.bfd with gas+ld.lld control

## Reproduction evidence

3 clean reproductions in packaged run1..run3 evidence show stable ld.bfd output
at 0x10812: jal zero, 0x11010 <c>; the ld.lld control on the same a.o emits c.j
to c instead.

The reproducer bundle contains the reduced testcase plus three local
reproduction runs. The evidence is text-only: linker outputs, disassembly,
relocation dumps, symbol dumps, and short summaries where available.

Reproducer bundle:

https://github.com/anonymous25989/riscv-linker-48-reproducers/raw/main/r48-v2/attachments/gnu_001_intra_section_boundary_misses_cj_relax_reproducer.zip

## Notes

This is reported as a linker-stage behavior defect found during RISC-V linker
regression/conformance testing. The reduced testcase is intentionally small so
that the failure mode is easy to inspect. The attached evidence is already
reproduced; no additional local path or private workspace is required.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to