X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2FChangeLog;h=25c2fde0e995c1a8e315270a0d5a4094aad94610;hb=8602d4fea60dda606ad5e5e01e27f8f841120e15;hp=6f16c7dade09459413271367249a6185f3a9f0c4;hpb=f6f0598346619a96534beb53fb0872e33614ae22;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6f16c7dade..25c2fde0e9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,962 @@ +2009-03-14 Richard Sandiford + + * coffcode.h (coff_pointerize_aux_hook): Update CSECT_SYM_P to + check whether a symbol has csect information. + (coff_print_aux): Likewise. + * coff-rs6000.c (_bfd_xcoff_swap_aux_in): Handle auxillary csect + information for C_AIX_WEAKEXT too. + (_bfd_xcoff_swap_aux_out): Likewise. + (xcoff_reloc_type_br): Handle defweak symbols too. + * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Handle auxillary csect + information for C_AIX_WEAKEXT too. + (_bfd_xcoff64_swap_aux_out): Likewise. + (xcoff64_reloc_type_br): Handle defweak symbols too. + * coffgen.c (coff_print_symbol): Handle auxillary function + information for C_AIX_WEAKEXT too. + * xcofflink.c (_bfd_xcoff_canonicalize_dynamic_symtab): Set BSF_WEAK + instead of BSF_GLOBAL if the L_WEAK flag is set. + (xcoff_dynamic_definition_p): New function. + (xcoff_link_add_dynamic_symbols): Use it to decide whether ldsym + defines h. Don't change h if ldsym isn't the definition. Otherwise, + always take the symbol class from the ldsym. Use weak bfd symbol + types for weak ldsyms. + (xcoff_link_add_symbols): Use CSECT_SYM_P and EXTERN_SYM_P. + Fix the check for whether a definition is from a shared object. + Allow redefinitions of weak symbols. + (xcoff_link_check_ar_symbols): Use EXTERN_SYM_P. + (xcoff_keep_symbol_p): Likewise. + (bfd_xcoff_size_dynamic_sections): Use CSECT_SYM_P. + (xcoff_link_input_bfd): Use CSECT_SYM_P and EXTERN_SYM_P. + Add .loader entries for C_AIX_WEAKEXT as well as C_EXT symbols, + but mark them as L_WEAK. + (xcoff_write_global_symbol): Treat weak symbols as C_AIX_WEAKEXT + instead of C_EXT if C_AIX_WEAKEXT == C_WEAKEXT. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_mark): When walking the relocations, + only mark the target symbol or the target section, not both. + (xcoff_final_definition_p): New function. + (xcoff_keep_symbol_p): Use it to check whether an external XCOFF + symbol is a valid definition of the associated output symbol. + Use XCOFF_ALLOCATED to stop the same hash table entry having + two output symbols. + (bfd_xcoff_size_dynamic_sections): Set XCOFF_ALLOCATED when + keeping a symbol. + (xcoff_link_input_bfd): Use xcoff_final_definition_p. + +2009-03-14 Richard Sandiford + + * xcofflink.c (bfd_xcoff_import_symbol): Treat imported absolute + symbols as XMC_XO. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_tdata): Add a lineno_counts field. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_link_add_symbols): Record per-symbol + line-number counts in the bfd's lineno_counts field. + Don't keep per-csect line-number counts. + (xcoff_sweep): Don't update per-csect line-number counts. + (bfd_xcoff_size_dynamic_sections): Count the number of line-number + entries in each output section. + (xcoff_link_input_bfd): Get the number of line numbers from + the bfd's lineno_counts field, rather than recalculating it + from scratch. Fix the range check when updating C_BINCL and + C_EINCL symbols. + (_bfd_xcoff_bfd_final_link): Don't count the output line numbers + here. Don't expect csects to have line-number counts. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_tdata): Change debug_indices to a signed long. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_keep_symbol_p): New function, using the + "skip" logic from xcoff_link_input_bfd. + (bfd_xcoff_size_dynamic_sections): Explicitly skip dynamic + objects in a dynamic link, rather than checking whether csectpp + is null. Always allocate debug_index for other objects, + and always go through the loop. Update the type of debug_index + after the change above. Read the auxillary csect information + and use xcoff_keep_symbol_p to decide whether a symbol should + be kept. Set its debug_index to -2 if not. + (xcoff_link_input_bfd): Update the type of debug_index after + the change above and always expect it to be nonnull. Use it to + test whether a symbol should be stripped, rather than making the + decision here. Postpone all symbol creation to the second pass. + +2009-03-14 Richard Sandiford + + * xcofflink.c: (xcoff_mark_symbol): Mark the TOC section when + creating a descriptor. + (xcoff_sweep): Don't mark toc_section unless it's needed. + (bfd_xcoff_size_dynamic_sections): Skip the toc_section + when marking every bfd. + (xcoff_link_input_bfd): Skip all TOC anchors. + (xcoff_toc_section_p, xcoff_find_tc0): New functions. + (_bfd_xcoff_bfd_final_link): Don't set the output bfd's TOC anchor + to -1; call xcoff_find_tc0 instead. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_section_tdata): Update commentary. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_link_add_symbols): Set the csect of XTY_ER + symbols to bfd_und_section_ptr or bfd_abs_section_ptr, rather than + the previous symbol's csect. Treat last_symndx as an inclusive value + and simplify its handling. + (xcoff_mark): Treat last_symndx as an inclusive value. Only mark + symbols with the right csect. Don't mark rsec when processing + relocations against undefined or absolute sections. + (bfd_xcoff_size_dynamic_sections): Don't check the SEC_MARK flag + of bfd_und_section_ptr. + (xcoff_link_input_bfd): Likewise. + +2009-03-14 Richard Sandiford + + * coff-rs6000.c (xcoff_ppc_relocate_section): Report relocations + against undefined symbols if the symbol's XCOFF_WAS_UNDEFINED + flag is set. Assert that all undefined symbols are either + imported or defined by a dynamic object. + * coff64-rs6000.c (xcoff64_ppc_relocate_section): Likewise. + * xcofflink.c (xcoff_link_add_symbols): Extend function-symbol + handling to all relocations. Only set XCOFF_CALLED for function + symbols. + (xcoff_find_function): New function, split out from... + (bfd_xcoff_export_symbol) ...here. + (xcoff_set_import_path): New function, split out from... + (bfd_xcoff_import_symbol): ...here. Remove assertion for old + meaning of XCOFF_CALLED. + (xcoff_mark_symbol): If we mark an undefined and unimported + symbol, find some way of defining it. If the symbol is a function + descriptor, fill in its definition automatically. If the symbol + is a function, mark its descriptor and allocate room for global + linkage code. Otherwise mark the symbol as implicitly imported. + Move the code for creating function descriptors from... + (xcoff_build_ldsyms): ...here. Use XCOFF_WAS_UNDEFINED to + check for symbols that were implicitly defined. + (xcoff_mark): Don't count any dynamic relocations against + function symbols. + (bfd_xcoff_size_dynamic_sections): Save the rtld parameter + in the xcoff link info. + (xcoff_link_input_bfd): Remove handling of undefined and + unexported symbols. + +2009-03-14 Richard Sandiford + + * coff-rs6000.c (xcoff_reloc_type_br): Make the branch absolute + if the target is absolute. Fix comment typo. + (xcoff_ppc_relocate_section): Remove FIXME. + * coff64-rs6000.c (xcoff64_reloc_type_br): Make the branch absolute + if the target is absolute. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_mark, xcoff_link_input_bfd): Don't copy + R_POS and R_NEG relocations against absolute symbols to the + .loader section. + +2009-03-14 Richard Sandiford + + * coff64-rs6000.c (xcoff64_write_object_contents): Set the cputype + to 2 for bfd_mach_ppc_620. + +2009-03-14 Richard Sandiford + + * config.bfd: Treat AIX 6+ in the same way as AIX 5. + * configure.in: Likewise. + * configure: Regenerate. + +2009-03-13 H.J. Lu + + PR binutils/9945 + * elf.c (assign_section_numbers): Generate symbol table if there + is any relocation in output. + (_bfd_elf_compute_section_file_positions): Likewise. + +2009-03-13 Nick Clifton + + PR 9934 + * elf-bfd.h (NUM_SHDR_ENTRIES): Cope with an empty section. + * elflink.c (elf_link_read_relocs_from_section): Use + NUM_SHDR_ENTRIES. Gracefully handle the case where there are + relocs but no symbol table. + * elf32-arm.c (elf32_arm_check_relocs): Likewise. + +2009-03-12 H.J. Lu + + PR ld/9938 + * elf32-i386.c (elf_i386_check_tls_transition): Use strncmp + to check ___tls_get_addr. + + * elf64-x86-64.c (elf64_x86_64_check_tls_transition): Use + strncmp to check __tls_get_addr. + +2009-03-12 Andrew Stubbs + + * dwarf2.c (read_section): Always check the offset, even when the + section has been read before. + +2009-03-11 H.J. Lu + + * elf32-i386.c (elf_i386_check_tls_transition): Fix a typo in + comments. + +2009-03-11 Chris Demetriou + + * bfd.c (BFD_DETERMINISTIC_OUTPUT): New flag. + * bfd-in2.h: Regenerate. + * archive.c (bfd_ar_hdr_from_filesystem): If BFD_DETERMINISTIC_OUTPUT + flag is set, use 0 for uid, gid, and timestamp, and use 0644 for file + mode. + (bsd_write_armap): Likewise. + (_bfd_archive_bsd_update_armap_timestamp): If BFD_DETERMINISTIC_OUTPUT + flag is set, do nothing. + (coff_write_armap): If BFD_DETERMINISTIC_OUTPUT flag is set, use 0 + for timestamp. + +2009-03-11 Ulrich Weigand + + * elf32-spu.c (find_function_stack_adjust): Handle sf instruction + used to update stack pointer. + +2009-03-07 John David Anglin + + PR binutils/9921 + * som.c (som_bfd_derive_misc_symbol_info): Set symbol type ST_ABSOLUTE + for unknown symbols in absolute section. + +2009-03-06 Nick Clifton + + * po/es.po: Updated Spanish translation. + +2009-03-05 Christophe Lyon + + * elf32-arm.c (group_sections): Take next section size into + account before accepting to group it. + +2009-03-05 Christophe Lyon + + * elf32-arm.c (arm_type_of_stub): Handle long branches targetting + PLT entries. + (elf32_arm_final_link_relocate): Likewise. + +2009-03-05 Moritz Kroll + + PR 9923 + * peXXigen.c (_bfd_XXi_final_link_postscript): Check h->root.type. + +2009-03-04 Alan Modra + + * reloc.c (BFD_RELOC_PPC_TLSGD, BFD_RELOC_PPC_TLSLD): New. + * section.c (struct bfd_section): Add has_tls_get_addr_call. + (BFD_FAKE_SECTION): Init new flag. + * ecoff.c (bfd_debug_section): Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_TLSGD and R_PPC_TLSLD. + (ppc_elf_reloc_type_lookup): Handle new relocs. + (ppc_elf_check_relocs): Set has_tls_get_addr_call on finding such + without marker relocs. + (ppc_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs + if section has no old-style calls. + (ppc_elf_relocate_section): Set tls_mask for non-tls relocs too. + Don't try to optimize new-style __tls_get_addr call when handling + arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD + relocs. + * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_TLSGD, R_PPC64_TLSLD. + (ppc64_elf_reloc_type_lookup): Handle new relocs. + (ppc64_elf_check_relocs): Set has_tls_get_addr_call on finding such + without marker relocs. + (ppc64_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs + if section has no old-style calls. Set toc_ref for new relocs as + appropriate. + (ppc64_elf_relocate_section): Set tls_mask for non-tls relocs too. + Don't try to optimize new-style __tls_get_addr call when handling + arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD + relocs. + +2009-03-04 Alan Modra + + PR 6768 + * configure.in: Test for ld --as-needed support. Link shared + libbfd against libm. + * configure: Regenerate. + +2009-03-03 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2009-03-02 Qinwei + + * elf32-score7.c: New file. + * elf32-score.h: New file. + * elf32-score.c: Add code to support score 7. Set score7 as the + default. + * cpu-score.c: Add score7 architecure. + (compatibile): New function. + * Makefile.am: Add rules for building elf32-score7 object. + * Makefile.in: Regenerate. + * configure.in: Add elf32-score7 object to score vectors. + * configure: Regenerate. + * reloc.c: Add score7 relocs. + * archures.c: Add score3 and score7 machine numbers. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2009-03-01 Ralf Wildenhues + + * configure: Regenerate. + +2009-03-01 John David Anglin + + * elf32-hppa.c (hppa32_elf_local_refcounts): New function. + (elf32_hppa_check_relocs): Use it. + + * elf_hppa_add_symbol_hook (elf_hppa_add_symbol_hook): Move to + elf64-hppa.c. + (elf_hppa_unmark_useless_dynamic_symbols): Likewise. + (elf_hppa_remark_useless_dynamic_symbols): Likewise. + (elf_hppa_is_dynamic_loader_symbol): Likewise. + (elf_hppa_record_segment_addrs): Likewise. + (elf_hppa_final_link): Likewise. + (elf_hppa_relocate_insn): Likewise. + (elf_hppa_final_link_relocate): Likewise. + (elf64_hppa_relocate_section): Likewise. + * elf64-hppa.c: Insert above. + +2009-02-28 John David Anglin + + * elf-hppa.h (elf_hppa_final_link): Use elf_hppa_final_link. + (elf_hppa_final_link_relocate ): Rewrite eliminating dynamic hash table. + (elf_hppa_relocate_section): Likewise. + * elf64-hppa.c (struct elf64_hppa_link_hash_entry): Change to derive + from struct elf_link_hash_entry. Add count field. + (struct elf64_hppa_dyn_hash_table): Delete. + (struct elf64_hppa_link_hash_table): Delete dyn_hash_table field. + (elf64_hppa_hash_table): Rename to hppa_link_hash_table. + (hppa_elf_hash_entry, eh_name): Define. + (elf64_hppa_new_dyn_hash_entry): Delete. + (elf64_hppa_dyn_hash_lookup): Delete. + (elf64_hppa_dyn_hash_traverse): Delete. + (get_dyn_name): Delete. + (elf64_hppa_finalize_opd): Use struct elf_link_hash_entry * instead + of struct elf64_hppa_dyn_hash_entry *. + (elf64_hppa_finalize_dlt, llocate_global_data_dlt, + allocate_global_data_plt, allocate_global_data_stub, + allocate_global_data_opd, count_dyn_reloc, allocate_dynrel_entries): + Likewise. + (hppa64_link_hash_newfunc): New. + (elf64_hppa_hash_table_create): Rework. + (count_dyn_reloc): Likewise. + (hppa64_elf_local_refcounts): New. + (elf64_hppa_check_relocs): Rework using standard technique for recording + local DLT, PLT and OPD reference counts. + (elf64_hppa_dynamic_symbol_p): Revise using "eh" for struct + elf_link_hash_entry *. + (elf64_hppa_mark_exported_functions, allocate_global_data_dlt, + allocate_global_data_plt, allocate_global_data_stub, + allocate_global_data_opd, allocate_dynrel_entries, + elf64_hppa_adjust_dynamic_symbol, + elf64_hppa_mark_milli_and_exported_functions): Likewise. + (elf64_hppa_create_dynamic_sections, elf64_hppa_size_dynamic_sections): + Use hppa_link_hash_table. Rework. + (elf64_hppa_link_output_symbol_hook): Rework. + (elf64_hppa_finish_dynamic_symbol, elf64_hppa_finalize_opd, + elf64_hppa_finalize_dlt, elf64_hppa_finalize_dynreloc, + elf64_hppa_finish_dynamic_sections): Likewise. + +2009-02-26 Christophe Lyon + + * elf32-arm.c (stub_reloc_type): Removed. + (insn_sequence): Renamed reloc_type field to r_type. + (elf32_arm_stub_long_branch_v4t_arm_thumb_pic): New stub. + (elf32_arm_stub_long_branch_v4t_thumb_arm_pic): Likewise. + (elf32_arm_stub_long_branch_thumb_only_pic): Likewise. + (elf32_arm_stub_type): Add new enum entries for the new stubs. + (arm_stub_is_thumb): Catch new stubs. + (arm_type_of_stub): Handle new stubs. + (arm_size_one_stub): Use ARRAY_SIZE. Handle new stubs. + (bfd_elf32_arm_process_before_allocation): Remove useless + condition. + +2009-02-25 H.J. Lu + + * elf.c (elf_find_function): Use is_function_type to check + function symbol. + +2009-02-24 Sterling Augustine + + * xtensa-modules.c: Revert to previous version 1.11 due + to inadvertant commit. + +2009-02-24 Sterling Augustine + + * elf32-xtensa.c (text_action_add): Separate test for action + type. Break if saved action is ta_widen_insn at same offset. + +2009-02-24 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_stub_long_branch_any_any_pic): Rename + to elf32_arm_stub_long_branch_any_arm_pic. + (elf32_arm_stub_long_branch_any_thumb_pic): New. + (enum elf32_arm_stub_type, arm_type_of_stub) + (arm_size_one_stub): Handle any to ARM PIC and any to Thumb PIC + separately. + +2009-02-24 Joseph Myers + + * elf32-arm.c (PREV_SEC): Update comment. + (group_sections): Rename argument to stubs_always_after_branch. + Reverse the list and place stubs at the end of input sections. + Undefine NEXT_SEC. + (elf32_arm_size_stubs): Update to use stubs_always_after_branch. + +2009-02-23 Daniel Jacobowitz + + * elf32-arm.c (arm_build_one_stub): Initialize stub_reloc_offset. + Fix formatting. + (arm_size_one_stub): Remove unnecessary break. + (arm_map_one_stub): Fix formatting. Return after BFD_FAIL. + +2009-02-23 Christophe Lyon + + * elf32-arm.c (stub_insn_type): New type. + (stub_reloc_type): Likewise. + (insn_sequence): Likewise. + (elf32_arm_stub_long_branch_any_any): Encode using insn_sequence. + (elf32_arm_stub_long_branch_v4t_arm_thumb): Likewise. + (elf32_arm_stub_long_branch_thumb_only): Likewise. + (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. + (elf32_arm_stub_short_branch_v4t_thumb_arm): Likewise. + (elf32_arm_stub_long_branch_any_any_pic): Likewise. + (elf32_arm_stub_hash_entry): Add new helper fields. + (stub_hash_newfunc): Initialize these new fields. + (arm_build_one_stub): Encode Arm and Thumb instructions separately + to take endianness into account. + (arm_size_one_stub): Compute size of stubs using insn_sequence. + (arm_map_one_stub): Code is now more generic, thanks to + insn_sequence. + +2009-02-23 Christophe Lyon + + * elf32-arm.c (elf32_arm_stub_long_branch_thumb_only): Fix stub + code. + (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. + (arm_type_of_stub): Use Thumb-only long branch stub (non-PIC) when + BLX is not available. Fix typo in warning message. Add comments + and improve formatting. + (arm_build_one_stub): Adjust to new + elf32_arm_stub_long_branch_v4t_thumb_arm stub. + (arm_map_one_stub): Likewise. + +2009-02-23 Tristan Gingold + Eric Botcazou + Douglas B Rupp + + * vms.h: Update copyright year, fix comments, reorder declarations. + (_bfd_save_vms_section): Remove the prototype. + (EGPS_S_V_NO_SHIFT): New constant. + (bfd_vms_set_section_flags): New prototype. + (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New + constants. + (EGSY_S_W_FLAGS): Ditto. + (EGSY_S_V_QUAD_VAL): Ditto. + (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. + (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, + EGST_S_B_NAMLNG): Ditto. + (ESRF_S_B_NAMLNG): Ditto. + (ETIR_S_C_HEADER_SIZE): Ditto. + (EGPS_S_V_ALLOC_64BIT): Ditto. + (DST_S_C_EPILOG): Ditto. + (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. + (DST_S_C_SRC_INCRLNUM_B): Ditto. + (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. + (DST_S_L_PCLINE_UNSLONG): Ditto. + (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto + (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto + (DST_S_C_SOURCE_HEADER_SIZE): Ditto. + (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. + (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. + (DST_S_B_SRC_UNSBYTE): Ditto. + (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. + Add prototypes. + (vms_section, vms_reloc): Remove types. + (hdr_struc): Replaced by ... + (hdr_struct): ... new type. + (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. + (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. + (EMH_DATE_LENGTH): Ditto. + (eom_struc): Replaced by ... + (eom_struct): ... new type. + (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. + (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. + (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. + (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. + (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. + (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. + (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. + (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. + (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. + (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. + (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. + (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. + (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. + (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. + (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. + (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. + (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. + (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) + (DBG_S_C_DMT_PSECT_SIZE): Ditto. + (enum file_type_enum): New type. + (struct location_struct): Removed. + (struct fileinfo, struct srecinfo, struct lineinfo): New types. + (struct funcinfo, struct module): Ditto. + (struct vms_private_data_struct): Update fields. + (struct vms_section_data_struct): New type. + + * vms.c: Update copyright year, fix comments, + Fix includes for DECC, add prototypes. + (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove + some initializers. + Use flavour to set is_vax, location_stack is removed. + (struct pair): Declare. + (fill_section_ptr): Initialize variables at declaration. + Add guard to set SECTION_SYM flag, handlde und section. + (vms_fixup_sections): Use struct pair for fill_section_ptr argument. + (_bfd_vms_slurp_object_records): New function, replaces previous + vms_object_p. + (vms_slurp_module): New function. + (vms_slurp_image): Ditto. + (vms_object_p): Complete rewrite. + (vms_mkobject): Use is_vax field to slect architecture. + (free_reloc_stream): New function. + (vms_convert_to_var): Ditto. + (vms_convert_to_var_1): Ditto. + (vms_convert_to_var_unix_filename): Ditto. + (vms_close_and_cleanup): Call free_reloc_stream, convert file to + VAR format on VMS. + (vms_new_section_hook): Set alignment to 0, allocate private data. + (vms_get_section_contents): Load content. + (vms_get_symbol_info): Handle undefined section. + (vms_find_nearest_line): Handle. + (alloc_reloc_stream): New function. + (vms_slurp_reloc_table): Ditto. + (vms_get_reloc_upper_bound): Make it real. + (vms_canonicalize_reloc): Do the real work. + (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, + ALPHA_R_BOH. + (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. + (vms_set_arch_mach): Check arch. + (vms_set_section_contents): Copy the content after allocation. + (vms_alpha_vec): Update object flags. + + * vms-tir.c: Update copyright year, fix comments, + add prototypes for new functions. + (dst_define_location): New function. + (dst_restore_location): New function. + (dst_retrieve_location): New function. + (dst_check_allocation): New function. + (image_dump): Call dst_check_allocation. + (image_write_b): Ditto. + (image_write_w): Ditto. + (image_write_l): Ditto. + (image_write_q): Ditto. + (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, + STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, + CTL_STKDL. + Call error handler instead of abort if name is not known. + (etir_sta): Add quarter_relocs argument and set it. + Fix cast. + (etir_sto): Ditto. + (etir_opr): Ditto, return FALSE in case of error. + (etir_ctl): Add quarter_relocs argument and set it, fix cast. + Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. + (etir_stc): Add quarter_relocs argument and set it, fix cast. + Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. + Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. + Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. + Return FALSE in case of error. + (tir_sta): Change sign of psect. + (tir_ctl): Ditto. + (tir_cmd): Fix cast. Makes tir_table static const. + (etir_cmd): Add quarter_relocs argument, makes etir_table const, + add argument to explain. + (analyze_etir): Initialize maxptr, add quarter_relocs + declaration, move some declarations into inner scopes. + Handle quarter_relocs and STO_IMM. + (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. + (_bfd_vms_slurp_relocs): New function. + (_bfd_vms_decode_relocs): New function. + (sto_imm): Rewritten. + (start_first_etbt_record): New function. + (start_another_etbt_record): Ditto. + (etir_output_check): Ditto. + (defer_reloc_p): Ditto. + (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to + a for-loop. Correctly deals with contents, deals with .vmsdebug, + rewritte relocations handling. + (_bfd_vms_write_tbt): Removed. + (_bfd_vms_write_dbg): Ditto. + + * vms-misc.c: Update copyright year, Fix comments. + (_bfd_vms_get_header_values): Use 'size' instead of 'length'. + (maybe_adjust_record_pointer_for_object): New function. + (_bfd_vms_get_first_record): New function, replaces ... + (_bfd_vms_get_record): .. removed. + (_bfd_vms_get_object_record): New function. + (_bfd_vms_get_object_record): New function. + (vms_get_remaining_object_record): New function, replaces ... + (_bfd_vms_get_next_record): ... removed. + (add_new_contents): Removed. + (_bfd_save_vms_section): Removed. + (_bfd_get_vms_section): Removed. + (_bfd_vms_output_flush): Write in VAR format. + (new_symbol): Don't make UND section. + + * vms-hdr.c: Update copyright year, update list of record handled. + (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. + (_bfd_vms_write_hdr): Strip vms and unix patches, + add comments, truncate module name at 31 characters, + use constants instead of hard-coded value, + write BFD version instead of a fixed string. + (_bfd_vms_slurp_ihd): New function. + (_bfd_vms_slurp_isd): Ditto. + (_bfd_vms_slurp_ihs): Ditto. + (new_module): Ditto. + (parse_module): Ditto + (build_module_list): Ditto. + (module_find_nearest_line): Ditto. + (_bfd_vms_find_nearest_dst_line): Ditto. + (vms_slurp_debug): Ditto. + (_bfd_vms_slurp_dbg): Ditto. + (_bfd_vms_slurp_tbt): Ditto. + (_bfd_vms_write_dbg): Ditto. + (_bfd_vms_write_tbt): Ditto. + + * vms-gsd.c: Update copyright year, update list of records handled. + (EVAX_LITERALS_NAME): New macro. + (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. + (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. + (register_universal_symbol): New function and prototype. + (_bfd_vms_slurp_gsd): Fix indentations and casts, + improve debug messages, + use constants instead of hard-coded value, + fix missing endianness conversion, + handle global symbol (SYMG). + (bfd_vms_set_section_flags): New function. + (_bfd_vms_write_gsd): Don't write .vmsdebug section, + handle section literals, + fix indentation, + handle section bfd and vms flags, + don't output LIB$INITIALIZE symbol, + fix handling of weak symbols, + fix evax vs vax procedure descriptor, + handle absolute symbols. + + * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, + BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. + + * makefile.vms (DEFS): Fix flags for VMS. + + * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. + + * bfd-in2.h: Regenerated. + * libbfd.h: Regenerated. + +2009-02-20 Cary Coutant + + * vmsutil.c (vms_file_stats_name): Fix incorrect use of st_mtime + in struct stat. + +2009-18-02 Dave Korn + + PR gas/7059 + * coffcode.h (coff_write_object_contents): Don't let the string + table offset overflow the s_name field when using long section names. + +2009-18-02 Dave Korn + + * coff-alpha.c (alpha_ecoff_backend_data): Initialise fields which + control long section name handling with ECOFF_NO_LONG_SECTION_NAMES. + * coff-mips.c (mips_ecoff_backend_data): Likewise. + * coff-rs6000.c (bfd_xcoff_backend_data): Initialise fields which + control long section name handling with XCOFF_NO_LONG_SECTION_NAMES. + (bfd_pmac_xcoff_backend_data): Likewise. + * coff64-rs6000.c (bfd_xcoff_backend_data): Likewise. + (bfd_xcoff_aix5_backend_data): Likewise. + (xcoff64_write_object_contents): Delete unused long_section_names + local variable. + * coff-sh.c (bfd_coff_small_swap_table): Initialise long section + name members using COFF_DEFAULT_LONG_SECTION_NAMES and make entire + struct non-const. + * coffcode.h (documentation): Update to describe long section names. + (COFFLONGSECTIONCATHELPER): New helper macro. + (BLANKOR1TOODD): Likewise. + (COFF_ENABLE_LONG_SECTION_NAMES): Likewise. + (COFF_LONG_SECTION_NAMES_SETTER): Likewise. + (COFF_DEFAULT_LONG_SECTION_NAMES): Likewise. + (bfd_coff_set_long_section_names_allowed): New function. + (bfd_coff_set_long_section_names_disallowed): Likewise. + (struct bfd_coff_backend_data): Add new backend hook function + pointer _bfd_coff_set_long_section_names. + (bfd_coff_set_long_section_names): New backend hook. + (coff_write_object_contents): Only generate long section names if + bfd_coff_long_section_names() indicates they are currently enabled. + (bfd_coff_std_swap_table): Make non-const, and initialise long + section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. + (ticoff0_swap_table): Likewise to both. + (ticoff1_swap_table): Again, likewise to both. + * coffgen.c (make_a_section_from_file): Allow long section names + as inputs even if not currently allowed for outputs. + * ecoff.c (_bfd_ecoff_no_long_sections): New function. + * efi-app-ia32.c (COFF_LONG_SECTION_NAMES): Define to 0, not blank. + * efi-app-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-app-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-arm.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-i386.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-mcore.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-mips.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-ppc.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-sh.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * libcoff-in.h: Update copyright year to cause updated copyright + year in generated libcoff.h, and fix typo. + * libcoff.h: Regenerated. + * libecoff.h (ECOFF_NO_LONG_SECTION_NAMES): New macro. + (_bfd_ecoff_no_long_sections): Add prototype. + * libxcoff.h (XCOFF_NO_LONG_SECTION_NAMES): New macro. + * pe-mips.c (COFF_LONG_SECTION_NAMES): Define empty if not already + defined by an including .c file. + * ticoff.h (ticoff0_swap_table): Make non-const, and initialise + long section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. + (ticoff1_swap_table): Likewise to both. + +2009-02-18 Christophe Lyon + + * elf32-arm.c (arm_build_one_stub): Fix relocation target for pic + stub. Catch default case error. + (arm_map_one_stub): Add missing Thumb mapping symbol. + +2009-02-18 Bjoern Haase + + PR 9841 + * elf32-avr.c: Handle case where no local symbos exist correctly. + +2009-02-16 Christophe Lyon + + bfd/ + * elf32-arm.c (arm_long_branch_stub, + arm_thumb_v4t_long_branch_stub, + arm_thumb_thumb_long_branch_stub, + arm_thumb_arm_v4t_long_branch_stub, + arm_thumb_arm_v4t_short_branch_stub, + arm_pic_long_branch_stub): + Renamed to elf32_arm_stub_long_branch_any_any, + elf32_arm_stub_long_branch_v4t_arm_thumb, + elf32_arm_stub_long_branch_thumb_only, + elf32_arm_stub_long_branch_v4t_thumb_arm, + elf32_arm_stub_short_branch_v4t_thumb_arm, + elf32_arm_stub_long_branch_any_any_pic. + (arm_stub_long_branch, arm_thumb_v4t_stub_long_branch, + arm_thumb_thumb_stub_long_branch, + arm_thumb_arm_v4t_stub_long_branch, + arm_thumb_arm_v4t_stub_short_branch, arm_stub_pic_long_branch): + Renamed to arm_stub_long_branch_any_any, + arm_stub_long_branch_v4t_arm_thumb, + arm_stub_long_branch_thumb_only, + arm_stub_long_branch_v4t_thumb_arm, + arm_stub_short_branch_v4t_thumb_arm, + arm_stub_long_branch_any_any_pic. + +2009-02-15 John David Anglin + + * elf-hppa.h (elf_hppa_final_link_relocate): Correct addend value used + in branch offset check. + +2009-02-15 Alan Modra + + * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx, + add toc.symndx and toc.add. + (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here. + Set up toc.add. + (get_tls_mask): Add toc_addend param, set from toc.add. Adjust all + callers. + (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd. + (branch_reloc_hash_match): New function, extracted from.. + (ppc64_elf_tls_optimize): ..here. + (ppc64_elf_relocate_section): Properly set addends when optimizing + tls sequences. Avoid unnecessary reading and writing of insns. + Only redo reloc when symbol changed. Bypass symbol checks when + using tlsld_got. + * elf32-ppc.c (ppc_elf_tls_setup): Correct comment. + (branch_reloc_hash_match): New function, extracted from.. + (ppc_elf_tls_optimize): ..here. + (ppc_elf_relocate_section): Avoid unnecessary reading of insns. + Don't clear addend on zapped __tls_get_addr reloc. + +2009-02-12 Nick Clifton + + PR 9827 + * elflink.c (bfd_elf_final_link): When counting the relocations, + if the header size has not been set yet then assume that it will + match the output section's reloc type. + +2009-02-12 Nathan Sidwell + + * elf32-mips.c (mips_elf_final_gp): Don't add 0x4000 offset for + relocatable link. + +2009-02-09 Alan Modra + + * elf32-spu.c (spu_elf_find_overlays): Call bfd_set_error on errors. + (find_function): Likewise. + (pasted_function): Don't error if no prior function found. + (discover_functions): Revert 2008-12-10 change. Extend first + function range to start of section. + +2009-02-08 John David Anglin + + * elf64-hppa.c: Remove PARAMS macro. Replace PTR with void *. Convert + functions to C90. + * elf64-hppa.h: Likewise. + +2009-02-06 Joseph Myers + + * elfxx-mips.c (_bfd_mips_elf_section_processing): Remove special + .sbss handling. + +2009-02-04 Alan Modra + + * elf32-spu.c (spu_elf_build_stubs): Define __icache_neg_log2_linesize. + Define __icache_ptr_handler*, not __icache_ptr___icache_bi_handler*. + +2009-02-03 Sandip Matte + + * aoutx.h (NAME (aout, machine_type)): Handle bfd_mach_mips_xlr. + * archures.c (bfd_mach_mips_xlr): Define. + * bfd-in2.h: Regenerate. + * cpu-mips.c (I_xlr): Define. + (arch_info_struct): Add XLR entry. + * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_XLR. + (mips_set_isa_flags): Handle bfd_mach_mips_xlr + (mips_mach_extensions): Add XLR entry. + +2009-02-03 Eric B. Weddington + + * elf32-avr.c (avr_final_link_relocate): Allow avr25 to wraparound. + +2009-02-03 Carlos O'Donell + + * configure.in: AC_SUBST pdfdir. + * Makefile.am: Add install-pdf, install-pdf-am + and install-pdf-recursive targets. Define pdfdir. + * doc/Makefile.am: Define pdf__strip_dir. Add + install-pdf and install-pdf-am targets. + * po/Make-in: Add install-pdf target. + * configure: Regenerate. + * Makefile.in: Regenerate + * doc/Makefile.in: Regenerate. + +2009-02-03 Maxim Kuvyrkov + + * bfd-in2.h: Regenerate. + * elf32-m68k.c: Handle 2-slot GOT entries. Rename variables and + fields from n_entries to n_slots where appropriate, update comments. + (HOWTO): Add TLS relocations. + (reloc_map): Map BFD_RELOC_68K_TLS_* to R_68K_TLS_*. + (enum elf_m68k_got_offset_size): New enum. + (struct elf_m68k_got_entry.type): Move field to ... + (struct elf_m68k_got_entry_key): ... here. Update all uses. + (elf_m68k_reloc_got_type, elf_m68k_reloc_got_offset_size): New static + functions. + (elf_m68k_reloc_got_n_entries, elf_m68k_reloc_tls_p): New static + functions. + (struct elf_m68k_got): merge rel_8o_n_entries and rel_8o_16o_n_entries + fields into n_entries array. Update comments. + (elf_m68k_init_got): Simplify, update all uses. + (elf_m68k_init_got_entry_key): Handle R_68K_TLS_LDM32 reloc, update. + (ELF_M68K_REL_8O_MAX_N_ENTRIES_IN_GOT): Adjust to handle 2-slot + GOT entries; update name, update all uses. + (ELF_M68K_REL_8O_16O_MAX_N_ENTRIES_IN_GOT): Ditto. + (elf_m68k_get_got_entry): Update. + (elf_m68k_update_got_entry_type): Rewrite to handle TLS GOT entries, + simplify. + (elf_m68k_remove_got_entry_type): Simplify. + (elf_m68k_add_entry_to_got, elf_m68k_can_merge_gots_1): Update. + (elf_m68k_can_merge_gots): Update. + (elf_m68k_merge_gots_1, elf_m68k_merge_gots): Update. + (struct elf_m68k_finalize_got_offsets_arg): Rewrite to handle 2-slot + GOT entries, simplify. + (elf_m68k_finalize_got_offsets_1, elf_m68k_finalize_got_offsets): Same. + (struct elf_m68k_partition_multi_got_arg): Add slots_relas_diff + field, remove obsoleted local_n_entries field. + (elf_m68k_partition_multi_got_2): New static function. + (elf_m68k_partition_multi_got_1, elf_m68k_partition_multi_got): Use it; + update. + (elf_m68k_remove_got_entry_type): Update. + (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. + (elf_m68k_check_relocs): Handle TLS relocations. Remove unnecessary + update of sgot->size and srelgot->size. + (elf_m68k_gc_sweep_hook): Update. + (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. + (elf_m68k_relocate_section, elf_m68k_finish_dynamic_symbol): Handle + TLS relocations. + * reloc.c (BFD_RELOC_68K_TLS_*): Declare TLS relocations. + * libbfd.h (bfd_reloc_code_real_names): Add BFD_RELOC_68K_TLS_*. + +2009-02-02 DJ Delorie + + * elf32-mep.c (config_names): Regenerate configuration. + +2009-02-02 Alan Modra + + * elf-bfd.h (bfd_elf_get_str_section): Don't declare. + (bfd_elf_find_section, _sh_elf_set_mach_from_flags): Likewise. + * elf.c (bfd_elf_get_str_section): Make static. + (bfd_elf_find_section): Delete. + * libbfd.h: Regenerate. + +2009-02-01 Jan Kratochvil + + * elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove. + (_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs. + +2009-01-31 Alan Modra + + * elflink.c (on_needed_list): New function. + (elf_link_add_object_symbols): Link in --as-needed libs if they + satisfy undefined symbols in other libs. + +2009-01-30 Julian Brown + + * elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with + EXEC_P or DYNAMIC flags, and skip sections which are being linked + with --just-symbols (-R). + +2009-01-29 Adam Nemet + + * dwarf2.c (read_rangelist): Use read_address to read low_pc and + high_pc in order to properly sign-extend VMAs. + +2009-01-29 Daniel Jacobowitz + Mark Shinwell + Catherine Moore + + * elf-attrs.c, elflink.c, elfxx-mips.c: Correct typos in comments. + +2009-01-28 Catherine Moore + + * elf32-arm.c (elf32_arm_check_relocs): Set SEC_ALLOC and + SEC_LOAD for dynamic relocation sections. + 2009-01-27 Hans-Peter Nilsson * elf32-cris.c (cris_elf_relocate_section): Use elf_hash_table