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

--- Comment #4 from Nelson Chu <nelsonc1225 at sourceware dot org> ---
> The --emit-relocs should switch to preserve the original
> relocation type, including R_RISCV_CALL_PLT(etc),
> R_RISCV_RELAX, and R_RISCV_ALIGN.

Looks reasonable, so based on this rule when setting --emit-reloc,

1. R_RISCV_CALL_PLT

auipc, [R_RISCV_CALL_PLT][R_RISCV_RELAX]
jalr
(relax and emit to) ->
jal, [R_RISCV_CALL_PLT][R_RISCV_RELAX]

2. R_RISCV_ALIGN

.align 3, 6 nops under rvc, [R_RISCV_ALIGN] with addend 6
->
less then 6 nops (may be 0), [R_RISCV_ALIGN] with addend 6 or less?

3. R_RISCV_HI20/LO12

Even not all people like gp relaxation, we still need a rule in GNU ld for
--emit-reloc.

lui, [R_RISCV_HI20][R_RISCV_RELAX]
addi, [R_RISCV_LO12][R_RISCV_RELAX]
->
add with gp, [R_RISCV_HI20][R_RISCV_RELAX][R_RISCV_LO12][R_RISCV_RELAX], four
relocs point to same instruction?

4, R_RISCV_PCREL_HI20/PCREL_LO12

Likewise, all the four relocs point to the same pcrel_lo instruction.

5. R_RISCV_GOT_HI20/PCREL_LO12

Likewise.

6. ... future relaxations, TLS, ...

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

Reply via email to