bac13f5a4c
Make use of the data held within the .avr.prop section during linker relaxation in order to maintain the properties of the .org and .align directives. In relation to the .align directives, if enough bytes are deleted before a .align directive then the alignment can be moved while still maintaining the alignment requirement. bfd/ChangeLog: * elf32-avr.c (struct elf_avr_section_data): New structure. (struct avr_relax_info): New structure. (elf_avr_new_section_hook): New function. (struct elf_avr_section_data): Add relax_info. (get_avr_relax_info): New function. (init_avr_relax_info): New function. (elf32_avr_relax_delete_bytes): Find next property record before deleting bytes. When deleting don't move bytes beyond the next property record. (avr_elf32_assign_records_to_section): New function. (avr_property_record_compare): New function. (avr_load_all_property_sections): New function. (elf32_avr_relax_section): Load property data. After relaxing the section, move any .align directives that have enough deleted bytes before them. (bfd_elf32_new_section_hook): Define. ld/testsuite/ChangeLog: * ld-avr/avr-prop-1.d: New file. * ld-avr/avr-prop-1.s: New file. * ld-avr/avr-prop-2.d: New file. * ld-avr/avr-prop-2.s: New file. * ld-avr/avr-prop-3.d: New file. * ld-avr/avr-prop-3.s: New file. * ld-avr/avr-prop-4.d: New file. * ld-avr/avr-prop-4.s: New file. |
||
---|---|---|
.. | ||
avr-prop-1.d | ||
avr-prop-1.s | ||
avr-prop-2.d | ||
avr-prop-2.s | ||
avr-prop-3.d | ||
avr-prop-3.s | ||
avr-prop-4.d | ||
avr-prop-4.s | ||
avr.exp | ||
norelax_diff.d | ||
region_overflow.d | ||
region_overflow.s | ||
relax_diff.d | ||
relax-02.d | ||
relax-02.s | ||
relax-03.d | ||
relax-03.s | ||
relax-elf-flags-01.d | ||
relax-elf-flags-02.d | ||
relax-elf-flags-03.d | ||
relax-elf-flags-04.d | ||
relax-elf-flags-05.d | ||
relax-elf-flags-06.d | ||
relax-elf-flags-07.d | ||
relax-elf-flags-08.d | ||
relax-elf-flags-a.s | ||
relax-elf-flags-b.s | ||
relax.s |