Mark ARM mapping symbols in object files are precious, so that strip will not remove them.

* 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.
This commit is contained in:
Nick Clifton 2016-06-28 13:22:49 +01:00
parent 8b9a915daf
commit fca2a38fdb
2 changed files with 26 additions and 0 deletions

View file

@ -1,3 +1,10 @@
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

View file

@ -18266,6 +18266,24 @@ elf32_arm_copy_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
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
@ -18324,6 +18342,7 @@ elf32_arm_copy_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
#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