2008-11-27  M R Swami Reddy <MR.Swami.Reddy@nsc.com>

        * emultempl/cr16elf.em (cr16_after_open): New function to handle
	CR16 ELF embedded reloc creation (ld --embedded-relocs).
	(check_sections): New function.
	(LDEMUL_AFTER_OPEN): Define.
	* emulparams/elf32cr16.sh (EMBEDDED): Define.

2008-11-26  Alan Modra  <amodra@bigpond.net.au>

	PR 7047
	* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): Update
	for changes to struct bfd_elf_version_expr.
	* ldlang.c (lang_vers_match, version_expr_head_hash): Likewise.
	(version_expr_head_eq, lang_finalize_version_expr_head): Likewise.
	(lang_register_vers_node): Likewise.
	(lang_new_vers_pattern): Likewise.  Ensure "literal" is set when
	no glob chars found in "pattern".
	(realsymbol): Correct backslash quote logic.
	* ld.texinfo (VERSION): Warn about global wildcards.

2008-11-24  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.c (lang_record_phdrs): Don't add orphans to PT_INTERP header.

2008-11-19  Nick Clifton  <nickc@redhat.com>

	* fdl.texi: Update to v1.3
	* ld.texinfo: Change license to v1.3.

2008-11-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.tgt [spu-*-elf*]: Set NATIVE_LIB_DIRS to '/lib'.

2008-11-17  Nick Clifton  <nickc@redhat.com>

	* ldver.c: Update copyright year.

2008-11-14  Kai Tietz  <kai.tietz@onevision.com>

	* emultempl/pep.em (..._before_parse): initialize
	pei386_runtime_pseudo_reloc by version 2.
	(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V1): New option.
	(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V2): New option.
	(make_import_fixup): Use relocation size to read addend.
	* emultempl/pe.em (..._before_parse): initialize 
	pei386_runtime_pseudo_reloc by version 1.
	(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V1): New option.
	(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V2): New option.
	* pe-dll.c (pe-dll.h): Remove useless include.
	(make_runtime_pseudo_reloc): Change addend to use bfd_vma.
	Handle the two variants of pseudo-relocation.
	(pe_create_import_fixup): Change addend to type bfd_vma.
	Modify for the two pseudo_relocation variants.
	(runtime_pseudp_reloc_v2_init): New static variable.
	* pe-dll.h (pe_create_import_fixup): Change addend argument type 
	to bfd_vma.
	* pep-dll.h (pep_create_import_fixup): Likewise.
	* NEWS: Add comment.

2008-11-14  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am (spu_ovl.o_c): Add missing line continuations.
	* Makefile.in: Regenerate.

2008-11-06  Joel Sherrill <joel.sherrill@oarcorp.com>

	* configure.tgt: Add m32c-*-rtems* and m32r-*-rtems*.

2008-11-03  Bob Wilson  <bob.wilson@acm.org>

	* emulparams/elf32xtensa.sh (NO_REL_RELOCS): Set.
	* scripttempl/elfxtensa.sc (NO_REL_RELOCS, NO_RELA_RELOCS)
	(NON_ALLOC_DYN): Import changes from elf.sc.

2008-10-25  Nick Clifton  <nickc@redhat.com>

	PR 6945
	* ldlang.c (lang_size_sections_1): Do not update the VMAs of
	output sections when performing a relocatable link on COFF
	objects.

2008-10-22  Nick Clifton  <nickc@redhat.com>

	* emultempl/armelf.em (arm_elf_after_open): Move check for using a
	non-arm output target from here...
	(arm_elf_create_output_section_statements): ... to here, so that
	the check is made at the earliest possible opportunity.

2008-10-22  Alan Modra  <amodra@bigpond.net.au>

	* emulparams/elf32_i960.sh (TEMPLATE_NAME): "generic", not "elf32".
	(EXTRA_EM_FILE): Define.

2008-10-22  Alan Modra  <amodra@bigpond.net.au>

	* scripttempl/elf.sc (NO_REL_RELOCS, NO_RELA_RELOCS, NON_ALLOC_DYN): 
	Handle these defines.
	* emulparams/criself.sh, * emulparams/crislinux.sh,
	* emulparams/elf32am33lin.sh, * emulparams/elf32fr30.sh,
	* emulparams/elf32_i860.sh, * emulparams/elf32ip2k.sh,
	* emulparams/elf32mcore.sh, * emulparams/elf32ppccommon.sh,
	* emulparams/elf32ppcwindiss.sh, * emulparams/elf32_sparc.sh,
	* emulparams/elf32_spu.sh, * emulparams/elf32vax.sh,
	* emulparams/elf64alpha.sh, * emulparams/elf64mmix.sh,
	* emulparams/elf64ppc.sh, * emulparams/elf64_s390.sh,
	* emulparams/elf64_sparc.sh, * emulparams/elf_s390.sh,
	* emulparams/elf_x86_64.sh, * emulparams/h8300elf.sh,
	* emulparams/hppa64linux.sh, * emulparams/hppalinux.sh,
	* emulparams/m68kelf.sh, * emulparams/mn10200.sh,
	* emulparams/pjelf.sh, * emulparams/ppclynx.sh,
	* emulparams/shelf32.sh, * emulparams/shelf_nto.sh,
	* emulparams/shelf.sh, * emulparams/shelf_vxworks.sh,
	* emulparams/shlelf32_linux.sh, * emulparams/shlelf_linux.sh,
	* emulparams/shlelf_nto.sh (NO_REL_RELOCS): Set.
	* emulparams/arcelf.sh, * emulparams/elf32_i960.sh,
	* emulparams/elf32openrisc.sh, * emulparams/elf_i386_be.sh,
	* emulparams/elf_i386_ldso.sh, * emulparams/elf_i386.sh,
	* emulparams/elf_i386_vxworks.sh, * emulparams/i386lynx.sh,
	* emulparams/i386moss.sh, * emulparams/i386nto.sh,
	* emulparams/or32elf.sh, * emulparams/scoreelf.sh (NO_RELA_RELOCS): Set.

2008-10-22  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.c (lang_output_section_find_by_flags): Handle non-alloc
	sections.
	* emultempl/elf32.em (enum orphan_save_index): Add orphan_nonalloc.
	(hold): Likewise.
	(gld${EMULATION_NAME}_place_orphan): Handle non-alloc orphans.

2008-10-22  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	* emultempl/armelf.em (PARSE_AND_LIST_OPTIONS): Correct typo in
	help text of --be8.

2008-10-20  Alan Modra  <amodra@bigpond.net.au>

	* ldemul.h (ldemul_place_orphan): Update prototype.
	(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
	* ldemul.c (ldemul_place_orphan): Return pointer to output
	section statement.
	* emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Likewise.
	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.

2008-10-08  Nick Clifton  <nickc@redhat.com>

	* configure.in (ALL_LINGUAS): Add "id".
	* configure: Regenerate.
	* po/id.po: New Indonesian translation.

2008-10-05  Alan Modra  <amodra@bigpond.net.au>

	PR 6943
	* scripttempl/avr.sc (.bss): Set lma when relocating.
	(.bss, .noinit): No need to set vma when relocating.
	(.text, .bss, ,noinit): Set vma to zero when not relocating.

2008-10-04  Alan Modra  <amodra@bigpond.net.au>

	PR 6931
	* ldemul.c (ldemul_place_orphan): Add "constraint" param.
	* ldemul.h (ldemul_place_orphan): Update prototype.
	(struct ld_emulation_xfer_struct <place_orphan>): Likewise add param.
	* ldlang.c (unique_section_p): Make static.
	(lang_output_section_statement_lookup): Optimise creation of SPECIAL
	sections.
	(lang_insert_orphan): Add "constraint" param.  Pass to
	lang_enter_output_section_statement.
	(init_os): Don't use an existing bfd section for SPECIAL sections.
	(lang_place_orphans): Don't rename unique output sections, instead
	mark their output section statements SPECIAL.
	* ldlang.h (lang_insert_orphan): Update prototype.
	(unique_section_p): Delete.
	* emultempl/beos.em (place_orphan): Add "constraint" param.
	* emultempl/elf32.em (place_orphan): Likewise.  Don't match existing
	output sections if set.
	* emultempl/pe.em (place_orphan): Likewise.
	* emultempl/pep.em (place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Update.
	* emultempl/spuelf.em (spu_place_special_section): Update.

2008-10-03  Alan Modra  <amodra@bigpond.net.au>

	PR 6931
	* ldemul.c (ldemul_place_orphan): Add "name" param.
	* ldemul.h (ldemul_place_orphan): Update prototype.
	(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
	* ldlang.c (lang_place_orphans): Generate unique section names here..
	* emultempl/elf32.em (place_orphan): ..rather than here.  Don't
	directly use an existing output section statement that has no
	bfd section.
	* emultempl/pe.em (place_orphan): Likewise.
	* emultempl/pep.em (place_orphan): Likewise.
	* emultempl/beos.em (place_orphan): Adjust.
	* emultempl/spuelf.em (spu_place_special_section): Adjust
	place_orphan call.
	* emultempl/genelf.em (gld${EMULATION_NAME}_after_open): New function.
	(LDEMUL_AFTER_OPEN): Define.

2008-09-30  Joseph Myers  <joseph@codesourcery.com>

	* emulparams/elf64ppc.sh (OTHER_GOT_RELOC_SECTIONS): Add .rela.opd
	and .rela.branch_lt.

2008-09-30  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: Run "make dep-am".
	* Makefile.in: Regenerate.

2008-09-29  Peter O'Gorman  <pogma@thewrittenword.com>
	    Steve Ellcey  <sje@cup.hp.com>

	* configure: Regenerate for new libtool.
	* aclocal.m4: Ditto.
	* Makefile.in: Ditto.

2008-09-29  Kai Tietz  <kai.tietz@onevision.com>

	* pe-dll.c (make_import_fixup_entry): Make sure reloc is addend.

2008-09-29  Nick Clifton  <nickc@redhat.com>

	* po/vi.po: Updated Vietnamese translation.

2008-09-25  Alan Modra  <amodra@bigpond.net.au>

	* ldexp.c (fold_binary): Evaluate rhs when lhs not valid.

2008-09-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.in: Call AC_SYS_LARGEFILE.
	* config.in: Regenerate.
	* configure: Regenerate.

2008-09-09  Peter Rosin  <peda@lysator.liu.se>  (tiny change)

	* emultempl/pe.em (pe_find_data_imports): Add trailing newline
	to warning message.
	* emultempl/pep.em (pep_find_data_imports): Likewise.

2008-09-08  H.J. Lu  <hongjiu.lu@intel.com>

	2008-09-07  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Updated.
	* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Likewise.

2008-09-08  Tristan Gingold  <gingold@adacore.com>

	* NEWS: Add a marker for the 2.19 features.

2008-09-07  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.h (lang_output_section_find): Define.
	(lang_output_section_statement_lookup): Update prototype.
	* ldlang.c (lang_output_section_find,
	lang_output_section_statement_lookup_1): Merge into..
	(lang_output_section_statement_lookup): ..here.  Update all callers.
	(process_insert_statements): Set constraint negative
	for output section statements we might be inserting.  Make error
	fatal on not finding insertion section.
	(lang_output_section_find): Rather than comparing
	output_section_statement.constraint against -1, test whether
	it is postive.
	(lang_output_section_statement_lookup_1): Likewise.
	(output_prev_sec_find, strip_excluded_output_sections): Likewise.
	(lang_record_phdrs): Likewise.
	* emultempl/elf32.em (output_rel_find): Likewise.
	* NEWS: Mention INSERT.

2008-08-26  Nick Clifton  <nickc@redhat.com>

	PR 6727
	* emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Scan all
	input sections in all input bfds and always select the last
	suitable one, so that interworking stubs are always processed
	after all other input sections.
	(arm_elf_before_allocation): Remove redundant use of
	output_has_begun flag.

2008-08-24  Alan Modra  <amodra@bigpond.net.au>

	* configure.in: Update a number of obsolete autoconf macros.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.

2008-08-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR ld/6833
	* ldexp.c (fold_binary <DATA_SEGMENT_ALIGN>): Do not align
	EXPLD.DATASEG.MIN_BASE.
	* ldlang.c (lang_size_sections): New variable OLD_BASE.  Rename
	OLD_MIN_BASE to MIN_BASE with the former alignment from `ldexp.c'.
	Use OLD_BASE now for the minimal base check after the base decrease by
	the maximum alignment found.

2008-08-17  Alan Modra  <amodra@bigpond.net.au>

	PR 6478
	* ldcref.c (check_local_sym_xref): Use bfd_generic_link_read_symbols.
	Don't free symbol pointer array.
	(check_refs): Likewise.
	* ldmain.c (warning_callback): Likewise.
	* ldmisc.c (vfinfo): Likewise.
	* pe-dll.c (process_def_file): Likewise.
	(pe_walk_relocs_of_symbol, generate_reloc): Likewise.
	* emultempl/pe.em (pe_find_data_imports): Likewise.
	(gld_${EMULATION_NAME}_after_open): Likewise.
	* emultempl/pep.em (pep_find_data_imports): Likewise.
	(gld_${EMULATION_NAME}_after_open): Likewise.
	* ldlang.h (lang_input_statement_type): Delete asymbols, symbol_count,
	passive_position, closed.
	* ldlang.c (new_afile): Don't set asymbols and symbol_count.
	* ldmain.c (add_archive_element): xcalloc lang_input_statement_type.

2008-08-15  Alan Modra  <amodra@bigpond.net.au>

	PR 6526
	* configure.in: Invoke AC_USE_SYSTEM_EXTENSIONS.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* config.in: Regenerate.
	* configure: Regenerate.

2008-08-09  Alan Modra  <amodra@bigpond.net.au>

	PR 6753
	* ldmain.c (check_for_scripts_dir, set_scripts_dir): Delete.
	(main): Don't set_scripts_dir here.
	* ldfile.c (check_for_scripts_dir, find_scripts_dir): New functions,
	largely based on ldmain.c versions.
	(ldfile_find_command_file): Set up search in script dir here without
	affecting library search.
	* Makefile.am (ldmain.o): No need to define SCRIPTDIR.
	(ldfile.o): New rule.
	* Makefile.in: Regenerate.

2008-08-08  Anatoly Sokolov  <aesok@post.ru>

	* Makefile.am (ALL_EMULATIONS): Add eavr25.o, eavr31.o, eavr35.o,
	and eavr51.o.
	Add rules for eavr25.c, eavr31.c, eavr35.c, eavr51.c.
	* Makefile.in: Regenerate.
	* configure.tgt (avr-*-*, targ_extra_emuls): Add avr25, avr31, avr35
	and avr51.
	* emulparams/avr25.sh: New file.
	* emulparams/avr31.sh: New file.
	* emulparams/avr35.sh: New file.
	* emulparams/avr51.sh: New file.

2008-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* emulparams/elf32bmip.sh (GOT): Define, moving .got.plt to...
	(OTHER_RELRO_SECTIONS, OTHER_READWRITE_SECTIONS): ...one of these
	two variables.
	* emulparams/elf32bmipn32-defs.sh: Likewise.
	* emultempl/mipself.em: Include ldctor.h, elf/mips.h and elfxx-mips.h.
	(is_mips_elf): New macro.
	(stub_file, stub_bfd): New variables.
	(hook_stub_info): New structure.
	(hook_in_stub): New function.
	(mips_add_stub_section): Likewise.
	(mips_create_output_section_statements): Likewise.
	(mips_before_allocation): Likewise.
	(real_func): New variable.
	(mips_for_each_input_file_wrapper): New function.
	(mips_lang_for_each_input_file): Likewise.
	(lang_for_each_input_file): Define.
	(LDEMUL_BEFORE_ALLOCATION): Likewise.
	(LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Likewise.

2008-08-08  Alan Modra  <amodra@bigpond.net.au>

	* ldfile.c (ldfile_open_file_search): Use concat.
	(try_open): Don't use a fixed size pathname buffer.
	(ldfile_find_command_file): Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive): If
	using EXTRA_SHLIB_EXTENSION, don't open twice.

2008-08-04  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am (POTFILES.in): Set LC_ALL=C.
	* Makefile.in: Regenerate.
	* po/POTFILES.in: Regenerate.

2008-08-03  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am (spu_ovl.o): Merge rule into..
	(spu_ovl.o_c): ..this one.  Only run cpp for spu target.
	* Makefile.in: Regenerate.

2008-08-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Include the spu_ovl ASCII form in the repository files.
	* emultempl/spuelf.em: No longer use `bin2c', use now `spu_ovl.o_c'.
	* Makefile.am (eelf32_spu.c): Depend now on `spu_ovl.o_c'.
	($(srcdir)/emultempl/spu_ovl.o_c): New target.
	($(srcdir)/emultempl/spu_ovl.o): Rename to...
	(spu_ovl.o): ...this one.
	* Makefile.in: Regenerate.
	* emultempl/spu_ovl.o_c: New file.
	* emultempl/spu_ovl.o: File removed.

2008-07-31  Takashi Ono  <t_ono@hkfreak.net>

	* pe-dll.c (generate_relocs): Don't generate relocs for
	undefined weak symbols.

2008-07-31  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* emultempl/spuelf.em: Abort on the missing required `spu_ovl.o'.

2008-07-30  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/pe.em, emultempl/pep.em: Silence gcc warnings.

2008-07-18  Joseph Myers  <joseph@codesourcery.com>

	* ld.texinfo (--no-wchar-size-warning): Document new ARM option.
	* emultempl/armelf.em (no_wchar_size_warning): New.
	(arm_elf_create_output_section_statements): Pass
	no_wchar_size_warning to arm_elf_create_output_section_statements.
	(OPTION_NO_WCHAR_SIZE_WARNING): New.
	(PARSE_AND_LIST_LONGOPTS): Add no-wchar-size-warning.
	(PARSE_AND_LIST_OPTIONS): List --no-wchar-size-warning.
	(PARSE_AND_LIST_ARGS_CASES): Handle --no-wchar-size-warning.

2008-07-15  Jie Zhang  <jie.zhang@analog.com>

	* emulparams/elf32bfinfd.sh (OTHER_SECTIONS): Define.

2008-07-12  Craig Silverstein  <csilvers@google.com>

	PR ld/6741
	* configure.in: Check for, and include, libz.a if it is present.
	* configure: Regenerate.
	* config.in: Regenerate.

2008-07-12  Jie Zhang  <jie.zhang@analog.com>

	Revert
	2008-07-12  Jie Zhang  <jie.zhang@analog.com>
	* Makefile.am (eelf32bfin.c): Depend on bfin.em.
	(eelf32bfinfd.c): Likewise.
	* Makefile.in: Regenerate.
	* gen-doc.texi: Set Blackfin.
	* ld.texinfo: Document --sep-code and Blackfin specific
	options.
	* ldmain.c (main): Initialize link_info.sep_code.
	* lexsup.c (enum option_values): Add OPTION_SEP_CODE.
	(ld_options[]): Add --sep-code.
	(parse_args): Deal with --sep-code.
	* emulparams/bfin.sh (EXTRA_EM_FILE): Define.
	* emulparams/elf32bfinfd.sh (OTHER_SECTIONS): Define.
	* emultempl/bfin.em: New file.

2008-07-12  Jie Zhang  <jie.zhang@analog.com>

	* Makefile.am (eelf32bfin.c): Depend on bfin.em.
	(eelf32bfinfd.c): Likewise.
	* Makefile.in: Regenerate.
	* gen-doc.texi: Set Blackfin.
	* ld.texinfo: Document --sep-code and Blackfin specific
	options.
	* ldmain.c (main): Initialize link_info.sep_code.
	* lexsup.c (enum option_values): Add OPTION_SEP_CODE.
	(ld_options[]): Add --sep-code.
	(parse_args): Deal with --sep-code.
	* emulparams/bfin.sh (EXTRA_EM_FILE): Define.
	* emulparams/elf32bfinfd.sh (OTHER_SECTIONS): Define.
	* emultempl/bfin.em: New file.

2008-07-09  Danny Smith  <dannysmith@users.sourceforge.net>

           *pe-dll.c (autofilter_symbolprefixlist): Excude all symbols
           starting with ".".
           Exclude "_IMPORT_DESCRIPTOR_".
           (autofilter_symbolsuffixlist): Exclude "_NULL_THUNK_DATA".
           (autofilter_symbollist_generic): Don't check for ".text".
           Exclude "_NULL_IMPORT_DESCRIPTOR".
           (autofilter_symbollist_i386): Likewise.

2008-07-07  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/armelf.em (elf32_arm_add_stub_section): Use
	bfd_make_section_with_flags.
	* emultempl/avrelf.em (avr_elf_create_output_section_statements):
	Likewise.
	* emultempl/hppaelf.em (hppaelf_add_stub_section): Likewise.
	* emultempl/m68hc1xelf.em (m68hc11elf_add_stub_section): Likewise.
	* emultempl/m68kcoff.em (gld${EMULATION_NAME}_after_open): Likewise.
	* emultempl/m68kelf.em (m68k_elf_after_open): Likewise.
	* emultempl/ppc64elf.em (ppc_add_stub_section): Likewise.
	* emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_before_allocation):
	Likewise.

2008-07-06  Nathan Sidwell  <nathan@codesourcery.com>

	* ld.texinfo (File Commands): Document that INCLUDE can be used in
	several different places.
	* ldgram.y (statement, memory_spec, section): Allow INCLUDE.
	(memory, memory_spec_list): Simplify BNF
	(memory_spec_list_opt): New rule.
	* ldlex.l (INCLUDE): Recognize in EXPRESSION.

2008-06-20  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Make "can not
	build overlay stubs" a fatal error.

2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Regenerate.

2008-06-17  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em (extra_stack_space): New variable.
	(gld${EMULATION_NAME}_finish): Pass it to spu_elf_check_vma.
	(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
	PARSE_AND_LIST_ARGS_CASES): Handle --extra-stack-space.
	* emultempl/spu_ovl.S: Mask interrupts during dma and update of
	overlay manager structures.
	* emultempl/spu_ovl.o: Regenerate.

2008-06-16  Hans-Peter Nilsson  <hp@bitrange.com>

	* ld.texinfo (@node MMIX): For the __.MMIX.start. prefix, only
	mention it as being special for global symbols.

2008-06-12  Nick Clifton  <nickc@redhat.com>

	* ldlang.c (print_output_section_statement): If the output section
	statement has an update_dot_tree expression, apply it to
	print_dot.
	(print_input_section): Do not update print_dot if it would move
	print_dot backwards.
	(lang_do_assignments_1): If the output section statement has an
	update_dot_tree expression apply it to dot.

2008-06-07  Alan Modra  <amodra@bigpond.net.au>

	* NEWS: Mention archive:path patterns.
	* ld.texinfo: Likewise.
	* ldlang.c: Formatting throughout.
	(archive_path): Only assume "[A-Za-z]:" is a dos drive.
	(input_statement_is_archive_path): New function, extracted from..
	(walk_wild): ..here.
	(walk_wild_consider_section): Match archive:path here too.
	(init_map_userdata, sort_def_symbol): Convert to ISO C.
	* ldmain.c (main): Set link_info.path_separator.
	* emultempl/spuelf.em (choose_target): Don't set it here.

2008-06-06  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.c (name_match): New function.
	(unique_section_p, walk_wild_consider_section): Use it here.
	(walk_wild_section_general): And here.
	(archive_path): New function.
	(walk_wild): Match archive:path filespecs.
	(open_input_bfds): Don't load archive:path files.
	* emultempl/spuelf.em (choose_target): Set path_separator.
	* emulparams/elf32_spu.sh: Add ._ea.* sections to ._ea output.

2008-06-04  Nick Clifton  <nickc@redhat.com>

	* ld.texinfo (Orphan Sections): Fix texi typo.

2008-06-04  Chris Metcalf  <cmetcalf@tilera.com>

	* lexsup.c (option_values): Add OPTION_NO_WARN_FATAL.
	(ld_options): Add entry for --no-fatal-warnings.
	(parse_args): Handle OPTION_NO_WARN_FATAL.
	* ld.texinfo (Options): Document new command line switch.

2008-06-04  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em (spu_elf_relink): Correct --no-auto-overlay arg.

2008-06-02  Nathan Sidwell  <nathan@codesourcery.com>

	* ldlang.c (closest_target_match): Skip generic big and little
	endian ELF targets.

2008-05-31  Evandro Menezes  <evandro@yahoo.com>

	PR ld/6430
	* ld.h (enum sort_order): New.
	* ldlang.c (lang_check: Fix comment.
	(lang_common): Sort commons in ascending or descending order.
	(lang_one_common): Likewise.
	* lexsup.c (ld_options): Have --sort-common take an option
	argument.
	(parse_args): Handle argument to --sort-common.
	* ld.texinfo (--sort-common): Document new optional argument.
	* NEWS: Mention new feature.

2008-05-28  Christophe Lyon  <christophe.lyon@st.com>

	* ld.texinfo: State that farcalls stubs are supported for ARM-EABI
	only.

2008-05-27  Kai Tietz  <kai.tietz@onevision.com>

	* pe-dll.c (fill_edata): Make sure we calculate vma's in
	type bfd_vma.
	(generate_reloc): Likewise.
	(pe_implied_import_dll): Likewise.

2008-05-21  Nick Clifton  <nickc@redhat.com>

	PR ld/6519
	* ld.texinfo (Orphan Sections): Mention that the linker will
	provide start and stop symbols for orphaned sections if their
	names are valid C identifiers.
	* NEWS: Add an addendum to the description of the linker feature
	for providing orphan section start and end symbols.

2008-05-21  Maxim Kuvyrkov  <maxim@codesourcery.com>

	* configure.in (--enable-got): New option.  Handle it.
	* configure: Regenerate.
	* config.in: Regenerate.
	* emultempl/m68kelf.em: (got_handling_target_default): New shell
	variable.
	(GOT_HANDLING_TARGET_DEFAULT): New macro.
	(GOT_HANDLING_DEFAULT): New macro.  Initialize it from configure
	option if one was given.
	(got_handling): New static variable.
	(elf_m68k_create_output_section_statements): New static function
	implementing hook.
	(PARSE_AND_LIST_PROLOGUE): Define shell variable.
	(OPTION_GOT): New macro.
	(PARSE_AND_LIST_LONGOPTS): Define shell variable.  Specify
	--got option.
	(got): New linker option.
	(PARSE_AND_LIST_OPTIONS): Define shell variable.  Print help string
	for --got option.
	(PARSE_AND_LIST_ARGS_CASES): Define shell variable.  Handle --got
	option.
	* ld.texinfo: Document --got=<type> option.
	* gen-doc.texi: Add M68K.
	* NEWS: Mention the new feature.

2008-05-21  Evandro Menezes  <evandro@yahoo.com>

	PR ld/6430
	* ld.texinfo (--sort-common): Correct documentation to indicate
	that sorting is performed by alignment, not size, biggest
	alignment first.

2008-05-21  Christophe Lyon  <christophe.lyon@st.com>
	    Nick Clifton  <nickc@redhat.com>

	* ld.texinfo (ARM): Document --stub-group-size=N option.
	Move description of --pic-veneer option into the ARM section.
	* NEWS: Mention the support for long function calls.

2008-05-15  Christophe Lyon  <christophe.lyon@st.com>

	* emultempl/armelf.em (build_section_lists): New function.
	(stub_file): Define.
	(need_laying_out): Define.
	(group_size): Define.
	(hook_stub_info): Define.
	(hook_in_stub): New function.
	(elf32_arm_add_stub_section): New function.
	(gldarm_layout_sections_again): New function.
	(gld${EMULATION_NAME}_finish): Replace arm_elf_finish(). Generate
	stubs for long calls if needed.
	(arm_elf_create_output_section_statements): create stub_file bfd.
	(arm_for_each_input_file_wrapper): New function.
	(arm_lang_for_each_input_file): New function.
	(lang_for_each_input_file): Define.
	(PARSE_AND_LIST_PROLOGUE): Add option token OPTION_STUBGROUP_SIZE.
	(PARSE_AND_LIST_LONGOPTS): Add option stub-group-size.
	(PARSE_AND_LIST_OPTIONS): Add option stub-group-size.
	(PARSE_AND_LIST_ARGS_CASES): Add OPTION_STUBGROUP_SIZE case.
	(LDEMUL_FINISH): Update to gld${EMULATION_NAME}_finish.
	* lang.c (print_input_statement): Skip if bfd has
	BFD_LINKER_CREATED.

2008-05-14  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.in: Regenerate.

2008-05-09  Kai Tietz  <kai.tietz@onevision.com>

	ld/PR6502
	* emultempl/pep.em (compute_dll_image_base): Use bfd_vma instead
	of long and change return type to bfd_vma.
	(definfo): Change type of address from long to bfd_vma.
	(set_pep_value): Replace strtoul to strtoull.
	(gld_${EMULATION_NAME}_set_symbols): use bfd_vma instead of long..
	* pe-dll.c (pe_dll_generate_def_file): Use fprintf_vma to print
	ImageBase.
	(quick_reloc): Change argument address from int to bfd_size_type.

2008-05-08  Tom Tromey  <tromey@redhat.com>

	* ld.texinfo (PowerPC64 ELF64): Fix typo.

2008-05-08  Alan Modra  <amodra@bigpond.net.au>

	* elf32_spu.sh (OTHER_SECTIONS): Add "._ea".
	* elf32ppc.sh: If building with spu support, put ".data.spehandle"
	sections at the start of ".data" and provide a symbol to locate
	the directory of embedded spe programs.

2008-05-08  Alan Modra  <amodra@bigpond.net.au>

	* ldexp.c (exp_print_token): Add ABSOLUTE, MIN_K, ASSERT_K.  Correct
	MAX_K.
	(fold_binary <SEGMENT_START>): Set expld.result.section to
	current section.  Expand comment.  Formatting.
	(fold_name <DEFINED>): Set expld.result.section to current section.

2008-04-28  Nathan Sidwell  <nathan@codesourcery.com>

	* ldlang.c (lang_size_sections_1): Don't check LMA overflow on
	non-load sections.

2008-04-25  Michael Frysinger  <vapier@gentoo.org>

	* configure.tgt (bfin-*-linux-uclibc*): Set targ_emul to elf32bfinfd
	and targ_extra_emuls to elf32bfin.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2008-04-03  Kai Tietz  <kai.tietz@onevision.com>

	* scripttempl/pep.sc: Align start of symbol __CTOR_LIST__.

2008-04-08  Alan Modra  <amodra@bigpond.net.au>

	* po/POTFILES.in: Regenerate.

2008-04-08  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em (auto_overlay, auto_overlay_file,
	auto_overlay_fixed, auto_overlay_reserved, my_argc, my_argv): New vars.
	(spu_before_allocation): Warn on --auto-overlay and existing overlays.
	(struct tflist, clean_tmp): Move.
	(new_tmp_file): New function, extracted from..
	(embedded_spu_file): ..here.
	(spu_elf_open_overlay_script, spu_elf_relink): New function.
	(gld${EMULATION_NAME}_finish): Pass a bunch of --auto-overlay params.
	Warn on --auto-overlay and zero local store.
	(gld${EMULATION_NAME}_choose_target): New function to stash argv.
	(OPTION_SPU_AUTO_OVERLAY, OPTION_SPU_AUTO_RELINK,
	OPTION_SPU_OVERLAY_RODATA, OPTION_SPU_FIXED_SPACE,
	OPTION_SPU_RESERVED_SPACE, OPTION_SPU_NO_AUTO_OVERLAY): Define.
	(PARSE_AND_LIST_LONGOPTS): Add entries for new options.
	(PARSE_AND_LIST_OPTIONS): Likewise.
	(PARSE_AND_LIST_ARGS_CASES): Likewise.
	(LDEMUL_CHOOSE_TARGET): Define.

2008-04-03  Kai Tietz  <kai.tietz@onevision.com>

	PR ld/6026
	* pe-dll.c (make_head): Fix iat and thunk addend offset.

2008-03-31  Nick Clifton  <nickc@redhat.com>

	* po/fr.po: Updated French translation.

2008-03-24  Ian Lance Taylor  <iant@google.com>

	The sha1 code is now in libiberty.
	* sha1.c: Remove.
	* sha1.h: Remove.
	* Makefile.am (CFILES): Remove sha1.c.
	(HFILES): Remove sha1.h.
	(OFILES): Remove sha1.o.
	(ld_new_SOURCES): Remove sha1.c.
	(sha1.o): Remove target.
	* Makefile.in: Rebuild.

2008-03-20  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em: Update calls to elf32-spu.c funcs.

2008-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* aclocal.m4: Regenerate.
	* configure: Likewise.
	* Makefile.in: Likewise.

2008-03-14  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Protect
	spu_elf_build_stubs with is_spu_target.

2008-03-13  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: Run "make dep-am".
	* Makefile.in: Regenerate.
	* configure: Regenerate.

2008-03-06  Joseph Myers  <joseph@codesourcery.com>
	    Roman Zippel  <zippel@linux-m68k.org>

	* emulparams/m68kelf.sh (GENERATE_PIE_SCRIPT): Define.
	(COMMONPAGESIZE): Define.

2008-02-22  Nick Clifton  <nickc@redhat.com>

	PR ld/5785
	* ldlang.c (lang_size_sections_1): Honour the setting of an
	lma_region even if there is no vma region set, or the vma region
	is the same as the lma region.

2008-02-18  Nick Clifton  <nickc@redhat.com>

	* scripttempl/armbpabi.sc (ENTRY): Do not define when performing a
	relocatable link.
	* scripttempl/elf32cr16.sc: Likewise.
	* scripttempl/elf32cr16c.sc: Likewise.
	* scripttempl/elf32crx.sc: Likewise.
	* scripttempl/elf32sh-symbian.sc: Likewise.
	* scripttempl/elf_chaos.sc: Likewise.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfi370.sc: Likewise.
	* scripttempl/elfm68hc11.sc: Likewise.
	* scripttempl/elfm68hc12.sc: Likewise.
	* scripttempl/ip2k.sc: Likewise.
	* scripttempl/iq2000.sc: Likewise.
	* scripttempl/mep.sc: Likewise.
	* scripttempl/v850.sc: Likewise.
	* scripttempl/xstormy16.sc: Likewise.

2008-02-16  Alan Modra  <amodra@bigpond.net.au>

	PR ld/5761
	* ldexp.c (fold_name <LOADADDR>): Check result of evaluating
	load_base before calling make_abs.

2008-02-15  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/alphaelf.em (alpha_after_open): Use elf_object_id.
	* emultempl/hppaelf.em (hppaelf_create_output_section_statements):
	Likewise.
	* emultempl/ppc64elf.em (ppc_create_output_section_statements):
	Likewise.
	* emultempl/ppc32elf.em (is_ppc_elf32_vec): Delete.  Replace all
	uses with..
	(is_ppc_elf): ..this new macro.

2008-02-15  Alan Modra  <amodra@bigpond.net.au>

	* ldmain.h (output_bfd): Delete.
	* ldmain.c (output_bfd): Delete.
	Replace all occurrences of output_bfd with link_info.output_bfd.
	* ldcref.c: Likewise.
	* ldctor.c: Likewise.
	* ldemul.c: Likewise.
	* ldexp.c: Likewise.
	* ldfile.c: Likewise.
	* ldlang.c: Likewise.
	* ldmisc.c: Likewise.
	* ldwrite.c: Likewise.
	* pe-dll.c: Likewise.
	* emultempl/aix.em: Likewise.
	* emultempl/alphaelf.em: Likewise.
	* emultempl/armcoff.em: Likewise.
	* emultempl/armelf.em: Likewise.
	* emultempl/avrelf.em: Likewise.
	* emultempl/beos.em: Likewise.
	* emultempl/elf-generic.em: Likewise.
	* emultempl/elf32.em: Likewise.
	* emultempl/gld960.em: Likewise.
	* emultempl/hppaelf.em: Likewise.
	* emultempl/irix.em: Likewise.
	* emultempl/linux.em: Likewise.
	* emultempl/lnk960.em: Likewise.
	* emultempl/m68hc1xelf.em: Likewise.
	* emultempl/mmix-elfnmmo.em: Likewise.
	* emultempl/mmo.em: Likewise.
	* emultempl/pe.em: Likewise.
	* emultempl/pep.em: Likewise.
	* emultempl/ppc32elf.em: Likewise.
	* emultempl/ppc64elf.em: Likewise.
	* emultempl/scoreelf.em: Likewise.
	* emultempl/sh64elf.em: Likewise.
	* emultempl/spuelf.em: Likewise.
	* emultempl/sunos.em: Likewise.
	* emultempl/vanilla.em: Likewise.
	* emultempl/vxworks.em: Likewise.
	* emultempl/xtensaelf.em: Likewise.
	* emultempl/z80.em: Likewise.
	* ldlang.c (open_output): Don't return output, instead write
	link_info_output_bfd directly.
	* emultempl/alphaelf.em: Replace occurrences of link_info.hash->creator
	with link_info.output_bfd->xvec.
	* emultempl/hppaelf.em: Likewise.
	* emultempl/ppc32elf.em: Likewise.
	* emultempl/ppc64elf.em: Likewise.
	* emultempl/spuelf.em: Likewise.

2008-02-07  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.c (new_afile): Don't pass unadorned NULL to concat.
	* ldfile.c (ldfile_add_library_path): Likewise.
	* emultempl/elf32.em (check_ld_elf_hints, check_ld_so_conf): Likewise.
	* emultempl/lnk960.em (lnk960_before_parse): Likewise.
	* emultempl/spuelf.em (embedded_spu_file): Likewise.

2008-02-07  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spu_ovl.S: Use low bit of _ovly_table.size as
	a "present" bit rather than low bit of .buf.  Correct indexing
	into _ovly_buf_table.  Use relative loads and stores to access
	overlay manager local vars.
	* emultempl/spu_ovl.o: Regenerate.

2008-02-04  H.J. Lu  <hongjiu.lu@intel.com>

	PR 5715
	* configure: Regenerated.

2008-01-31  Marc Gauthier  <marc@tensilica.com>

	* configure.tgt (xtensa*-*-*): Recognize processor variants.

2008-01-28  Fabian Groffen  <grobian@gentoo.org>

	* configure.tgt (x86_64-*-solaris2): Add support for this target.

2008-01-28  Vincent Riviere  <vincent.riviere@freesbee.fr>

	PR ld/5652
	* genscripts.sh: Check for the existence of BASH_LINENO not just
	the BASH shell before generating line numbers in the emulation
	file.

2008-01-28  Alan Modra  <amodra@bigpond.net.au>

	* emultempl/spu_ovl.S: Rewrite.
	* emultempl/spu_ovl.o: Regenerate.
	* emultempl/spuelf.em (toe): Delete.
	(spu_place_special_section): Add param to control section placement.
	Adjust callers.
	(spu_elf_load_ovl_mgr): Adjust for struct _spu_elf_section_data
	changes.
	(spu_before_allocation): Adjust spu_elf_size_stubs call.
	(gld${EMULATION_NAME}_finish): Adjust spu_elf_build_stubs call.

2008-01-25  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/5670
	* ldlang.c (process_insert_statements): Silence gcc 4.1 alias
	warning.

2008-01-25  Alan Modra  <amodra@bigpond.net.au>

	* ld.texinfo (INSERT): Describe.
	* ldgram.y (ldgram_in_script, ldgram_had_equals): Delete.
	(INSERT_K, AFTER, BEFORE): Add as tokens.
	(ifile_p1): Handle INSERT statements.
	(saved_script_handle, force_make_executable): Move to..
	* ldmain.c: ..here.
	(previous_script_handle): New global var.
	* ldmain.h (saved_script_handle, force_make_executable): Declare.
	(previous_script_handle): Likewise.
	* ldlex.l (INSERT_K, AFTER, BEFORE): Add tokens.
	* lexsup.c (parge_args <-T>): Set previous_script_handle.
	* ldlang.c (lang_for_each_statement_worker): Handle insert statement.
	(map_input_to_output_sections, print_statement): Likewise.
	(lang_size_sections_1, lang_do_assignments_1): Likewise.
	(insert_os_after): New function, extracted from..
	(lang_insert_orphan): ..here.
	(process_insert_statements): New function.
	(lang_process): Call it.
	(lang_add_insert): New function.
	* ldlang.h (lang_insert_statement_enum): New.
	(lang_insert_statement_type): New.
	(lang_statement_union_type): Add insert_statement.
	(lang_add_insert): Declare.

2008-01-18  Bob Wilson  <bob.wilson@acm.org>

	* scripttempl/elfxtensa.sc: Merge ENTRY and .note.gnu.build-id
	changes from elf.sc.

2008-01-16  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.c (lang_size_sections_1): Simplify SEC_NEVER_LOAD test.

2008-01-16  Alan Modra  <amodra@bigpond.net.au>

	* ldlang.h (lang_afile_asection_pair_statement_enum): Delete.
	(lang_afile_asection_pair_statement_type): Delete.
	(lang_statement_union_type): Delete afile_asection_pair_statement.
	* ldlang.c (lang_insert_orphan): Delete case handling the above.
	(map_input_to_output_sections, print_statement): Likewise.

2008-01-15  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* emulparams/shlelf_linux.sh (DATA_START_SYMBOLS): Use PROVIDE
	with __data_start.
	* emulparams/shelf_nbsd.sh (DATA_START_SYMBOLS): Likewise.

2008-01-15  Alan Modra  <amodra@bigpond.net.au>

	PR 5604
	* ldlang.c (lang_gc_sections): Move code to set SEC_KEEP on entry
	syms to _bfd_elf_gc_keep.
	* emultempl/ppc64elf.em (ppc_before_allocation): Don't call
	ppc64_elf_edit_opd if no_opd_opt.

2008-01-11  Tristan Gingold  <gingold@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* ldlang.c (lang_end): Warns if the entry point is not found when
	--gc-sections.
	Emit an error if no root is specified when --gc-sections -r.
	* ld.texinfo (Options): Document that --gc-sections is compatible
	with -r and -q.
	* ldmain.c (main): Do not error out if -r and --gc-sections.
	* scripttempl/elf.sc: Emit ENTRY command only if relocating.

2008-01-10  Daniel Jacobowitz  <drow@sources.redhat.com>

	PR ld/5533
	* ldlang.c (lang_end): Issue a warning for a missing start symbol
	of a shared library if the symbol was specified on the command
	line.

2008-01-10  Alan Modra  <amodra@bigpond.net.au>

	* ld.texinfo (--gc-sections): Describe linker behaviour.

For older changes see ChangeLog-2007

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
