From 011561117eeaff00862eb5f465c3470f29e8a9a9 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 9 Jan 2017 09:22:33 +0000 Subject: [PATCH] RISC-V/GAS: Correct branch relaxation for weak symbols. * config/tc-riscv.c (relaxed_branch_length): Use the long sequence when the target is a weak symbol. --- gas/ChangeLog | 5 +++++ gas/config/tc-riscv.c | 1 + 2 files changed, 6 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index c93a61bc19..00f6d1aa8e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2017-01-09 Andrew Waterman + + * config/tc-riscv.c (relaxed_branch_length): Use the long + sequence when the target is a weak symbol. + 2017-01-04 Szabolcs Nagy * config/tc-aarch64.c (aarch64_features): Add rcpc. diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index 1f61730349..b8da6ce390 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -360,6 +360,7 @@ relaxed_branch_length (fragS *fragp, asection *sec, int update) if (fragp->fr_symbol != NULL && S_IS_DEFINED (fragp->fr_symbol) + && !S_IS_WEAK (fragp->fr_symbol) && sec == S_GET_SEGMENT (fragp->fr_symbol)) { offsetT val = S_GET_VALUE (fragp->fr_symbol) + fragp->fr_offset;