diff options
Diffstat (limited to 'binutils-2.25/bfd')
-rw-r--r-- | binutils-2.25/bfd/.gitignore | 40 | ||||
-rw-r--r-- | binutils-2.25/bfd/ChangeLog | 429 | ||||
-rw-r--r-- | binutils-2.25/bfd/Makefile.in | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/archures.c | 1 | ||||
-rw-r--r-- | binutils-2.25/bfd/bfd-in2.h | 1 | ||||
-rwxr-xr-x | binutils-2.25/bfd/configure | 20 | ||||
-rw-r--r-- | binutils-2.25/bfd/cpu-mips.c | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/development.sh | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/doc/Makefile.in | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf-attrs.c | 4 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf32-arm.c | 41 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf32-avr.c | 39 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf32-i386.c | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf32-spu.c | 14 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf64-ppc.c | 4 | ||||
-rw-r--r-- | binutils-2.25/bfd/elf64-x86-64.c | 32 | ||||
-rw-r--r-- | binutils-2.25/bfd/elfxx-mips.c | 34 | ||||
-rw-r--r-- | binutils-2.25/bfd/version.h | 2 | ||||
-rw-r--r-- | binutils-2.25/bfd/version.m4 | 2 |
19 files changed, 480 insertions, 193 deletions
diff --git a/binutils-2.25/bfd/.gitignore b/binutils-2.25/bfd/.gitignore new file mode 100644 index 00000000..33161338 --- /dev/null +++ b/binutils-2.25/bfd/.gitignore @@ -0,0 +1,40 @@ +/bfd-in3.h +/bfd.h +/bfd_stdint.h +/bfdver.h +/elf32-ia64.c +/elf32-target.h +/elf64-ia64.c +/elf64-target.h +/libtool-soversion +/ofiles +/peigen.c +/pepigen.c +/pex64igen.c +/stmp-bfd-h +/targmatch.h + +/doc/aoutx.texi +/doc/archive.texi +/doc/archures.texi +/doc/bfdio.texi +/doc/bfdt.texi +/doc/bfdver.texi +/doc/bfdwin.texi +/doc/cache.texi +/doc/chew +/doc/coffcode.texi +/doc/core.texi +/doc/elf.texi +/doc/elfcode.texi +/doc/format.texi +/doc/hash.texi +/doc/init.texi +/doc/libbfd.texi +/doc/linker.texi +/doc/mmo.texi +/doc/opncls.texi +/doc/reloc.texi +/doc/section.texi +/doc/syms.texi +/doc/targets.texi diff --git a/binutils-2.25/bfd/ChangeLog b/binutils-2.25/bfd/ChangeLog index c66bb1ac..f124354c 100644 --- a/binutils-2.25/bfd/ChangeLog +++ b/binutils-2.25/bfd/ChangeLog @@ -1,51 +1,185 @@ +2014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com> + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Handle new + Tag_ABI_VFP_args value and replace hardcoded values by enum values. + (elf32_arm_post_process_headers): Set e_flags in ELF header as hard + float only when Tag_ABI_VFP_args is 1, using new enum value + AEABI_VFP_args_vfp to check that. + 2015-07-23 Joseph Myers <joseph@codesourcery.com> * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections) <DT_MIPS_RLD_MAP_REL>: Add target address to host address difference, not to host pointer. - 2015-02-24 Nick Clifton <nickc@redhat.com> +2015-04-01 Tejas Belagod <tejas.belagod@arm.com> + Marcus Shawcroft <marcus.shawcroft@arm.com> + Jiong Wang <jiong.wang@arm.com> - * configure.ac (AC_CHECK_HEADERS): Add wctype.h. - * configure: Regenerate. - * config.in: Regenerate. - * peXXigen.c: Include wctype.h if HAVE_WCTYPE_H is defined. - (u16_mbtowc): Use wint_t types if HAVE_WCTYPE_H is defined. - (rsrc_cmp): Use towlower instead of wcsncasecmp if HAVE_WCTYPE_H - is defined. + * bfd-in.h (bfd_elf64_aarch64_set_options) + (bfd_elf32_aarch64_set_options): Add parameter. + * bfd-in2.h: Regenerated. + * elfnn-aarch64.c (aarch64_erratum_843419_stub) + (_bfd_aarch64_adrp_p, _bfd_aarch64_erratum_843419_sequence_p) + (_bfd_aarch64_erratum_843419_stub_name) + (_bfd_aarch64_erratum_843419_fixup) + (_bfd_aarch64_erratum_843419_scan) + (_bfd_aarch64_erratum_843419_branch_to_stub) + (_bfd_aarch64_erratum_843419_p): Define. + (enum elf_aarch64_stub_type): Define + aarch64_stub_erratum_843419_veneer. + (struct elf_aarch64_stub_hash_entry): Define adrp_offset. + (struct elf_aarch64_link_hash_table): Define fix_erratum_843419 + and fix_erratum_843419_adr. + (stub_hash_newfunc): Initialize adrp_offset; + (_bfd_aarch64_add_stub_entry_after): Define. + (aarch64_map_one_stub, aarch64_build_one_stub) + (aarch64_size_one_stub): Handle + aarch64_stub_erratum_843419_veneer. + (_bfd_aarch64_resize_stubs): Round stub section size. + (elfNN_aarch64_size_stubs): Add scan for 843419. + (bfd_elfNN_aarch64_set_options): Add parameter. Initialize + fix_erratum_843419 and fix_erratum_843419_adr. + (struct erratum_835769_branch_to_stub_data): Add info. + (elfNN_aarch64_write_section): Initialise info. Handle 843419. + (elfNN_aarch64_size_dynamic_sections): Handle 843419. + * elfxx-aarch64.c (_bfd_aarch64_decode_adrp_imm) + (_bfd_aarch64_sign_extend): Define. + (reencode_adr_imm): Remove static. Rename to: + (_bfd_aarch64_reencode_adr_imm): Define. + (_bfd_aarch64_elf_put_addend): Call _bfd_aarch64_reencode_adr_imm. + * elfxx-aarch64.h (AARCH64_ADR_OP, AARCH64_ADRP_OP) + (AARCH64_ADRP_OP_MASK, _bfd_aarch64_sign_extend) + (_bfd_aarch64_decode_adrp_imm, _bfd_aarch64_reencode_adr_imm): + Define. + +2015-03-25 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_resize_stubs): Adjust stub section + size for initial branch. + (elfNN_aarch64_build_stubs): Write initial branch. + _bfd_aarch64_decode_(elfNN_aarch64_output_arch_local_syms): Write + mapping symbol on initial branch. + +2015-03-25 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): + Update erratum count. + +2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor + code into: + (_bfd_aarch64_get_stub_for_link_section): Define. + +2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Adjust + update of section_group[].stub_sec. + +2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (struct aarch64_erratum_835769_fix) Remove. + (erratum_835769_scan) Drop fix_table_size_p and fixes_p arguments. + Delete fixes, fix_table_size and associated code. Call + _bfd_aarch64_add_stub_entry_in_group. Rename to... + (bfd_aarch64_erratum_835769_scan): Define. + (elfNN_aarch64_size_stubs): Delete erratum_835769_fixes, + erratum_835769_fix_table_size, i and associated code. Relocate + call to _bfd_aarch64_erratum_835769_scan. Delete adhoc stub size + correction. Delete construction of stub entry from + erratum_835769_fixes array. + +2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Use + _bfd_aarch64_add_stub_entry_in_group. + +2015-03-23 Keith Seitz <keiths@redhat.com> + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add + missing ';'. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Factor out + stub resize code into... + (bfd_aarch64_resize_stubs): Define. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor stub + creation code into... + (bfd_aarch64_create_stub_section): Define. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Rename + from elf_aarch64_create_or_find_stub_sec. + (_bfd_aarch64_add_stub_entry_in_group): Rename from + elfNN_aarch64_add_stub. Call + _bfd_aarch64_create_or_find_stub_sec. + (elfNN_aarch64_size_stubs, elfNN_aarch64_size_stubs): Call + _bfd_aarch64_add_stub_entry_in_group. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (erratum_835769_scan) Add comment. Reverse + sense of boolean return. + (elfNN_aarch64_size_stubs): Adjust for above. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> + + * elfnn-aarch64.c (elf_aarch64_create_or_find_stub_sec): + Remove unused parameter. + (elfNN_aarch64_size_stubs): Adjust for above. + +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> -2014-11-18 Igor Zamyatin <igor.zamyatin@intel.com> + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Remove bfd_indx. - * elf64-x86-64.c (elf_x86_64_check_relocs): Enable MPX PLT only - for -z bndplt. +2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com> -2014-11-17 Nick Clifton <nickc@redhat.com> + * elfnn-aarch64.c (aarch64_erratum_835769_fixes) + (num_aarch64_erratum_835769_fixes): Remove. + (elfNN_aarch64_size_stubs): Remove assignments to above. - Apply trunk patches: +2015-03-04 Marcus Shawcroft <marcus.shawcroft@arm.com> - 2014-11-14 Nick Clifton <nickc@redhat.com> + * elfxx-aarch64.c (decode_add_imm, decode_movw_imm) + (decode_tst_branch_ofs_14, decode_ld_lit_ofs_19) + (decode_cond_branch_ofs_19, decode_branch_ofs_26): Remove. + +2014-11-14 Nick Clifton <nickc@redhat.com> PR binutils/17597 * opncls.c (bfd_get_debug_link_info): Avoid reading off the end of the section. (bfd_get_alt_debug_link_info): Likewise. - 2014-11-14 Nick Clifton <nickc@redhat.com> +2014-11-14 Nick Clifton <nickc@redhat.com> PR binutils/17512 * ieee.c (ieee_archive_p) Skip processing if no bytes are read at all. (ieee_object_p): Likewise. - 2014-11-13 H.J. Lu <hongjiu.lu@intel.com> +2014-11-13 H.J. Lu <hongjiu.lu@intel.com> * coffcode.h (coff_slurp_line_table): Add cast to unsigned int. - 2014-11-13 H.J. Lu <hongjiu.lu@intel.com> +2014-11-13 H.J. Lu <hongjiu.lu@intel.com> * coffcode.h (coff_pointerize_aux_hook): Fix a typo. - 2014-11-13 Nick Clifton <nickc@redhat.com> +2014-11-13 H.J. Lu <hongjiu.lu@intel.com> + + PR gas/17598 + * elf64-x86-64.c (elf_x86_64_check_relocs): Treat + R_X86_64_GOTPLT64 the same as R_X86_64_GOT64. + (elf_x86_64_relocate_section): Likewise. + +2014-11-13 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffcode.h (coff_ptr_struct): Add is_sym field. @@ -79,7 +213,7 @@ * libcoff.h: Regenerate. * libcoff-in.h: Regenerate. - 2014-11-12 Nick Clifton <nickc@redhat.com> +2014-11-12 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffcode.h (coff_slurp_line_table): Set the line number of @@ -92,13 +226,13 @@ * peXXigen.c (pe_print_idata): Add range checking displaying member names. - 2014-11-12 Alan Modra <amodra@gmail.com> +2014-11-12 Alan Modra <amodra@gmail.com> PR binutils/17512 * coffcode.h (coff_slurp_line_table): Drop line number info not preceded by a valid function entry. Revert last change. - 2014-11-11 Nick Clifton <nickc@redhat.com> +2014-11-11 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffcode.h (coff_slurp_line_table): Initialise the parts of the @@ -117,13 +251,13 @@ structure are initialised. (pe_print_edata): Avoid reading off the end of the data buffer. - 2014-11-11 Alan Modra <amodra@gmail.com> +2014-11-11 Alan Modra <amodra@gmail.com> PR binutils/17512 * coffcode.h (coff_slurp_line_table): Use updated lineno_count when building func_table. - 2014-11-11 Alan Modra <amodra@gmail.com> +2014-11-11 Alan Modra <amodra@gmail.com> PR binutils/17512 * coffcode.h (coff_slurp_line_table): Don't bfd_zalloc, just @@ -135,7 +269,17 @@ copied, and free n_lineno_cache. * pe-mips.c (NUM_HOWTOS): Typo fix. - 2014-11-10 Nick Clifton <nickc@redhat.com> +2014-11-11 Alan Modra <amodra@gmail.com> + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Adjust section + size check to account for possible zero terminator. + +2014-11-10 James Cowgill <James.Cowgill@imgtec.com> + + * elfxx-mips.c (_bfd_mips_elf_section_processing): don't force small + data sections to be PROGBITS + +2014-11-10 Nick Clifton <nickc@redhat.com> PR binutils/17521 * coff-i386.c (NUM_HOWTOS): New define. @@ -172,20 +316,26 @@ (pe_bfd_object_p): Allocate and initialize enough space to hold a PEAOUTHDR, even if the opt_hdr field specified less. - 2014-11-08 Alan Modra <amodra@gmail.com> +2014-11-08 Alan Modra <amodra@gmail.com> * peXXigen.c (pe_print_idata): Revert last patch, cast lhs instead. - 2014-11-07 H.J. Lu <hongjiu.lu@intel.com> +2014-11-07 H.J. Lu <hongjiu.lu@intel.com> * peXXigen.c (pe_print_idata): Cast to unsigned long in range checks. - 2014-11-07 Alan Modra <amodra@gmail.com> +2014-11-07 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/17482 + * elf64-x86-64.c (elf_x86_64_relocate_section): Update comments + for IE->LE transition. + +2014-11-07 Alan Modra <amodra@gmail.com> * tekhex.c (tekhex_set_arch_mach): Ignore unknown arch errors. - 2014-11-07 Alan Modra <amodra@gmail.com> +2014-11-07 Alan Modra <amodra@gmail.com> * tekhex.c (CHUNK_SPAN): Define. (struct data_struct <chunk_init>): Use one byte per span, update @@ -201,11 +351,11 @@ (tekhex_set_section_contents): Don't create initial chunks. (tekhex_write_object_contents): Use CHUNK_SPAN. - 2014-11-07 Alan Modra <amodra@gmail.com> +2014-11-07 Alan Modra <amodra@gmail.com> * aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer. - 2014-11-07 Alan Modra <amodra@gmail.com> +2014-11-07 Alan Modra <amodra@gmail.com> * archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check. * coffcode.h (coff_set_alignment_hook): Likewise. @@ -215,7 +365,7 @@ * elf.c (bfd_elf_get_str_section): Likewise. * tekhex.c (first_phase): Likewise. - 2014-11-06 Nick Clifton <nickc@redhat.com> +2014-11-06 Nick Clifton <nickc@redhat.com> * aoutx.h (slurp_symbol_table): Revert previous delta. (slurp_reloc_table): Likewise. @@ -224,7 +374,12 @@ * coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs and do not complain about linker generated files. - 2014-11-04 Nick Clifton <nickc@redhat.com> +2014-11-06 Will Newton <will.newton@linaro.org> + + * elf-attrs.c (_bfd_elf_parse_attributes): Handle zero + length sections and sub-sections. + +2014-11-04 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffcode.h (handle_COMDAT): Replace abort with BFD_ASSERT. @@ -232,7 +387,17 @@ (coff_slurp_line_table): Add more range checking. * peXXigen.c (pe_print_debugdata): Add range checking. - 2014-11-05 Nick Clifton <nickc@redhat.com> +2014-11-05 James Cowgill <james.cowgill@imgtec.com> + + * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Fix segfault + when creating a dso with discarded dynsym section. + +2014-11-05 Matthew Fortune <matthew.fortune@imgtec.com> + + * elfxx-mips.c (update_mips_abiflags_isa): Add E_MIPS_ARCH_32R6 + and E_MIPS_ARCH_64R6 support. + +2014-11-05 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffcode.h (coff_set_alignment_hook): Warn if the file lies @@ -250,7 +415,7 @@ (rsrc_count_entries): Add range checking. (rsrc_parse_entry): Likewise. - 2014-11-04 Nick Clifton <nickc@redhat.com> +2014-11-04 Nick Clifton <nickc@redhat.com> PR binutils/17512 * compress.c (bfd_get_full_section_contents): Improve test for @@ -260,7 +425,23 @@ * archive.c (_bfd_slurp_extended_name_table): Handle archives with corrupt extended name tables. - 2014-11-03 Nick Clifton <nickc@redhat.com> +2014-11-04 Alan Modra <amodra@gmail.com> + + * elf32-spu.c (ovl_mgr_stat): New function. + (spu_elf_open_builtin_lib): Pass to bfd_openr_iovec. + +2014-11-03 Andrew Burgess <andrew.burgess@embecosm.com> + + * elf32-avr.c (elf32_avr_relax_delete_bytes): During linker + relaxation, reduce the size of symbols that span the deleted + bytes. + +2014-11-03 Andrew Burgess <andrew.burgess@embecosm.com> + + * elf32-avr.c (elf32_avr_relax_delete_bytes): Modify symbols + located at the very end of the section. + +2014-11-03 Nick Clifton <nickc@redhat.com> PR binutils/17512 * aoutx.h (slurp_symbol_table): Check that computed table size is @@ -292,7 +473,26 @@ * xcofflink.c (xcoff_link_input_bfd): Check offset against length of string table. - 2014-10-31 Nick Clifton <nickc@redhat.com> +2014-11-03 Nick Clifton <nickc@redhat.com> + + * po/fi.po: Updated Finnish translation. + +2014-10-31 Andrew Pinski <apinski@cavium.com> + Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> + + * archures.c: Add octeon3 for mips target. + * bfd-in2.h: Regenerate. + * bfd/cpu-mips.c: Define I_mipsocteon3. + nfo_struct): Add octeon3 support. + * bfd/elfxx-mips.c: (_bfd_elf_mips_mach): Add support for + octeon3. + (mips_set_isa_flags): Add support for octeon3. + (bfd_mips_isa_ext): Add bfd_mach_mips_octeon3. + (mips_mach_extensions): Make bfd_mach_mips_octeon3 an + extension of bfd_mach_mips_octeon2. + (print_mips_isa_ext): Print the value of Octeon3. + +2014-10-31 Nick Clifton <nickc@redhat.com> PR binutils/17512 * coffgen.c (_bfd_coff_get_external_symbols): Do not try to load a @@ -301,78 +501,39 @@ table bigger than the file. * tekhex.c (first_phase): Check that the section range is sane. -2014-11-11 Alan Modra <amodra@gmail.com> - - * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Adjust section - size check to account for possible zero terminator. - -2014-11-10 Matthew Fortune <matthew.fortune@imgtec.com> - - Apply trunk patch: - * elfxx-mips.c (update_mips_abiflags_isa): Add E_MIPS_ARCH_32R6 - and E_MIPS_ARCH_64R6 support. - -2014-11-07 H.J. Lu <hongjiu.lu@intel.com> - - Apply trunk patch: - 2014-11-07 H.J. Lu <hongjiu.lu@intel.com> - - PR ld/17482 - * elf64-x86-64.c (elf_x86_64_relocate_section): Update comments - for IE->LE transition. - -2014-11-04 Tristan Gingold <gingold@adacore.com> - - * development.sh: Set development to false. - -2014-11-03 Nick Clifton <nickc@redhat.com> - - * po/fi.po: Updated Finnish translation. - -2014-10-31 Nick Clifton <nickc@redhat.com> - - Apply trunk patch: +2014-10-30 Nick Clifton <nickc@redhat.com> - 2014-10-30 Nick Clifton <nickc@redhat.com> PR binutils/17512 * ihex.c (ihex_scan): Fix typo in invocation of ihex_bad_byte. * coffgen.c (coff_get_normalized_symtab): Prevent buffer overrun. -2014-10-30 Nick Clifton <nickc@redhat.com> - - Appy trunk patch: +2014-10-29 Nick Clifton <nickc@redhat.com> - 2014-10-29 Nick Clifton <nickc@redhat.com> * elf.c (bfd_section_from_shdr): Fix heap use after free memory leak. -2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com> - - Apply trunk patches: +2014-10-29 Dennis Brueni <dbrueni@slickedit.com> - 2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com> - * elfxx-mips.c (print_mips_ases): Print unknown ASEs. - (print_mips_isa_ext): Print the value of an unknown extension. + * elf.c (elfcore_write_lwpstatus): Fix typo in call to memcpy. 2014-10-28 Nick Clifton <nickc@redhat.com> - Apply trunk patches: - - 2014-10-28 Nick Clifton <nickc@redhat.com> PR binutils/17512 * elf.c (bfd_section_from_shdr): Allocate and free the recursion detection table on a per-bfd basis. * peXXigen.c (pe_print_edata): Handle binaries with a truncated export table. - 2014-10-28 Andreas Schwab <schwab@suse.de> - Nick Clifton <nickc@redhat.com> +2014-10-28 Andreas Schwab <schwab@suse.de> + Nick Clifton <nickc@redhat.com> + PR binutils/17510 * srec.c (srec_bad_byte): Increase size of buf to allow for negative values. (srec_scan): Use an unsigned char buffer to hold header bytes. - 2014-10-27 Nick Clifton <nickc@redhat.com> +2014-10-27 Nick Clifton <nickc@redhat.com> + PR binutils/17512 * elf.c (bfd_section_from_shdr): Detect and warn about ELF binaries with a group of sections linked by the string table @@ -386,26 +547,68 @@ * elf.c (setup_group): Improve handling of corrupt group sections. -2014-10-28 Alan Modra <amodra@gmail.com> +2014-10-24 Tejas Belagod <tejas.belagod@arm.com> + + * bfd-in.h (bfd_elf64_aarch64_set_options): Add a parameter. + * bfd-in2.h (bfd_elf64_aarch64_set_options): Likewise. + * elfnn-aarch64.c (aarch64_erratum_835769_stub): New. + (elf_aarch64_stub_type): Add new type + aarch64_stub_erratum_835769_veneer. + (elf_aarch64_stub_hash_entry): New fields for erratum 835769. + (aarch64_erratum_835769_fix): New data struct to record erratum + 835769. + (elf_aarch64_link_hash_table: Global flags for 835769. + (aarch64_build_one_stub): Add case for 835769. + (aarch64_size_one_stub): Likewise. + (aarch64_mem_op_p, aarch64_mlxl_p, + aarch64_erratum_sequence,erratum_835769_scan): + New. Decode and scan functions for erratum 835769. + (elf_aarch64_create_or_find_stub_sec): New. + (elfNN_aarch64_size_stubs): Look for erratum 835769 and record + them. + (bfd_elfNN_aarch64_set_options: Set global flag for 835769. + (erratum_835769_branch_to_stub_data, + make_branch_to_erratum_835769_stub):New. Connect up all the + erratum stubs to occurances by branches. + (elfNN_aarch64_write_section): New hook. + (aarch64_map_one_stub): Output erratum stub symbol. + (elfNN_aarch64_size_dynamic_sections): Init mapping symbol + information for erratum 835769. + (elf_backend_write_section): Define. + +2014-10-23 Victor Kamensky <victor.kamensky@linaro.org> + + * elf32-arm.c (read_code32): New function to read 32 bit + arm instruction. + (read_code16): New function to read 16 bit thumb instrution. + (elf32_arm_plt0_size, elf32_arm_plt_size): Use read_code32 + and read_code16 to read instructions. + +2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com> - Apply trunk patches: + * elfxx-mips.c (print_mips_ases): Print unknown ASEs. + (print_mips_isa_ext): Print the value of an unknown extension. + +2014-10-21 Alan Modra <amodra@gmail.com> - 2014-10-21 Alan Modra <amodra@gmail.com> * elf64-ppc.c (ppc64_elf_tls_optimize): Ignore relocs against toc entries that aren't a multiple of 8 rather than failing assertion. - 2014-10-21 Alan Modra <amodra@gmail.com> +2014-10-21 Alan Modra <amodra@gmail.com> + * elf64-ppc.c (ppc64_elf_size_stubs): Add gcc-4.9 libgomp functions to thread_starter. - 2014-10-18 Alan Modra <amodra@gmail.com> +2014-10-18 Alan Modra <amodra@gmail.com> + * elf64-ppc.c (ppc64_elf_add_symbol_hook): If function code section for function symbols defined in .opd is discarded, let the symbol appear to be undefined. (opd_entry_value): Ensure the result section is that for the function code section in the same object as the OPD entry. - 2014-10-16 Alan Modra <amodra@gmail.com> +2014-10-16 Alan Modra <amodra@gmail.com> + PR 17492 * elf32-arm.c (elf32_arm_add_symbol_hook): Only set has_gnu_symbols on ELF output bfd. @@ -420,12 +623,14 @@ * elf-s390-common.c (elf_s390_add_symbol_hook): Likewise. Handle STB_GNU_UNIQUE too. - 2014-10-16 Alan Modra <amodra@gmail.com> +2014-10-16 Alan Modra <amodra@gmail.com> + * elf64-ppc.c (ppc64_elf_before_check_relocs): Do .opd processing even when output is not ppc64 ELF. Remove redundant tests on type of input bfd. - 2014-10-15 Alan Modra <amodra@gmail.com> +2014-10-15 Alan Modra <amodra@gmail.com> + PR 17481 * aoutx.h (NAME (aout, find_nearest_line)): Add "discriminator_ptr" param, group "section" and "offset" params. Zero discriminator. @@ -502,7 +707,8 @@ * libbfd.h: Regenerate. * libcoff.h: Regenerate. - 2014-10-15 Alan Modra <amodra@gmail.com> +2014-10-15 Alan Modra <amodra@gmail.com> + * targets.c (BFD_JUMP_TABLE_SYMBOLS): Use NAME##_find_line. * aout-adobe.c (aout_32_find_line): Define. (aout_32_bfd_make_debug_symbol, aout_32_bfd_reloc_type_lookup, @@ -546,39 +752,16 @@ * libbfd.h: Regenerate. * libcoff.h: Regenerate. -2014-10-24 Tejas Belagod <tejas.belagod@arm.com> +2014-10-15 Tristan Gingold <gingold@adacore.com> - * bfd-in.h (bfd_elf64_aarch64_set_options): Add a parameter. - * bfd-in2.h (bfd_elf64_aarch64_set_options): Likewise. - * elfnn-aarch64.c (aarch64_erratum_835769_stub): New. - (elf_aarch64_stub_type): Add new type - aarch64_stub_erratum_835769_veneer. - (elf_aarch64_stub_hash_entry): New fields for erratum 835769. - (aarch64_erratum_835769_fix): New data struct to record erratum - 835769. - (elf_aarch64_link_hash_table: Global flags for 835769. - (aarch64_build_one_stub): Add case for 835769. - (aarch64_size_one_stub): Likewise. - (aarch64_mem_op_p, aarch64_mlxl_p, - aarch64_erratum_sequence,erratum_835769_scan): - New. Decode and scan functions for erratum 835769. - (elf_aarch64_create_or_find_stub_sec): New. - (elfNN_aarch64_size_stubs): Look for erratum 835769 and record - them. - (bfd_elfNN_aarch64_set_options: Set global flag for 835769. - (erratum_835769_branch_to_stub_data, - make_branch_to_erratum_835769_stub):New. Connect up all the - erratum stubs to occurances by branches. - (elfNN_aarch64_write_section): New hook. - (aarch64_map_one_stub): Output erratum stub symbol. - (elfNN_aarch64_size_dynamic_sections): Init mapping symbol - information for erratum 835769. - (elf_backend_write_section): Define. + * version.m4: Bump version to 2.25.51 + * configure: Regenerate. -2014-10-14 Tristan Gingold <gingold@adacore.com> +2014-10-14 H.J. Lu <hongjiu.lu@intel.com> - * version.m4: Bump version to 2.24.90 - * configure: Regenerate. + * elf32-i386.c (elf_i386_convert_mov_to_lea): Skip if relocation + offset is less than 2. + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. 2014-10-14 Alan Modra <amodra@gmail.com> diff --git a/binutils-2.25/bfd/Makefile.in b/binutils-2.25/bfd/Makefile.in index 2c385d57..5ee1650e 100644 --- a/binutils-2.25/bfd/Makefile.in +++ b/binutils-2.25/bfd/Makefile.in @@ -16,7 +16,7 @@ @SET_MAKE@ # -# Copyright (C) 2012-2014 Free Software Foundation, Inc. +# Copyright (C) 2012-2015 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/binutils-2.25/bfd/archures.c b/binutils-2.25/bfd/archures.c index c9fd6c81..5e069b22 100644 --- a/binutils-2.25/bfd/archures.c +++ b/binutils-2.25/bfd/archures.c @@ -179,6 +179,7 @@ DESCRIPTION .#define bfd_mach_mips_octeon 6501 .#define bfd_mach_mips_octeonp 6601 .#define bfd_mach_mips_octeon2 6502 +.#define bfd_mach_mips_octeon3 6503 .#define bfd_mach_mips_xlr 887682 {* decimal 'XLR' *} .#define bfd_mach_mipsisa32 32 .#define bfd_mach_mipsisa32r2 33 diff --git a/binutils-2.25/bfd/bfd-in2.h b/binutils-2.25/bfd/bfd-in2.h index 5f7879f4..97f01429 100644 --- a/binutils-2.25/bfd/bfd-in2.h +++ b/binutils-2.25/bfd/bfd-in2.h @@ -1966,6 +1966,7 @@ enum bfd_architecture #define bfd_mach_mips_octeon 6501 #define bfd_mach_mips_octeonp 6601 #define bfd_mach_mips_octeon2 6502 +#define bfd_mach_mips_octeon3 6503 #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ #define bfd_mach_mipsisa32 32 #define bfd_mach_mipsisa32r2 33 diff --git a/binutils-2.25/bfd/configure b/binutils-2.25/bfd/configure index ea5d50d5..b70a6d0e 100755 --- a/binutils-2.25/bfd/configure +++ b/binutils-2.25/bfd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for bfd 2.24.90. +# Generated by GNU Autoconf 2.64 for bfd 2.25.51. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bfd' PACKAGE_TARNAME='bfd' -PACKAGE_VERSION='2.24.90' -PACKAGE_STRING='bfd 2.24.90' +PACKAGE_VERSION='2.25.51' +PACKAGE_STRING='bfd 2.25.51' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bfd 2.24.90 to adapt to many kinds of systems. +\`configure' configures bfd 2.25.51 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1420,7 +1420,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bfd 2.24.90:";; + short | recursive ) echo "Configuration of bfd 2.25.51:";; esac cat <<\_ACEOF @@ -1541,7 +1541,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bfd configure 2.24.90 +bfd configure 2.25.51 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2183,7 +2183,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bfd $as_me 2.24.90, which was +It was created by bfd $as_me 2.25.51, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3991,7 +3991,7 @@ fi # Define the identity of the package. PACKAGE='bfd' - VERSION='2.24.90' + VERSION='2.25.51' cat >>confdefs.h <<_ACEOF @@ -16567,7 +16567,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bfd $as_me 2.24.90, which was +This file was extended by bfd $as_me 2.25.51, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16631,7 +16631,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bfd config.status 2.24.90 +bfd config.status 2.25.51 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/binutils-2.25/bfd/cpu-mips.c b/binutils-2.25/bfd/cpu-mips.c index b617aaa7..a3769445 100644 --- a/binutils-2.25/bfd/cpu-mips.c +++ b/binutils-2.25/bfd/cpu-mips.c @@ -102,6 +102,7 @@ enum I_mipsocteon, I_mipsocteonp, I_mipsocteon2, + I_mipsocteon3, I_xlr, I_micromips }; @@ -152,6 +153,7 @@ static const bfd_arch_info_type arch_info_struct[] = N (64, 64, bfd_mach_mips_octeon,"mips:octeon", FALSE, NN(I_mipsocteon)), N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)), N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)), + N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", FALSE, NN(I_mipsocteon3)), N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, NN(I_xlr)), N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,0) }; diff --git a/binutils-2.25/bfd/development.sh b/binutils-2.25/bfd/development.sh index 416ec8c8..4c0f5b90 100644 --- a/binutils-2.25/bfd/development.sh +++ b/binutils-2.25/bfd/development.sh @@ -16,4 +16,4 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # Controls whether to enable development-mode features by default. -development=false +development=true diff --git a/binutils-2.25/bfd/doc/Makefile.in b/binutils-2.25/bfd/doc/Makefile.in index 65ad42db..3be6a5e9 100644 --- a/binutils-2.25/bfd/doc/Makefile.in +++ b/binutils-2.25/bfd/doc/Makefile.in @@ -16,7 +16,7 @@ @SET_MAKE@ # -# Copyright (C) 2012-2014 Free Software Foundation, Inc. +# Copyright (C) 2012-2015 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/binutils-2.25/bfd/elf-attrs.c b/binutils-2.25/bfd/elf-attrs.c index e74176f1..14420f23 100644 --- a/binutils-2.25/bfd/elf-attrs.c +++ b/binutils-2.25/bfd/elf-attrs.c @@ -455,6 +455,8 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr) section_len = bfd_get_32 (abfd, p); p += 4; + if (section_len == 0) + break; if (section_len > len) section_len = len; len -= section_len; @@ -487,6 +489,8 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr) p += n; subsection_len = bfd_get_32 (abfd, p); p += 4; + if (subsection_len == 0) + break; if (subsection_len > section_len) subsection_len = section_len; section_len -= subsection_len; diff --git a/binutils-2.25/bfd/elf32-arm.c b/binutils-2.25/bfd/elf32-arm.c index c507e4fe..bbda298a 100644 --- a/binutils-2.25/bfd/elf32-arm.c +++ b/binutils-2.25/bfd/elf32-arm.c @@ -11746,10 +11746,14 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) /* This needs to happen before Tag_ABI_FP_number_model is merged. */ if (in_attr[Tag_ABI_VFP_args].i != out_attr[Tag_ABI_VFP_args].i) { - /* Ignore mismatches if the object doesn't use floating point. */ - if (out_attr[Tag_ABI_FP_number_model].i == 0) + /* Ignore mismatches if the object doesn't use floating point or is + floating point ABI independent. */ + if (out_attr[Tag_ABI_FP_number_model].i == AEABI_FP_number_model_none + || (in_attr[Tag_ABI_FP_number_model].i != AEABI_FP_number_model_none + && out_attr[Tag_ABI_VFP_args].i == AEABI_VFP_args_compatible)) out_attr[Tag_ABI_VFP_args].i = in_attr[Tag_ABI_VFP_args].i; - else if (in_attr[Tag_ABI_FP_number_model].i != 0) + else if (in_attr[Tag_ABI_FP_number_model].i != AEABI_FP_number_model_none + && in_attr[Tag_ABI_VFP_args].i != AEABI_VFP_args_compatible) { _bfd_error_handler (_("error: %B uses VFP register arguments, %B does not"), @@ -14713,7 +14717,7 @@ elf32_arm_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATT && ((i_ehdrp->e_type == ET_DYN) || (i_ehdrp->e_type == ET_EXEC))) { int abi = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, Tag_ABI_VFP_args); - if (abi) + if (abi == AEABI_VFP_args_vfp) i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_HARD; else i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_SOFT; @@ -15958,6 +15962,26 @@ const struct elf_size_info elf32_arm_size_info = bfd_elf32_swap_reloca_out }; +static bfd_vma +read_code32 (const bfd *abfd, const bfd_byte *addr) +{ + /* V7 BE8 code is always little endian. */ + if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0) + return bfd_getl32 (addr); + + return bfd_get_32 (abfd, addr); +} + +static bfd_vma +read_code16 (const bfd *abfd, const bfd_byte *addr) +{ + /* V7 BE8 code is always little endian. */ + if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0) + return bfd_getl16 (addr); + + return bfd_get_16 (abfd, addr); +} + /* Return size of plt0 entry starting at ADDR or (bfd_vma) -1 if size can not be determined. */ @@ -15967,7 +15991,7 @@ elf32_arm_plt0_size (const bfd *abfd, const bfd_byte *addr) bfd_vma first_word; bfd_vma plt0_size; - first_word = H_GET_32 (abfd, addr); + first_word = read_code32 (abfd, addr); if (first_word == elf32_arm_plt0_entry[0]) plt0_size = 4 * ARRAY_SIZE (elf32_arm_plt0_entry); @@ -15992,17 +16016,17 @@ elf32_arm_plt_size (const bfd *abfd, const bfd_byte *start, bfd_vma offset) const bfd_byte *addr = start + offset; /* PLT entry size if fixed on Thumb-only platforms. */ - if (H_GET_32(abfd, start) == elf32_thumb2_plt0_entry[0]) + if (read_code32 (abfd, start) == elf32_thumb2_plt0_entry[0]) return 4 * ARRAY_SIZE (elf32_thumb2_plt_entry); /* Respect Thumb stub if necessary. */ - if (H_GET_16(abfd, addr) == elf32_arm_plt_thumb_stub[0]) + if (read_code16 (abfd, addr) == elf32_arm_plt_thumb_stub[0]) { plt_size += 2 * ARRAY_SIZE(elf32_arm_plt_thumb_stub); } /* Strip immediate from first add. */ - first_insn = H_GET_32(abfd, addr + plt_size) & 0xffffff00; + first_insn = read_code32 (abfd, addr + plt_size) & 0xffffff00; #ifdef FOUR_WORD_PLT if (first_insn == elf32_arm_plt_entry[0]) @@ -16219,6 +16243,7 @@ elf32_arm_get_synthetic_symtab (bfd *abfd, becaus elf32_arm_plt_entry isn't defined when FOUR_WORD_PLT isn't defined where elf32_arm_plt_entry_short and elf32_arm_plt_entry_long are defined instead. */ + #undef elf_backend_plt_sym_val #define elf_backend_plt_sym_val elf32_arm_plt_sym_val diff --git a/binutils-2.25/bfd/elf32-avr.c b/binutils-2.25/bfd/elf32-avr.c index 54d67bf0..5aa3cf6e 100644 --- a/binutils-2.25/bfd/elf32-avr.c +++ b/binutils-2.25/bfd/elf32-avr.c @@ -1881,10 +1881,22 @@ elf32_avr_relax_delete_bytes (bfd *abfd, isymend = isym + symtab_hdr->sh_info; for (; isym < isymend; isym++) { - if (isym->st_shndx == sec_shndx - && isym->st_value > addr - && isym->st_value < toaddr) - isym->st_value -= count; + if (isym->st_shndx == sec_shndx) + { + if (isym->st_value > addr + && isym->st_value <= toaddr) + isym->st_value -= count; + + if (isym->st_value <= addr + && isym->st_value + isym->st_size > addr) + { + /* If this assert fires then we have a symbol that ends + part way through an instruction. Does that make + sense? */ + BFD_ASSERT (isym->st_value + isym->st_size >= addr + count); + isym->st_size -= count; + } + } } } @@ -1898,11 +1910,22 @@ elf32_avr_relax_delete_bytes (bfd *abfd, struct elf_link_hash_entry *sym_hash = *sym_hashes; if ((sym_hash->root.type == bfd_link_hash_defined || sym_hash->root.type == bfd_link_hash_defweak) - && sym_hash->root.u.def.section == sec - && sym_hash->root.u.def.value > addr - && sym_hash->root.u.def.value < toaddr) + && sym_hash->root.u.def.section == sec) { - sym_hash->root.u.def.value -= count; + if (sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value <= toaddr) + sym_hash->root.u.def.value -= count; + + if (sym_hash->root.u.def.value <= addr + && (sym_hash->root.u.def.value + sym_hash->size > addr)) + { + /* If this assert fires then we have a symbol that ends + part way through an instruction. Does that make + sense? */ + BFD_ASSERT (sym_hash->root.u.def.value + sym_hash->size + >= addr + count); + sym_hash->size -= count; + } } } diff --git a/binutils-2.25/bfd/elf32-i386.c b/binutils-2.25/bfd/elf32-i386.c index ad8b5575..64cdeceb 100644 --- a/binutils-2.25/bfd/elf32-i386.c +++ b/binutils-2.25/bfd/elf32-i386.c @@ -2580,6 +2580,7 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec, /* STT_GNU_IFUNC must keep R_386_GOT32 relocation. */ if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC + && irel->r_offset >= 2 && bfd_get_8 (input_bfd, contents + irel->r_offset - 2) == 0x8b) { @@ -2609,6 +2610,7 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec, && h->type != STT_GNU_IFUNC && h != htab->elf.hdynamic && SYMBOL_REFERENCES_LOCAL (link_info, h) + && irel->r_offset >= 2 && bfd_get_8 (input_bfd, contents + irel->r_offset - 2) == 0x8b) { diff --git a/binutils-2.25/bfd/elf32-spu.c b/binutils-2.25/bfd/elf32-spu.c index 13806ad1..ebc9e6a0 100644 --- a/binutils-2.25/bfd/elf32-spu.c +++ b/binutils-2.25/bfd/elf32-spu.c @@ -1828,6 +1828,18 @@ ovl_mgr_pread (struct bfd *abfd ATTRIBUTE_UNUSED, return count; } +static int +ovl_mgr_stat (struct bfd *abfd ATTRIBUTE_UNUSED, + void *stream, + struct stat *sb) +{ + struct _ovl_stream *os = (struct _ovl_stream *) stream; + + memset (sb, 0, sizeof (*sb)); + sb->st_size = (const char *) os->end - (const char *) os->start; + return 0; +} + bfd_boolean spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream) { @@ -1837,7 +1849,7 @@ spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream) (void *) stream, ovl_mgr_pread, NULL, - NULL); + ovl_mgr_stat); return *ovl_bfd != NULL; } diff --git a/binutils-2.25/bfd/elf64-ppc.c b/binutils-2.25/bfd/elf64-ppc.c index 0b65ab19..0245a2c7 100644 --- a/binutils-2.25/bfd/elf64-ppc.c +++ b/binutils-2.25/bfd/elf64-ppc.c @@ -11805,7 +11805,7 @@ group_sections (struct ppc_link_hash_table *htab, bfd_boolean suppress_size_errors; suppress_size_errors = FALSE; - stub14_group_size = stub_group_size; + stub14_group_size = stub_group_size >> 10; if (stub_group_size == 1) { /* Default values. */ @@ -11979,6 +11979,8 @@ ppc64_elf_size_stubs (struct bfd_link_info *info) "GOMP_parallel_loop_runtime_start", "GOMP_parallel_sections", "GOMP_parallel_sections_start", + /* libgo */ + "__go_go", }; unsigned i; diff --git a/binutils-2.25/bfd/elf64-x86-64.c b/binutils-2.25/bfd/elf64-x86-64.c index 3881f60f..f2b13e7b 100644 --- a/binutils-2.25/bfd/elf64-x86-64.c +++ b/binutils-2.25/bfd/elf64-x86-64.c @@ -1629,16 +1629,11 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_X86_64_PC32_BND: case R_X86_64_PLT32_BND: - case R_X86_64_PC32: - case R_X86_64_PLT32: - case R_X86_64_32: - case R_X86_64_64: /* MPX PLT is supported only if elf_x86_64_arch_bed is used in 64-bit mode. */ if (ABI_64_P (abfd) - && info->bndplt - && (get_elf_x86_64_backend_data (abfd) - == &elf_x86_64_arch_bed)) + && (get_elf_x86_64_backend_data (abfd) + == &elf_x86_64_arch_bed)) { elf_x86_64_hash_entry (h)->has_bnd_reloc = TRUE; @@ -1680,7 +1675,11 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, } case R_X86_64_32S: + case R_X86_64_32: + case R_X86_64_64: + case R_X86_64_PC32: case R_X86_64_PC64: + case R_X86_64_PLT32: case R_X86_64_GOTPCREL: case R_X86_64_GOTPCREL64: if (htab->elf.dynobj == NULL) @@ -1753,14 +1752,6 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, if (h != NULL) { - if (r_type == R_X86_64_GOTPLT64) - { - /* This relocation indicates that we also need - a PLT entry, as this is a function. We don't need - a PLT entry for local symbols. */ - h->needs_plt = 1; - h->plt.refcount += 1; - } h->got.refcount += 1; old_tls_type = elf_x86_64_hash_entry (h)->tls_type; } @@ -2182,8 +2173,6 @@ elf_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, case R_X86_64_GOTPLT64: if (h != NULL) { - if (r_type == R_X86_64_GOTPLT64 && h->plt.refcount > 0) - h->plt.refcount -= 1; if (h->got.refcount > 0) h->got.refcount -= 1; if (h->type == STT_GNU_IFUNC) @@ -2825,6 +2814,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec, /* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation. */ if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC + && irel->r_offset >= 2 && bfd_get_8 (input_bfd, contents + irel->r_offset - 2) == 0x8b) { @@ -2855,6 +2845,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec, && h->type != STT_GNU_IFUNC && h != htab->elf.hdynamic && SYMBOL_REFERENCES_LOCAL (link_info, h) + && irel->r_offset >= 2 && bfd_get_8 (input_bfd, contents + irel->r_offset - 2) == 0x8b) { @@ -3719,12 +3710,7 @@ elf_x86_64_relocate_section (bfd *output_bfd, case R_X86_64_GOTPCREL64: /* Use global offset table entry as symbol value. */ case R_X86_64_GOTPLT64: - /* This is the same as GOT64 for relocation purposes, but - indicates the existence of a PLT entry. The difficulty is, - that we must calculate the GOT slot offset from the PLT - offset, if this symbol got a PLT entry (it was global). - Additionally if it's computed from the PLT entry, then that - GOT offset is relative to .got.plt, not to .got. */ + /* This is obsolete and treated the the same as GOT64. */ base_got = htab->elf.sgot; if (htab->elf.sgot == NULL) diff --git a/binutils-2.25/bfd/elfxx-mips.c b/binutils-2.25/bfd/elfxx-mips.c index cb6fd21b..998549da 100644 --- a/binutils-2.25/bfd/elfxx-mips.c +++ b/binutils-2.25/bfd/elfxx-mips.c @@ -6607,6 +6607,9 @@ _bfd_elf_mips_mach (flagword flags) case E_MIPS_MACH_LS3A: return bfd_mach_mips_loongson_3a; + case E_MIPS_MACH_OCTEON3: + return bfd_mach_mips_octeon3; + case E_MIPS_MACH_OCTEON2: return bfd_mach_mips_octeon2; @@ -7002,20 +7005,11 @@ _bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr) if (strcmp (name, ".sdata") == 0 || strcmp (name, ".lit8") == 0 || strcmp (name, ".lit4") == 0) - { - hdr->sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL; - hdr->sh_type = SHT_PROGBITS; - } + hdr->sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL; else if (strcmp (name, ".srdata") == 0) - { - hdr->sh_flags |= SHF_ALLOC | SHF_MIPS_GPREL; - hdr->sh_type = SHT_PROGBITS; - } + hdr->sh_flags |= SHF_ALLOC | SHF_MIPS_GPREL; else if (strcmp (name, ".compact_rel") == 0) - { - hdr->sh_flags = 0; - hdr->sh_type = SHT_PROGBITS; - } + hdr->sh_flags = 0; else if (strcmp (name, ".rtproc") == 0) { if (hdr->sh_addralign != 0 && hdr->sh_entsize == 0) @@ -11480,9 +11474,11 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd, name = ".dynsym"; elemsize = MIPS_ELF_SYM_SIZE (output_bfd); s = bfd_get_section_by_name (output_bfd, name); - BFD_ASSERT (s != NULL); - dyn.d_un.d_val = s->size / elemsize; + if (s != NULL) + dyn.d_un.d_val = s->size / elemsize; + else + dyn.d_un.d_val = 0; break; case DT_MIPS_HIPAGENO: @@ -11906,6 +11902,10 @@ mips_set_isa_flags (bfd *abfd) val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON; break; + case bfd_mach_mips_octeon3: + val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON3; + break; + case bfd_mach_mips_xlr: val = E_MIPS_ARCH_64 | E_MIPS_MACH_XLR; break; @@ -13959,6 +13959,8 @@ bfd_mips_isa_ext (bfd *abfd) return AFL_EXT_OCTEON; case bfd_mach_mips_octeonp: return AFL_EXT_OCTEONP; + case bfd_mach_mips_octeon3: + return AFL_EXT_OCTEON3; case bfd_mach_mips_octeon2: return AFL_EXT_OCTEON2; case bfd_mach_mips_xlr: @@ -14792,6 +14794,7 @@ struct mips_mach_extension static const struct mips_mach_extension mips_mach_extensions[] = { /* MIPS64r2 extensions. */ + { bfd_mach_mips_octeon3, bfd_mach_mips_octeon2 }, { bfd_mach_mips_octeon2, bfd_mach_mips_octeonp }, { bfd_mach_mips_octeonp, bfd_mach_mips_octeon }, { bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 }, @@ -15588,6 +15591,9 @@ print_mips_isa_ext (FILE *file, unsigned int isa_ext) case AFL_EXT_XLR: fputs ("RMI XLR", file); break; + case AFL_EXT_OCTEON3: + fputs ("Cavium Networks Octeon3", file); + break; case AFL_EXT_OCTEON2: fputs ("Cavium Networks Octeon2", file); break; diff --git a/binutils-2.25/bfd/version.h b/binutils-2.25/bfd/version.h index ec0bedc5..7c349d6f 100644 --- a/binutils-2.25/bfd/version.h +++ b/binutils-2.25/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20141119 +#define BFD_VERSION_DATE 20141117 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/binutils-2.25/bfd/version.m4 b/binutils-2.25/bfd/version.m4 index c92d143b..0f2f2359 100644 --- a/binutils-2.25/bfd/version.m4 +++ b/binutils-2.25/bfd/version.m4 @@ -1 +1 @@ -m4_define([BFD_VERSION], [2.24.90]) +m4_define([BFD_VERSION], [2.25.51]) |