This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] gas: xtensa: fix trampoline placement
- From: Max Filippov <jcmvbkbc at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 13 Feb 2018 17:33:30 -0000
- Subject: [binutils-gdb] gas: xtensa: fix trampoline placement
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=db5d5ad16fb02ceb636ccef232ec846086c6cef3
commit db5d5ad16fb02ceb636ccef232ec846086c6cef3
Author: Max Filippov <jcmvbkbc@gmail.com>
Date: Sat Feb 10 21:59:54 2018 -0800
gas: xtensa: fix trampoline placement
For jumps requiring multiple trampolines trampoline placement code may
place multiple sequential trampolines into the same frag. Don't do that.
gas/
2018-02-13 Max Filippov <jcmvbkbc@gmail.com>
* config/tc-xtensa.c (xg_find_best_trampoline): Skip trampoline
frag that contains source address.
Diff:
---
gas/ChangeLog | 5 +++++
gas/config/tc-xtensa.c | 6 ++++++
2 files changed, 11 insertions(+)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index adf4569..3d9b50f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-13 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/tc-xtensa.c (xg_find_best_trampoline): Skip trampoline
+ frag that contains source address.
+
2018-02-13 Nick Clifton <nickc@redhat.com>
PR 22773
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index 58c2e10..b522447 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -9339,6 +9339,12 @@ static size_t xg_find_best_trampoline (struct trampoline_index *idx,
trampoline_frag->fr_address > target))
continue;
+ /* Don't choose trampoline that contains the source. */
+ if (source >= trampoline_frag->fr_address
+ && source <= trampoline_frag->fr_address +
+ trampoline_frag->fr_fix)
+ continue;
+
off = trampoline_frag->fr_address - fulcrum;
/* Stop if some trampoline is found and the search is more than
J_RANGE / 4 from the projected fulcrum. A trampoline w/o jump