aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch')
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch b/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch
new file mode 100644
index 0000000000..8ade69d3fc
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.23.1/backport/0010-bfd-ChangeLog.patch
@@ -0,0 +1,95 @@
+From c49a2d2d8ff625b17699c44a703f217de5b4fa2f Mon Sep 17 00:00:00 2001
+From: Yufeng Zhang <yufeng.zhang@arm.com>
+Date: Mon, 19 Nov 2012 18:46:01 +0000
+Subject: [PATCH 10/27] bfd/ChangeLog
+
+2012-11-19 Joey Ye <joey.ye@arm.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate,
+ case R_ARM_THM_ALU_PREL_11_0, case R_ARM_THM_PC12): Align address of
+ the place being relocated.
+ (elf32_arm_final_link_relocate, case R_ARM_THM_PC8): Align address
+ of the place being relocated and truncate addend.
+ (Pa): New macro.
+---
+ bfd/ChangeLog | 9 +++++++++
+ bfd/elf32-arm.c | 23 +++++++++++++----------
+ 2 files changed, 22 insertions(+), 10 deletions(-)
+
+diff --git a/bfd/ChangeLog b/bfd/ChangeLog
+index 981e05a..59c36a7 100644
+--- a/bfd/ChangeLog
++++ b/bfd/ChangeLog
+@@ -1,3 +1,12 @@
++2012-11-19 Joey Ye <joey.ye@arm.com>
++
++ * elf32-arm.c (elf32_arm_final_link_relocate,
++ case R_ARM_THM_ALU_PREL_11_0, case R_ARM_THM_PC12): Align address of
++ the place being relocated.
++ (elf32_arm_final_link_relocate, case R_ARM_THM_PC8): Align address
++ of the place being relocated and truncate addend.
++ (Pa): New macro.
++
+ 2012-11-14 Roland McGrath <mcgrathr@google.com>
+
+ * elf32-arm.c (elf32_arm_nacl_plt0_entry): Use bic rather than bfc
+diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
+index 3c541ca..01ca11b 100644
+--- a/bfd/elf32-arm.c
++++ b/bfd/elf32-arm.c
+@@ -63,6 +63,9 @@
+ #define ARM_ELF_ABI_VERSION 0
+ #define ARM_ELF_OS_ABI_VERSION ELFOSABI_ARM
+
++/* The Adjusted Place, as defined by AAELF. */
++#define Pa(X) ((X) & 0xfffffffc)
++
+ static bfd_boolean elf32_arm_write_section (bfd *output_bfd,
+ struct bfd_link_info *link_info,
+ asection *sec,
+@@ -8619,9 +8622,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
+ }
+
+ relocation = value + signed_addend;
+- relocation -= (input_section->output_section->vma
+- + input_section->output_offset
+- + rel->r_offset);
++ relocation -= Pa (input_section->output_section->vma
++ + input_section->output_offset
++ + rel->r_offset);
+
+ value = abs (relocation);
+
+@@ -8651,12 +8654,12 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
+ insn = bfd_get_16 (input_bfd, hit_data);
+
+ if (globals->use_rel)
+- addend = (insn & 0x00ff) << 2;
++ addend = ((((insn & 0x00ff) << 2) + 4) & 0x3ff) -4;
+
+ relocation = value + addend;
+- relocation -= (input_section->output_section->vma
+- + input_section->output_offset
+- + rel->r_offset);
++ relocation -= Pa (input_section->output_section->vma
++ + input_section->output_offset
++ + rel->r_offset);
+
+ value = abs (relocation);
+
+@@ -8691,9 +8694,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
+ }
+
+ relocation = value + signed_addend;
+- relocation -= (input_section->output_section->vma
+- + input_section->output_offset
+- + rel->r_offset);
++ relocation -= Pa (input_section->output_section->vma
++ + input_section->output_offset
++ + rel->r_offset);
+
+ value = abs (relocation);
+
+--
+1.7.9.5
+