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.
This commit is contained in:
Max Filippov 2018-02-10 21:59:54 -08:00
parent 24b9144d4b
commit db5d5ad16f
2 changed files with 11 additions and 0 deletions

View File

@ -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

View File

@ -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