+2010-06-10 Tristan Gingold <gingold@adacore.com>
+
+ * som.c: Can now be compiled on any host.
+ Include bfd headers instead of system one.
+ (som_compute_checksum): Parameter is now a pointer to a
+ som_external_header structure. Adjust.
+ (struct section_to_type): Field section is now const.
+ (R_DLT_REL, R_AUX_UNWIND, R_SEC_STMT): Removed conditional
+ definition.
+ (R_LONG_PCREL_MODE, R_N0SEL, R_N1SEL, R_LINETAB): Ditto.
+ (R_LINETAB_ESC, R_LTP_OVERRIDE, R_COMMENT): Ditto.
+ (som_swap_clock_in, som_swap_clock_out): New functions.
+ (som_swap_header_in, som_swap_header_out): Likewise.
+ (som_swap_space_dictionary_in): Likewise.
+ (som_swap_space_dictionary_out): Likewise.
+ (som_swap_subspace_dictionary_in): Likewise.
+ (som_swap_subspace_dictionary_record_out): Likewise.
+ (som_swap_aux_id_in, som_swap_aux_id_out): Likewise.
+ (som_swap_string_auxhdr_out): Likewise.
+ (som_swap_compilation_unit_out): Likewise.
+ (som_swap_exec_auxhdr_in): Likewise.
+ (som_swap_exec_auxhdr_out): Likewise.
+ (som_swap_lst_header_in): Likewise.
+ (som_object_setup): Adjust parameter type using bfd types.
+ (setup_sections): Likewise. Ditto for object file types.
+ Use intermediate variables for external representation and use the
+ swap functions to convert.
+ (som_object_p): Ditto. Remove #ifdef/#endif on always defined
+ macros.
+ (som_prep_headers): Likewise.
+ (som_write_symbol_strings): Likewise.
+ (som_begin_writing): Likewise.
+ (som_finish_writing): Likewise.
+ (som_build_and_write_symbol_table): Likewise.
+ (bfd_section_from_som_symbol): Likewise.
+ (som_slurp_symbol_table): Likewise.
+ (som_bfd_print_private_bfd_data): Likewise.
+ (bfd_som_attach_aux_hdr): Likewise. Clear the padding.
+ (bfd_som_attach_compilation_unit): Likewise.
+ (som_bfd_count_ar_symbols): Likewise.
+ (som_bfd_fill_in_ar_symbols): Likewise.
+ (som_slurp_armap): Likewise.
+ (som_bfd_ar_write_symbol_stuff): Likewise.
+ (som_write_armap): Likewise. Use _bfd_ar_spacepad instead of
+ sprintf to write header fields.
+ * som.h: Include bfd headers instead of system one.
+ (FILE_HDR_SIZE, AUX_HDR_SIZE): Removed.
+ (struct somdata): Use bfd structures instead of system ones.
+ (struct som_section_data_struct): Likewise.
+ (struct som_subspace_dictionary_record): Removed (now in
+ include/som/internal.h)
+
+2010-06-10 Tristan Gingold <gingold@adacore.com>
+
+ * targets.c (bfd_target_list): Remove hp/ux compiler work-around
+ as bfd requires an ANSI-C compiler.
+
+2010-06-09 Tristan Gingold <gingold@adacore.com>
+
+ * bfdio.c (bfd_bread): Fix the code to prevent reading past the
+ end of archive members.
+
+2010-06-08 Tristan Gingold <gingold@adacore.com>
+
+ * som.c (som_bfd_free_cached_info): Do not free relocations as
+ they were allocated with bfd_zalloc.
+
+2010-06-08 Tristan Gingold <gingold@adacore.com>
+
+ * vms-lib.c (_bfd_vms_lib_write_archive_contents): Increment
+ for the first block.
+
+2010-06-08 Tristan Gingold <gingold@adacore.com>
+
+ * vms-lib.c (_bfd_vms_lib_ia64_mkarchive): New function.
+ * libbfd-in.h (_bfd_vms_lib_ia64_mkarchive): Declare.
+ * libbfd.h: Regenerate.
+ * elfxx-ia64.c (bfd_elfNN_write_archive_contents): Redefine for VMS.
+ (bfd_elfNN_mkarchive): Ditto.
+
+2010-06-02 Tristan Gingold <gingold@adacore.com>
+
+ * vms-alpha.c (alpha_vms_bfd_final_link): Fix 64bit constant.
+
+2010-06-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2010-06-01 Tristan Gingold <gingold@adacore.com>
+
+ * vms-alpha.c (struct vms_private_data_struct): Add
+ transfer_address field. Remove unused dst_info field.
+ (alpha_vms_write_exec): Use transfer_address.
+ (_bfd_vms_write_egsd): Add a comment about LIB$INITIALIZE.
+ (alpha_vms_bfd_final_link): Set transfer_address.
+
+2010-05-31 Tristan Gingold <gingold@adacore.com>
+
+ * vms-lib.c (credat_lo, credat_hi): New fields.
+ (vms_read_block): Adjust comments.
+ (vms_write_block): New function.
+ (_bfd_vms_lib_archive_p): Decode majorid once. Replace some
+ hard-coded values with constants. Set credat_lo and credat_hi.
+ (_bfd_vms_lib_mkarchive): Add argument kind.
+ Set ver, mhd_size and type according to kind.
+ (_bfd_vms_lib_alpha_mkarchive): New function.
+ (struct lib_index): Renamed from struct vms_index
+ (lib_index_cmp): Renamed from vms_index_cmp. Adjusted.
+ (get_idxlen): Type of idx argument adjusted. Add is_elfidx
+ argument and handle it.
+ (vms_write_index): Adjust argument idx. Handle elf indexes.
+ (_bfd_vms_lib_build_map): Adjust type of arguments modules and res.
+ (_bfd_vms_lib_write_archive_contents): Add is_elfidx variable and
+ use it. Handle elf indexes. Set credat.
+ * libbfd-in.h (_bfd_vms_lib_mkarchive): Renamed to ...
+ (_bfd_vms_lib_alpha_mkarchive): ... this.
+ * libbfd.h: Regenerated.
+ * vms-alpha.c (vms_alpha_vec): Adjust after previous renaming.
+
+2010-05-28 Sterling Augustine <sterling@tensilica.com>
+
+ * elf32-xtensa.c (elf_xtensa_relocate_section): Add a large amount
+ of code to change the bits in the instructions to match the changes
+ in the relocations. Declare dest_addr and sym_sec to help.
+
+2010-05-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Workaround GCC PR middle-end/4210.
+ * vms-misc.c (vms_time_t_to_vms_time): Use ternary operator for val[2]
+ and val[3].
+
+2010-05-27 Tristan Gingold <gingold@adacore.com>
+
+ * vms-misc.c: Define __NEW_STARLET. Remove trailing spaces.
+ (VMS_TIME_FACTOR, VMS_TIME_OFFSET): New macros.
+ (vms_time_to_time_t): Use them instead of local const.
+ (vms_time_t_to_vms_time): New function.
+ (vms_get_time): Likewise.
+ (vms_raw_get_time): Likewise.
+ * vms.h (vms_time_t_to_vms_time): New declaration.
+ (vms_get_time): Likewise.
+ (vms_raw_get_time): Likewise.
+
+2010-05-26 Tristan Gingold <gingold@adacore.com>
+
+ * vms-alpha.c: Update comments.
+ (alpha_vms_write_exec): Set lnkflags. Write the GST.
+ (alpha_vms_link_output_symbol): New function.
+ (alpha_vms_bfd_final_link): Generate the VMS symbol table.
+ Set dst_section private field.
+ (alpha_vms_bfd_final_link): Remove code that set dst_section.
+
+2010-05-26 Tristan Gingold <gingold@adacore.com>
+
+ * bfdio.c: Declare and define _bfd_memory_iovec.
+ (bfd_bread): Move code for BFD_IN_MEMORY...
+ (bfd_bwrite): ... Ditto ...
+ (bfd_tell): ... Ditto ...
+ (bfd_flush): ... Ditto ...
+ (bfd_stat): ... Ditto ...
+ (bfd_seek): ... Ditto ...
+ (bfd_get_size): ... Ditto ...
+ (bfd_mmap): ... Ditto ...
+ (memory_bread): ... to these new functions.
+ (memory_bwrite): Ditto.
+ (memory_btell): Ditto.
+ (memory_bseek): Ditto.
+ (memory_bflush): Ditto.
+ (memory_bstat): Ditto.
+ (memory_bmmap): Ditto.
+ (memory_bclose): New function.
+ * peicode.h (pe_ILF_build_a_bfd): Use BFD_IN_MEMORY.
+ * xcofflink.c (bfd_xcoff_link_generate_rtinit): Ditto.
+ * opncls.c (bfd_close): Do not handle BFD_IN_MEMORY case.
+ (bfd_make_writable): Use _bfd_memory_iovec.
+ * elfcode.h (bfd_from_remote_memory): Use _bfd_memory_iovec.
+ * coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Use
+ _bfd_memory_iovec.
+ (alpha_ecoff_openr_next_archived_file): Use proxy_origin
+ instead of origin.
+ * libbfd.h: Regenerate.
+
+2010-05-25 Daniel Jacobowitz <dan@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+ Andrew Stubbs <ams@codesourcery.com>
+
+ * config.bfd (sh-*-uclinux* | sh[12]-*-uclinux*): Add
+ bfd_elf32_shl_vec, and FDPIC vectors to targ_selvecs.
+ * configure.in: Handle FDPIC vectors.
+ * elf32-sh-relocs.h: Add FDPIC and movi20 relocations.
+ * elf32-sh.c (DEFAULT_STACK_SIZE): Define.
+ (SYMBOL_FUNCDESC_LOCAL): Define. Use it instead of
+ SYMBOL_REFERENCES_LOCAL for function descriptors.
+ (fdpic_object_p): New.
+ (sh_reloc_map): Add FDPIC and movi20 relocations.
+ (sh_elf_info_to_howto, sh_elf_relocate_section): Handle new invalid
+ range.
+ (struct elf_sh_plt_info): Add got20 and short_plt. Update all
+ definitions.
+ (FDPIC_PLT_ENTRY_SIZE, FDPIC_PLT_LAZY_OFFSET): Define.
+ (fdpic_sh_plt_entry_be, fdpic_sh_plt_entry_le, fdpic_sh_plts): New.
+ (FDPIC_SH2A_PLT_ENTRY_SIZE, FDPIC_SH2A_PLT_LAZY_OFFSET): Define.
+ (fdpic_sh2a_plt_entry_be, fdpic_sh2a_plt_entry_le)
+ (fdpic_sh2a_short_plt_be, fdpic_sh2a_short_plt_le, fdpic_sh2a_plts):
+ New.
+ (get_plt_info): Handle FDPIC.
+ (MAX_SHORT_PLT): Define.
+ (get_plt_index, get_plt_offset): Handle short_plt.
+ (union gotref): New.
+ (struct elf_sh_link_hash_entry): Add funcdesc, rename tls_type to
+ got_type and adjust all uses. Add GOT_FUNCDESC.
+ (struct sh_elf_obj_tdata): Add local_funcdesc. Rename
+ local_got_tls_type to local_got_type.
+ (sh_elf_local_got_type): Renamed from sh_elf_local_got_tls_type. All
+ users changed.
+ (sh_elf_local_funcdesc): Define.
+ (struct elf_sh_link_hash_table): Add sfuncdesc, srelfuncdesc, fdpic_p,
+ and srofixup.
+ (sh_elf_link_hash_newfunc): Initialize new fields.
+ (sh_elf_link_hash_table_create): Set fdpic_p.
+ (sh_elf_omit_section_dynsym): New.
+ (create_got_section): Create .got.funcdesc, .rela.got.funcdesc
+ and .rofixup.
+ (allocate_dynrelocs): Allocate local function descriptors and space
+ for R_SH_FUNCDESC-related relocations, and for rofixups.
+ Handle GOT_FUNCDESC. Create fixups. Handle GOT entries which
+ require function descriptors.
+ (sh_elf_always_size_sections): Handle PT_GNU_STACK and __stacksize.
+ (sh_elf_modify_program_headers): New.
+ (sh_elf_size_dynamic_sections): Allocate function descriptors for
+ local symbols. Allocate .got.funcdesc contents. Allocate rofixups.
+ Handle local GOT entries of type GOT_FUNCDESC. Create fixups for
+ local GOT entries. Ensure that FDPIC libraries always have a PLTGOT
+ entry in the .dynamic section.
+ (sh_elf_add_dyn_reloc, sh_elf_got_offset, sh_elf_initialize_funcdesc)
+ (sh_elf_add_rofixup, sh_elf_osec_to_segment)
+ (sh_elf_osec_readonly_p, install_movi20_field): New functions.
+ (sh_elf_relocate_section): Handle new relocations, R_SH_FUNCDESC,
+ R_SH_GOTFUNCDESC and R_SH_GOTOFFFUNCDESC. Use sh_elf_got_offset
+ and .got.plt throughout to find _GLOBAL_OFFSET_TABLE_. Add rofixup
+ read-only section warnings. Handle undefined weak symbols. Generate
+ fixups for R_SH_DIR32 and GOT entries. Check for cross-segment
+ relocations and clear EF_SH_PIC. Handle 20-bit relocations.
+ Always generate R_SH_DIR32 for FDPIC instead of R_SH_RELATIVE.
+ (sh_elf_gc_sweep_hook): Handle R_SH_FUNCDESC, R_SH_GOTOFF20,
+ R_SH_GOTFUNCDESC, R_SH_GOTFUNCDESC20, and R_SH_GOTOFFFUNCDESC.
+ Handle 20-bit relocations.
+ (sh_elf_copy_indirect_symbol): Copy function descriptor reference
+ counts.
+ (sh_elf_check_relocs): Handle new relocations. Make symbols
+ dynamic for FDPIC relocs. Account for rofixups. Error for FDPIC
+ symbol mismatches. Allocate a GOT for R_SH_DIR32. Allocate fixups
+ for R_SH_DIR32.
+ (sh_elf_copy_private_data): Copy PT_GNU_STACK size.
+ (sh_elf_merge_private_data): Copy initial flags. Do not clobber
+ non-mach flags. Set EF_SH_PIC for FDPIC. Reject FDPIC mismatches.
+ (sh_elf_finish_dynamic_symbol): Do not handle got_funcdesc entries
+ here. Rename sgot to sgotplt and srel to srelplt. Handle short_plt,
+ FDPIC descriptors, and got20. Create R_SH_FUNCDESC_VALUE for FDPIC.
+ Use install_movi20_field. Rename srel to srelgot. Always generate
+ R_SH_DIR32 for FDPIC instead of R_SH_RELATIVE.
+ (sh_elf_finish_dynamic_sections): Fill in the GOT pointer in rofixup.
+ Do not fill in reserved GOT entries for FDPIC. Correct DT_PLTGOT.
+ Rename sgot to sgotplt. Assert that the right number of rofixups
+ and dynamic relocations were allocated.
+ (sh_elf_use_relative_eh_frame, sh_elf_encode_eh_address): New.
+ (elf_backend_omit_section_dynsym): Use sh_elf_omit_section_dynsym.
+ (elf_backend_can_make_relative_eh_frame)
+ (elf_backend_can_make_lsda_relative_eh_frame)
+ (elf_backend_encode_eh_address): Define.
+ (TARGET_BIG_SYM, TARGET_BIG_NAME, TARGET_LITTLE_SYM)
+ (TARGET_LITTLE_NAME, elf_backend_modify_program_headers, elf32_bed):
+ Redefine for FDPIC vector.
+ * reloc.c: Add SH FDPIC and movi20 relocations.
+ * targets.c (_bfd_target_vector): Add FDPIC vectors.
+ * configure, bfd-in2.h, libbfd.h: Regenerated.
+
+2010-05-25 Jay Krell <jay.krell@cornell.edu>
+
+ PR ld/11624
+ * archive.c (_bfd_calloc_wrapper): New function.
+ (_bfd_add_bfd_to_archive_cache): Use it.
+
+ * configure.in: Add alpha*-*-*vms* to list of natives.
+ * configure: Regenerate.
+
+ * vms-misc.c: Define globalref if necessary.
+ (vms_convert_to_var_unix_filename): Rename to
+ _bfd_vms_convert_to_var_unix_filename and export.
+ * vms.h: Add prototype for _bfd_vms_convert_to_var_unix_filename.
+ * vms-alpha.c (vms_close_and_cleanup): Update invocation of
+ vms_convert_to_var_unix_filename.
+
+2010-05-24 Tristan Gingold <gingold@adacore.com>
+
+ * vms-alpha.c (add_symbol_entry): New function extrated from ...
+ (add_symbol): ... adjusted.
+
+2010-05-24 Tristan Gingold <gingold@adacore.com>
+
+ * vms-alpha.c (_bfd_vms_slurp_egsd): Fix indentation.
+ (alpha_vms_write_exec): Add a comment.
+ (_bfd_vms_write_egsd): Ditto.
+ (alpha_vms_convert_symbol): Remove a blank line.
+
2010-05-21 Tristan Gingold <gingold@adacore.com>
* vms-alpha.c (_bfd_vms_slurp_eihs): Do not create a bfd section