+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * xcofflink.c (bfd_xcoff_import_symbol): Treat imported absolute
+ symbols as XMC_XO.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * 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 <r.sandiford@uk.ibm.com>
+
+ * coff64-rs6000.c (xcoff64_write_object_contents): Set the cputype
+ to 2 for bfd_mach_ppc_620.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * config.bfd: Treat AIX 6+ in the same way as AIX 5.
+ * configure.in: Likewise.
+ * configure: Regenerate.
+
+2009-03-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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 <nickc@redhat.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ 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 <ams@codesourcery.com>
* dwarf2.c (read_section): Always check the offset, even when the