mirror of
https://git.yoctoproject.org/poky
synced 2026-03-03 05:49:39 +01:00
backport non regressing patches from 2.23 branch after 2.23.1 release. (From OE-Core rev: df9b304f7a43c798223606eb5f0e13f7250393fe) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
96 lines
3.1 KiB
Diff
96 lines
3.1 KiB
Diff
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
|
|
|