aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2006-05-02 13:09:18 +0000
committerPaul Brook <paul@codesourcery.com>2006-05-02 13:09:18 +0000
commita8bc6c780e54b1dad7c356c815965f87df0314c7 (patch)
tree76bd0fd7da2825c7b9a1f69be8ac0e03935cb634 /bfd
parent7cc27f03b90c3fad20b4fc535f448c4ee42932d0 (diff)
downloadfsf-binutils-gdb-a8bc6c780e54b1dad7c356c815965f87df0314c7.zip
fsf-binutils-gdb-a8bc6c780e54b1dad7c356c815965f87df0314c7.tar.gz
fsf-binutils-gdb-a8bc6c780e54b1dad7c356c815965f87df0314c7.tar.bz2
2006-05-02 Paul Brook <paul@codesourcery.com>
bfd/ * elf32-arm.c (elf32_arm_final_link_relocate): Set thumb funciton bit for R_ARM_REL32. gas/ * config/tc-arm.c (arm_optimize_expr): New function. * config/tc-arm.h (md_optimize_expr): Define (arm_optimize_expr): Add prototype. (TC_FORCE_RELOCATION_SUB_SAME): Define. ld/testsuite/ * ld-arm/arm-elf.exp: Add thumb-rel32. * ld-arm/thumb-rel32.d: New test. * ld-arm/thumb-rel32.s: New test.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-arm.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9381660..e3d371f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-02 Paul Brook <paul@codesourcery.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate): Set thumb funciton bit
+ for R_ARM_REL32.
+
2006-05-02 Ben Elliston <bje@au.ibm.com>
* archive.c (bfd_generic_archive_p): Remove unused local variable
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index bd3c4e3..eb7723b 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -3274,9 +3274,11 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
break;
case R_ARM_REL32:
+ value += addend;
+ if (sym_flags == STT_ARM_TFUNC)
+ value |= 1;
value -= (input_section->output_section->vma
+ input_section->output_offset + rel->r_offset);
- value += addend;
break;
case R_ARM_PREL31: