This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] gas: xtensa: fix trampoline placement
- From: Max Filippov <jcmvbkbc at gmail dot com>
- To: binutils at sourceware dot org
- Cc: Sterling Augustine <augustine dot sterling at gmail dot com>, linux-xtensa at linux-xtensa dot org, Max Filippov <jcmvbkbc at gmail dot com>
- Date: Sun, 11 Feb 2018 16:14:41 -0800
- Subject: [PATCH] gas: xtensa: fix trampoline placement
- Authentication-results: sourceware.org; auth=none
For jumps requiring multiple trampolines trampoline placement code may
place multiple sequential trampolines into the same frag. Don't do that.
gas/
2018-02-10 Max Filippov <jcmvbkbc@gmail.com>
* config/tc-xtensa.c (xg_find_best_trampoline): Skip trampoline
frag that contains source address.
---
gas/config/tc-xtensa.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index 58c2e10c1878..1dbb73aa55c7 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -9339,6 +9339,11 @@ 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
--
2.1.4