diff options
author | Paul Brook <paul@codesourcery.com> | 2006-05-01 16:27:16 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2006-05-01 16:27:16 +0000 |
commit | e3e35c2f5033c079f43a3a40265119e925b6a4db (patch) | |
tree | 4d31ec02d569cc1f957c21bc1e917da346d3ae83 | |
parent | 1ee3a877effbd6d7da58c8f3e8e6418109a98363 (diff) | |
download | gdb-e3e35c2f5033c079f43a3a40265119e925b6a4db.tar.gz |
2006-05-01 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.
* gas/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/testsuite/ld-arm/thumb-rel32.d: New test.
* ld/testsuite/ld-arm/thumb-rel32.s: New test.
-rw-r--r-- | ChangeLog.csl | 12 | ||||
-rw-r--r-- | bfd/elf32-arm.c | 4 |
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl index 8200983079b..999bf93ffb3 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,3 +1,15 @@ +2006-05-01 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. + * gas/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/testsuite/ld-arm/thumb-rel32.d: New test. + * ld/testsuite/ld-arm/thumb-rel32.s: New test. + 2006-04-29 Paul Brook <paul@codesourcery.com> * opcodes/arm-dis.c (coprocessor_opcodes): Add %c to unconditional diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index ca33121708d..f64f5d6feee 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: |