From daa4adae63f91377fe9b3e8d7421a0ceb4a51e26 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Mon, 23 May 2016 09:38:32 +0100 Subject: Support for dedicated output section for some ARM veneer types 2016-05-23 Thomas Preud'homme bfd/ * bfd-in.h (bfd_elf32_arm_keep_private_stub_output_sections): Declare bfd hook. * bfd-in2.h: Regenerate. * elf32-arm.c (arm_dedicated_stub_output_section_required): New function. (arm_dedicated_stub_output_section_required_alignment): Likewise. (arm_dedicated_stub_output_section_name): Likewise. (arm_dedicated_stub_input_section_ptr): Likewise. (elf32_arm_create_or_find_stub_sec): Add stub type parameter and function description comment. Add support for dedicated output stub section to given stub types. (elf32_arm_add_stub): Add a stub type parameter and pass it down to elf32_arm_create_or_find_stub_sec. (elf32_arm_create_stub): Pass stub type down to elf32_arm_add_stub. (elf32_arm_size_stubs): Pass stub type when calling elf32_arm_create_or_find_stub_sec for Cortex-A8 erratum veneers. (bfd_elf32_arm_keep_private_stub_output_sections): New function. ld/ * emultempl/armelf.em (arm_elf_before_allocation): Call bfd_elf32_arm_keep_private_stub_output_sections before generic before_allocation function. --- ld/emultempl/armelf.em | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ld/emultempl/armelf.em') diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em index caa2fbf..6074824 100644 --- a/ld/emultempl/armelf.em +++ b/ld/emultempl/armelf.em @@ -83,6 +83,10 @@ arm_elf_before_allocation (void) /* Auto-select Cortex-A8 erratum fix if it wasn't explicitly specified. */ bfd_elf32_arm_set_cortex_a8_fix (link_info.output_bfd, &link_info); + /* Ensure the output sections of veneers needing a dedicated one is not + removed. */ + bfd_elf32_arm_keep_private_stub_output_sections (&link_info); + /* We should be able to set the size of the interworking stub section. We can't do it until later if we have dynamic sections, though. */ if (elf_hash_table (&link_info)->dynobj == NULL) -- cgit v1.1