1999-12-02  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Fix arm-epoc-pe dependencies.
	* Makefile.in: Regenerate.

	* emulparams/arm_epoc_pe.sh (SCRIPT_NAME): Set to epocpe.

	* scripttempl/epocpe.sc: New file: copy of pe.sc, customised for
	EPOC by placing .rdata into .text.

1999-11-26  Andreas Schwab  <schwab@suse.de>

	* configure.in: Put AC_MSG_CHECKING/AC_MSG_RESULT around check for
	STRINGIFY.  Use yes/no instead of true/false as value for cache
	variable.
	* configure: Regenerate.

1999-11-24  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (IGNORE_SECTION): Section must have both ALLOC and LOAD
	attributes in order to be checked.

1999-11-22  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_check_section_addresses): Fix test to determine
	if a section should be tested.
	(IGNORE_SECTION): New macro.

Wed Nov  3 23:31:19 1999  Jeffrey A Law  (law@cygnus.com)

	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Clean up code to use EXTRA_SHLIB_EXTENSION.

1999-11-03  Nick Clifton  <nickc@cygnus.com>

	* emulparams/elf32mcore.sh (OUTPUT_FORMAT): Change to little endian.
	* emulparams/mcorepe.sh (OUTPUT_FORMAT): Change to little endian.

1999-11-01  Steve Chamberlain  <sac@pobox.com>

	* ldlang.c (section_already_linked): Rework to use hash table.
	(already_linked_newfunc): New function.
	(already_linked_table_init): New function.
	(already_linked_table_free): New function.
	(lang_process): Initialize and free the already_linked hash table.

1999-10-27  Andreas Jaeger  <aj@suse.de>

	* ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
	target "mips*-*-linux-gnu*".

1999-10-27  Scott Bambrough  <scottb@netwinder.org>

	* emultempl/armelf.em: Include ctype.h to prevent compile time
	warnings.

1999-10-26  Nick Clifton  <nickc@cygnus.com>

	* emultempl/armcoff.em (gld{}_finish): Remove extraneous
	underscore from prototype.
	* emultempl/armelf.em (gld{}_finish): Remove extraneous
	underscore from prototype.

1999-10-07  Geoffrey Keating  <geoffk@cygnus.com>

	* scripttempl/elf.sc (.rel.sdata): Combine all the sdata relocs
	being .rel.sdata, .rel.sdata.*, .rel.gnu.linkonce.s*.
	(.rela.sdata): Likewise for .rela.sdata.* and .rela.gnu.linkonce.s*.
	(.rel.sbss): Make like .rel.bss.
	(.rela.sbss): Make like .rel.bss.
	(.sdata): Don't include .gnu.linkonce.s.* or .sdata.* when
	ld -r.
	(.sbss): Do the same things as for .bss: include SDATA_START_SYMBOLS,
	.dynsbss.

1999-09-29  Andrew Haley  <aph@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Defer
	merging sections when not relocating.

1999-09-28  Mumit Khan  <khan@xraylith.wisc.edu>

	* pe-dll.c (process_def_file): Move the offset lookup from here to
	(fill_exported_offsets): here. New static function.
	(fill_edata): Use.

1999-09-28  Mumit Khan  <khan@xraylith.wisc.edu>

	* deffilep.y (tokens): Add upper and lower case versions of DATA,
	CONSTANT, NONAME and PRIVATE tokens.
	(command): Use DATAU.
	(expline): Allow for drectve syntax as well.
	(exp_opt_list): Likewise.
	(exp_opt): Likewise.
	* pe-dll.c (make_one): Only generate the idata entries for data
	symbols.

1999-09-28  Geoffrey Keating  <geoffk@cygnus.com>

	* scripttempl/elf.sc (.sdata): Include .gnu.linkonce.s.* sections
	in .sdata too.

1999-09-26  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/elf.sc (.bss): Accept sections named .bss.*
	(.sbss): Accept sections names .sbss.*

1999-09-22  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Add earm_epoc_pe.c build target.

Sat Sep 18 07:57:10 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (OTHER_READONLY_SYMBOLS): Remove ".stubs",
	they've been renamed to ".stub", which is handled automatically
	by elf.sc.

Fri Sep 17 11:00:33 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Kill completely.
	(DATA_START_SYMBOLS): Kill __hp_load_map definition

Thu Sep 16 10:59:56 1999  Jeffrey A Law  (law@cygnus.com)

	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Use the same filename extension for the bfd_elf_dt_needed_name call
	as we did for finding the library.

	* emulparms/elf64hppa.sh (DATA_START_SYMBOLS): Define.
	(OTHER_READWRITE_SECTIONS): No longer define __hp_load_map.

	* emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Define.

Wed Sep 15 02:47:43 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (SHLIB_TEXT_START_ADDR): Define.
	(SHLIB_DATA_ADDR): Likewise.

	* emulparms/elf64hppa.sh (TEXT_DYNAMIC): Define.

	* emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS):  No longer combine
	the .plt, .dlt, .opd  into a single output section.  Provide values
	for __gp and __hp_load_map.

1999-09-14  Michael Meissner  <meissner@cygnus.com>

	* configure.in (Canonicalization of target names): Remove adding
	${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
	generates $ac_config_sub with a ${CONFIG_SHELL} already.
	* configure: Regenerate.

1999-09-14  Donn Terry  <donn@interix.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_after_open): allow for
	terminating null.

1999-09-14  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Define EXTRA_SHLIB_EXTENSION to ".sl" for HP target.
	* config.in: Add EXTRA_SHLIB_EXTENSION.

	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Search for second shared lib extension only if EXTRA_SHLIB_EXTENSION
	is defined.

1999-09-14  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in: Add earm_epoc_pe.c build target.

Tue Sep 14 05:26:34 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (OTHER_GOT_RELOC_SECTIONS): Add .rela.dlt.

1999-09-13  Donn Terry  <donn@interix.com>

	* emultempl/pe.em: Remove the output file at the start, in case it
	is not writable.

Mon Sep 13 00:17:18 1999  Jeffrey A Law  (law@cygnus.com)

	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Search for file with .sl extension if no file with a .so extension
	is found.

	* emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Put .plt
	at the start of the .dlt output section.

1999-09-12  Ian Lance Taylor  <ian@zembu.com>

	* pe.em: Don't include "../bfd/libbfd.h".
	(gld_${EMULATION_NAME}_after_open): Use xmalloc rather than
	bfd_alloc.

	* pe-dll.h: New file.
	* pe-dll.c: Include "pe-dll.h".  Mark unused arguments as needed
	to avoid warnings.
	(edata_sz, reloc_sz): Change from int to size_t.
	(pe_details_type): Change type of imagebase_reloc from int to
	unsigned int.
	(pe_detail_list): Fully initialize last entry.
	(pe_dll_id_target): Change parameter to const.
	(pe_dll_generate_def_file): Likewise.
	(pe_dll_generate_implib): Likewise.
	(pe_implied_import_dll): Likewise.  Change dll_name to const.
	* emultempl/pe.em: Include "pe-dll.h".  Remove declarations now in
	pe-dll.h.
	(init): Fully initialize __dll__ entry.
	(gld_${EMULATION_NAME}_after_open): Remove unused variables
	sequence, elt, and i.
	* deffile.h: Add preprocessor guard.
	* deffilep.y (def_debug): Remove.
	* Makefile.am: Rebuild dependencies.
	(HFILES): Add pe-dll.h.

1999-09-12  Donn Terry  <donn@interix.com>

	* ld.h (ld_abort): Declare.
	(abort): Define.
	* ldmisc.c (ld_abort): Define.

	* scripttempl/pe.sc: Use ${ENTRY} rather than _mainCRTStartup.
	Move .bss section after .rdata.  Move .reloc section after .rsrc.

	* lexsup.c (parse_args): Use strtoul for --split-by-reloc
	argument.

	* lexsup.c (parse_args): If we get an unrecognized argument,
	mention --help.

	* ldlang.c (section_already_linked): Use comdat information if it
	is available.

	* emultempl/pe.em (PE_DEF_SECTION_ALIGNMENT): If
	OVERRIDE_SECTION_ALIGNMENT is defined, change to that.
	(gld_${EMULATION_NAME}_before_parse): Use EXECUTABLE_NAME if it is
	defined, rather than a.exe.
	(init): Define __subsystem__ as ${SUBSYSTEM}.
	(set_pe_subsystem): Add ${INITIAL_SYMBOL_CHAR} before entry symbol
	name.

1999-09-12  Ian Lance Taylor  <ian@zembu.com>

	* ldlang.c (open_output): Change local variable desired_endian
	from int to enum bfd_endian.

	* emulparams/arm_epoc_pe.sh: Define ENTRY, SUBSYSTEM and
	INITIAL_SYMBOL_CHAR.
	* emulparams/armpe.sh: Likewise.
	* emulparams/morepe.sh: Likewise.
	* emulparams/ppcpe.sh: Likewise.
	* emulparams/i386pe.sh (ENTRY): Define as _mainCRTStartup.
	(SUBSYSTEM): Define as PE_DEF_SUBSYSTEM.

Fri Sep 10 00:22:50 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (LIB_PATH): Define.

	* emulparms/elf64hppa.sh (OTHER_READONLY_SECTIONS): Put stubs before
	unwinders so that they are closer to the text section.
	(OTHER_BSS_SECTIONS): Define.
	(EXECUTABLE_SYMBOLS): Provide __SYSTEM_ID and _FPU_STATUS.
	(INIT_START, INIT_END): Define.
	(FINI_START, FINI_END): Define.
	* scripttempl/elf.sc: Add support for INIT_START, INIT_END,
	FINI_START, FINI_END and OTHER_BSS_SECTIONS.

Thu Sep  9 21:43:58 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (TEXT_START_ADDR): Move up one page.
	(DATA_ADDR): Define.

1999-09-09  Stan Shebs  <shebs@andros.cygnus.com>

	* emulparams/d10velf.sh (READONLY_START_ADDR): Set to 0x2000004.

1999-09-09  Andreas Schwab  <schwab@suse.de>

	* ld.texinfo: Fix arguments of @var to not contain punctuation.

Thu Sep  9 05:52:34 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Define.

1999-09-08  Ulrich Drepper  <drepper@cygnus.com>

	* emulparams/elf64hppa.sh (ELFSIZE): New.  Set to 64.

Wed Sep  8 00:07:39 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparms/elf64hppa.sh (ENTRY): Define to main.

1999-09-03  Scott Bambrough  <scottb@netwinder.org>

	* ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
	target "arm*-*-linux-gnu*"

1999-09-04  Steve Chamberlain  <sac@pobox.com>

	* configure.tgt (pjl-*-*, pj-*-*): New targets.
	* emulparams/pjelf.sh: New file.
	* emulparams/pjlelf.sh: New file.
	* scripttempl/pj.sc: New file.
	* Makefile.am (ALL_EMULATIONS): Add epjelf.o and epjlelf.o.
	(epjelf.o, epjlelf.o): New targets.
	* Makefile.in: Rebuild.

Fri Sep  3 20:17:08 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparams/elf64hppa.sh (MAXPAGESIZE): Define.
	(OTHER_READONLY_SECTIONS, DATA_PLT): Likewise.

Thu Sep  2 14:32:03 1999  Jeffrey A Law  (law@cygnus.com)

	* emulparams/elf64hppa.sh: New file.
	* configure.tgt (hppa*w-*-*): Use elf64hppa emulation.
	* Makefile.am (ALL_64_EMULATIONS): Add eelf64hppa.o
	(eelf64hppa.c): Add dependencies.
	* Makefile.in: Rebuilt.

1999-08-25  Philip Blundell  <pb@nexus.co.uk>

	* emulparams/armelf.sh (OTHER_BSS_SYMBOLS): Add __end__.
	* emulparams/armelf_linux.sh: Likewise.
	* emulparams/armelf_linux26.sh: Likewise.

1999-08-24  Nick Clifton  <nickc@cygnus.com>

	From a patch submitted by Roland McGrath  <roland@baalperazim.frob.com>

	* configure.tgt (arm-*-netbsd*): New target.
	* Makefile.am (ALL_EMULATIONS): Add earmnbsd.o.
	(earmnbsd.c): New rule with deps.
	* Makefile.on: Regenerate.
	* emulparams/armnbsd.sh: New file.

1999-08-23  Nick Clifton  <nickc@cygnus.com>

	* emulparams/elf32mcore.sh (PARSE_AND_LIST_ARGS): Define.
	Implement --base-file command line switch.

	* emultempl/elf32.em: Add ability for individual targets to have
	their own command line switches by defining PARSE_AND_LIST_ARGS.

1999-08-19  Andreas Schwab  <schwab@suse.de>

	* configure.host: Use ${CC} instead of gcc for finding compiler
	related files.

1999-08-11  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/mcorepe.sc (OUTPUT_FORMAT): Fix typo.

1999-08-09  Mark Elbrecht  <snowball3@bigfoot.com>

	* scripttempl/i386go32.sc: Handle g++ exception sections.

1999-08-09  Ian Lance Taylor  <ian@zembu.com>

	From Wally Iimura <iimura@microunity.com>:
	* ldlang.c (lang_size_sections): When checking whether an address
	is within a region, don't get confused by wrapping around at the
	end of the address space.

1999-08-08  Ian Lance Taylor  <ian@zembu.com>

	* ldlang.c (wild_doit): Update for renaming of SEC_SHORT to
	SEC_SMALL_DATA.

	* Makefile.am: Rename .dep* files to DEP*.  Change DEP variable to
	MKDEP.  Rebuild dependencies.
	* Makefile.in: Rebuild.

1999-08-08  Jakub Jelinek  <jj@ultra.linux.cz>

	* configure.host (sparc-*-linux-gnu*): New host.
	(sparc64-*-linux-gnu*): New host.

1999-08-06  Ian Lance Taylor  <ian@zembu.com>

	* lexsup.c (is_num): Reindent.
	(parse_args): Mention program name in error message.

	* emultempl/ostring.sed: Rename from stringify.sed.
	* emultempl/astring.sed: New file.
	* Makefile.am (stringify.sed): New target.
	(GEN_DEPENDS): Change $(srcdir)/emultempl/stringify.sed to
	stringify.sed.
	* configure.in: Define and substitute STRINGIFY.
	* emultempl/*.em: Use stringify.sed from build directory rather
	than source directory.
	* emultempl/elf32.em: Use stringify.sed rather than inline sed
	script.
	* emultempl/gld960.em, emultempl/gld960c.em: Likewise.
	* emultempl/hppaelf.em, emultempl/linux.em: Likewise.
	* emultempl/lnk960.em, emultempl/sunos.em: Likewise.
	* configure, Makefile.in: Rebuild.

1999-08-05  Donn Terry  <donn@interix.com>

	* emulparams/i386pe.sh: Define ENTRY, SUBSYSTEM, and
	INITIAL_SYMBOL_CHAR.
	* emulparams/i386pe_posix.sh: New file.
	* Makefile.am (YACC): If bison is not in the source tree, use
	@YACC@ rather than bison -y.
	(LEX): If flex is not in the source tree, use @LEX@ rather than
	flex.
	(ALL_EMULATIONS): Add ei386pe_posix.o.
	(ei386pe_posix.c): New target.
	* configure.tgt (i[3456]86-*-interix*): New target.
	* configure.host (i[3456]86-pc-interix*): New host.
	* Makefile.in: Rebuild.

1999-08-03  Ian Lance Taylor  <ian@zembu.com>

	* emulparams/elf32ppc.sh (MAXPAGESIZE): Change to 0x10000.
	* emulparams/elf32ppclinux.sh (MAXPAGESIZE): Likewise.

1999-08-03  H.J. Lu  <hjl@gnu.org>

	* Makefile.am (ALL_EMULATIONS): Remove ego32.o.
	(ego32.c): Remove.
	* Makefile.in: Rebuild.

1999-07-22  Philip Blundell  <pb@nexus.co.uk>

	* emulparams/armelf_linux26.sh (DATA_START_SYMBOLS): Define.
	(OTHER_BSS_SYMBOLS, OTHER_BSS_END_SYMBOLS): Likewise.
	* emulparams/armelf_linux.sh (DATA_START_SYMBOLS): Define.

	* configure.tgt (arm*-*-uclinux*, thumb-*-uclinux*,
	thumb-*-linux-gnu*): New targets.

1999-07-21  Mark Elbrecht  <snowball3@bigfoot.com>

	* scripttempl/i386go32.sc: Add handling of linkonce sections.

	* configure.bat: Remove; obsolete.
	* emulparams/go32.sh: Remove; obsolete.
	* scripttempl/go32coff.sc: Remove; obsolete.

1999-07-21  H.J. Lu  <hjl@gnu.org>

	* configure.tgt (mips*el-*-vxworks*): New target.

1999-07-21  Brad M. Garcia  <bgarcia@fore.com>

	* configure.tgt (i[3456]86-*-vxworks*): New target.

Tue Jul 20 15:18:46 1999  Bob Manson  <manson@charmed.cygnus.com>

	* ldlang.c (lang_gc_sections): Only handle the start symbol
	specially if there is one.

Mon Jul 19 14:19:14 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* emulparams/elf32bmipn32.sh (OTHER_RELOCATING_SECTIONS): Add
	.MIPS.events and .MIPS.content handling.
	* emulparams/elf64bmip.sh (OTHER_RELOCATING_SECTIONS): Likewise.

1999-07-17  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (get_target): New function: Return true iff the
	given target is the target being sought.
	(stricpy): New function:  Like strcpy but convert to lower
	case as well.
	(strcut): New function:  Like strstr but remove the located
	substring as well.
	(name_compare): New function: Compute a compatability rating
	for two target names.
	(winner): New variable: Best target found by
	closest_target_match() so far.
	(closest_target_match): New function: Find the target which is
	the closest match to the original target.
	(get_first_input_target): New function: Find the target format
	of the first of the linker's input file.
	(open_output): Be more clever about deciding the output target
	format.

1999-07-16  Jakub Jelinek  <jj@ultra.linux.cz>

	* emulparams/elf64_sparc.sh: Add 64-bit directories to native LIB_PATH.

Thu Jul 15 15:55:15 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* configure.host: Set up HOSTING_CRT0 and HOSTING_LIBS for IRIX6.

1999-07-15  Ian Lance Taylor  <ian@zembu.com>

	* configure.in: Bump version number to 2.9.5.
	* configure: Rebuild.

1999-07-14  Richard Henderson  <rth@cygnus.com>

	* ldlang.c (wild_doit): Copy SEC_SHORT to output section.

	* scripttempl/elf.sc: Re-order .rel[a].foo outputs to the
	same order seen for the main sections.  Add
	OTHER_READONLY_RELOC_SECTIONS and OTHER_GOT_RELOC_SECTIONS.

1999-07-12  Andreas Schwab  <schwab@suse.de>

	* emultempl/linux.em (ld_${EMULATION_NAME}_emulation): Fill in
	structure initializations.

	* emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Add missing
	comma in initializer.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
	as appropriate.  Fill in structure initializations.

1999-07-10  Ian Lance Taylor  <ian@zembu.com>

	* ldfile.c: Revert patch of 1999-07-08.
	(ldfile_try_open_bfd): If we are searching for the file, skip
	files with an incompatible architecture.

1999-07-09  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/armcoff.sc (OUTPUT_FORMAT): Include big endian and
	little endian formats.

1999-07-08  Felix Lee  <flee@cygnus.com>

	* scripttempl/mcorepe.sc: fix quoting problem, for bash 2.x

1999-07-08  Jakub Jelinek  <jj@ultra.linux.cz>

	* ldfile.c (ldfile_open_file_search): Skip libraries made for
	incompatible architectures in the search path. Let the user know
	about any such skips.

Thu Jul  8 12:32:23 1999  John David Anglin <dave@hiauly1.hia.nrc.ca>

	* configure.tgt (hppa*-linux-gnu*): New target.

1999-07-07  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.am (ALL_64_EMULATIONS): Add eelf64bmip.
	(eelf64bmip): New target.
	* Makefile.in: Regenerated.
	* configure.tgt (mips-sgi-irix6*): Add 64-bit emulation.
	* emulparams/elf64bmip.sh: New file.

1999-07-05  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em (after_open): Abort if input format is ARM and
	output format is not.
	* emultempl/armcoff.em (after_open): Abort if input format is ARM
	and output format is not.
	* emultempl/armelf.em (after_open): Abort if input format is ARM
	and output format is not.

1999-07-02  Ian Lance Taylor  <ian@zembu.com>

	* ldlang.c: Revert change of 1999-06-23.

1999-06-30  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.am (ALL_EMULATIONS): Add eelf32bmipn32.o.
	(eelf32bmipn32.c): New target.
	* Makefile.in: Regenerated.
	* configure.tgt (mips-sgi-irix6*): Make n32 the default
	emulation.
	* emulparams/elf32bmipn32.sh: New file.

1999-06-28  Jim Pick <jim@jimpick.com>

	* emultempl/armelf.em: Added code so that .xs linker scripts are
	called so that ARM shared libraries are built correctly.

1999-06-22  Mark Mitchell  <mark@codesourcery.com>

	* ldmain.c (main): Initialize link_info.init_function and
	link_info.fini_function.
	* lexsup.c (OPTION_INIT): New macro.
	(OPTION_FINI): Likewise.
	(ld_options): Add descriptions for them.
	(parse_args): Handle them.

1999-06-23  Ian Lance Taylor  <ian@zembu.com>

	* ldlang.c (section_already_linked): Only discard link once
	sections if we are building constructors.

1999-06-22  Nick Clifton  <nickc@cygnus.com>

	* ld.texinfo (Location Counter): Describe behaviour of
	location counter inside section statements.

1999-06-20  Mark Mitchell  <mark@codesourcery.com>

	* scripttempl/elf.sc (WRITABLE_RODATA): New variable for
	controlling whether or not .rodata is in the data segment or the
	text segment.

1999-06-18  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em: Add new command line switch --thumb-entry.
	* emultempl/armelf.em: Add new command line switch --thumb-entry.
	* emultempl/armcoff.em: Add new command line switch --thumb-entry.
	* ld.texinfo: Document new ARM command line switch: --thumb-entry.

1999-06-20  H.J. Lu  <hjl@gnu.org>

	* configure.in (all_libpath): Accumulate across all enabled targets.

Sun Jun 20 14:10:33 1999  Richard Henderson  <rth@cygnus.com>

	* emultempl/armelf.em: Watch EMULATION_LIBPATH instead of
	DEFAULT_EMULATION.
	* emultempl/elf32.em: Likewise.
	* emultempl/sunos.em: Likewise.

Fri Jun 18 15:24:48 1999  Richard Henderson  <rth@cygnus.com>

	* Makefile.am (GENSCRIPTS): Pass EMULATION_LIBPATH, not EMUL.
	* configure.in (all_emuls): Add targ_extra_libpath.
	(all_libpath, EMULATION_LIBPATH): Define.
	* configure.tgt (powerpc-*-linux-gnu*): Define targ_extra_libpath.
	* genscripts.sh (LIB_PATH): Define if emulation in EMULATION_LIBPATH.

Mon Jun 14 10:38:36 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* ld.texinfo: Fix use of @item vs. @itemx.

1999-06-13  Ian Lance Taylor  <ian@zembu.com>

	From Thomas Zenker <thz@lennartz-electronic.de>:
	* ldgram.y (attributes_opt): Use attributes_list instead of NAME.
	(attributes_list, attributes_string): New nonterminals.
	* ldlang.c (lang_set_flags): Add invert parameter.  Don't handle
	'!'.
	* ldlang.c (lang_set_flags): Update declaration.

1999-06-12  Ian Lance Taylor  <ian@zembu.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_after_parse): Don't add
	entry_symbol as an undefined symbol when doing a relocateable
	link.  From <jeffdb@goodnet.com>.

1999-06-12  David O'Brien  <obrien@freebsd.org>

	* configure.tgt: (i[3456]86-*-freebsd*): Now defaults to ELF.

1999-06-09  Nick Clifton  <nickc@cygnus.com>

	* lexsup.c (help): Restore previous format of output.

1999-06-04  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em: If compiling for arm_epoc_pe rename
	interworking functions to avoid a name space clash.

1999-06-02  Jason Merrill  <jason@yorick.cygnus.com>

	* scripttempl/v850.sc: Add initp support.

1999-06-02  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em: Rename global arm interworking functions to
	avoid name collision when all targets BFD is built.

1999-05-30  Cort Dougan  <cort@attis.cs.nmt.edu>

	* Makefile.am (ALL_EMULATIONS): Add eelf32ppclinux.o.
	* configure.tgt (powerpc-*-linux-gnu): Use it.
	* emulparams/elf32ppclinux.sh: New file.

1999-05-29  Ian Lance Taylor  <ian@zembu.com>

	* ld.texinfo (Options): Clarify that options which refer to files
	must be properly ordered.

1999-05-29  Nick Clifton  <nickc@cygnus.com>

	* emultempl/armelf.em (..._parse_args): New function: Parse
	command line option.  Accept arm-elf specific command line option
	'-p' or '--no-pipeline-knowledge'.
	(..._list_options): New function: Describe the new command line
	option.
	(..._before_allocation): Pass the value of the new variable
	no_pipeline_knowledge to bfd_elf32_arm_process_before_allocation.

	* emultemp/armelf_oabi.em (..._before_allocation): Pass zero as
	the third parameter to bfd_elf32_arm_process_before_allocation.

1999-05-28  Nick Clifton  <nickc@cygnus.com>

	* lexsup.c (help): Minor formatting changes.

1999-05-28  Martin Dorey  <mdorey@madge.com>

	* configure.tgt (i960-*-elf*): New target.
	* emulparams/elf32_i960.sh: New file.
	* Makefile.am (ALL_EMULATIONS): Add eelf32_i960.o.
	(eelf32_i960.c): New target.
	* Makefile.in: Rebuild.

1999-05-26  Nick Clifton  <nickc@cygnus.com>

	* emulparams/armelf_oabi.sh (TEMPLATE_NAME): Set to armelf_oabi.

1999-05-24  Philip Blundell  <philb@gnu.org>

	* emultempl/armelf.em (before_parse): Set config.dynamic_link and
	config.has_shared.
	* emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT): Define.
	* emulparams/armelf_linux.sh (GENERATE_SHLIB_SCRIPT): Likewise.

1999-04-13  Philip Blundell  <philb@gnu.org>

	* emultempl/armelf.em: Add definitions related to shared objects
	(copied from elf32.em).

Wed May 19 12:44:26 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* Makefile.am (ALL_EMULATIONS): Remove earmlinux.o and
	earm26linux.o, add earmelf_linux.o and earmelf_linux26.o.
	* Makefile.in: Regenerated.

1999-05-16  Nick Clifton  <nickc@cygnus.com>

	* emulparams/elf32mcore.sh (GENERATE_SHLIB_SCRIPT): Define.
	(TEMPLATE_NAME): Define.

Thu May 13 09:48:09 1999  Joel Sherrill (joel@OARcorp.com)

	* configure.tgt (i386-*-rtemself*, sh-*-rtemself*): New targets.
	(mips*el-*-rtems*, powerpcle-*-rtems*): New targets.

1999-05-10  DJ Delorie  <dj@cygnus.com>

	* scripttempl/pe.sc: Specify the output arch, which Ian says is
	the Right Thing to do.

	* emultempl/pe.em: various changes to parameterize the
	target-specific information.
	(gld_i386pe_after_open): Detect and fix MS import libraries
	by renaming the member objects (which are all named the same).

	* pe-dll.c: various changes to parameterize the target-specific
	information.
	(generate_reloc): support relocs more generically to allow for
	expansion.
	(pe_exe_build_sections): new; used to add .relocs to .exes
	(pe_exe_fill_sections): ditto

1999-05-10  Catherine Moore  <clm@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_after_open):
	Check for TARGET_IS_arm_epoc_pe.
	(gld_${EMULATION_NAME}_before_allocation): Likewise.

1999-05-12  Anthony Green  <green@cygnus.com>

	* ldlang.c (walk_wild, walk_wild_file, walk_wild_section,
	output_section_callback, gc_section_callback): New functions for
	generic section walks.
	(wild, lang_gc_wild): Use walk_wild.
	(wild_file, lang_gc_wild_file): Deleted. Common logic moved to
	walk_wild_file.
	(wild_section, lang_gc_wild_section): Deleted. Common logic moved
	to walk_fild_section.  Unique logic moved into callbacks
	output_section_callback and gc_section_callback.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Updated for new version of libtool.

1999-04-12  Philip Blundell  <pb@nexus.co.uk>

	* emulparams/armelf_linux.sh: New file.  Support for ARM
	GNU/Linux ELF ABI.
	* emulparams/armelf_linux26.sh: New file. APCS-26 version of above.
	* configure.tgt: For arm*-*-linux-gnu*, set default emulation to
	`armelf_linux', and also include `armelf_linux26' and `armelf'.
	* Makefile.am: Add rules to make earmlinux.c and earmlinux26.c.
	(ALL_EMULATIONS): Add earmlinux.o and earmlinux26.o.
	* Makefile.in: Regenerate.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* Makefile.am (ALL_EMULATIONS): Add elf_i386_be.o.
	* configure.tgt (i[3456]86-*-beos*): Use it.
	* emulparams/elf_i386_be.sh: New file.
	* Makefile.in: Rebuild.

	* configure.in (environ): Detect declaration.
	* ldmain.c (main): Don't declare environ.
	* sysdep.h (environ): Declare if needed.
	* configure, config.in: Rebuild.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* ldgram.y (ldgram_vers_current_lang): New.
	(vers_defns): Accept `extern "lang" { }' syntax.
	* ldlex.l (vers_node_nesting): New.
	(V_IDENTIFIER): Accept . and $ in symbols.
	(VERS_NODE): Accept `extern "lang" { }' tokens.  Nest VERS_NODE states.
	* ldlang.c (lang_new_vers_regex): New `lang' argument.  Update callers.
	(lang_vers_match_lang_c): New function.
	(lang_vers_match_lang_cplusplus): New function.
	(lang_vers_match_lang_java): New function.
	(lang_do_version_exports_section): Fix iteration.  Don't free
	section contents, as it is still in use by the patterns.

1999-04-10  Richard Henderson  <rth@cygnus.com>

	* ldmain.c (main): Init link_info.no_undefined.
	* lexsup.c: Add command-line option --no-undefined.

1999-04-06  Ian Lance Taylor  <ian@zembu.com>

	* ld.h (LC_MESSAGES): Never define.
	* ldmain.c (main): Don't pass LC_MESSAGES to setlocale if the
	system does not define it.

1999-04-06  H.J. Lu  <hjl@gnu.org>

	* ldmain.h (demangling): Declare.
	* ldmain.c (demangling): New global variable.
	(main): Initialize demangling.
	* ldmisc.c (vfinfo): Don't demangle symbol if ! demangling.
	* lexsup.c (ld_options, parse_args): Handle --demangle and
	--no-demangle.
	* ld.texinfo, ld.1: Document --demangle/--no-demangle.

	* ldlex.l (V_IDENTIFIER): Allow '.' in symbol.

1999-04-05  Chris Torek  <torek@BSDI.COM>

	* emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Check that
	a shared library really exists, avoiding broken symlinks.

	* ldfile.c (ldfile_open_file): Generate a better error message if
	we can't find a -l file.

1999-04-05  DJ Delorie  <dj@cygnus.com>

	* configure.tgt (i386-*-pe): add targ_extra_ofiles for other PE
	targets (i386-pe and i386-winnt)

1999-04-04  Ian Lance Taylor  <ian@zembu.com>

	* deffilep.y: Include "sysdep.h" and "ldmisc.h".
	(def_file_add_directive): Change return type to void.  Remove
	unused locals sh_reserve, sh_commit, and j.
	(def_ungetc): Always return a value.
	(def_lex): Correct parenthesization of || within &&.
	* deffile.h (def_file_add_directive): Update declaration.
	* pe-dll.c: Include <time.h>, <ctype.h>, and "ldemul.h".
	(generate_edata): Remove unused local i.
	(quoteput): Add cast to avoid warning.
	(pe_dll_generate_def_file): Fix type in format string.
	(quick_symbol): Remove unused local blhe.
	(pe_dll_generate_implib): Add cast to avoid warning.
	(pe_process_import_defs): Remove unused locals ar_head, ar_tail,
	and n.
	(pe_as16): Comment out.

1999-04-04  Don Bowman <don@pixsci.com>

	* configure.tgt: Add mips*-*-vxworks* target.

1999-03-31  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in (ALL_EMULATIONS): Add earm_epoc_pe.o
	Add build rule and dependencies for earm_epoc_pe.c.

	* emulparams/arm_epoc_pe.sh: New file.

	* configure.tgt: Add 'targ_extra_ofiles' for ARM based PE
	targets.

1999-03-31  Philip Blundell  <pb@nexus.co.uk>

	* configure.tgt: Match `arm*-*-linux-gnu*' not
	`armv*-*-linux-gnu'.

1999-03-26  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* scripttempl/elf.sc: Put the .eh_frame and .gcc_except_table
	sections in the data segment.

Fri Mar 26 12:05:51 1999  Catherine Moore  <clm@cygnus.com>

	* ld.h (wildcard_spec): Add exclude_name.
	* ldgram.y (EXCLUDE_FILE): New token.
	(wildcard_spec): Set exclude_name.
	(file_NAME_list): Recognize EXCLUDE_FILE.
	* ldlang.c (wild_section): Check for excluded files.
	(print_wild_statement): Print excluded files.
	(lang_add_wild): New argument exclude_filename.
	Set exclude_filename.
	* ldlang.h (lang_wild_statement_type):  Add exclude_filename.
	* ldlex.l: New token EXCLUDE_FILE.
	* mri.c (mri_draw_tree):  Add argument to lang_add_wild.
	* scripttempl/elf.sc (CTOR, DTOR):  Exclude crtend.o from ctor wildcard.
	Reorder sorted and unsorted ctors.
	* scripttempl/elfd10v.sc (CTOR, DTOR): Likewise.
	* scripttempl/elfd30v.sc (CTOR, DTOR): Likewise.
	* scripttempl/elfppc.sc (CTOR, DTOR): Likewise.

1999-03-26  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_gc_sections): If entry_symbol is not defined,
	default to "start".

1999-03-03  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/elf.sc: Add explicit placements for the .eh_frame
	and .gcc_except_table sections.

Wed Mar  3 09:13:34 1999  Catherine Moore  <clm@cygnus.clm>

	* scripttempl/elf.sc: Remove .end.ctors and .end.dtors
	sections.  Reorder .ctors section entries.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfppc.sc: Likewise.

1999-02-26  Jim Lemke  <jlemke@cygnus.com>

	* ldmain.c (main): Wrong error msg for -r and --mpc860c0.

1999-02-25  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_check_section_addresses): Remove extraneous
	backslash.

Thu Feb 25 15:07:24 1999  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elf.sc: Don't gather .ctor and .dtor sections
	for relocateable links.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfppc.sc: Likewise.

1999-02-22  Jim Lemke  <jlemke@cygnus.com>

	* ldint.texinfo: remove extraneous right brace.
	* ldmain.c (main): initialize and check option "mpc860c0".
	* lexsup.c (ld_options, parse_args): add option "mpc860c0".

Wed Feb 17 12:10:06 1999  Stan Cox  <scox@cygnus.com>

	* mpw-elfmips.c (gldelf32ebmip_before_allocation): Remove special
	.reginfo section handling.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Likewise.
	* emulparams/elf32elmip.sh (INITIAL_READONLY_SECTIONS): Removed
	* emulparams/elf32ebmip.sh (INITIAL_READONLY_SECTIONS): Removed

1999-02-17  Nick Clifton  <nickc@cygnus.com>

	Patch from: Scott Bambrough <scottb@corelcomputer.com>

	* configure.tgt: Added armv*-*-linux-gnu to $targ_emul
	recognition.

Wed Feb 17 Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* emultempl/armelf_oabi.em
	(bfd_elf32_arm_allocate_interworking_sections,
	bfd_elf32_arm_get_bfd_for_interworking,
	bfd_elf32_arm_process_before_allocation): Define them to use the
	old ABI versions of the functions.

Tue Feb 16 16:48:19 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change AC_PREREQ to 2.13.  Change AM_PROG_INSTALL
	to AC_PROG_INSTALL.  Change AM_EXEEXT to AC_EXEEXT.
	* Makefile.am (earmelf_oabi.c): Changes spaces to tab.
	* acconfig.h: Remove.
	* aclocal.m4: Rebuild.
	* configure: Rebuild.
	* Makefile.in: Rebuild.

Mon Feb 15 18:21:48 1999  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* ldexp.h (struct etree_value_type): Change valid onto valid_p.

	* ldexp.c (new_abs): Ditto.
	(new_rel, new_rel_from_section, fold_binary, invalid, fold_name,
	exp_fold_tree, exp_binop, exp_trinop, stat_alloc,
	exp_get_abs_int): Ditto

	* ldlang.c (print_assignment, lang_size_sections,
	lang_do_assignments): Ditto.

1999-02-11  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_check_section_addresses): New function: Check
	addresses assigned to section for overlaps.
	(lang_process): Call lang_check_section_addresses if suitable.

	* ld.h: Add new boolean field to args_type structure:
	'check_section_addresses'.

	* ldmain.c: Initialise check_section_addresses field to true.

	* lexsup.c: Add new command line options '--no-check-sections' and
	'--check-sections'.

	* ld.texinfo: Document new command line options '--check-sections'
	and '--no-check-sections'.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* configure.tgt: Add support for StrongARM target.

Wed Feb  3 19:41:01 1999  Ian Lance Taylor  <ian@cygnus.com>

	* ldctor.c (ldctor_build_sets): Just set SEC_KEEP once.  Check for
	an owner of a section before using it to look up a reloc type.
	Don't set SEC_KEEP for the absolute section.

Mon Feb  1 11:39:46 1999  Catherine Moore  <clm@cygnus.com>

	* Makefile.am (earmelf_oabi.o):  New.
	* Makefile.in:  Regenerate.
	* configure.tgt (arm-*-oabi):  New.
	(thumb-*-oabi):  New.
	* emulparams/armelf_oabi.sh:  New.
	* emultempl/armelf_oabi.em:  New.

1999-01-31 17:57:31 1998  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfppc.sc: Add support for -fleading-underscores
	switch in all linker generated symbols.

	* configure.tgt (powerpc{,le}*-*-vxworks): Add as aliases for
	powerpc{,le}-*-eabi.

Wed Jan 20 17:01:48 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (i[3456]86-*-solaris2*): New target.  From Pavel
	Roskin <pavel_roskin@geocities.com>.

1999-01-19  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_size_sections): Count loadable sections as
	  contributing to the size of the current segment.

1999-01-15  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_size_sections): Only update the current
	  address of a region if the section just placed into it is an
	  allocated section.

1999-01-12  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Replace efr30.o with eelf32fr30.o.
	* Makefile.in: Regenerate.

	* configure.tgt: Replace fr30 with elf32fr30.

	* emulparams/elf32fr30.sh: New file: Replaces fr30.sh, and uses
	generic elf.sc script.  Also replaces the .stack section with a
	user definable symbol __stack.

1999-01-11  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/fr30.sc: Fill .init and .fini sections with NOP
	pattern.

1999-01-03  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.am (check-DEJAGNU): No longer provide HOSTING_EMU,
	HOSTING_CRT0, HOSTING_LIBS; the test suite can extract them from
	configure.host and configure.tgt now.
	* Makefile.in: Rebuild.

1998-12-27  Ulrich Drepper  <drepper@cygnus.com>

	* lexsup.c (parse_args, case OPTION_RPATH): Avoid adding duplicate
	elements to rpath.

Thu Dec 10 11:12:28 1998  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* Makefile.am (ALL_EMULATIONS): Remove pe-dll.o and deffilep.o.
	(ALL_EMUL_EXTRA_OFILES): New variable.  Put them here instead.
	* configure.in: Set EMUL_EXTRA_OFILES to $(ALL_EMUL_EXTRA_OFILES)
	if configuring with all targets.
	* configure, Makefile.in, aclocal.m4: Rebuild.

	* emultempl/pe.em (pe_enable_stdcall_fixup): Make static.
	(pe_dll_do_default_excludes): Removed, unused.
	(pe_def_file, pe_dll_export_everything, pe_dll_kill_ats,
	pe_dll_stdcall_aliases): Don't initialize them, this file may be
	compiled more than once.
	* pe-dll.c (pe_def_file, pe_dll_export_everything,
	pe_dll_do_default_excludes, pe_dll_kill_ats,
	pe_dll_stdcall_aliases): Define and initialize them here instead.
	(generate_reloc): Fix allocation of reloc_addresses array to use
	bfd_vma instead of unsigned long.  Fix element size in qsort call.
	(reloc_sort): Compare pointers to bfd_vma instead of unsigned
	long.

Mon Dec  7 21:10:09 1998  J.J. van der Heijden  <j.j.vanderheijden@student.utwente.nl>

	* configure.tgt (i[3456]86-*-mingw32*): Add cygwin target specific
	files.

Sun Dec  6 16:33:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (m68*-*-gnu*): New target.  From Aymeric Vincent
	<aymeric.vincent@emi.u-bordeaux.fr>.

1998-12-04  Nick Clifton  <nickc@cygnus.com>

	* emulparams/fr30.sh (TEXT_START_ADDR): Change TEXT_START_ADDR
	from 0x100000 to 0x10000 so that it fits in 20 bits.

Sat Nov 28 22:32:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.h (ldemul_recognized_file): Declare.

Sat Nov 28 22:30:55 1998  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* ldlang.c (lang_add_wild): Don't pretend that there is an input
	file if the filename is a wildcard pattern.

1998-11-25  DJ Delorie  <dj@cygnus.com>

	* ldemul.h (ld_emulation_xfer_struct): new hook "recognized_file"
	* ldemul.c (ldemul_recognized_file): new function, new hook
	* ldint.texinfo: document new hook.
	* ldlang.c (load_symbols): call recognized_hook for all objects we
	do recognize, in case the emulation needs to handle them
	specially.  PE DLLs use this.
	* pe-dll.c (pe_dll_generate_def_file): take out hack and debug
	printfs
	* emultempl/pe.em (gld_i386_recognized_file): new function
	(gld_i486_unrecognized_file): take out hack

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c (fill_edata): fill in timestamp
	(make_head): name object files sequentially to ensure
	they link in the right order.
	(make_tail): same here
	(pe_process_import_defs): use sequential names for bfds to ensure
	proper link order.
	(pe_implied_import_dll): new function; handles linking directly
	against DLLs by simulating IMPORTS directives.  * emultempl/pe.em
	(gld_i386pe_before_parse): hack bfd to not recognize .dll files
	via bfd_pe_dll_not_recognized_hack

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* emultempl/pe.em (gld_i386pe_parse_args): Conditionalize call to
	pe_dll_add_excludes

Mon Nov 23 14:36:18 1998  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em (after_parse): Only create an undefined entry
	symbol if one has been specified.

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* emultempl/pe.em (gld_i386pe_after_open): call
	pe_process_import_defs
	* pe-dll.c (pe_dll_generate_def_file): calculate BASE from
	pe_data, only print if actually set.  Print version only if
	set.
	(save_relocs): save relocs for both input and output.
	(make_one): support internal/external different names.
	(pe_dll_generate_implib): support new make_one
	(pe_process_import_defs): new function; handles IMPORT
	directives in .def files.

Fri Nov 20 13:06:49 1998  Nick Clifton  <nickc@cygnus.com>

	* ldmisc.c (vfinfo): Cope with empty symbol names.

Thu Nov 19 13:31:15 1998  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/pe.sc: Add provision of '_end' symbol.

Wed Nov 18 18:18:43 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.tgt: change refs from cygwin32* to cygwin*.
	* aclocal.m4: regenerate
	* configure.in: don't need to call AM_CYGWIN32.
	* configure: regenerate

Mon Nov 16 22:14:07 1998  DJ Delorie  <dj@cygnus.com>

	* emultempl/pe.em (gld_i386_finish): generate import library
	* deffile.h: add hint member.
	* pe-dll.c (pe_dll_generate_implib): New function with helpers;
	generates the import library directly from the export table.
	(fill_edata): remember the actual hint for the import library.

Sat Nov 14 14:36:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ld.1: Some cleanups from NOKUBI Hirotaka <hnokubi@yyy.or.jp>.

Thu Nov 12 19:21:57 1998  Dave Brolley  <brolley@cygnus.com>

	* po/ld.pot: Regenerated.
	* po/POTFILES.in: Regenerated.
	* configure: Regenerated.
	* aclocal.m4: Regenerated.
	* Makefile.in: Regenerated.

Wed Nov 11 18:10:15 1998  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c (generate_reloc): don't output PE relocs for sections
	that won't be loaded.

Wed Nov 11 13:44:54 1998  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c (fill_edata): don't strip underscores

Tue Nov 10 21:28:19 1998  DJ Delorie  <dj@cygnus.com>

	* ld.texinfo: added i386pe option summary

Tue Nov 10 17:53:17 1998  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c (process_def_file): properly note undefined exported
	symbols, clean up old code.
	(pe_dll_generate_def_file): don't crash if pe_def_file is NULL
	* emultempl/pe.em (gld_i386_parse_args): add
	(en/dis)able-stdcall-fixups
	(pe_fixup_stdcalls): warn about stdcall fixups
	(gld_i386_unrecognized_file): make exported symbols undefs so that
	archive members get pulled in

Tue Nov 10 14:50:51 1998  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elfd10v.sc: Add KEEP attribute to .init,
	.fini, .dtors and .ctors.  Add .data and .text
	wildcards to support section garbage collection.

Mon Nov  9 22:52:50 1998  DJ Delorie  <dj@indy.delorie.com>

	* deffilep.y: properly handle relocs with multiple def_files,
	cache import module names

Mon Nov  9 22:44:58 1998  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c (process_def_file): don't assume exports won't move
	during a realloc

Mon Nov  9 16:41:30 1998  DJ Delorie  <dj@cygnus.com>

	* pe-dll.c: New file; direct support for PE DLLs
	* deffile.h: New file; direct support for PE DLLs
	* deffilep.y: New file; direct support for PE DLLs
	* emultempl/pe.em: add direct support for PE DLLs
	* configure.tgt: allow target-specific extra files
	* configure.in: allow target-specific extra files
	* ldlang.c (lang_add_assignment): return the assignment so that
	one can change the value later based on the object files (pe-dll
	DEF files do this)
	* ldint.texinfo: add section for emulation walkthrough
	* Makefile.am: add new files and target-specific extra files
	* emultempl/pe.em (gld_i386_list_options): list dll-specific
	options.
	* pe-dll.c (process_def_file): auto-export everything if
	nothing is otherwise exported.

Wed Nov  4 16:39:18 1998  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Add support for FR30 target.
	* configure.tgt: Add support for FR30 target.
	* Makefile.in: Regenerate.
	* emulparams/fr30.sh: New file.
	* scripttemp/fr30.sc: New file.

Mon Nov  2 14:47:15 1998  Catherine Moore  <clm@cygnus.com>

	* ldmain.c (main):  Don't report error for dynamic links and
	--gc-sections.

1998-10-26 16:05  Ulrich Drepper  <drepper@cygnus.com>

	* lexsup.c (ld_options): Change text of -O to Optimize output file".
	(parse_args): Set link_info.optimize based on -O argument.
	* ldmain.c (main): Initialize link_info.optimze to false.
	* ld.texinfo: Describe -O option.
	* ld.1: Likewise.

Mon Oct 12 14:29:56 1998  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/v850.sc: Move .sbss and .scommon sections into their
	own segment, so that they can be next to the .bss section and so
	initialised by the same piece of code.

Fri Oct  9 15:59:52 1998  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elf.sc:  Merge .sdata.* etc sections.
	* ldctor.c (ldctor_build_sets):  Set SEC_KEEP for
	ctor sections.

Mon Oct  5 09:40:43 1998  Catherine Moore  <clm@cygnus.com>

	* ldmain.c (main):  Error if --gc-sections and
	dyanmic linking.
	* scripttempl/v850.sc:  Add KEEP attribute to .init,
	.fini, .dtors and .ctors.  Add .data and .text
	wildcards to support section garbage collection.

Wed Sep 30 11:19:15 1998  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/v850.sc: Rename .call_table section to
	.call_table_data and create a new section called
	.call_table_text.

Sun Sep 20 00:43:26 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Add alignment at the end of the .bss
	section, so that it is included in the memsize of the segment.

Fri Sep 18 13:42:42 1998  Catherine Moore  <clm@cygnus.com>

	* emultempl/elf32.em (gld_place_orphan): Don't process for
	sections with SEC_EXCLUDE flag.

Fri Sep  4 09:24:02 1998  Nick Clifton  <nickc@cygnus.com>

	* emulparams/d30velf.sh (TEXT_SIZE): Increased to 2000K.
	(DATA_SIZE): Increased to 2000K.

Thu Sep  3 17:30:58 1998  Richard Henderson  <rth@cygnus.com>

	* emulparams/d10velf.sh (TEMPLATE_NAME): Use elf32.

Mon Aug 31 01:06:00 1998  Catherine Moore  <clm@cygnus.com>

	* Makefile.am:  Change armelf.sc to elf.sc
	* Makefile.in:  Regenerate.

Mon Aug 31 11:12:04 1998  Catherine Moore  <clm@cygnus.com>

	* emulparams/armelf.sh:  Change SCRIPT_NAME to
	elf.  Change TEXT_START_ADDR to 0x8000.  Define
	OTHER_TEXT_SECTIONS, OTHER_BSS_SYMBOLS and
	OTHER_BSS_END_SYMBOLS.
	* scripttempl/elf.sc:  Modify to use
	OTHER_BSS_END_SYMBOLS.
	* scripttempl/elfarm.sc:  Remove file.

Tue Aug 18 12:05:34 1998  Catherine Moore  <clm@cygnus.com>

	* emultempl/armelf.em (gld_armelf_before_allocation):
	Add bfd_ prefix to elf32_arm_process_before_allocation
	and elf32_arm_allocate_interworking_sections.
	(gld_armelf_after_open): Add bfd_ prefix to
	elf32_arm_get_bfd_for_interworking.

Fri Aug 14 15:34:29 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

	* ldgram.y: Include "ldctor.h".
	(statement): Accept SORT around CONSTRUCTORS.
	* ldctor.c: Include <ctype.h>.
	(constructors_sorted): New global variable.
	(ctor_prio, ctor_cmp): New static functions.
	(ldctor_build_sets): Sort constructors if requested.
	* ldctor.h (constructors_sorted): Declare.
	* ldlang.c (print_statement): Print sorted CONSTRUCTORS
	correctly.
	* scripttempl/elf.sc: Add sort around CONSTRUCTORS.
	* ld.texinfo (Output Section Keywords): Document SORT
	(CONSTRUCTORS).

Thu Aug 13 12:20:39 1998  Catherine Moore  <clm@cygnus.com>

	* emulparams/armelf.sh:  Define TEMPLATE_NAME to armelf.
	* scripttempl/elfarm.sc:  Include .glue_7t and .glue7
	sections.
	* emultempl/armelf.em: New file.

Thu Aug 13 12:52:45 1998  H.J. Lu  <hjl@gnu.org>

	* Makefile.am (ld.dvi): Use " instead of ' for MAKEINFO.
	* Makefile.in: Rebuild.

Tue Aug 11 16:17:01 1998  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elfarm.sc:  Change text start address
	back to zero.

Tue Aug 11 10:01:12 1998  Jeffrey A Law  (law@cygnus.com)

	* emulparms/mn10200.sh (MAX_PAGESIZE): Define to 1.
	* emulparms/mn10300.sh (MAX_PAGESIZE): Define to 1.

Sun Aug  9 20:31:27 1998  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elfarm.sc:  Set text start address to
	0x8000.  Add __bss_end definition.

Sat Aug  1 11:47:37 1998  Catherine Moore  <clm@cygnus.com>

	* scripttempl/elfarm.sc:  New file.
	* emulparams/armelf.sh: Set SCRIPT_NAME to elfarm.

Fri Jul 31 15:56:16 1998  Catherine Moore  <clm@cygnus.com>

	* emulparams/armelf.sh: New file.
	* configure.tgt:  Recognize thumb-elf and arm-elf.
	* Makefile.am (earmelf.o): New.
	* Makefile.in: Rebuild.

Fri Jul 24 12:00:57 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (install-exec-local): Don't remove the file before
	checking whether $(bindir) == $(tooldir)/bin.  From Maciej
	W. Rozycki <macro@ds2.pg.gda.pl>.
	* Makefile.in: Rebuild.

	* configure.tgt: Recognize h8[35]00*-coff* as well as -hms*.

Thu Jul 23 11:15:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/aout.sc: If ALIGNMENT is defined, use it to set
	alignment of end symbol.
	* scripttempl/elf.sc: Likewise.
	* emulparams/sun4.sh (ALIGNMENT): Define.
	* emulparams/elf32_sparc.sh (ALIGNMENT): Define.
	* ldint.texinfo (emulation parameters): Document ALIGNMENT.

	* lexsup.c (parse_args): Add missing break statement.

	* ldlang.c (lang_gc_sections_1): Add default case to switch to
	avoid warnings.

Tue Jul 14 15:42:17 1998  Richard Henderson  <rth@cygnus.com>

	* configure.tgt (i?86-*-beos{pe,elf,}*): Recognize.
	* Makefile.am (ei386beos.o): New.
	* emulparams/i386beos.sh: New file.
	* emultempl/beos.em, scripttempl/i386beos.sc: New file.

Tue Jul 14 15:35:42 1998  Richard Henderson  <rth@cygnus.com>

	* lexsup.c: New option --version-exports-section.
	* ld.h (struct args_type): Add version_exports_section.
	* ldlang.c (lang_do_version_exports_section): New function.
	(lang_process): Call it.

Mon Jul 13 13:20:23 1998  Steve Chamberlain  <sac@transmeta.com>

	* ldlex.l: Accept ASSERT.
	* ldgram.y (exp): Add ASSERT_K case.
	* ldexp.h (node_type): Add etree_assert to node_class enum.
	(etree_type): Add assert_s field.
	(exp_assert): Declare.
	* ldexp.c (exp_fold_tree): Handle etree_assert.
	(exp_assert): New function.
	(exp_print_tree): Handle etree_assert.
	* ld.texinfo (Miscellaneous Commands): Document ASSERT.

Wed Jul  8 14:03:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y: Change MAX to MAX_K and MIN to MIN_K, to avoid
	conflicts with system header files.  Change all uses.

	* Makefile.am (MAINTAINERCLEANFILES): Define.
	* Makefile.in: Rebuild.

Tue Jul  7 18:03:22 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (ldver.texi): New target.
	(ld.info, ld.dvi): Depend upon ldver.texi.
	* ld.texinfo: Include ldver.texi.  Mention version number on title
	page and in top node.
	* Makefile.in: Rebuild.

Mon Jul  6 14:55:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (i[3456]86-*-solaris*): New target.

Fri Jul  3 14:19:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wild_section): Don't get an assertion failure if the
	section is discarded.

	* scripttempl/pe.sc: Use SORT to sort sections appropriately.
	* emultempl/pe.em (sort_by_file_name): Remove.
	(sort_by_section_name): Remove.
	(sort_sections_1, sort_sections): Remove.
	(gld_${EMULATION_NAME}_before_allocation): Don't call
	sort_sections.
	(hold_section, hold_section_name): New static variables.
	(hold_use, hold_text, hold_rdata, hold_data, hold_bss): Likewise.
	(gld_${EMULATION_NAME}_place_orphan): Rewrite.  Look for a good
	place to put the section.  Align the section.  Sort the input
	sections by name.
	(gld_${EMULATION_NAME}_place_section): New static function.

	* ldlang.c (wild_sort): When sorting by file name, sort by archive
	name first.

	* emultempl/pe.em (set_pe_subsystem): Don't call
	ldlang_add_undef.
	(gld_${EMULATION_NAME}_after_parse): New static function.
	(ld_${EMULATION_NAME}_emulation): Use new after_parse function
	rather than after_parse_default.

	* ldgram.y (extern_name_list): Do not require symbols to be
	separated by commas.
	(ifile_p1): Add EXTERN.
	* ldlex.l: Accept EXTERN in BOTH and SCRIPT mode as well as MRI
	mode.
	* ld.texinfo (Options): Mention that EXTERN is equivalent to -u.
	(Miscellaneous Commands): Document EXTERN.

Wed Jul  1 19:40:34 1998  Richard Henderson <rth@cygnus.com>

	* ld.h (args_type): Add gc_sections.
	* ldgram.y (ldgram_had_keep, KEEP): New.
	(input_section_spec_no_keep): Rename from old input_section_spec.
	(input_section_spec): New.  Recognize KEEP.
	* ldlang.c (wild_section): Handle keep sections.
	(lang_gc_wild_section, lang_gc_wild_file, lang_gc_wild): New.
	(lang_gc_sections_1, lang_gc_sections): New.
	(lang_process): Invoke lang_gc_sections.
	(lang_add_wild): Add keep argument.  Update all callers.
	* ldlang.h (lang_wild_statement_struct): Add keep_sections.
	* ldlex.l (KEEP): Match it.
	* ldmain.c (main): Error on -r and --gc-sections.
	* lexsup.c: Add --gc-sections.

	* scripttempl/elf.sc: Merge .text.* etc sections appropriately.
	Mark startup sections with KEEP.
	* scripttempl/elfppc.sc: Likewise.

	* ld.texinfo: Update for --gc-sections and KEEP.

Wed Jul  1 15:21:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Peter Jordan <pjordan@chla.usc.edu>:
	* scripttempl/i386go32.sc: Correct constructor handling for -u.

Tue Jun 23 15:17:27 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (install-data-local): Make ldscripts subdirectory.
	* Makefile.in: Rebuild.

Tue Jun 23 15:17:04 1998  Mike Stump  <mrs@wrs.com>

	* Makefile.am (install-exec-local): Don't let EXEEXT interfere
	with the program transform name.
	* Makefile.in: Rebuild.

Sun Jun 21 23:55:16 1998  Jeffrey A Law  (law@cygnus.com)

	* ld.texinfo: Note that -relax may make symbolic debugging
	impossible on some platforms.

Tue Jun 16 12:51:13 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* Makefile.am (Makefile): Remove target.
	(config.status): New target.
	* Makefile.in: Rebuild.

	* configure.host (powerpc*-*-linux-gnu*): New host.

Fri Jun 12 17:38:07 1998  Doug Evans  <devans@seba.cygnus.com>

	* scripttempl/elf.sc (INPUT_FILES): Optional INPUT spec.

	* emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Change top of
	stack to 8MB.

Fri Jun 12 19:33:17 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (HFILES): Remove config.h.
	(EMULATION_OFILES, POTFILES): Move patch of May 14 from
	Makefile.in to Makefile.am.
	(earmcoff.c): Depend upon armcoff.em, not generic.em.
	* po/Make-in (all-yes): Correct misspelling in $(PACKAGE).
	($(srcdir)/$(PACKAGE).pot): Pass -C to $(XGETTEXT).
	* Makefile.in, po/POTFILES.in, po/ld.pot: Rebuild.

Fri Jun 12 13:43:17 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (all-yes): If maintainer mode, depend on .pot file.
	($(PACKAGE).pot): Unconditionally depend on POTFILES.

Tue Jun  9 09:36:48 1998  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_finish): Add CONST type modifier to declaration
	of 'send'.

Fri Jun  5 18:19:59 1998  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_before_parse): Set
	config.has_shared to true.
	* emultempl/linux.em (gld${EMULATION_NAME}_before_parse):
	Likewise.
	* emultempl/sunos.em (gld${EMULATION_NAME}_before_parse):
	Likewise.

Tue Jun  2 12:55:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_finish): If the entry symbol is not found, try
	parsing it as a number.
	* ld.texinfo (Options): Document this.

Mon Jun  1 14:01:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Input Section Wildcards): Document SORT keyword.

Mon May 18 12:42:53 1998  Doug Evans  <devans@canuck.cygnus.com>

	* ld.h (ld_config_type): New member has_shared.
	* ldmain.c (main): Initialize it.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set it.
	* lexsup.c (parse_args): Treat -shared as error if not supported.

Mon May 18 13:14:43 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Jason Merrill <jason@cygnus.com>:
	* ldlang.c (wild_sort): Correct order of sort.
	* scripttempl/elf.sc: Put *crtbegin.o before other .ctors and
	.dtors.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfppc.sc: Likewise.

Fri May 15 00:22:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldlex.l: Recognize keyword SORT.
	* ldgram.y (current_file): Change to struct wildcard_spec.
	(%union): Add new fields cname and wildcard.
	(wildcard_name, wildcard_spec): New nonterminals.
	(file_NAME_list): Use wildcard_spec.
	(input_section_spec): Change current_file usage.
	* ld.h (struct wildcard_spec): Define.
	* ldlang.h (lang_wild_statement_struct): Add new fields
	sections_sorted and filenames_sorted.
	(lang_add_wild): Update declaration.
	* ldlang.c (wild_sort): New static function.
	(wild_section): Use wild_sort.
	(print_wild_statement): Print sorting information.
	(lang_add_wild): Add new parameters sections_sorted and
	filenames_sorted.  Change all callers.
	* mri.c (mri_draw_tree): Update calls to lang_add_wild.
	* scripttempl/elf.sc: Sort .ctors.* and .dtors.* by section name.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfppc.sc: Likewise.

Thu May 14 18:39:16 1998  Richard Henderson  <rth@cygnus.com>

	* emulparams/m32relf.sh (TEMPLATE_NAME): Define.

Thu May 14 14:51:24 1998  Nick Clifton  <nickc@cygnus.com>

	* ldemul.h: Add new prototype: ldemul_list_emulation_options.
	(ld_emulation_xfer_struct): Add new field: list_options.
	* ldemul.c (ldemul_list_options): New function.  Call the
	list_options field of the ld_emulation_xfer_struct for each
	supported emulation, if such a function is present.
	* lexsup.c (help): Call ldemul_list_emulation_options.
	* emultempl/pe.em (gld_<>_list_options): New function.  Describe
	the pe emulation specific command line options.
	* emultempl/armcoff.em (gld<>_list_options): New function.
	Describe  the armcoff emulation specific command line options.

	* emultempl/pe.em: Add a new command line option:
	--support-old-code.
	* emultempl/armcoff.em: Ditto.
	* ld.texinfo: Document the --support-old-code option.

	* Makefile.in: Add emulation files for POTFILES.in target.
	* emultempl/pe.em: Internationalise suitable strings.
	* emultempl/armcoff.em: Internationalise suitable strings.
	* po/POTFILES.in: Rebuilt.

Sun May 10 22:36:30 1998  Jeffrey A Law  (law@cygnus.com)

	* po/Make-in (install-info): New target.

Tue Apr 28 19:18:30 1998  Tom Tromey  <tromey@cygnus.com>

	* ldmain.c (main): Conditionally call setlocale.
	* ld.h: Include <locale.h> if HAVE_LOCALE_H.
	(LC_MESSAGES): Now can be defined even when ENABLE_NLS.

Mon Apr 27 11:56:21 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.9.4
	* configure: Rebuild.

	* ld.texinfo (Options) [-rpath-link]: Mention ld.so.conf.

	Based on patch from H.J. Lu <hjl@gnu.org>:
	* emultempl/elf32.em (global_vercheck_needed): New file static
	variable.
	(global_vercheck_failed): New file static variable.
	(gld${EMULATION_NAME}_after_open): Check for shared libraries
	twice, once with force set to 0 and once with it set to 1.
	(gld${EMULATION_NAME}_check_ld_so_conf): Add force parameter.
	Change all callers.
	(gld${EMULATION_NAME}_search_needed): Likewise.
	(gld${EMULATION_NAME}_try_needed): Likewise.  If not force, check
	whether the libraries needs any incompatible versions.
	(gld${EMULATION_NAME}_vercheck): New static function.

Wed Apr 22 16:01:35 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).

Wed Apr 22 12:40:56 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (check-DEJAGNU): Add $(INTLLIBS) to LIBIBERTY when
	invoking runtest.
	* Makefile.in: Rebuild.

	* lexsup.c (parse_args): Change -l options into --library options
	to avoid confusion between -li and -library.

	* ld.texinfo (MEMORY): Clarify use of >REGION.

Tue Apr 21 23:12:40 1998  Tom Tromey  <tromey@scribbles.cygnus.com>

	* Many files: Added gettext invocations around user-visible
	strings.
	* ld.h: Added gettext-related includes and defines.
	* ldmain.c: Call setlocale, bindtextdomain, textdomain.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* configure.in: Call CY_GNU_GETTEXT.  Create po/Makefile.in and
	po/Makefile.  Use AM_PROG_LEX.
	(TDIRS): AC_SUBST early on, to avoid having value split when it
	happens to cross line 90 of the generated sed script.
	* Makefile.am (SUBDIRS): New macro.
	(POTFILES): Likewise.
	(po/POTFILES.in): New target.
	(ld_new_LDADD): Added INTLLIBS.
	(ld_new_DEPENDENCIES): Added INTLDEPS.
	* po/Make-in, po/POTFILES.in, po/gas.pot: New files.

Tue Apr 21 23:07:07 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Simple Example): Rewrite a few things as suggested
	by Nick Clifton <nickc@cygnus.com>.
	(PROVIDE): Likewise.

Tue Apr 21 09:55:06 1998  Nick Clifton  <nickc@cygnus.com>

	* emultempl/pe.em: Rename external arm interworking functions
	to conform to BFD naming conventions.  Add code to _after_open()
	function to obtain a bfd for use by the interworking code.

	* emultempl/armcoff.em: Rename external arm interworking functions
	to conform to BFD naming conventions.  Add new _after_open()
	function to obtain a bfd for use by the interworking code.

Sun Apr 19 19:23:09 1998  Richard Henderson  <rth@cygnus.com>

	* ldlang.c (lang_size_sections) [case lang_assignment_statement_enum]:
	Update dot and the default memory section even when relaxing.

Sat Apr 18 18:41:12 1998  Richard Henderson  <rth@cygnus.com>

	* ldlang.c (lang_one_common): Manipulate the section's cooked size
	rather than its raw size.

Tue Apr  7 13:35:29 1998  H.J. Lu  <hjl@gnu.org>

	* configure.in (TESTBFDLIB): New.  Defined and substituted.
	* Makefile.am (TESTBFDLIB): Changed to @TESTBFDLIB@.
	* configure, Makefile.in: Rebuild.

Mon Apr  6 15:33:39 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (ld.info): Invoke makeinfo with -I options directly
	rather than relying on default rule.  Don't depend upon
	bfdsumm.texi.
	(ld.dvi): Likewise.
	(bfdsumm.texi): Remove target.
	(CLEANFILES): Take bfdsumm.texi out of value.
	* Makefile.in: Rebuild.

Sun Apr  5 13:07:57 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Use shell variables to avoid depending upon
	how $ is handled when expanding a shell substitution.

Fri Apr  3 00:56:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (MOSTLYCLEANFILES): Add ld.log and ld.sum.
	(DISTCLEANFILES): Add site.exp and site.bak.
	* Makefile.in: Rebuild.

	* configure.in: Put the tdirs in a file and use AC_SUBST_FILE,
	rather than in a shell variable and using AC_SUBST.
	* Makefile.am (DISTCLEANFILES): Remove ldscripts.  Add tdirs.
	(distclean-local): New target.
	* configure, Makefile.in: Rebuild.

	* ld.texinfo: Completely rewrite linker script documentation.

Mon Mar 30 12:47:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set version to 2.9.1.
	* configure: Rebuild.

	* Branched binutils 2.9.

Sat Mar 28 16:48:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (MOSTLYCLEANFILES): Remove tmpdir.
	(mostlyclean-local): New target to remove tmpdir.
	* Makefile.in: Rebuild.

	Fix some gcc -Wall warnings:
	* ldcref.c (output_cref): Add casts to avoid warnings.
	* ldfile.c (ldfile_add_arch): Likewise.
	* ldlang.c (lang_leave_overlay_section): Likewise.
	* lexsup.c (OPTION_COUNT): Likewise.
	(parse_args): Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan):
	Likewise.
	* emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Likewise.
	* ldlang.c (lang_check): Initialize variables to avoid warnings.
	* ldwrite.c (build_link_order): Likewise.
	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Likewise.
	* emultempl/armcoff.em (gld${EMULATION_NAME}_before_allocation):
	Remove unused variables.

	* Makefile.am (MOSTLYCLEANFILES): Correct name (was
	MOSTCLEANFILES).
	* Makefile.in: Rebuild.

Fri Mar 27 16:39:25 1998  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Put
	ARM code inside ifdef TARGET_IS_armpe.

Wed Mar 25 11:34:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from H.J. Lu  <hjl@gnu.org>:
	* Makefile.am (LDDISTSTUFF): New variable.
	(diststuff): New target.
	* Makefile.in: Rebuild.

	* scripttempl/pe.sc: Only include .idata\$[0-7] in .idata when
	relocating.

Tue Mar 24 15:59:29 1998  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/pe.sc (.text): Add .glue_7 and .glue_7t sections to
	hold Arm/Thumb stubs.

	* emultempl/pe.em (gld_pe_before_allocation): Call
	arm_process_before_allocation (for ARM/Thumb targets) in order to
	gather interworking stb information.

Mon Mar 23 18:54:15 1998  Joel Sherrill  <joel@OARcorp.com>

	* configure.tgt: (sh*-*-rtems*): Switched from ELF to COFF.

Fri Mar 20 19:17:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4, configure: Rebuild with libtool 1.2.

Thu Mar 19 14:54:45 1998  Geoffrey Noer  <noer@cygnus.com>

	* scripttempl/pe.sc: The Cygwin32 library uses a .data$nocopy
	section to avoid copying certain data on fork.  The linker used to
	include this between __data_start__ and __data_end__, but that
	breaks building the cygwin32 dll.  The fix is to rename the
	section	".data_cygwin_nocopy" and explictly include it after
	__data_end__.

Wed Mar 18 09:42:24 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.tgt (targ_extra_emuls): Add thumb-pe target.

Sun Mar  8 23:34:14 1998  Stan Cox  <scox@equinox.cygnus.com>

	* configure.tgt (sparclite*-*-elf): Added.

Mon Mar  2 19:24:08 1998  Michael Meissner  <meissner@cygnus.com>

	* ldlang.c (lang_size_sections): If the default memory region is
	*default*, see if there is a memory region that could be used.

Thu Feb 26 17:09:53 1998  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfd30v.sc: Add support for .eit_v section and put
	it at 0xfffff020.
	* emulparams/d30v{elf,_o,_e}.sh: Ditto.

Mon Feb 23 17:46:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (sort_sections): Permit the wildcard to include
	a trailing '*' when sorting grouped sections.
	* scripttempl/pe.sc: Include grouped sections using NAME\$*.  Only
	include them when relocating.

Wed Feb 18 23:39:46 1998  Richard Henderson  <rth@cygnus.com>

	* Makefile.am (install-exec-local): Install properly when ln
	fails or tooldir == prefix.

Fri Feb 13 15:24:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Define.
	* configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.

Thu Feb 12 14:10:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Align the _end symbol according to the ELF
	format size.  From Gordon W. Ross <gwr@mc.com>.

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* configure.host (alpha*-*-netbsd*): New host.
	* configure.tgt (alpha*-*-netbsd*, powerpc-*-netbsd*): New
	targets.

	* lexsup.c (help): Update bug-gnu-utils address.
	* ld.texinfo (Bug Reporting): Likewise.

Tue Feb 10 18:05:56 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_size_sections): Warn if some memory regions were
	defined, but a loadable section is going into the default memory
	region.

Tue Feb 10 16:17:20 1998  H.J. Lu  <hjl@gnu.org>

	* ldlex.l (V_IDENTIFIER): Allow '.' as symbol prefix.

Tue Feb 10 15:09:45 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (Makefile): Add target, for dependencies on
	configure.host and configure.tgt.
	* configure.host, configure.tgt: Change -linux* to -linux-gnu*.
	* Makefile.in: Rebuild.

Mon Feb  9 13:44:40 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* scripttempl/elfd10v.sc (.stack): Move stack to 0x00..7FFE.

	* emulparams/d10velf.sh (READONLY_START_ADDR): Read only section
	moved to 0x00.....4.

Sat Feb  7 15:41:26 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Thu Feb  5 12:16:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Remove ${RELOCATING-0} from all sections.
	From Thomas de Lellis <tdel@wrs.com>.

	* configure, Makefile.in, aclocal.m4: Rebuild with new libtool.

Wed Feb  4 13:02:32 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (ld_new_LDADD): Remove @LEXLIB@.
	* Makefile.in: Rebuild.

Mon Feb  2 19:34:54 1998  Steve Haworth  <steve@pm.cse.rmit.EDU.AU>

	Add tms320c30 support:
	* configure.tgt (tic30-*-*aout*, tic30-*-*coff*): New targets.
	* emulparams/tic30aout.sh: New file.
	* emulparams/tic30coff.sh: New file.
	* scripttempl/tic30aout.sc: New file.
	* scripttempl/tic30coff.sc: New file.
	* Makefile.am (ALL_EMULATIONS): Add etic30aout.o and
	etic30coff.o.
	(etic30aout.c, etic30coff.c): New targets.
	* Makefile.in: Rebuild.

Mon Feb  2 14:10:59 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Correct HOSTING_CRT0 in alpha*-*-linux* case to
	accept either ld.so or ld-linux.so.

Fri Jan 30 19:16:28 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am ({CC,CXX}_FOR_TARGET): Change program_transform_name
	to transform.
	* Makefile.in: Regenerate.

Fri Jan 30 19:15:17 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* scripttempl/elfppc.sc: Put .dynsbss in .sbss.

Fri Jan 30 11:43:49 1998  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* Makefile.am (eelf32bsmip.c, eelf32lsmip.c): New targets.
	* Makefile.in: Rebuild.

Thu Jan 29 16:04:21 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* ldfile.c (slash): Set to backslash if _WIN32 but not
	__CYGWIN32__.
	(ldfile_open_file_search): If __MSDOS__ or _WIN32, accept a
	leading backslash or a leading x: as an absolute path.
	(ldfile_find_command_file): Use slash rather than / when
	generating name to try.
	* lexsup.c (PATH_SEPARATOR): Define.
	(set_default_dirlist): Use PATH_SEPARATOR rather than ':'.

Wed Jan 28 14:06:30 1998  Richard Henderson  <rth@cygnus.com>

	* emulparams/elf64_sparc.sh (ELFSIZE): 64
	(TEXT_START_ADDR): Round off, since SIZEOF_HEADERS is added later.
	(DATA_PLT): Needed by v9 abi.

Wed Jan 28 16:37:27 1998  J.J. van der Heijden  <J.J.vanderHeijden@student.utwente.nl>

	* configure.tgt (i[3456]86-*-mingw32*): New entry.

Wed Jan 28 15:51:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Only include linkonce sections in final
	sections when relocating.

Wed Jan 28 14:10:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Options): Add a brief description of the types of
	information included in a link map.

	* ld.texinfo (Options): Mention LDEMULATION in description of -m.
	(Environment): Mention LDEMULATION.

	* ld.texinfo (Options): Clarify --export-dynamic a bit.

Thu Jan 22 16:07:23 1998  Richard Henderson  <rth@cygnus.com>

	* ldlex.l (<SCRIPT>{WILDCHAR}*): Take care for the comments this
	pattern could match.

Wed Jan 21 22:26:46 1998  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): When doing
	a relocateable link, set the image base to 0, and don't define the
	various symbols.
	* emulparams/i386pe.sh (RELOCATEABLE_OUTPUT_FORMAT): Define.
	* scripttempl/pe.sc: Swap the .data and .bss sections so that
	.data comes first.  If doing a relocateable link, use
	RELOCATEABLE_OUTPUT_FORMAT if it is defined, and start the
	sections at 0, and don't define any symbols.

	* ldlang.c (lang_memory_default): Correct parenthisization of
	expression.

Wed Jan 21 21:20:32 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* emultempl/sunos.em: Don't include sys/types.h and sys/stat.h
	here; they are included already via sysdep.h.

Tue Jan  6 13:40:02 1998  Richard Henderson  <rth@cygnus.com>

	* scripttempl/i960.sc: Don't explicitly set .data and .bss start.

Fri Jan  2 20:15:37 1998  Michael Meissner  <meissner@cygnus.com>

	* ldgram.y (attributes_opt): Pass region pointer to
	lang_set_flags, not &region->flags.

	* ldlang.c (lang_memory_default): New function to figure out a
	default memory region for a section if it was not specified.
	(lang_memory_region_lookup): Zero flags, not_flags field.
	(lang_map{,_flags}): Print attribute flags in memory map.
	(lang_size_sections): Call lang_memory_default to get default
	memory region.
	(lang_set_flags): Implement attribute flags for real.  Take new
	argument to give the flags we are to skip for this region.

	* ldlang.h (memory_region_struct): Add not_flags field, make both
	flags fields flagword type.
	(lang_output_section_state): Make flags field flagword type.
	(lang_set_flags): Update prototype to match new calling sequence.
	(lang_memory_region_default): Add prototype.

	* emulparams/d30v{_e,_o,elf}.sh ({TEXT,DATA,EMEM}_DEF_SECTION):
	Define whether or not the region gets default sections, and if so,
	what sections.

	* scripttempl/elfd30v.sc (MEMORY): Set up which of the regions get
	default sections.

Thu Jan  1 22:58:04 1998  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfd30v.sc (.eh_frame): Link into the data section.

Thu Jan  1 18:04:51 1998  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300h.sc: Fix typo.
	* scripttempl/h8300s.sc: Likewise.

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