+2015-04-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <amodra@gmail.com>
+
+ * elf32-rl78.c (rl78_elf_relocate_section): Typo fix.
+
+2015-04-14 Nick Clifton <nickc@redhat.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <jhb@FreeBSD.org>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ * 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 <amodra@gmail.com>
+
+ 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 <amodra@gmail.com>
+
+ Revert 2015-03-05 H.J. Lu <hongjiu.lu@intel.com>
+ 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 <hongjiu.lu@intel.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ * elfxx-target.h (TARGET_BIG_SYM): Add BFD_COMPRESS_GABI to
+ object_flags.
+ (TARGET_LITTLE_SYM): Likewise.
+
+2015-04-09 Max Filippov <jcmvbkbc@gmail.com>
+
+ * 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 <jcmvbkbc@gmail.com>
+
+ * 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 <jcmvbkbc@gmail.com>
+
+ * 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 <jcmvbkbc@gmail.com>
+
+ * 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 <nickc@redhat.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ * compress.c (bfd_compress_section_contents): Work around a GCC
+ uninitialized warning bug fixed in GCC 4.7.
+
2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
* archive.c (_bfd_get_elt_at_filepos): Also copy BFD_COMPRESS_GABI