Add support for non-contiguous memory regions
authorChristophe Lyon <christophe.lyon@linaro.org>
Mon, 25 Nov 2019 08:55:37 +0000 (08:55 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Fri, 13 Mar 2020 14:44:45 +0000 (14:44 +0000)
commitabf874aafe3d717573e4a48bf0e3c6334e666a55
tree48877a5c76632d003c4a64bea1b3a9eea74d4f96
parent74e10d1742f1b8312359c59a2af06c9e661252b3
Add support for non-contiguous memory regions

2020-01-06  Christophe Lyon  <christophe.lyon@linaro.org>

bfd/
* bfd-in2.h: Regenerate.
* section.c (asection): Add already_assigned field.
(BFD_FAKE_SECTION): Add default initializer for it.
* ecoff.c (bfd_debug_section): Initialize already_assigned field.
* elf32-arm.c (arm_build_one_stub): Add support for
non_contiguous_regions.
* elf32-csky.c (csky_build_one_stub): Likewise.
* elf32-hppa.c (hppa_build_one_stub): Likewise.
* elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
* elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
* elf32-metag.c (metag_build_one_stub): Likewise.
* elf32-nios2.c (nios2_build_one_stub): Likewise.
* elf64-ppc.c (ppc_build_one_stub): Likewise.
(ppc_size_one_stub): Likewise.
* elfnn-aarch64.c (aarch64_build_one_stub): Likewise.
* elflink.c (elf_link_input_bfd): Likewise.

include/
* bfdlink.h (bfd_link_info): Add non_contiguous_regions and
non_contiguous_regions_warnings fields.

ld/
* ldlang.c (lang_add_section): Add support for
non_contiguous_regions.
(size_input_section): Likewise.
(lang_size_sections_1): Likewise.
(process_insert_statements): Likewise.
* ldlex.h (option_values): Add OPTION_NON_CONTIGUOUS_REGIONS and
OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS.
* lexsup.c (ld_options): Add entries for
--enable-non-contiguous-regions and
--enable-non-contiguous-regions-warnings.
(parse_args): Handle it.
* NEWS: Add --enable-non-contiguous-regions and
--enable-non-contiguous-regions-warnings.
* ld.texi: Add --enable-non-contiguous-regions and
--enable-non-contiguous-regions-warnings documentation.
* emultempl/armelf.em (elf32_arm_add_stub_section): Add
SEC_LINKER_CREATED flag.
* emultempl/xtensaelf.em (ld_build_required_section_dependence):
Emit an error when --enable-non-contiguous-regions is used.
* testsuite/ld-elf/non-contiguous.d: New.
* testsuite/ld-elf/non-contiguous.ld: New.
* testsuite/ld-elf/non-contiguous.s: New.
* testsuite/ld-arm/arm-elf.exp: Run the new tests.
* testsuite/ld-arm/arm-elf/non-contiguous-arm.s: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm.ld: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm2.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm3.ld: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm3.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm3.ld: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm4.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm4.ld: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm5.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm5.ld: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm6.d: New.
* testsuite/ld-arm/arm-elf/non-contiguous-arm6.ld: New.
* testsuite/ld-powerpc/powerpc.exp: Run new tests.
* testsuite/ld-powerpc/non-contiguous-powerpc.d: New.
* testsuite/ld-powerpc/non-contiguous-powerpc.ld: New.
* testsuite/ld-powerpc/non-contiguous-powerpc.sd: New.
* testsuite/ld-powerpc/non-contiguous-powerpc64.d: New.
46 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/ecoff.c
bfd/elf32-arm.c
bfd/elf32-csky.c
bfd/elf32-hppa.c
bfd/elf32-m68hc11.c
bfd/elf32-m68hc12.c
bfd/elf32-metag.c
bfd/elf32-nios2.c
bfd/elf64-ppc.c
bfd/elflink.c
bfd/elfnn-aarch64.c
bfd/section.c
include/ChangeLog
include/bfdlink.h
ld/ChangeLog
ld/NEWS
ld/emultempl/armelf.em
ld/emultempl/xtensaelf.em
ld/ld.texi
ld/ldlang.c
ld/ldlex.h
ld/lexsup.c
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/non-contiguous-arm.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm.ld [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm.s [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm2.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm2.ld [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm3.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm3.ld [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm4.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm4.ld [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm5.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm5.ld [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm6.d [new file with mode: 0644]
ld/testsuite/ld-arm/non-contiguous-arm6.ld [new file with mode: 0644]
ld/testsuite/ld-elf/non-contiguous.d [new file with mode: 0644]
ld/testsuite/ld-elf/non-contiguous.ld [new file with mode: 0644]
ld/testsuite/ld-elf/non-contiguous.s [new file with mode: 0644]
ld/testsuite/ld-powerpc/non-contiguous-powerpc.d [new file with mode: 0644]
ld/testsuite/ld-powerpc/non-contiguous-powerpc.ld [new file with mode: 0644]
ld/testsuite/ld-powerpc/non-contiguous-powerpc.s [new file with mode: 0644]
ld/testsuite/ld-powerpc/non-contiguous-powerpc64.d [new file with mode: 0644]
ld/testsuite/ld-powerpc/powerpc.exp