RISC-V: Add --[no-]relax-gp to ld
authorFangrui Song <i@maskray.me>
Fri, 24 Feb 2023 06:11:14 +0000 (22:11 -0800)
committerFangrui Song <i@maskray.me>
Fri, 24 Feb 2023 06:11:14 +0000 (22:11 -0800)
commit50980ba351856dff75bb0743bfca62f4c3ab19ff
tree57293555d30735da578d765d9d4058b46d237df9
parent6777dece58127236db900215857f9070ad63e0bf
RISC-V: Add --[no-]relax-gp to ld

--relax enables all relaxations.  --no-relax-gp disables GP relaxation to
allow measuring its effect.

The option can test effectiveness of GP relaxation and support some ABI
variants that use GP for other purposes.

Link: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/298
bfd/
    * elfnn-riscv.c (struct riscv_elf_link_hash_table): Add params.
    (riscv_elfNN_set_options): New.
    (riscv_info_to_howto_rela): Check relax_gp.
    (_bfd_riscv_relax_section): Likewise.
    * elfxx-riscv.h (struct riscv_elf_params): New.
    (riscv_elf32_set_options): New.
    (riscv_elf64_set_options): New.
ld/
    * emultempl/riscvelf.em: Add option parsing.
    * testsuite/ld-riscv-elf/code-model-relax-medlow-01-norelaxgp.d: New.
    * testsuite/ld-riscv-elf/pcgp-relax-01-norelaxgp.d: New.
    * testsuite/ld-riscv-elf/pcgp-relax-02.d: Test --relax --relax-gp can be
      used together.
bfd/ChangeLog
bfd/elfnn-riscv.c
bfd/elfxx-riscv.h
ld/ChangeLog
ld/emultempl/riscvelf.em
ld/testsuite/ld-riscv-elf/code-model-relax-medlow-01-norelaxgp.d [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp
ld/testsuite/ld-riscv-elf/pcgp-relax-01-norelaxgp.d [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/pcgp-relax-02.d