+2009-03-18 Alan Modra <amodra@bigpond.net.au>
+
+ * elf32-m68hc1x.c: Include alloca-conf.h.
+ * xsym.c: Likewise.
+ * elf64-hppa.c: Likewise. Remove existing #if's handling alloca.
+ * som.c: Likewise.
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2009-03-17 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * elf32-arm.c (elf32_arm_check_relocs): Correct symbian_p test.
+
+2009-03-17 Alan Modra <amodra@bigpond.net.au>
+
+ * elf32-spu.h (struct spu_elf_params): ovly_flavour now only 1 bit.
+ Add compact_stub.
+ (emum _ovly_flavour): Delete ovly_compact, ovly_none.
+ * elf32-spu.c (struct spu_link_hash_table): Replace ovly_load and
+ ovly_return fields with ovly_entry[2]. Adjust all users.
+ (spu_elf_find_overlays): Set ovly_entry[1] from __icache_call_handler
+ when soft-icache.
+ (spu_elf_build_stubs): Likewise.
+ (ovl_stub_size): Change arg to spu_elf_params pointer. Adjust for
+ ovly_flavour changes. Update all callers.
+ (ovl_stub_size_log2): New function.
+ (build_stub): Handle compact icache stubs. Use different manager
+ entry point for stubs in non-icache area.
+ (spu_elf_size_stubs): Don't allocate space for indirect branch
+ descriptors.
+ (spu_elf_build_stubs): And don't built them.
+
+2009-03-16 Andrew Stubbs <ams@codesourcery.com>
+
+ * dwarf2.c (read_section): Always use rawsize, if available.
+
+2009-03-16 Alan Modra <amodra@bigpond.net.au>
+
+ * simple.c (bfd_simple_get_relocated_section_contents): Use larger
+ of rawsize and size for buffer.
+
+2009-03-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * elf32-spu.c (spu_elf_check_vma): Do not reset auto_overlay
+ parameter just because fixed sections fit into local store.
+ (spu_elf_auto_overlay): Do not declare as "noreturn". Skip
+ generating overlays if fixed sections plus reserved stack
+ and heap space fit into local store.
+
+2009-03-15 Alan Modra <amodra@bigpond.net.au>
+
+ * elf32-spu.c (build_stub): Correct icache set_id.
+ (spu_elf_relocate_section): Likewise.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * xcofflink.c (xcoff_link_check_archive_element): Only free the
+ symbol table if it was created by the current call.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * xcofflink.c (xcoff_build_ldsyms): Give imported descriptors
+ class XMC_DS rather than XMC_UA.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * bfd-in.h (bfd_xcoff_size_dynamic_sections): Replace the
+ bfd_boolean export_defineds parameter with an unsigned int
+ auto_export_flags parameter.
+ * bfd-in2.h: Regenerate.
+ * xcofflink.c (xcoff_archive_contains_shared_object_p): New function,
+ split out from xcoff_build_ldsyms.
+ (xcoff_covered_by_expall_p): New function.
+ (xcoff_auto_export_p): New function, split out from xcoff_build_ldsyms
+ but with extra code to handle -bexpfull and -bexpall.
+ (xcoff_mark_auto_exports): New function.
+ (xcoff_build_ldsyms): Use xcoff_auto_export_p to decide whether
+ a function should be automatically exported.
+ (bfd_xcoff_size_dynamic_sections): Replace the export_defineds
+ parameter with an auto_export_flags parameter. Update ldinfo
+ accordingly. Use xcoff_mark_auto_exports to mark all automatically-
+ exported symbols.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * xcofflink.c (xcoff_mark_symbol_by_name): New function.
+ (bfd_xcoff_size_dynamic_sections): Use it to mark the entry,
+ init and fini functions. Do garbage collection for objects
+ without an entry point too.
+
+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