Fix copying Solaris binaries with objcopy.
authorNick Clifton <nickc@redhat.com>
Thu, 14 Apr 2016 11:04:09 +0000 (12:04 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 14 Apr 2016 11:04:09 +0000 (12:04 +0100)
commit84865015459b4e9e8ac67f9b91617fbd856d5119
tree744eddbeb143af1555bb6e24a2962536f9319c38
parent8dc483a0b6cf73204ce438f4abf2efd323d97e40
Fix copying Solaris binaries with objcopy.

PR target/19938
bfd * elf-bbfd.h (struct elf_backend_data): New field:
elf_strtab_flags.
New field: elf_backend_set_special_section_info_and_link
* elfxx-target.h (elf_backend_strtab_flags): Define if not already
defined.
(elf_backend_set_special_section_info_and_link): Define if not
already defined.
(elfNN_bed): Use elf_backend_set_special_section_info_and_link and
elf_backend_strtab_flags macros to initialise fields in structure.
* elf.c (_bfd_elf_make_section_from_shdr): Check for SHF_STRINGS
being set even if SHF_MERGE is not set.
(elf_fake_sections): Likewise.
(section_match): New function.  Matches two ELF sections based
upon fixed characteristics.
(find_link): New function.  Locates a section in a BFD that
matches a section in a different BFD.
(_bfd_elf_copy_private_bfd_data): Copy the sh_info and sh_link
fields of reserved sections.
(bfd_elf_compute_section_file_positions): Set the flags for the
.shstrtab section based upon the elf_strtab_flags field in the
elf_backend_data structure.
(swap_out_syms): Likewise for the .strtab section.
* elflink.c (bfd_elf_final_link): Set the flags for the
.strtab section based upon the elf_strtab_flags field in the
elf_backend_data structure.
* elf32-i386.c (elf32_i386_set_special_info_link): New function.
(elf_backend_strtab_flags): Set to SHF_STRINGS for Solaris
targets.
(elf_backend_set_special_section_info_and_link): Define for
Solaris targets.
* elf32-sparc.c: Likewise.
* elf64-x86-64.c: Likewise.

binutils* testsuite/binutils-all/i386/compressed-1b.d: Allow for the
string sections possibly having the SHF_STRINGS flag bit set.
* testsuite/binutils-all/i386/compressed-1c.d: Likewise.
* testsuite/binutils-all/readelf.s: Likewise.
* testsuite/binutils-all/readelf.s-64: Likewise.
* testsuite/binutils-all/x86-64/compressed-1b.d: Likewise.
* testsuite/binutils-all/x86-64/compressed-1c.d: Likewise.

gas * testsuite/gas/i386/ilp32/x86-64-unwind.d: Allow for the string
sections possibly having the SHF_STRINGS flag bit set.
* testsuite/gas/i386/x86-64-unwind.d: Likewise.
19 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf.c
bfd/elf32-i386.c
bfd/elf32-sparc.c
bfd/elf64-x86-64.c
bfd/elflink.c
bfd/elfxx-target.h
binutils/ChangeLog
binutils/testsuite/binutils-all/i386/compressed-1b.d
binutils/testsuite/binutils-all/i386/compressed-1c.d
binutils/testsuite/binutils-all/readelf.s
binutils/testsuite/binutils-all/readelf.s-64
binutils/testsuite/binutils-all/testprog.c
binutils/testsuite/binutils-all/x86-64/compressed-1b.d
binutils/testsuite/binutils-all/x86-64/compressed-1c.d
gas/ChangeLog
gas/testsuite/gas/i386/ilp32/x86-64-unwind.d
gas/testsuite/gas/i386/x86-64-unwind.d