bfd/ChangeLog
authorDenis Chertykov <chertykov@gmail.com>
Thu, 10 Apr 2014 15:50:33 +0000 (19:50 +0400)
committerDenis Chertykov <chertykov@gmail.com>
Thu, 10 Apr 2014 15:50:33 +0000 (19:50 +0400)
commite4ef1b6c3fee295ab41138bf77a82dff16f1d7c3
tree4f6ad10afb271882fe8624a082ecb088a1db0feb
parent9d497a19eabe25b3af1cdd50a957592ed22658e5
bfd/ChangeLog

* elf32-avr.c: Add DIFF relocations for AVR.
(avr_final_link_relocate): Handle the DIFF relocs.
(bfd_elf_avr_diff_reloc): New.
(elf32_avr_is_diff_reloc): New.
(elf32_avr_adjust_diff_reloc_value): Reduce difference value.
(elf32_avr_relax_delete_bytes): Recompute difference after deleting
bytes.

* reloc.c: Add BFD_RELOC_AVR_DIFF8/16/32 relocations

gas/ChangeLog

* config/tc-avr.c: Add new flag mlink-relax.
(md_show_usage): Add flag and help text.
(md_parse_option): Record whether link relax is turned on.
(relaxable_section): New.
(avr_validate_fix_sub): New.
(avr_force_relocation): New.
(md_apply_fix): Generate DIFF reloc.
(avr_allow_local_subtract): New.

* config/tc-avr.h (TC_LINKRELAX_FIXUP): Define to 0.
(TC_FORCE_RELOCATION): Define.
(TC_FORCE_RELOCATION_SUB_SAME): Define.
(TC_VALIDATE_FIX_SUB): Define.
(avr_force_relocation): Declare.
(avr_validate_fix_sub): Declare.
(md_allow_local_subtract): Define.
(avr_allow_local_subtract): Declare.

gas/testsuite/ChangeLog

* gas/avr/diffreloc_withrelax.d: New testcase.
* gas/avr/noreloc_withoutrelax.d: Likewise.
* gas/avr/relax.s: Likewise.

include/ChangeLog

* elf/avr.h: Add new DIFF relocs.

ld/testsuite/ChangeLog

* ld-avr/norelax_diff.d: New testcase.
* ld-avr/relax_diff.d: Likewise.
* ld-avr/relax.s: Likewise.
17 files changed:
bfd/ChangeLog
bfd/elf32-avr.c
bfd/reloc.c
gas/ChangeLog
gas/config/tc-avr.c
gas/config/tc-avr.h
gas/testsuite/ChangeLog
gas/testsuite/gas/avr/diffreloc_withrelax.d [new file with mode: 0644]
gas/testsuite/gas/avr/noreloc_withoutrelax.d [new file with mode: 0644]
gas/testsuite/gas/avr/relax.s [new file with mode: 0644]
include/ChangeLog
include/elf/avr.h
ld/testsuite/ChangeLog
ld/testsuite/ld-avr/avr.exp [new file with mode: 0644]
ld/testsuite/ld-avr/norelax_diff.d [new file with mode: 0644]
ld/testsuite/ld-avr/relax.s [new file with mode: 0644]
ld/testsuite/ld-avr/relax_diff.d [new file with mode: 0644]