[binutils-gdb/binutils-2_30-branch] gas: xtensa: fix trampoline placement

Max Filippov jcmvbkbc@sourceware.org
Wed Feb 14 17:02:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a7d8ff32307a5c5c3bc0dda0c494f7a3f1518050

commit a7d8ff32307a5c5c3bc0dda0c494f7a3f1518050
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-14  Max Filippov  <jcmvbkbc@gmail.com>
    
    	Backport from mainline
    	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          | 8 ++++++++
 gas/config/tc-xtensa.c | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index fbc3278..e981564 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2018-02-14  Max Filippov  <jcmvbkbc@gmail.com>
+
+	Backport from mainline
+	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-12  Nick Clifton  <nickc@redhat.com>
 
 	* po/ru.po: Updated Russian translation.
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



More information about the Binutils-cvs mailing list