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>

	* 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>

	* emultempl/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>

	* 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.in: 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.

	* emultempl/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.
	* scripttempl/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/ld.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 explicitly 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

Copyright (C) 1998-1999 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
