This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi there, According to AAPCS-ELF specification R_ARM_THM_JUMP19 should also be veneered if the target is outside the addressable span of the branch instruction or where interworking happened. So the attached patch implements the veneer routine for R_ARM_THM_JUMP19, and two new macros THM2_MAX_FWD_COND_BRANCH_OFFSET and THM2_MAX_BWD_COND_BRANCH_OFFSET are introduced. Also updated the conditional branch for both cases mentioned above. Tested with Binutils regression test, no new regressions. No regression on gcc trunk with target cortex m4 Ok for the trunk? bfd/ChangeLog: 2014-08-4 Tony Wang <tony.wang@arm.com> * elf32-arm.c (elf32_arm_final_link_relocate): Implement the veneer routine for R_ARM_THM_JUMP19. (arm_type_of_stub): Add conditional clause for R_ARM_THM_JUMP19 (elf32_arm_size_stub): Ditto. ld/testsuite/ChangeLog: 2014-08-4 Tony Wang <tony.wang@arm.com> * ld-arm/jump-reloc-veneers-cond.s: New test. * ld-arm/farcall-cond-thumb-arm.s: Ditto. * ld-arm/jump-reloc-veneers-cond-short.d: Expected output for target without a veneer generation. * ld-arm/jump-reloc-veneers-cond-long.d: Expected output for target with a veneer generation. * ld-arm/farcall-cond-thumb-arm.d: Expected output for inter working veneer generation. * ld-arm/arm-elf.exp: Add tests for conditional branch veneer.
Attachment:
relocation_jump19.diff
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |