RISC-V: Added ld testcase for pcgp relaxation.
authorLewis Revill <lewis.revill@embecosm.com>
Fri, 22 Oct 2021 03:32:46 +0000 (11:32 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Fri, 22 Oct 2021 08:44:43 +0000 (16:44 +0800)
commitc628f812eba820e11ef83033b38becca1b148dc5
tree12eda3d5fda0a27c206bf9afda4010c2282f72aa
parent9abcdc10b21ed9f98e218ead7ac9d91612f9ed0f
RISC-V: Added ld testcase for pcgp relaxation.

Consider the the pcgp-relax-02 testcase,

        .text
        .globl _start
_start:
.L1:    auipc   a0, %pcrel_hi(data_a)
.L2:    auipc   a1, %pcrel_hi(data_b)
        addi    a0, a0, %pcrel_lo(.L1)
        addi    a1, a1, %pcrel_lo(.L2)

        .data
        .word 0x0
        .globl data_a
data_a:
        .word 0x1

        .section .rodata
        .globl data_b
data_b:
        .word 0x2

If the first auipc is deleted, but we are still building the pcgp
table (connect the high and low pcrel relocations), then there is
an aliasing issue that we need some way to disambiguate which of
the two symbols we are targeting.  Therefore, Palmer thought of a
way to use R_RISCV_DELETE to split this into two phases, so we
could resolve the addresses before creating the ambiguities.

This patch just add the ld testcase for the above case, in case we
have changed something but break this.

ld/
* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Renamed pcgp-relax
to pcgp-relax-01, and added pcgp-relax-02.
* testsuite/ld-riscv-elf/pcgp-relax-01.d: Renmaed from pcgp-relax.
* testsuite/ld-riscv-elf/pcgp-relax-01.s: Likewise.
* testsuite/ld-riscv-elf/pcgp-relax-02.d: New testcase.
* testsuite/ld-riscv-elf/pcgp-relax-02.s: Likewise.
ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp
ld/testsuite/ld-riscv-elf/pcgp-relax-01.d [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/pcgp-relax-01.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/pcgp-relax-02.d [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/pcgp-relax-02.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/pcgp-relax.d [deleted file]
ld/testsuite/ld-riscv-elf/pcgp-relax.s [deleted file]