aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-bfd.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-04-29 09:24:42 +0100
committerNick Clifton <nickc@redhat.com>2016-04-29 09:24:42 +0100
commit5522f910cb539905d6adfdceab208ddfa5e84557 (patch)
tree0e266a54bdd71c153b10e11319699d78350b6c33 /bfd/elf-bfd.h
parent2deb93c7a7708ed164e4b10afb9d6a885d4615c6 (diff)
downloadgdb-5522f910cb539905d6adfdceab208ddfa5e84557.zip
gdb-5522f910cb539905d6adfdceab208ddfa5e84557.tar.gz
gdb-5522f910cb539905d6adfdceab208ddfa5e84557.tar.bz2
Enhance support for copying and stripping Solaris and ARM binaries.
PR 19938 bfd * elf-bfd.h (struct elf_backend_data): Rename elf_backend_set_special_section_info_and_link to elf_backend_copy_special_section_fields. * elfxx-target.h: Likewise. * elf.c (section_match): Ignore the SHF_INFO_LINK flag when comparing section flags. (copy_special_section_fields): New function. (_bfd_elf_copy_private_bfd_data): Copy the EI_ABIVERSION field. Perform two scans over special sections. The first one looks for a direct mapping between the output section and an input section. The second scan looks for a possible match based upon section characteristics. * elf32-arm.c (elf32_arm_copy_special_section_fields): New function. Handle setting the sh_link field of SHT_ARM_EXIDX sections. * elf32-i386.c (elf32_i386_set_special_info_link): Rename to elf32_i386_copy_solaris_special_section_fields. * elf32-sparc.c (elf32_sparc_set_special_section_info_link): Rename to elf32_sparc_copy_solaris_special_section_fields. * elf64-x86-64.c (elf64_x86_64_set_special_info_link): Rename to elf64_x86_64_copy_solaris_special_section_fields. binutils* readelf.c (get_solaris_segment_type): New function. (get_segment_type): Call it.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r--bfd/elf-bfd.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 6c05b55..9067dd9 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1300,13 +1300,15 @@ struct elf_backend_data
/* Return the section which RELOC_SEC applies to. */
asection *(*get_reloc_section) (asection *reloc_sec);
- /* Called when setting the sh_link and sh_info fields of a section with a
- type >= SHT_LOOS. Returns TRUE if these fields were initialised in
- OHEADER, FALSE otherwise. IHEADER is the best guess matching section
- from the input bfd IBFD. */
- bfd_boolean (*elf_backend_set_special_section_info_and_link)
- (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *iheader,
- Elf_Internal_Shdr *oheader);
+ /* Called to set the sh_flags, sh_link and sh_info fields of OSECTION which
+ has a type >= SHT_LOOS. Returns TRUE if the fields were initialised,
+ FALSE otherwise. Can be called multiple times for a given section,
+ until it returns TRUE. Most of the times it is called ISECTION will be
+ set to an input section that might be associated with the output section.
+ The last time that it is called, ISECTION will be set to NULL. */
+ bfd_boolean (*elf_backend_copy_special_section_fields)
+ (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection,
+ Elf_Internal_Shdr *osection);
/* Used to handle bad SHF_LINK_ORDER input. */
bfd_error_handler_type link_order_error_handler;