RISC-V: Use pc-relative relocation for FDE initial location
authorKuan-Lin Chen <rufus@andestech.com>
Thu, 8 Jun 2017 18:54:14 +0000 (11:54 -0700)
committerPalmer Dabbelt <palmer@dabbelt.com>
Tue, 27 Jun 2017 01:26:40 +0000 (18:26 -0700)
commita6cbf936e3dce68114d28cdf60d510a3f78a6d40
treedc4fe23922098e657bdab1a1f749a36e6bf27e9c
parent7211ae501eb0de1044983f2dfb00091a58fbd66c
RISC-V: Use pc-relative relocation for FDE initial location

The symbol address in .eh_frame may be adjusted in
_bfd_elf_discard_section_eh_frame, and the content of .eh_frame will be
adjusted in _bfd_elf_write_section_eh_frame. Therefore, we cannot insert
a relocation whose addend symbol is in .eh_frame. Othrewise, the value
may be adjusted twice.

bfd/ChangeLog
2017-06-26  Kuan-Lin Chen  <rufus@andestech.com>

* elfnn-riscv.c (perform_relocation): Support the new
R_RISCV_32_PCREL relocation.
(riscv_elf_relocate_section): Likewise.
* elfxx-riscv.c (howto_table): Likewise.
(riscv_reloc_map): Likewise.
* bfd-in2.h (BFD_RELOC_RISCV_32_PCREL): New relocation.
* libbfd.h: Regenerate.

gas/ChangeLog
2017-06-26  Kuan-Lin Chen  <rufus@andestech.com>

* config/tc-riscv.c (md_apply_fix) [BFD_RELOC_32]: Convert to a
R_RISCV_32_PCREL relocation.

include/ChangeLog
2017-06-26  Kuan-Lin Chen  <rufus@andestech.com>

* elf/riscv.h (R_RISCV_32_PCREL): New.
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elfnn-riscv.c
bfd/elfxx-riscv.c
bfd/libbfd.h
bfd/reloc.c
gas/ChangeLog
gas/config/tc-riscv.c
include/ChangeLog
include/elf/riscv.h