]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit - bfd/elfnn-riscv.c
RISC-V: Fix ld relax failure with calls and align directives.
authorJim Wilson <jimw@sifive.com>
Tue, 12 Nov 2019 23:50:48 +0000 (15:50 -0800)
committerJim Wilson <jimw@sifive.com>
Tue, 12 Nov 2019 23:53:22 +0000 (15:53 -0800)
commitc6261a00c3e70dd8e508062ea43a1bcb6d547621
treeb7267edb54f7535ff9913d2394ad867d14717b3b
parente06f3d6eba37df8451ecc2ce2ac76cba811e8b35
RISC-V: Fix ld relax failure with calls and align directives.

Make _bfd_riscv_relax_call handle section alignment padding same as
the _bfd_riscv_relax_lui and _bfd_riscv_relax_pc functions already
do.  Use the max section alignment if section boundaries are crossed,
otherwise the alignment of the containing section.

bfd/
PR 25181
* elfnn-riscv.c (_bfd_riscv_relax_call): Always add max_alignment to
foff.  If sym_sec->output_section and sec->output_section are the same
and not *ABS* then set max_alignment to that section's alignment.

ld/
PR 25181
* testsuite/ld-riscv-elf/call-relax-0.s: New file.
* testsuite/ld-riscv-elf/call-relax-1.s: New file.
* testsuite/ld-riscv-elf/call-relax-2.s: New file.
* testsuite/ld-riscv-elf/call-relax-3.s: New file.
* testsuite/ld-riscv-elf/call-relax.d: New test.
* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Run call-relax test.

Change-Id: Iaf65cee52345abf1955f36e8e72c4f6cc0db8d9a
bfd/ChangeLog
bfd/elfnn-riscv.c
ld/ChangeLog
ld/testsuite/ld-riscv-elf/call-relax-0.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/call-relax-1.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/call-relax-2.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/call-relax-3.s [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/call-relax.d [new file with mode: 0644]
ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp