diff options
author | Alexey Neyman <stilor@att.net> | 2017-12-02 12:44:39 -0800 |
---|---|---|
committer | Alexey Neyman <stilor@att.net> | 2017-12-02 12:44:39 -0800 |
commit | 98bc4decdeab1361bdc585c86591718fb08c8ffb (patch) | |
tree | 4e048ed57988306696efa3c5b81a80d48030e913 /packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch | |
parent | 2a1935f3ad41d360dd3d96a1b0486083293651dd (diff) | |
download | crosstool-ng-98bc4decdeab1361bdc585c86591718fb08c8ffb.tar.gz crosstool-ng-98bc4decdeab1361bdc585c86591718fb08c8ffb.tar.bz2 crosstool-ng-98bc4decdeab1361bdc585c86591718fb08c8ffb.zip |
Run all patches through renumbering and update
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch')
-rw-r--r-- | packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch b/packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch new file mode 100644 index 00000000..a4e7b5cc --- /dev/null +++ b/packages/binutils/2.23.2/0011-Fix-trampolines-search-code-for-conditional-branches.patch @@ -0,0 +1,81 @@ +From 415480d6471e67aef97c0241d451ef2423a1da9d Mon Sep 17 00:00:00 2001 +From: Max Filippov <jcmvbkbc@gmail.com> +Date: Tue, 25 Nov 2014 21:33:21 +0300 +Subject: [PATCH] Fix trampolines search code for conditional branches + +For conditional branches that need more than one trampoline to reach its +target assembler couldn't always find suitable trampoline because +post-loop condition check was placed inside the loop, resulting in +premature loop termination. Move check outside the loop. + +This fixes the following build errors seen when assembling huge files +produced by gcc: + Error: jump target out of range; no usable trampoline found + Error: operand 1 of 'j' has out of range value '307307' + +2014-11-25 Max Filippov <jcmvbkbc@gmail.com> + +gas/ + * config/tc-xtensa.c (search_trampolines): Move post-loop + condition check outside the search loop. + +gas/testsuite/ + * gas/xtensa/trampoline.d: Add expected output for branches. + * gas/xtensa/trampoline.s: Add test case for branches. + +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> +--- +Backported from: d92b6eece424f0ad35d96fdd85bf207295e8c4c3 +Changes to ChangeLogs are dropped. + + gas/config/tc-xtensa.c | 8 ++++---- + gas/testsuite/gas/xtensa/trampoline.d | 9 +++++++++ + gas/testsuite/gas/xtensa/trampoline.s | 7 +++++++ + 3 files changed, 20 insertions(+), 4 deletions(-) + +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -9515,11 +9515,11 @@ + if (next_addr == 0 || addr - next_addr > J_RANGE) + break; + } +- if (abs (addr - this_addr) < J_RANGE) +- return tf; +- +- return NULL; + } ++ if (abs (addr - this_addr) < J_RANGE) ++ return tf; ++ ++ return NULL; + } + for ( ; tf; tf = tf->next) + { +--- a/gas/testsuite/gas/xtensa/trampoline.d ++++ b/gas/testsuite/gas/xtensa/trampoline.d +@@ -24,3 +24,12 @@ + .*33462:.*j.0x49407 + #... + .*49407:.*j.0x49407 ++.*4940a:.*beqz.n.a2,.0x4940f ++.*4940c:.*j.0x693d1 ++#... ++.*693d1:.*j.0x7ddd4 ++#... ++.*7ddd4:.*j.0x927f5 ++#... ++.*927f5:.*j.0x927f5 ++#... +--- a/gas/testsuite/gas/xtensa/trampoline.s ++++ b/gas/testsuite/gas/xtensa/trampoline.s +@@ -19,3 +19,10 @@ + .endr + 3: + j 3b ++ bnez a2, 4f ++ .rep 50000 ++ and a2, a2, a3 ++ _ret ++ .endr ++4: ++ j 4b |