+2016-06-28 Nick Clifton <nickc@redhat.com>
+
+ * elf32-arm.c (elf32_arm_backend_symbol_processing): New
+ function. Marks mapping symbols in object files as precious, so
+ that strip will not remove them.
+ (elf_backend_symbol_processing): Define.
+
2016-06-28 James Clarke <jrtc27@jrtc27.com>
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Don't convert
return FALSE;
}
+/* Make sure that mapping symbols in object files are not removed via the
+ "strip --strip-unneeded" tool. These symbols are needed in order to
+ correctly generate interworking veneers, and for byte swapping code
+ regions. Once an object file has been linked, it is safe to remove the
+ symbols as they will no longer be needed. */
+
+static void
+elf32_arm_backend_symbol_processing (bfd *abfd, asymbol *sym)
+{
+ if (((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
+ && sym->name != NULL
+ && sym->section != bfd_abs_section_ptr
+ && (strcmp (sym->name, "$a") == 0
+ || strcmp (sym->name, "$t") == 0
+ || strcmp (sym->name, "$d") == 0))
+ sym->flags |= BSF_KEEP;
+}
+
#undef elf_backend_copy_special_section_fields
#define elf_backend_copy_special_section_fields elf32_arm_copy_special_section_fields
#define elf_backend_begin_write_processing elf32_arm_begin_write_processing
#define elf_backend_add_symbol_hook elf32_arm_add_symbol_hook
#define elf_backend_count_additional_relocs elf32_arm_count_additional_relocs
+#define elf_backend_symbol_processing elf32_arm_backend_symbol_processing
#define elf_backend_can_refcount 1
#define elf_backend_can_gc_sections 1