summaryrefslogtreecommitdiff
path: root/packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2021-09-21 07:46:06 (GMT)
committerChris Packham <judge.packham@gmail.com>2021-09-21 09:24:31 (GMT)
commitfa992b41918a1dbf05f6830ba659f4ea6ffc5ffa (patch)
tree576b68e374538c4dedb835cff6f55a72f67f8f1f /packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch
parent836fb9165234e50a07094b2c11938c17f92cd356 (diff)
binutils: Remove obsolete versions
The following versions were marked obsolete in crosstool-ng-1.24.0, remove them. - binutils-linaro-2.23.2-2013.10-4 - binutils-linaro-2.24.0-2014.11-2 - binutils-linaro-2.25.0-2015.01-2 - binutils-2.23.2 - binutils-2.24 - binutils-2.25.1 Adjust the milestones now that the old versions have been removed. Signed-off-by: Chris Packham <judge.packham@gmail.com>
Diffstat (limited to 'packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch')
-rw-r--r--packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch74
1 files changed, 0 insertions, 74 deletions
diff --git a/packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch b/packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch
deleted file mode 100644
index c31d01c..0000000
--- a/packages/binutils/2.24/0013-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 7fc39194f8fb48914c995f8ec3826d50086f1ec0 Mon Sep 17 00:00:00 2001
-From: Sterling Augustine <augustine.sterling@gmail.com>
-Date: Tue, 25 Jan 2011 13:59:13 -0800
-Subject: [PATCH] Fix 'call8: call target out of range' xtensa ld relaxation
- bug
-
-During link-time relaxation distance between cross-section call site and
-its target may grow, producing 'call target out of range' error for
-relaxed calls. Be more conservative when calculating whether or not a
-callx can be converted to a straight call.
-
-2014-09-23 Sterling Augustine <augustine.sterling@gmail.com>
-
-bfd/
- * elf32-xtensa.c (is_resolvable_asm_expansion): for cross-section
- call relaxation use furthermost addresses where call source and
- destination can be to check whether it's in the range of a direct
- call.
-
-Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
----
- bfd/elf32-xtensa.c | 41 +++++++++++++++++++++++++++++++++++++----
- 1 file changed, 37 insertions(+), 4 deletions(-)
-
---- a/bfd/elf32-xtensa.c
-+++ b/bfd/elf32-xtensa.c
-@@ -7123,10 +7123,43 @@
- || is_reloc_sym_weak (abfd, irel)))
- return FALSE;
-
-- self_address = (sec->output_section->vma
-- + sec->output_offset + irel->r_offset + 3);
-- dest_address = (target_sec->output_section->vma
-- + target_sec->output_offset + target_offset);
-+ if (target_sec->output_section != sec->output_section)
-+ {
-+ /* If the two sections are sufficiently far away that relaxation
-+ might take the call out of range, we can't simplify. For
-+ example, a positive displacement call into another memory
-+ could get moved to a lower address due to literal removal,
-+ but the destination won't move, and so the displacment might
-+ get larger.
-+
-+ If the displacement is negative, assume the destination could
-+ move as far back as the start of the output section. The
-+ self_address will be at least as far into the output section
-+ as it is prior to relaxation.
-+
-+ If the displacement is postive, assume the destination will be in
-+ it's pre-relaxed location (because relaxation only makes sections
-+ smaller). The self_address could go all the way to the beginning
-+ of the output section. */
-+
-+ dest_address = target_sec->output_section->vma;
-+ self_address = sec->output_section->vma;
-+
-+ if (sec->output_section->vma > target_sec->output_section->vma)
-+ self_address += sec->output_offset + irel->r_offset + 3;
-+ else
-+ dest_address += bfd_get_section_limit (abfd, target_sec->output_section);
-+ /* Call targets should be four-byte aligned. */
-+ dest_address = (dest_address + 3) & ~3;
-+ }
-+ else
-+ {
-+
-+ self_address = (sec->output_section->vma
-+ + sec->output_offset + irel->r_offset + 3);
-+ dest_address = (target_sec->output_section->vma
-+ + target_sec->output_offset + target_offset);
-+ }
-
- *is_reachable_p = pcrel_reloc_fits (direct_call_opcode, 0,
- self_address, dest_address);