X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2FChangeLog;h=ef760d1384759dd285c7346f3bba0dbe520b9dfc;hb=87f5fbcc7aa49cee13e9ed44587b80d695d7e781;hp=5d3013a885f51d1300f65ff6f42ca88b3c2b62ad;hpb=afa59b79006af1572ceeebcd2ada5a13e483f6b1;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5d3013a885..ef760d1384 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,822 @@ +2015-06-15 Renlin Li + + * reloc.c (BFD_RELOC_AARCH64_LD64_GOTOFF_LO15): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD64_GOTOFF_LO15. + +2015-06-15 Alan Modra + + * cofflink.c (_bfd_coff_generic_relocate_section): Revert + 2014-03-26 change. Call _bfd_clear_contents for relocs against + local and global symbols defined in discarded input sections. + +2015-06-05 Nick Clifton + + * elf32-msp430.c (rl78_sym_diff_handler): New function. + (msp430_howto_table): Use the new function for the SYM_DIFF reloc. + (msp430x_howto_table): Likewise. + +2015-06-05 Alan Modra + + * elf64-ppc.c (ppc_elf_relocate_section): Move dynamic text + relocs with insns moved by --ppc476-workaround. Correct + output of REL16 relocs. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (aarch64_reloc_got_type): Support + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_gc_swap_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + +2015-06-01 Jiong Wang + + * reloc.c (BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Set overflow type to + complain_overflow_unsigned for BFD_RELOC_AARCH64_TLSLE_ADD_LO12. + * elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Don't use + PGOFF for BFD_RELOC_AARCH64_TLSLE_ADD_LO12. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (aarch64_reloc_got_type): Support + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_gc_swap_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + +2015-06-01 Jiong Wang + + * reloc.c (BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15. + +2015-05-28 Catherine Moore + Bernd Schmidt + Paul Brook + + bfd/ + * bfd-in2.h: Regenerated. + * elf-bfd.h (DWARF2_EH_HDR, COMPACT_EH_HDR): Define. + (COMPACT_EH_CANT_UNWIND_OPCODE): Define. + (dwarf_eh_frame_hdr_info): Move dwarf-specific fields from + eh_frame_hdr_info. + (compact_eh_frame_hdr_info): Declare. + (eh_frame_hdr_info): Redeclare with union for dwarf-specific + fields and compact-eh fields. + (elf_backend_data): Add cant_unwind_opcode and compact_eh_encoding. + (bfd_elf_section_data): Add eh_frame_entry_field. + (elf_section_eh_frame_entry): Define. + (bfd_elf_parse_eh_frame_entries): Declare. + (_bfd_elf_parse_eh_frame_entry): Declare. + (_bfd_elf_end_eh_frame_parsing): Declare. + (_bfd_elf_write_section_eh_frame_entry): Declare. + (_bfd_elf_eh_frame_entry_present): Declare. + (_bfd_elf_section_for_symbol): Declare. + * elf-eh-frame.c (bfd_elf_discard_eh_frame_entry): New function. + (bfd_elf_record_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame): Update hdr_info field references. + (cmp_eh_frame_hdr): New function. + (add_eh_frame_hdr_terminator): New function. + (_bfd_elf_end_eh_frame_parsing): New function. + (find_merged_cie): Update hdr_info field references. + (_bfd_elf_discard_section_eh_frame): Likewise. + (_bfd_elf_discard_section_eh_frame_hdr): Add Compact EH support. + (_bfd_elf_eh_frame_entry_present): New function. + (_bfd_elf_maybe_strip_eh_frame_hdr): Add Compact EH support. + (_bfd_elf_write_section_eh_frame_entry): New function. + (_bfd_elf_write_section_eh_frame): Update hdr_info field references. + (_bfd_elf_fixup_eh_frame_hdr): New function. + (write_compact_eh_frame_hdr): New function. + (write_dwarf_eh_frame_hdr): New function. + (_bfd_elf_write_section_eh_frame_hdr): Add Compact EH support. + * elflink.c (_bfd_elf_section_for_symbol): New function. + (elf_section_ignore_discarded_relocs): Add Compact EH support. + (elf_link_input_bfd): Likewise. + (bfd_elf_final_link): Likewise. + (_bfd_elf_gc_mark): Likewise. + (bfd_elf_parse_eh_frame_entries): New function. + (bfd_elf_gc_sections): Add Compact EH support. + (bfd_elf_discard_info): Likewise. + * elfxx-mips.c: Include dwarf2.h. + (_bfd_mips_elf_compact_eh_encoding): New function. + (_bfd_mips_elf_cant_unwind_opcode): New function. + * elfxx-mips.h (_bfd_mips_elf_compact_eh_encoding): Declare. + (_bfd_mips_elf_cant_unwind_opcode): Declare. + (elf_backend_compact_eh_encoding): Define. + (elf_backend_cant_unwind_opcode): Define. + * elfxx-target.h (elf_backend_compact_eh_encoding): Provide default. + (elf_backend_cant_unwind_opcode): Provide default. + (elf_backend_data elfNN_bed): Add elf_backend_compact_eh_encoding and + elf_backend_cant_unwind_opcode. + * section.c (SEC_INFO_TYPE_EH_FRAME_ENTRY): Add definition. + +2015-05-27 H.J. Lu + + PR binutils/18458 + * elf32-i386.c (elf_i386_check_relocs): Create .plt.got section + for now binding only if pointer equality isn't needed. + (elf_i386_allocate_dynrelocs): Use .plt.got section for now + binding only if pointer equality isn't needed. + * elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got + section for now binding only if pointer equality isn't needed. + (elf_x86_64_allocate_dynrelocs): Use .plt.got section for now + binding only if pointer equality isn't needed. + +2015-05-26 H.J. Lu + + PR binutils/18437 + * elf32-i386.c (elf_i386_get_plt_sym_val): Skip extra relocations + in .rel.plt/.rela.plt. + * elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Likewise. + +2015-05-19 Jiong Wang + + * elfnn-aarch64.c (aarch64_tls_transition_without_check): Sort + relocation case labels alphabetically. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_tls_relax): Ditto. + (elfNN_aarch64_relocate_section): Ditto. + (elfNN_aarch64_gc_sweep_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + (_bfd_aarch64_elf_resolve_relocation): Ditto. + +2015-05-18 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_adjust_dynamic_symbol): Rewrite + comments. + +2015-05-16 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Create .plt.got section + for now binding. + (elf_i386_allocate_dynrelocs): Use .plt.got section for now + binding. + * elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got + section for now binding. + (elf_x86_64_allocate_dynrelocs): Use .plt.got section for now + binding. + +2015-05-14 H.J. Lu + + * bfd.c (bfd_update_compression_header): Also write the zlib + header if the SHF_COMPRESSED bit cleared.. + (bfd_check_compression_header): Return the uncompressed size. + * compress.c (decompress_contents): Don't skip the zlib header. + (bfd_compress_section_contents): Properly handle ELFCOMPRESS_ZLIB, + which doesn't have the zlib header. + (bfd_init_section_decompress_status): Likewise. + (bfd_get_full_section_contents): Updated. + (bfd_is_section_compressed): Likewise. + (bfd_is_section_compressed_with_header): Return the uncompressed + size. + * elf.c (_bfd_elf_make_section_from_shdr): Updated. + * bfd-in2.h: Regenerated. + +2015-05-14 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Remove overflow + check restrictions. + +2015-05-14 Max Filippov + + * elf32-xtensa.c (elf_xtensa_gc_sweep_hook): Treat PLT reference + as GOT reference when plt.refcount is not positive. + +2015-05-12 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Allocate space + for the first .plt entry only if needed. + * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise. + +2015-05-11 H.J. Lu + + * Makefile.am (ALL_MACHINES): Add cpu-iamcu.lo. + (ALL_MACHINES_CFILES): Likewise. + * archures.c (bfd_mach_iamcu): New. + (bfd_mach_i386_iamcu): Likewise. + (bfd_mach_i386_iamcu_intel_syntax): Likewise. + (bfd_iamcu_arch): Likewise. + (bfd_archures_list): Add &bfd_iamcu_arch. + * config.bfd (targ_selvecs): Add iamcu_elf32_vec to + i386_elf32_vec. + (targ_archs): Add bfd_iamcu_arch if needed. + * configure.ac: Support iamcu_elf32_vec. + * cpu-iamcu.c: New file. + * elf32-i386.c (elf32_iamcu_elf_object_p): New function. + Add support for iamcu_elf32_vec and elf32_iamcu_bed. + * targets.c (iamcu_elf32_vec): New. + (_bfd_target_vector): Add iamcu_elf32_vec. + * Makefile.in: Regenerated. + * bfd-in2.h: Likewise. + * configure: Likewise. + +2015-05-11 H.J. Lu + + * elfcode.h (elf_object_p): Replace EM_486 with EM_IAMCU. + +2015-05-10 H.J. Lu + + * elf32-i386.c (elf_i386_convert_mov_to_lea): Replace input_bfd + and output_bfd with abfd. + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. + +2015-05-06 Toni Spets + + PR ld/18372 + * peXXigen.c (rsrc_process_section): Skip discarded resource + sections. + +2015-05-01 H.J. Lu + + * config.bfd: Support i[3-7]86-*-elf*. + +2015-04-30 H.J. Lu + + * elf32-i386.c (elf_backend_post_process_headers): Undef for + Solaris 2. + +2015-04-30 Nick Clifton + + PR 18317 + * elf32-mep.c (MEPREL): Use bfd_elf_generic_reloc instead of + mep_reloc. + (mep_reloc): Delete unused function. + +2015-04-29 Nick Clifton + + PR 17099 + * coff-i386.c (coff_i386_rtype_to_howto): Allow absolute PCRLONG + relocs. + +2015-04-27 Andreas Krebbel + + * elf-s390-common.c (elf_s390_merge_obj_attributes): New function. + * elf32-s390.c (elf32_s390_merge_private_bfd_data): Call + elf_s390_merge_obj_attributes. + * elf64-s390.c (elf64_s390_merge_private_bfd_data): New function. + +2015-04-24 Jiong Wang + + PR ld/18270 + * elfnn-aarch64.c (elfNN_aarch64_size_dynamic): Count local symbol for + GOT_NORMAL for both sgot/srelgot section. + (elfNN_aarch64_final_link_relocate): Relocate against GOT entry address + and generate necessary runtime relocation for GOT entry. + +2015-04-24 H.J. Lu + + PR binutils/18209 + * archive.c (_bfd_get_elt_at_filepos): Copy is_linker_input. + +2015-04-24 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Reject + PC-relative relocation for external symbol. + +2015-04-24 Nick Clifton + + PR 18313 + * compress.c (decompress_contents): Zero initialse the z_stream + structure. + +2015-04-24 Nick Clifton + + * elf.c (_bfd_elf_is_local_label_name): Extend test for assembler + local labels to include local labels with a numeric suffix and + fake symbols. + +2015-04-24 H.J. Lu + + PR binutils/18316 + * section.c (SEC_MEP_VLIW): New. + * bfd-in2.h: Regenerated. + +2015-04-23 H.J. Lu + + PR ld/18277 + * compress.c (bfd_compress_section_contents): Remove the + write_compress argument. + (bfd_init_section_compress_status): Updated. + (bfd_compress_section): Likewise. + * elf.c (_bfd_elf_set_reloc_sh_name): New. + (_bfd_elf_init_reloc_shdr): Add delay_st_name_p. Set sh_name + to (unsigned int) -1 if delay_st_name_p is TRUE. Use + _bfd_elf_set_reloc_sh_name. + (elf_fake_sections): Don't rename DWARF debug section for + linker output if it will be compressed. Instead, set + delay_st_name_p to TRUE and pass it to _bfd_elf_init_reloc_shdr. + (assign_section_numbers): Call _bfd_elf_strtab_addref only if + sh_name != (unsigned int) -1. Don't finalize nor assign + shstrtab section here. Delay setting output section names to + _bfd_elf_write_object_contents. + (_bfd_elf_compute_section_file_positions): Update comments on + sh_offset for shstrtab section. + (assign_file_positions_for_non_load_sections): Set sh_offset to + -1 for shstrtab section. + (assign_file_positions_except_relocs): Likewise. + (_bfd_elf_assign_file_positions_for_non_load): Set up sh_name + when compressing DWARF debug sections. Place shstrtab section + after DWARF debug sections have been compressed. + (_bfd_elf_write_object_contents): Setting sh_name for output + sections. + +2015-04-23 H.J. Lu + + PR binutils/18209 + * bfd.c (bfd): Add is_linker_input. + * elf.c (convert_debug_to_zdebug): New. + (convert_zdebug_to_debug): Likewise. + (_bfd_elf_make_section_from_shdr): Don't convert .debug_* to + .zdebug_* here. Use convert_zdebug_to_debug. Set SEC_ELF_RENAME. + (_bfd_elf_init_reloc_shdr): Pass a pointer to section name + instead of a pointer to section. + (elf_fake_sections): Rename the section name if SEC_ELF_RENAME + is set. + * section.c (SEC_ELF_RENAME): New. + * bfd-in2.h: Regenerated. + +2015-04-23 Alan Modra + + * elf64-ppc.c (TOC_BASE_ALIGN): Define. + (ppc64_elf_next_toc_section): Align multi-got toc base. + (ppc64_elf_set_toc): Likewise initial toc base and .TOC. symbol. +======= +2015-05-04 Catherine Moore + + * elfxx-target.h: Add missing #endif. + +2015-04-22 Catherine Moore + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame_entry): Don't write + the .eh_frame_entry section if the corresponding text section is marked + with SEC_EXCLUDE. + +2015-04-22 Catherine Moore + Bernd Schmidt + Paul Brook + + * bfd-in2.h (SEC_INFO_TYPE_EH_FRAME_ENTRY): Define. + * elf-bfd.h (DWARF2_EH_HDR, COMPACT_EH_HDR): Define. + (COMPACT_EH_CANT_UNWIND_OPCODE): Define. + (dwarf_eh_frame_hdr_info): New struct. + (compact_eh_frame_hdr_info): New struct. + (eh_frame_hdr_info): Separate dwarf and compact fields. + (elf_backend_data): Add compact_eh_encoding and cant_unwind_opcode + fields. + (bfd_elf_section_data): Add eh_frame_entry field. + (elf_section_eh_frame_entry): Define. + (bfd_elf_parse_eh_frame_entries): Declare. + (_bfd_elf_parse_eh_frame_entry): Declare. + (_bfd_elf_end_eh_frame_parsing): Declare. + (_bfd_elf_write_section_eh_frame_entry): Declare. + (_bfd_elf_fixup_eh_frame_hdr): Declare. + (_bfd_elf_eh_frame_entry_present): Declare. + (_bfd_elf_section_for_symbol): Declare. + * elf-eh-frame.c (bfd_elf_discard_eh_frame_entry): New function. + (bfd_elf_record_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame): Update hdr_info field references. + (cmp_eh_frame_hdr): New function. + (add_eh_frame_hdr_terminator): New function. + (_bfd_elf_end_eh_frame_parsing): New function. + (find_merged_cie): Update hdr_info field references. + (_bfd_elf_discard_section_eh_frame): Likewise. + (_bfd_elf_discard_section_eh_frame_hdr): Likewise. + Add Compact EH support. + (_bfd_elf_eh_frame_entry_present): New function. + (_bfd_elf_maybe_strip_eh_frame_hdr): Add Compact EH support. + (_bfd_elf_write_section_eh_frame_entry): New function. + (_bfd_elf_write_section_eh_frame): Update hdr_info field references. + (_bfd_elf_write_section_eh_frame): Likewise. + (_bfd_elf_fixup_eh_frame_hdr): New function. + (write_compact_eh_frame_hdr): New function. + (_bfd_elf_write_section_eh_frame_hdr): Compact EH support. Update + hdr_info field references. + * elflink.c (_bfd_elf_section_for_symbol): New function. + (elf_section_ignore_discarded_relocs, elf_link_input_bfd): + Handle SEC_INFO_TYPE_EH_FRAME_ENTRY. + (bfd_elf_final_link): Call _bfd_elf_fixup_eh_frame_hdr. + (_bfd_elf_gc_mark): Support Compact EH. + (bfd_elf_parse_eh_frame_entries): New function. + (bfd_elf_gc_sections): Support Compact EH. + (bfd_elf_discard_info): Likewise. + * elfxx-mips.c (_bfd_mips_elf_compact_eh_encoding): New function. + (_bfd_mips_elf_cant_unwind_opcode): New function. + * elfxx-mips.h (_bfd_mips_elf_compact_eh_encoding): Declare. + (_bfd_mips_elf_cant_unwind_opcode): Declare. + (elf_backend_compact_eh_encoding): Define. + (elf_backend_cant_unwind_opcode): Define. + * elfxx-target.h (elf_backend_compact_eh_encoding): + Provide default definition. + (elf_backend_cant_unwind_opcode): Provide default definition. + * section.c (SEC_INFO_TYPE_EH_FRAME_ENTRY): Define. +>>>>>>> 2015-05-04 Catherine Moore + +2015-04-22 H.J. Lu + + PR ld/18289 + * elf32-i386.c (elf_i386_link_hash_entry): Add gotoff_ref. + (elf_i386_link_hash_newfunc): Initialize gotoff_ref to 0. + (elf_i386_create_dynamic_sections): Always allow copy relocs for + building executables. + (elf_i386_copy_indirect_symbol): Also copy gotoff_ref. + (elf_i386_check_relocs): Set gotoff_ref for R_386_GOTOFF. + (elf_i386_adjust_dynamic_symbol): Also allocate copy relocs for + PIE and R_386_GOTOFF. + (elf_i386_relocate_section): Allow R_386_GOTOFF in executable. + +2015-04-20 H.J. Lu + + * elf.c (assign_section_numbers): Always set up sh_name. + +2015-04-20 H.J. Lu + + * elf.c (assign_file_positions_for_non_load_sections): Iterate + sections by pointer. + (_bfd_elf_assign_file_positions_for_non_load): Likewise. + +2015-04-14 H.J. Lu + + * bfd-in.h (compressed_debug_section_type): New. + * compress.c (bfd_compress_section_contents): Add an argument + for linker write compression and always generate .zdebug_* + section when linking. + (bfd_init_section_compress_status): Pass FALSE to + bfd_compress_section_contents. + (bfd_compress_section): New function. + * elf.c (elf_fake_sections): For linking, set SEC_ELF_COMPRESS + on DWARF debug sections if COMPRESS_DEBUG is set and rename + section if COMPRESS_DEBUG_GABI_ZLIB isn't set. + (assign_file_positions_for_non_load_sections): Set sh_offset + to -1 if SEC_ELF_COMPRESS is set. + (assign_file_positions_except_relocs): Likwise. + (_bfd_elf_assign_file_positions_for_relocs): Renamed to ... + (_bfd_elf_assign_file_positions_for_non_load): This. Change + return time to bfd_boolean. Compress the section if + SEC_ELF_COMPRESS is set. + (_bfd_elf_write_object_contents): Updated. + (_bfd_elf_set_section_contents): Write section contents to + the buffer if SEC_ELF_COMPRESS is set. + * merge.c: Include "elf-bfd.h". + (sec_merge_emit): Add arguments for contents and offset. Write + to contents with offset if contents isn't NULL. + (_bfd_write_merged_section): Write section contents to the + buffer if SEC_ELF_COMPRESS is set. Pass contents and + output_offset to sec_merge_emit. + * elflink.c (bfd_elf_final_link): Allocate the buffer for + output section contents if SEC_ELF_COMPRESS is set. + * section.c (SEC_ELF_COMPRESS): New. + * bfd-in2.h: Regenerated. + +2015-04-15 Alan Modra + + * elf32-rl78.c (rl78_elf_relocate_section): Typo fix. + +2015-04-14 Nick Clifton + + * elf32-rl78.c (RL78_OP_REL): New macro. + (rl78_elf_howto_table): Use it for complex relocs. + (get_symbol_value): Handle the cases when the info or status + arguments are NULL. + (get_romstart): Cache the status returned by get_symbol_value. + (get_ramstart): Likewise. + (RL78_STACK_PUSH): Generate an error message if the stack + overflows. + (RL78_STACK_POP): Likewise for underflows. + (rl78_compute_complex_reloc): New function. Contains the basic + processing code for all RL78 complex relocs. + (rl78_special_reloc): New function. Provides special reloc + handling for complex relocs. + (rl78_elf_relocate_section): Use rl78_compute_complex_reloc. + (rl78_offset_for_reloc): Likewise. + +2015-04-14 H.J. Lu + + PR ld/pr17709 + * elflink.c (_bfd_elf_adjust_dynamic_copy): Check + info->extern_protected_data when warning copy relocs against + protected symbols. + (_bfd_elf_symbol_refs_local_p): Check info->extern_protected_data + when checking protected non-function symbols. + +2015-04-13 John Baldwin + + * elf.c (elfcore_grok_note): Recognize NT_X86_XSTATE on + FreeBSD. + (elfcore_write_xstatereg): Use correct note name on FreeBSD. + +2015-04-13 H.J. Lu + + PR ld/18250 + * elflink.c (elf_link_is_defined_archive_symbol): Return FALSE + if the object has been claimed by plugin. + +2015-04-11 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Replace SYMBOLIC_BIND + with SYMBOL_REFERENCES_LOCAL when checking R_386_GOTOFF against + protected data symbol when building shared library. + * elf64-x86-64.c (elf_x86_64_relocate_section): Check + R_X86_64_GOTOFF64 against undefined symbol and replace + SYMBOLIC_BIND with SYMBOL_REFERENCES_LOCAL when checking + R_X86_64_GOTOFF64 against protected data symbol when building + shared library. + +2015-04-10 H.J. Lu + + PR ld/pr17709 + * elf32-i386.c (elf_i386_relocate_section): Also check R_386_GOTOFF + against protected data symbol when building shared library. + * elf64-x86-64.c (elf_x86_64_relocate_section): Also check + R_X86_64_GOTOFF64 against protected data symbol when building + shared library. + +2015-04-10 H.J. Lu + + PR ld/pr15228 + PR ld/pr17709 + * elf-bfd.h (elf_backend_data): Add extern_protected_data. + * elf32-i386.c (elf_backend_extern_protected_data): New. + Defined to 1. + * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. + * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't error on + copy relocs against protected symbols if extern_protected_data + is true. + (_bfd_elf_symbol_refs_local_p): Don't return true on protected + non-function symbols if extern_protected_data is true. + * elfxx-target.h (elf_backend_extern_protected_data): New. + Default to 0. + (elfNN_bed): Initialize extern_protected_data with + elf_backend_extern_protected_data. + +2015-04-10 H.J. Lu + + * compress.c (bfd_compress_section_contents): Replace bfd_malloc + and free with bfd_alloc and bfd_release on compressed buffer. + Release buffer if compressed section isn't smaller. + +2015-04-10 Alan Modra + + PR ld/18222 + * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't report an error + on adding a protected visibility variable to .dynbss. + +2015-04-10 Alan Modra + + Revert 2015-03-05 H.J. Lu + PR ld/pr15228 + PR ld/pr17709 + * elf-bfd.h (elf_backend_data): Delete extern_protected_data. + * elf32-i386.c (elf_backend_extern_protected_data): Delete. + * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. + * elflink.c (_bfd_elf_adjust_dynamic_copy): Remove + extern_protected_data test. + (_bfd_elf_symbol_refs_local_p): Likewise. + * elfxx-target.h (elf_backend_extern_protected_data): Delete. + (elfNN_bed): Delete elf_backend_extern_protected_data init. + +2015-04-09 H.J. Lu + + * compress.c (bfd_compress_section_contents): Update comments. + (bfd_init_section_decompress_status): Likewise. + (bfd_init_section_compress_status): Likewise. + +2015-04-09 H.J. Lu + + * elfxx-target.h (TARGET_BIG_SYM): Add BFD_COMPRESS_GABI to + object_flags. + (TARGET_LITTLE_SYM): Likewise. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (splay-tree.h): include header. + (text_action_struct): drop next pointer. + (text_action_list_struct): drop head pointer, add count and + tree fields. + (find_fill_action): instead of linear search in text_action_list + search in the tree. + (text_action_compare, action_first, action_next): new functions. + (text_action_add, text_action_add_literal): instead of linear + search and insertion insert new node into the tree. + (removed_by_actions): pass additional parameter: action_list, + use it to traverse the tree. + (offset_with_removed_text): pass additional action_list parameter + to removed_by_actions. + (map_action_fn_context): new typedef. + (map_action_fn_context_struct): new structure. + (map_action_fn): new function. + (map_removal_by_action): use splay_tree_foreach to build map. + (find_insn_action): replace linear search in text_action_list + with series of splay_tree_lookups. + (print_action, print_action_list_fn): new functions. + (print_action_list): use splay_tree_foreach. + (init_xtensa_relax_info): drop action_list.head initialization. + Initialize the tree. + (compute_text_actions): use non-zero action_list_count instead of + non-NULL action list. + (xlate_map_context): new typedef. + (xlate_map_context_struct): new structure. + (xlate_map_fn): new function. + (build_xlate_map): use splay_tree_foreach to build map. + (action_remove_bytes_fn): new function. + (relax_section): use zero action_list_count instead of NULL + action list. Use splay_tree_foreach to count final section size. + Drop unused variable 'removed'. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (removed_literal_map_entry): new typedef. + (removed_literal_map_entry_struct): new structure. + (removed_literal_list_struct): add new fields: n_map and map. + (map_removed_literal, removed_literal_compare): new functions. + (find_removed_literal): build index array for literals ordered + by VMA, use binary search to find removed literal. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (removal_by_action_entry_struct, + removal_by_action_map_struct): new structures. + (removal_by_action_entry, removal_by_action_map): new typedefs. + (text_action_list_struct): add new field: map. + (map_removal_by_action, removed_by_actions_map, + offset_with_removed_text_map): new functions. + (relax_section): replace offset_with_removed_text with + offset_with_removed_text_map. + (translate_reloc, relax_property_section, relax_section_symbols): + replace removed_by_actions with removed_by_actions_map. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (reloc_range_list, reloc_range_list_entry, + reloc_range): new typedef. + (reloc_range_list_struct, reloc_range_list_entry_struct, + reloc_range_struct): new structures. + (reloc_range_compare, build_reloc_ranges, + reloc_range_list_append, reloc_range_list_remove, + reloc_range_list_update_range, free_reloc_range_list): new + functions. + (compute_text_actions): precompute relocation opcodes before the + loop. Add relevant_relocs variable, initialize it before the + loop, pass it to the check_section_ebb_pcrels_fit. + (check_section_ebb_pcrels_fit): add new parameter: + relevant_relocs. Update address range in the relevant_relocs if + it's non-NULL and iterate only over relevant relocations. + +2015-04-09 Nick Clifton + + * elf32-rx.c (describe_flags): Report the settings of the string + insn using bits. + (rx_elf_merge_private_bfd_data): Handle merging of the string insn + using bits. + +2015-04-08 H.J. Lu + + * compress.c (bfd_compress_section_contents): Work around a GCC + uninitialized warning bug fixed in GCC 4.7. + +2015-04-08 H.J. Lu + + * archive.c (_bfd_get_elt_at_filepos): Also copy BFD_COMPRESS_GABI + bit. + * bfd.c (bfd::flags): Increase size to 18 bits. + (BFD_COMPRESS_GABI): New. + (BFD_FLAGS_SAVED): Add BFD_COMPRESS_GABI. + (BFD_FLAGS_FOR_BFD_USE_MASK): Likewise. + (bfd_update_compression_header): New fuction. + (bfd_check_compression_header): Likewise. + (bfd_get_compression_header_size): Likewise. + (bfd_is_section_compressed_with_header): Likewise. + * compress.c (MAX_COMPRESSION_HEADER_SIZE): New. + (bfd_compress_section_contents): Return the uncompressed size if + the full section contents is compressed successfully. Support + converting from/to .zdebug* sections. + (bfd_get_full_section_contents): Call + bfd_get_compression_header_size to get compression header size. + (bfd_is_section_compressed): Renamed to ... + (bfd_is_section_compressed_with_header): This. Add a pointer + argument to return compression header size. + (bfd_is_section_compressed): Use it. + (bfd_init_section_decompress_status): Call + bfd_get_compression_header_size to get compression header size. + Return FALSE if uncompressed section size is 0. + * elf.c (_bfd_elf_make_section_from_shdr): Support converting + from/to .zdebug* sections. + * bfd-in2.h: Regenerated. + +2015-04-07 Alan Modra + + * elf.c (_bfd_elf_get_reloc_section): Allow for .got.plt being + mapped to output .got section. + +2015-04-07 Alan Modra + + * elf32-ppc.c (struct ppc_elf_link_hash_entry): Add has_addr16_ha + and has_addr16_lo. Make has_sda_refs a bitfield. + (ppc_elf_check_relocs): Set new flags. + (ppc_elf_link_hash_table_create): Update default_params. + (ppc_elf_adjust_dynamic_symbol): Clear protected_def in cases + where we won't be making .dynbss entries or editing code. Set + params->pic_fixup when we'll edit code for protected var access. + (allocate_dynrelocs): Allocate got entry for edited code and + discard dyn_relocs. + (struct ppc_elf_relax_info): Add picfixup_size. + (ppc_elf_relax_section): Rename struct one_fixup to struct + one_branch_fixup. Rename fixups to branch_fixups. Size space for + pic fixups. + (ppc_elf_relocate_section): Edit non-PIC accessing protected + visibility variables to PIC. Don't emit dyn_relocs for code + we've edited. + * elf32-ppc.h (struct ppc_elf_params): Add pic_fixup. + +2015-04-07 Nick Clifton + + * elf.c (_bfd_elf_is_local_label_name): Treat assembler generated + local labels as local. + +2015-04-06 H.J. Lu + + * compress.c (get_uncompressed_size): Removed. + (bfd_compress_section_contents): Use bfd_putb64 to write + uncompressed section size. + (bfd_init_section_decompress_status): Replace + get_uncompressed_size with bfd_getb64. + +2015-04-04 H.J. Lu + + * elf.c (_bfd_elf_init_private_section_data): Also preserve the + SHF_COMPRESSED bit if not decompress. + +2015-04-04 H.J. Lu + + * compress.c (get_uncompressed_size): New. Extracted from ... + (bfd_init_section_decompress_status): This. Use it. + +2015-04-02 Andrew Turner + + * config.bfd: Add aarch64-*-freebsd* target triple. + +2015-04-02 H.J. Lu + + * configure: Regenerated. + +2015-04-01 Tejas Belagod + Marcus Shawcroft + Jiong Wang + + * 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-04-01 H.J. Lu * configure: Regenerated.