Sun Dec 21 12:51:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldexp.c (fold_name): Don't crash if the symbol is defined in a
	section with no output section, such as a shared library section.

Wed Dec 17 12:14:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Keep track of where we are in the option
	parsing before calling ldemul_parse_args, so that we don't call it
	multiple times on the same argument and confuse the getopt
	internals.

Thu Dec 11 09:00:15 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.tgt (d30v-elf-*): Rename d30velf_e to d30v_e and
	d30velf_o to d30v_o to work in DOS environments.
	* Makefile.{am,in}: Ditto.

	* emulparams/d30v_{o,e}: Rename from d30velf_{o,e}.
	* emulparams/d30velf_{o,e}: Deleted.

Wed Dec 10 17:40:08 1997  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/armcoff.sc: Add glue sections (code taken from Arm
	branch).

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

	* emultempl/armcoff.em: New file, imported from Arm branch.

Wed Dec 10 14:10:44 1997  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfd30v.sc: Add .rel and .rela sections for all
	defined sections.  Set up __{D,C}TOR_{LIST,END}__.  Add onchip and
	external memory sections for rodata.  Delete .string, .rodata1,
	and .data1 sections.

Tue Dec  9 15:28:17 1997  Michael Meissner  <meissner@cygnus.com>

	* Makefile.am: Add Oct 23 changes to Makefile.in here.

	* Makefile.{am,in}: (ALL_EMULATIONS): Add ed10velf.o.

	* Makefile.{am,in}: (ALL_EMULATIONS): Add etic80coff.o.

	* Makefile.{am,in}: (ALL_EMULATIONS): Add ed30velf{,_e,_o}.o.
	(ed30velf_e.c): Like d30velf, except .text/.data/etc always go in
	external memory.
	(ed30velf_o.c): Like d30velf, except .text/.data/etc always go in
	onchip memory.

	* emulparams/d30velf.sh (STACK_START_ADDR): Top of default
	stack.
	({TEXT,DATA,EMEM}_SIZE): Sizes of the 3 memory areas.
	({TEXT,DATA,BSS}_MEMORY): Which memory region .text, .data, and
	.bss should go in.

	* emulparams/d30velf_{e,o}.sh: New files to be explicit whether
	.text, .data, etc go in external memory or onchip memory.

	* configure.tgt (d30v-*-*ext*): New configuration to default
	.text, .data, etc. in external memory.
	(d30v-*-*onchip*): New configuration to default .text, .data,
	etc. in onchip memory.
	(d30v-*-*): Add d30velf_{e,o} emulations.

	* scripttempl/elfd30v.sc: Allow .text, .data, .bss to be put in
	either the onchip text/data areas or the external memory area.
	(MEMORY): Get sizes from d30velf.sh.
	(.e{data,text,bss}): Put sections in the external memory region.
	(.stext): Put section in the onchip text region.
	(.s{data,bss}): Put sections in the onchip data region.
	(__stack): Assign from ${STACK_START_ADDR}.
	(.text): Put in ${TEXT_MEMORY} memory region.
	(.data{,1}/.strings/.rodata{,1}): Put in ${DATA_MEMORY} memory
	region.
	(.bss): Put in ${BSS_MEMORY} memory region.

Tue Dec  2 10:14:47 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.tgt (targ_extra_emuls): Add support for Thumb target.

Sat Nov 22 15:23:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlex.l: Don't define hex_mode.  Correct number regexp to not
	accept hex digits without a leading $ or 0x.  Handle leading $
	correctly.  Pass 0 rather than hex_mode to bfd_scan_vma.
	* ldlex.h (hex_mode): Don't declare.

Sun Nov 16 20:16:45 1997  Michael Meissner  <meissner@cygnus.com>

	* emulparams/d30velf.sh ({DATA,EMEM}_START_ADDR): Define as start
	of internal data area and external memory on chip.

	* scripttempl/elfd30v.sc: Define a MEMORY region that describes
	the 3 regions of memory on the chip.  Put .text/.init/.fini into
	the text memory region, put other segments into the data memory
	region.  Add more of the standard elf sections.  Default __stack
	to be 0x20008000, which is 1 byte beyond end of the internal data
	region.

Thu Nov 13 13:45:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.tgt (targ_extra_emuls): Make FreeBSD a i386bsd
	variant.

Sun Nov  2 14:51:36 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* configure.host (alpha*-*-linux*): Correct HOSTING_CRT0.  Set
	HOSTING_LIBS.

Thu Oct 30 12:25:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (args_type): Add warn_mismatch field.
	* ldmain.c (main): Initialize warn_mismatch field.
	* lexsup.c (parse_args): Handle --no-warn-mismatch option.
	* ldlang.c (ignore_bfd_error): New static function.
	(lang_check): If warn_mismatch is false, don't warn about
	mismatched input files.
	* ld.texinfo, ld.1: Document new option.

Thu Oct 23 14:38:18 1997  Nick Clifton  <nickc@cygnus.com>

	* scripttempl/v850.sc: Rename linker symbol '_stack' to '__stack'
	to avoid conflicts with C code which is defining a variable called
	'stack'.

Thu Oct 23 00:57:45 1997  Richard Henderson  <rth@dot.cygnus.com>

	* Makefile.in (ALL_EMULATIONS): Move eelf64_sparc.o ...
	(ALL_64_EMULATIONS): ... here.
	(eelf64_sparc.c): Template should be elf32 not generic.
	* emulparams/elf64_sparc.sh (TEMPLATE_NAME): New definition.

Thu Oct 23 00:44:20 1997  Richard Henderson  <rth@dot.cygnus.com>

	* configure.tgt: Add sparc64-*-linux*.
	* emulparams/elf64_sparc.sh (GENERATE_SHLIB_SCRIPT, NOP): New.

Wed Oct 22 11:29:25 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Put .eh_frame in .rdata.

Fri Oct 17 00:00:13 1997  Richard Henderson  <rth@cygnus.com>

	* ldlang.c (lang_register_vers_node): Only check globals<=>locals,
	since we need to be able to export different versions of the same
	symbol.

Wed Oct 15 14:52:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Put .stab and .stabstr sections at end.

Wed Oct  8 12:37:05 1997  Richard Henderson  <rth@cygnus.com>

	* configure.tgt, configure.host: Change alpha-*-* to alpha*-*-*;
	config.guess now recognizes alphaev5 etc.

Fri Oct  3 14:23:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Don't treat
	-s and -u as -static and -unix.

Thu Oct  2 18:40:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wild_doit): Rewrite flag handling for clarity.  If we
	are not adding the first input section, and SEC_READONLY is clear
	on the output section, then don't copy it from the input section.
	If SEC_READONLY is not set on the input section, then clear it on
	the output section.

	* configure.tgt (mips*-sgi-irix[56]*): Use elf32bsmip rather than
	elf32bmip.
	(mips*el-*-linux*): Change elf32lmip to elf32lsmip and elf32bmip
	to elf32bsmip.
	(mips*-*-linux*): Likewise.
	* emulparams/elf32bsmip.sh: New file; just like elf32bmip.sh, but
	setting ENTRY to __start.
	* emulparams/elf32lsmip.sh: New file; just like elf32lmip.sh, but
	setting ENTRY to __start.
	* scripttempl/elf.sc: Always set ENTRY to _start if it was not
	already set.

Wed Oct  1 16:41:00 1997  Nick Clifton  <nickc@cygnus.com>

	* emulparams/v850.sh (ROZDATA_START_ADDR, ROSDATA_START_ADDR): New
	Variables.

	* scripttempl/v850.sc: Move read only areas out of zero and small
	data sections and into their own sections.

Wed Sep 24 16:59:15 1997  Joel Sherrill  <joel@oarcorp.com>

	* configure.tgt (sh*-*-rtems*): New target, like sh-*-elf*.

Wed Sep 24 11:33:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Section Options): Improve documentation of NOLOAD
	directive.

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

Mon Sep 22 17:24:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wild_doit): Revert patch of September 3.

Wed Sep 17 16:45:34 1997  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am, Makefile.in: Add rule for ev850.c
	* configure.tgt (targ_extra_emuls): Add v850 target.

Wed Sep 17 16:43:39 1997  Nick Clifton  <nickc@cygnus.com>

	* emulparams/v850.sh (CALL_TABLE_START_ADDR): New entry.
	* scripttempl/v850.sc: Add call table data area

Mon Sep 15 11:29:13 1997  Ken Raeburn  <raeburn@cygnus.com>

	Merge change from Martin Hunt:

	* scripttempl/elfd30v.sc: Put .rodata in the .text section.

Tue Sep  9 07:49:56 1997  Fred Fish  <fnf@ninemoons.com>

	* ldlang.c (lang_memory_region_lookup): Remove extraneous
	initialization of p.

Thu Sep  4 09:03:33 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): In
	expression produced for -bpT and -bpD options, align to a 32 byte
	boundary rather than an 8 byte boundary.
	* scripttempl/aix.sc: Put .tocbss at start of .bss section.

	* ldmisc.h, ldmisc.c, ldcref.c: Rename finfo to lfinfo, to avoid
	function name conflict with AIX 4.2 unistd.h header file.

Wed Sep  3 15:12:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wild_doit): Clear SEC_HAS_CONTENTS from a
	noload_section.

Fri Aug 29 00:32:31 1997  Ian Lance Taylor  <ian@cygnus.com>

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

Thu Aug 28 10:12:10 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.tgt (arc-*-elf*): Recognize.
	* Makefile.am (ALL_EMULATIONS): Add earcelf.o.
	* Makefile.in: Regenerate.
	* emulparams/arcelf.sh: New file.

Wed Aug 20 11:14:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wildcardp): Don't let a backslash by itself cause a
	pattern to be treated as a wildcard pattern.

	* ldgram.y (atype): Accept parentheses with no type.

	* ld.texinfo (Section Definition): Clarify use of whitespace.
	(Section Placement): Likewise.

Mon Aug 18 11:12:03 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.tgt (targ_extra_emuls): Add support for v850e target.

Mon Aug 18 11:12:03 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.tgt (targ_extra_emuls): Add support for v850e target.

Sat Aug  9 00:42:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (ld.info): Change dependency from
	$(BFDDIR)/doc/bfdsumm.texi to bfdsumm.texi.
	(ld.dvi): Likewise.
	(bfdsumm.texi): New target.
	(CLEANFILES): Add bfdsumm.texi.
	* Makefile.in: Rebuild.

	* Makefile.am: New file, based on old Makefile.in.
	* acinclude.m4: New file, from old aclocal.m4.
	* configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL.  Remove
	shared library handling; now handled by libtool.  Replace
	AC_CONFIG_HEADER with AM_CONFIG_HEADER.  Call AC_PROG_YACC,
	AC_PROG_LEX, and AC_DECL_YYTEXT.  Call AM_MAINTAINER_MODE,
	AM_CYGWIN32, and AM_EXEEXT.  Don't call CY_CYGWIN32 or CY_EXEEXT.
	* configure.host: Don't set HLDFLAGS, HLDENV, or RPATH_ENVVAR.
	* acconfig.h: Mention PACKAGE and VERSION.
	* stamp-h.in: New file.
	* ldver.c (ld_program_version): Set ld_program_version from
	VERSION.
	* ldgram.y, ldlex.l: Replace VERSION with VERSIONK.
	* Makefile.in: Now built with automake.
	* aclocal.m4: Now built with aclocal.
	* configure, config.in: Rebuild.

Mon Jul 28 19:04:50 1997  Rob Savoye  <rob@chinadoll.cygnus.com>

	* configure.in: Use CYGWIN and EXEEXT autoconf macro to look for
	win32 dependencies.
	* configure: Regenerated with autoconf 2.12.
	* Makefile.in: Add $(EXEEXT) to executable.

Tue Jul 22 18:50:38 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* emulparams/i386go32.sh (OUTPUT_FORMAT): Set to "coff-go32".
	(SEGMENT_SIZE): Set to 0x200.
	* scripttempl/i386go32.sc: Rewrite.
	* configure.tgt (i[3456]86-*-msdosdjgpp*): New target.

Mon Jul  7 12:39:42 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Manfred Hollstein <manfred@s-direktnet.de>:
	* configure.host (i[3456]86-*-linux*libc1*): Renamed from
	i[3456]86-*-linux*.
	(i[3456]86-*-linux*): New host.

Thu Jun 26 13:54:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Put .rsrc after .reloc.  Put input .rsrc
	sections in the output .rsrc section.

Wed Jun 25 12:48:41 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.host (m68*-*-linux*libc1*): Renamed from
	`m68*-*-linux*'.
	(m68*-*-linux*): New configuration for use with GNU libc 2.

Mon Jun 16 19:18:21 1997  Geoff Keating  <geoffk@ozemail.com.au>

	* scripttempl/elfppc.sc: Correct .rela.sdata entries.

	* scripttempl/elfppc.sc: Put the PLT between the small and large
	BSS segments.
	* emulparams/elf32ppc.sh (TEXT_START_ADDR): The ABI says `A
	program base of 0x02000000 is recommended...' because otherwise
	shared libraries are less efficient.  We use 0x01800000 because
	otherwise it's impossible to branch to location 0, for instance if
	you have an undefined weak symbol.

Mon Jun 16 12:49:36 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* ldlang.c (lang_place_undefineds): Add \n in einfo call.
	(lang_size_sections): Likewise.
	* ldlex.l: Likewise.
	* emultempl/aix.em (gld${EMULATION_NAME}_read_file): Likewise.
	* emultempl/mipsecoff.em (gld${EMULATION_NAME}_after_open):
	Likewise.
	(check_sections): Likewise.
	(gld${EMULATION_NAME}_after_allocation): Likewise.
	* emultempl/pe.em (gld_$${EMULATION_NAME}_before_allocation):
	Likewise.
	* mpw-eppcmac.c (gldppcmacos_read_file): Likewise.
	* mpw-idtmips.c (gldmipsidt_after_open): Likewise.
	(check_sections): Likewise.
	(gldmipsidt_after_allocation): Likewise.

	* ldemul.c (ldemul_choose_mode): Remove unused einfo argument.

Fri Jun  6 23:47:42 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/pe.sc: Add zeroes after .idata$3 to mark the end of
	the import list.

Thu May 29 13:13:22 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Don't
	crash if an output section has no BFD section.

Fri May 23 15:23:25 1997  Fred Fish  <fnf@cygnus.com>

	* lexsup.c (ld_options): Add entry for the new "task-link" option.
	(parse_args): Handle the "task-link" option.
	(OPTION_TASK_LINK): Add define.

Wed May 21 17:44:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Correct check of fclose return value when
	handling --force-exe-suffix.

Thu May 15 11:35:29 1997  Nick Clifton  <nickc@cygnus.com>

	* ldlang.c (lang_check): Add test of the return value from the
	call to bfd_merge_private_bfd_data().

Mon May 12 23:22:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elfmips.sc: Remove.
	* scripttempl/elf.sc: Set ENTRY based on target.  Permit
	TEXT_DYNAMIC to control .dynamic segment.  Permit
	SHLIB_TEXT_START_ADDR to set start of shared object.  Support
	INITIAL_READONLY_SECTIONS.  Put .stub in .text.  Only put
	.gnu.linkonce.t* in .text when relocating.  Support
	OTHER_TEXT_SECTIONS.  Support SHLIB_DATA_ADDR as well as
	DATA_ADDR.  Support OTHER_GOT_SYMBOLS and OTHER_GOT_SECTIONS.
	* emulparams/elf32b4300.sh (SCRIPT_NAME): Set to elf.
	(DATA_ADDR): Don't set.
	(INITIAL_READONLY_SECTIONS): Rename from OTHER_READONLY_SECTIONS.
	(OTHER_TEXT_SECTIONS): Set.
	(OTHER_GOT_SECTIONS): Rename from OTHER_READWRITE_SECTIONS.
	(MACHINE): Set to empty string.
	* emulparams/elf32l4300.sh: Likewise.
	* emulparams/elf32ebmip.sh: Likewise.
	* emulparams/elf32elmip.sh: Likewise.
	* emulparams/elf32bmip.sh: Likewise.  Also:
	(TEXT_DYNAMIC): Set.
	* emulparams/elf32lmips.sh: Likewise.
	* Makefile.in (eelf32bmips.c): Depend upon elf.sc rather than
	elfmips.sc.
	(eelf32ebmips.c, eelf32elmips.c, eelf32lmip.c): Likewise.

Mon May 12 11:11:06 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* scripttempl/elf.sc: Don't align the data segment on the next 8
	byte boundary, instead let the linker use whatever the individual
	sections require.

Fri May  9 17:45:46 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (i[3456]86-*-gnu*): Don't include Mach support.

Tue May  6 13:21:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Sean McNeil <sean@mcneil.com>:
	* emultempl/pe.em (sort_by_file_name): Sort by archive name
	first.
	(sort_sections): Sort all sections, not just sections in the same
	archive.

Mon May  5 18:19:55 1997  Philip Blundell  <pjb27@cam.ac.uk>

	* configure.tgt, configure.host: cope with '*-*-linux-gnuaout'
	targets.

Fri May  2 15:54:28 1997  Mike Meissner  <meissner@cygnus.com>

	* scripttempl/tic80coff.sc (.text): Add a leading underscore to
	__{D,C}TOR_{LIST,END}__ definations.  Rearrange the order of items
	in the .text section.  Move .const, .ctors, .dtors into separate
	sections.

Wed Apr 30 12:23:21 1997  Manfred Hollstein  <manfred@s-direktnet.de>

	* scripttempl/m88kbcs.sc (__.initp.end, _etext): Added whitespace
	around assignment of current location pointer.

Thu Apr 17 13:07:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldctor.c (ldctor_build_sets): Make sure the set is aligned
	appropriately.

Tue Apr 15 13:19:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install): Depend upon ld.new and installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM) and $(INSTALL_XFORM1).
	(installdirs): New target.
	(install-info): Run mkinstalldirs.

Mon Apr 14 12:06:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

	From Thomas Graichen <graichen@rzpd.de>:
	* configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
	* configure: Rebuild.

Fri Apr  4 11:42:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em: Include "libiberty.h".
	(sort_sections_1): Use xmalloc rather than alloca.

	* ldlex.l: Recognize SQUAD.
	* ldgram.y (length): Add SQUAD.
	* ldctor.c (ldctor_build_sets): Use SQUAD for a signed 8 byte
	reloc.
	* ldlang.c (print_data_statement): Handle SQUAD.
	(lang_size_sections, lang_do_assignments): Likewise.
	* ldexp.c (exp_print_token): Add SQUAD to table.
	* ldwrite.c (build_link_order): Handle SQUAD.
	* ld.texinfo (Section Data Expressions): Document SQUAD.

Thu Apr  3 13:19:40 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldver.c (ld_program_version): Set to 2.8.1.

	* Branched binutils 2.8.

Wed Apr  2 11:55:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* mpw-idtmips.c: Rename from mpw-emipsidt.c.
	* mpw-elfmips.c: Rename from mpw-emipself.c.
	* mpw-config.in: Update accordingly.

	* ldlang.c (lang_process): Call lang_check immediately after
	opening the input files, rather than at the end of the link.

Mon Mar 31 23:44:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (init): Fully bracket initializer.
	(set_pe_stack_heap): Remove locals begin_commit and end.
	(gld_${EMULATION_NAME}_after_open): Remove unused local i.
	(gld${EMULATION_NAME}_place_orphan): Remove unused local ptr.

Mon Mar 31 16:35:51 1997  Joel Sherrill  <joel@oarcorp.com>

	* configure.tgt (hppa*-*-rtems*): New target, like hppa-*-*elf*.

Fri Mar 28 15:29:23 1997  H.J. Lu <hjl@gnu.ai.mit.edu>

	Contributed by David S. Miller <davem@caip.rutgers.edu>:
	* configure.tgt (sparc*-*-linuxaout*): New target.
	(sparc*-*-linux*): New target.
	* emulparams/sparclinux.sh: New file.
	* Makefile.in (ALL_EMULATIONS): Add esparclinux.o.
	(esparclinux.c): New target.

Fri Mar 28 14:30:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Ralf Baechle <ralf@gnu.ai.mit.edu>:
	* configure.tgt: Set targ_extra_emuls for mips*el-*-linux* and
	mips*-*-linux*.  Use elf32bmip and elf32lmip, not elf32ebmip and
	elf32elmip.

Thu Mar 27 17:14:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Update copyright date in version
	message.

Fri Mar 21 12:28:41 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* emulparams/delta68.sh (OUTPUT_FORMAT): Set to "coff-m68k-sysv".

Tue Mar 18 11:16:23 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Rebuild dependencies.

	* emultempl/aix.em: Include "obstack.h".

Mon Mar 17 19:26:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c: Include "obstack.h".

Sat Mar 15 23:23:46 1997  Fred Fish  <fnf@cygnus.com>

	* configure.tgt (powerpc-*-beos*): Use aixppc for targ_emul.

Sat Mar 15 18:10:38 1997  H.J. Lu  <hjl@lucon.org>

	* ldemul.h (ldemul_list_emulations): Use full prototype.
	* ldlang.c (print_one_symbol): Add declaration.
	* ldlang.h (dprint_statements): Declare.
	* ldmain.c (remove_output): Declare.
	* ldmisc.c (vfinfo): Declare.
	* ldwrite.c (clone_section): Declare.
	(split_sections): Make static.  Declare.
	* mri.c: Include libiberty.h.
	(strdup): Don't declare.
	(mri_alias): Use xstrdup rather than strdup.

Fri Mar 14 21:30:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elfmips.sc: Change handling of data area when
	generating a shared library to not skip a large block of memory.
	From Per Fogelstrom <pefo@cvs.openbsd.org>.

Wed Mar 12 21:33:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (multiple_definition): Only skip the warning if the
	output section is absolute when the input section is not
	absolute.

	* ldlex.l: Accept whitespace in VERS_START state.  Warn about
	invalid characters in VERS_* states.

Tue Mar 11 13:51:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_read_file): Don't let a
	trailing space lead us to think that there is a zero address.

Sun Mar  9 23:06:35 1997  Eric Youngdale  <eric@andante.jic.com>

	* ldgram.y (vers_node): Correct typo of '('  for '{'.

Fri Mar  7 18:40:12 1997  Fred Fish  <fnf@cygnus.com>

	* scripttempl/tic80coff.sc (ENTRY): Entry symbol is __start
	rather than _start.
	(__edata): Define this rather than "edata".
	(__end): Define this rather than "end".

Tue Mar  4 17:18:35 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.tgt (tic80-*-*): Allow dropping of -coff.

Sun Mar  2 22:59:49 1997  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (ld.dvi): Set MAKEINFO environment variable as well
	as TEXINPUTS.  Needed for building in separate build dir.
	* ldint.texinfo (SCRIPT_NAME): Fix typo.
	* emulparams/tic80coff.sh: Rewrite to include internal documentation
	about each shell variable that is set (or not set).
	* scripttempl/tic80coff.sc: Complete rewrite.

Fri Feb 28 17:42:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Call bfd_set_default_target.
	* Makefile.in (ldmain.o): Define TARGET when compiling.

Thu Feb 27 11:41:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Don't initialize link_info.lprefix or
	link_info.lprefix_len.
	* emultempl/hppaelf.em (hppaelf_before_parse): Likewise.

	* emultempl/m88kbcs.em: Remove.
	* emulparams/m88kbcs.sh (TEMPLATE_NAME): Don't set.
	* Makefile.in (em88kbcs.c): Depend upon generic.em rather than
	m88kbcs.em.

	* mri.c (mri_draw_tree): Pass noload_section, not SEC_NEVER_LOAD,
	to lang_enter_output_section_statement.  From Mark Rasin
	<mark.rasin@telrad.co.il>.

Wed Feb 26 11:51:44 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_one_common): Clear SEC_IS_COMMON from common
	section.

Tue Feb 25 20:38:11 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.tgt (mips*-*-lnews*): New target.
	* Makefile.in (emipslnews.c): New target.
	* emulparams/mipslnews.sh: New file.

Tue Feb 25 16:04:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (hold_interp): New static variable.
	(gld${EMULATION_NAME}_place_orphan): Put loadable .note sections
	after hold_interp.  Choose a unique output section name.
	(gld${EMULATION_NAME}_place_section): Don't set hold_use if the
	SEC_LOAD or SEC_ALLOC flags differ.  Set hold_interp.

Mon Feb 24 18:16:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* ldlex.l (V_TAG, V_IDENTIFIER): New macros.
	(VERS_START, VERS_SCRIPT, VERS_NODE): New states to parse version
	information.
	(ldlex_version_script, ldlex_version_file): New functions.
	* ldlex.h (enum input_enum): Add input_version_script.
	(ldlex_version_script): Declare.
	(ldlex_version_file): Declare.
	* ldgram.y (%union): Add deflist, versyms, and versnode.
	(VERS_TAG, VERS_IDENTIFIER): New terminals.
	(GLOBAL, LOCAL, VERSION, INPUT_VERSION_SCRIPT): New terminals.
	(file): Accept INPUT_VERSION_SCRIPT.
	(ifile_p1): Accept version.
	(version_script_file): New nonterminal.
	(version, vers_nodes, vers_node): Likewise.
	(verdep, vers_tag, ver_defns): Likewise.
	* ldlang.c (lang_elf_version_info): New global variable.
	(lang_new_vers_regex): New function.
	(lang_new_vers_node): New function.
	(version_index): New static variable.
	(lang_register_vers_node): New function.
	(lang_add_vers_depend): New function.
	* ldlang.h (lang_elf_version_info): Declare.
	(lang_new_vers_regex, lang_new_vers_node): Declare.
	(lang_add_vers_depend, lang_register_vers_node): Declare.
	* lexsup.c (OPTION_VERSION_SCRIPT): Define.
	(ld_options): Add "version-script".
	(parse_args): Handle OPTION_VERSION_SCRIPT.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Pass lang_elf_version_info to size_dynamic_sections.
	* scripttempl/elf.sc: Add .gnu.version sections.
	* ld.texinfo: Document symbol versioning.

Fri Feb 21 17:37:51 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in (ed30velf.c): New target.
	* configure.tgt (d30v-*-*): New target.
	* emulparams/d30velf.sh: New file.
	* scripttempl/elfd30v.sc: New file.

Fri Feb 14 18:28:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Option Commands): Document the INCLUDE command.

Thu Feb 13 20:31:37 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* configure.in: Call BFD_NEED_DECLARATION on getenv.
	* acconfig.h (NEED_DECLARATION_GETENV): New macro.
	* sysdep.h (getenv): Declare if NEED_DECLARATION_GETENV.
	* ldemul.c (ld_emul_default_target): Do not cast getenv return
	value.
	* ldmain.c (get_emulation): Likewise.
	* configure, config.in: Rebuild.

Tue Feb 11 15:34:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elfmips.sc: When relocating, put .mips16.fn.* and
	.mips16.call.* in .text.

Sun Feb  9 18:09:13 1997  Fred Fish  <fnf@cygnus.com>

	* emulparams/tic80coff.sh: New (dummy) file for TIc80.
	* scripttempl/tic80coff.sc: New (dummy) file for TIc80.
	* Makefile.in (etic80coff.c): Add target and rule to build it.
	* configure.tgt (tic80-*-coff): Set targ_emul to tic80coff.

Fri Jan 31 13:16:53 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Search for
	".so" in the name, not ".so.".
	(gld${EMULATION_NAME}_search_dir): Accept a plain .so file.

	* Makefile.in (ld.info): Add -I$(srcdir).  From Alan Modra
	<alan@spri.levels.unisa.edu.au>.

Thu Jan 30 11:31:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em: Include <ctype.h>.
	(gld${EMULATION_NAME}_find_so): Skip the directory name when
	searching for ".so.".
	(gld${EMULATION_NAME}_search_dir): Make sure that the library name
	has a version number, and that only version numbers follow .so.

Wed Jan 29 18:15:00 1997  Geoffrey Noer  <noer@cygnus.com>

	* scripttempl/pe.sc:
	* scripttempl/ppcpe.sc: add *(.gcc_except_table) to the text
	section so Win32 executables are valid.

Mon Jan 27 12:28:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Put linkonce reloc section in other
	appropriate reloc sections.
	* scripttempl/elfmips.sc: Add linkonce support.
	* scripttempl/elfppc.sc: Likewise.

Fri Jan 24 10:44:09 1997  Jeffrey A Law  (law@cygnus.com)

	* emulparms/mn10200.sh (OTHER_RELOCATING_SECTIONS): Move the
	stack up to 0x80000.
	* emulparms/mn10300.sh (OTHER_RELOCATING_SECTIONS): Likewise.

Tue Jan 21 12:11:10 1997  Doug Evans  <dje@seba.cygnus.com>

	* emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Use PROVIDE
	to define `_stack'.

Thu Jan 16 17:07:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (args_type): Rename auxiliary_filter_shlib to
	auxiliary_filters, and make it char **.
	* lexsup.c (parse_args): Handle -f by setting up an array.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Use
	new name of auxiliary_filters.

	* ld.texinfo (Options): Improve documentation of --filter and
	--auxiliary.

Tue Jan 14 15:44:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Options): Clarify that the normal usage is -T.
	(Commands): Likewise.

Thu Jan  9 11:26:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/armcoff.sc: Correct mask used for .data address.

Wed Jan  8 15:14:59 1997  Geoffrey Noer  <noer@cygnus.com>

	* emultempl/pe.em: make default executable a.exe instead of
	a.out

Fri Jan  3 17:33:34 1997  Richard Henderson  <rth@tamu.edu>

	* scripttempl/elf.sc: Move .got closer to .sdata and .sbss by
	shifting .plt back.  Rumour has it that the NetBSD ld.so depends
	on .dynamic being after .got, so we leave that.

Fri Jan  3 14:04:40 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (clean): Don't remove configdoc.texi.
	(maintainer-clean): Do remove configdoc.texi.

	* ld.texinfo (Operators): Remove '@' from @smallexmple in comment
	to avoid confusing texi2roff.

Fri Jan  3 11:27:02 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/v850.sc (.zdata): Add .zcommon section.
	(.tdata): Add .tcommon and .tcommon_byte sections.

Thu Jan  2 18:14:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (mips*el-*-linux*, mips*-*-linux*): New targets.
	* scripttempl/elfmips.sc: Use __start as the entry address for
	mips*-*-linux*.

Tue Dec 31 14:48:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.

	* ld.h (args_type): Add filter_shlib and auxiliary_filter_shlib
	fields.
	* lexsup.c (parse_args): Recognize --auxiliary/-f and
	--filter/-F.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Pass filter_shlib and auxiliary_filter_shlib to
	size_dynamic_sections.
	* ld.texinfo, ld.1: Document --filter/-F and --auxiliary/-f.

Mon Dec 30 13:55:57 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/v850.sc (.tdata) Add .tbss and .tbyte sections.

Wed Dec 18 22:57:35 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Use NewFolderRecursive for installation.

Fri Dec 13 14:08:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/v850.sc: Make sure __{e,g}p start relative to the
	{s,t}data sections.  Do not emit any linker generated symbols if
	-r.  Use {TEXT,{Z,S,T}DATA}_START_ADDR variables to initialize
	where the different sections go.  Change some whitespace.

	* emulparams/v850.sh ({TEXT,{Z,S,T}DATA}_START_ADDR): Define
	appropriately.  Remove crud not used anymore.

Fri Dec 13 10:19:57 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (emn10200.c): Add dependencies.
	* configure.tgt: Handle mn10200.
	* emulparms/mn10200.sh: New file.

Thu Dec 12 17:04:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/gld960c.em: Include <ctype.h>.
	(gld960_set_output_arch): Get the machine type from the -A option
	if there is one, rather than always using core.

Sat Dec  7 10:07:51 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/mn10300.sh: Handle leading underscores.

Thu Dec  5 13:45:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Only
	set hold_rel if SEC_ALLOC is set.

Tue Dec  3 11:29:20 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (section_already_linked): Set the output_offset as well
	as the output_section when only reading symbols from a file.

Mon Dec  2 11:43:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emulparams/*.sh: Make sure that each set of parameters which
	uses the elf.sc script sets MACHINE.

Wed Nov 27 03:22:05 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* scripttempl/elf{,mips,ppc}.sc: Add the remaining DWARF sections.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/v850.sc: Likewise.

Tue Nov 26 16:58:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.12.

Mon Nov 25 12:17:55 1996  Jim Wilson  <wilson@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Add case
	for bfd_vma to init loop.

Mon Nov 25 09:55:07 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/mn10300.sh: Remove bogus '_' prefix for
	entry symbol and ctor/dtor stuff.

Fri Nov 15 13:00:18 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (emn10300.c): Add dependencies.
	* configure.tgt: Handle mn10300.
	* emulparms/mn10300.sh: New file.

Tue Nov  5 10:57:50 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* emulparams/d10velf.sh (READONLY_START_ADDR): Changed to 0x2000004.
	(EMBEDDED): Define.

Fri Nov  1 10:01:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo: Add section on reporting bugs.

	* scripttempl/m68kcoff.sc: Make sure the etext and __CTOR_LIST__
	symbols are correctly aligned.

Thu Oct 31 09:28:59 1996  Jeffrey A Law  (law@cygnus.com)

	* scriptempl/v850.sc (zdata): Handle reszdata, romzdata and
	romzbss too.

Tue Oct 29 12:33:05 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* emulparams/d10velf.sh: Changes needed for D10V-EVA board.
	Set TEXT_START_ADDR to 0x1000000. Set READONLY_START_ADDR to
	0x2000000.

	* scripttempl/elfd10v.sc:  Fix calculation of .text.  Change
	.stack to start at 0x2007ffe.

Mon Oct 28 15:37:00 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.tgt (sparclet*-*-aout*): Delete, use sparc*-*-aout*.

Wed Oct 23 16:17:22 1996  Jeffrey A Law  (law@cygnus.com)

	* scriptempl/v850.sc (zdata): Fix typo "zrodata" -> "rozdata".

	* scriptempl/v850.sc (zdata): Make sure this stays
	in lo-memory.

Tue Oct 22 11:36:47 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/v850.sc (__ep): Put it at the start
	of the tda section.

	* scriptempl/v850.sc: Move all "normal" sections into
	the external memory region (0x100000 - 0x200000).

Mon Oct 21 17:16:59 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* scripttempl/elfd10v.sc: Clone from elf.sc, move .text to
	0x10000, so that is more room for data.

	* emulparams/d10velf.sh (TEXT_START_ADDR): Now 0x100000.
	(READONLY_START_ADDR): Now 0x0.
	(SCRIPT_NAME): Now elfd10v.

	* Makefile.in (ed10velf.c): Depend on elfd10v.sc, not elf.sc.

Fri Oct 18 22:12:49 1996  Doug Evans  <dje@canuck.cygnus.com>

	* emulparams/m32relf.sh	(TEXT_START_ADDR): Change from 0 to 0x100.

Fri Oct 18 15:43:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ALL_EMULATIONS): Remove eelf64alpha.o.
	(ALL_64_EMULATIONS): New variable.
	* configure.in: Accept --enable-64-bit-bfd option.  If it is set
	with --enable-targets=all, include ALL_64_EMULATIONS in
	EMULATION_OFILES.
	* configure: Rebuild.

Fri Oct 18 12:58:35 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/v850.sc (__gp, __ep): Define.

Thu Oct 17 18:14:07 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo: Try to consistently use a single or a double dash
	for each option.

Thu Oct 17 10:17:20 1996  Doug Evans  <dje@canuck.cygnus.com>

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

Thu Oct 17 10:56:49 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/v850.sc (.zdata): Add this before .text.
	(.sdata): Also include .rosdata as part of the .sdata.
	(.tdata): Include this just before .sdata.

	* emulparms/v850.sh (SCRIPT_NAME): Use "v850" not "elf".
	* scripttempl/v850.sc: Wrap script with a "cat << EOF".

Wed Oct 16 23:10:01 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/v850.sc: New linker script for the V850.
	* Makefile.in: Use it.

Thu Oct 10 17:57:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emulparams/elf32b4300.sh: Define _gp in OTHER_GOT_SYMBOLS, not
	OTHER_READWRITE_SECTIONS.
	* emulparams/elf32l4300.sh: Likewise.

Wed Oct  9 14:36:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (ld_config_type): Add warn_section_align field.
	* lexsup.c (OPTION_WARN_SECTION_ALIGN): Define.
	(ld_options): Add --warn-section-align.
	(parse_args): Handle --warn-section-align.
	* ldlang.c (lang_size_sections): If warn_section_align, warn if
	the start of a section changes due to alignment.
	* ld.texinfo, ld.1: Document --warn-section-align.
	* ld.texinfo: Change some single dashes to double dashes.

	* emultempl/pe.em (set_pe_subsystem): Record entry symbol for each
	subsystem type.  Ifdef out os2 type.  Recognize a version number.

Tue Oct  8 12:07:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (set_pe_subsystem): When setting the subsystem
	to windows, set the entry point.

	* Makefile.in (ldlex.c): Don't pass any options to $(LEX).

Mon Oct  7 17:29:05 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Options): Mention .so extensions for shared
	libraries.

Sun Oct  6 22:35:36 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* scripttempl/elf{,mips,ppc}.sc: Add DWARF 2 sections.

Fri Oct  4 18:49:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/m68kcoff.sc: Only set the address of .text if
	RELOCATING.

Fri Oct  4 10:59:52 1996  Doug Evans  <dje@canuck.cygnus.com>

	* emulparams/sparcaout.sh ({BIG,LITTLE}_OUTPUT_FORMAT): Define.
	* scripttempl/aout.sc ({BIG,LITTLE}_OUTPUT_FORMAT): Provide default.
	(OUTPUT_FORMAT): Support bi-endian targets.

Thu Oct  3 13:52:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.h, fnmatch.c: Remove (now in libiberty).
	* Makefile.in: Rebuild dependencies.
	(CFILES): Remove fnmatch.c.
	(HFILES): Remove fnmatch.h.
	(OFILES): Remove fnmatch.o.

Thu Oct  3 15:41:24 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (mostlyclean): Move config.log to distclean.

Wed Oct  2 23:45:25 1996  Geoffrey Noer  <noer@cygnus.com>

	* emultmpl/pe.em: increase size of stack reserve to 0x2000000
	(necessary in order to compile parse.c in gcc sources under NT)

Wed Oct  2 14:49:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (ld_options): Fix typo in --rpath-link description.
	* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Suggest
	--rpath if a needed library is not found.

Tue Oct  1 16:17:33 1996  Joel Sherrill  <joel@oarcorp.com>

	* configure.tgt (mips*-*-rtems*): New target, like mips*-*-elf*.

Tue Oct  1 15:50:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo (Options): Give more detail on -l option.

	* scripttempl/elfmips.sc: Handle CREATE_SHLIB the same way that
	elf.sc does, so that glibc works better.

	* ldver.c (ld_program_version): New variable.
	(ldversion): Use it.
	* ldver.h (ld_program_version): Declare.
	* lexsup.c (ld_options): Handle --dll-verbose like --verbose, not
	--version.  Change --version handling to match current GNU
	standards.
	(help): Print bug report address.

Mon Sep 30 12:14:43 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (em32relf.c): Add rule for.
	* configure.tgt (m32r-*-*): Recognize.
	* emulparams/m32relf.sh: New file.

Thu Sep 26 13:58:47 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add symbolic doublequoting to ldmain compile edit.
	* mpw-config.in: Add mips-*-* case as mips-elf, and use more
	wildcards in matching.
	* mpw-emipself.c: New file, pregenerated mips elf emulation.

Tue Sep 17 12:18:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldint.texinfo: Rewrote.

	* configure.tgt: Add cases for MIPS 5000 like MIPS 4300.

Mon Sep 16 17:55:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/armcoff.sc: Only define symbols if RELOCATING.  Fix
	syntax error on __end__ line.

	* scripttempl/armcoff.sc: For -N or -n, don't align .data.  From
	Chris Hadley <Christopher.Hadley@cl.cam.ac.uk>

Sun Sep 15 22:09:56 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/v850.sh: Fix OTHER_RELOCATING_SECTIONS.

Sun Sep 15 10:38:16 1996  Mark Alexander  <marka@cygnus.com>

	* emulparms/d10v.sh: Set OTHER_RELOCATING_SECTIONS to put
	stack at top of simulator memory.

Fri Sep 13 15:49:45 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlex.l (SYMBOLCHARN): Add $, _, and ~.

Wed Sep 11 23:30:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (get_emulation): Check for -mips4 like -mips1, et. al.

Thu Sep  5 15:24:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (section_already_linked): Accept a lang_input_statement
	as the PTR argument.  If the file is symbols only, discard all
	input sections.
	(ldlang_add_file): Pass entry to bfd_map_over_sections.

Wed Sep  4 15:53:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (alpha-*-gnu*): New target.  From Fila Kolodny
	<fila@ibi.com>.

Tue Sep  3 00:52:54 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/v850.sh: Set OTHER_RELOCATING_SECTIONS

Sun Sep  1 21:48:58 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/v850.sh: Set EMBEDDED.

Fri Aug 30 22:30:30 1996  Jeffrey A Law  (law@cygnus.com)

	* emulparms/v850.sh: Entry symbol is "_start", tweak
	ctor/dtor support.

Fri Aug 30 18:32:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (sh-*-elf*): New target.
	* emulparams/shelf.sh: New file.
	* emulparams/shlelf.sh: New file.
	* Makefile.in (ALL_EMULATIONS): Add eshelf.o and eshlelf.o.
	(eshelf.c, eshlelf.c): New targets.
	* scripttempl/elf.sc: If EMBEDDED is defined, then don't add
	SIZEOF_HEADERS to TEXT_START_ADDR.  Expand CTOR_START and CTOR_END
	around .ctors, and DTOR_START and DTOR_END around .dtors.  Expand
	OTHER_RELOCATING_SECTIONS if RELOCATING.

Thu Aug 29 16:57:46 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.{host,tgt} (i[345]86-*-*): Recognize i686 for pentium
	pro.

Mon Aug 26 12:58:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (section): Add opt_nocrossrefs; pass value to
	lang_enter_overlay.
	(opt_nocrossrefs): New nonterminal.
	* ldlex.l: Recognize NOCROSSREFS keyword in EXPRESSION mode.
	* ldlang.c (overlay_nocrossrefs): New static variable.
	(lang_enter_overlay): Add nocrossrefs parameter.
	(lang_leave_overlay): Only add nocrossrefs if overlay_nocrossrefs
	is set.  Initialize overlay_nocrossrefs.
	* ldlang.h (lang_enter_overlay): Update declaration.
	* ld.texinfo (Overlays): Update documentation.

	* ldver.c (ldversion): Print GNU ld in the version message.

Thu Aug 22 17:10:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Set HLDENV.
	* configure.in: Substitute HLDENV.
	* configure: Rebuild.
	* Makefile.in (HLDENV): New variable.
	($(LD_PROG)): Use $(HLDENV).

Thu Aug 22 16:29:28 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (ev850.c): New target.
	* configure.tgt (v850-*-*): New target.
	* emulparams/v850.sh: New file.

Thu Aug 22 11:16:02 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add @DASH_C_FLAG@ to compiler edit.

Wed Aug 21 11:26:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Put .gnu.linkonce* sections in appropriate
	containing sections.

Mon Aug 19 13:01:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.c: Include sysdep.h.

Mon Aug 19 11:28:29 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* genscripts.sh: Undo 8/16 change.

	* emulparams/d10velf.sh (MACHINE): Explicitly set to nothing.

Fri Aug 16 19:18:08 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* genscripts.sh: Explicitly reset any shell variables set or used
	by the various .sc scripts to allow inadvertant use of these
	names as normal environment variables by the person running
	configure.

	* Makefile.in (ed10velf.c): Use tdir_d10v, not tdir_arcelf.

Fri Aug 16 14:15:41 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* scripttempl/armcoff.sc (__bss_start__, __bss_end__,
	__data_start__, __data_end__): Added to keep in sync. with the
	default ARM crt0.s. Added __CTOR_LIST__ and __DTOR_LIST__ support.

Thu Aug  8 14:24:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldcref.c (check_reloc_refs): If info->same, look for any symbol
	defined in info->defsec, not just the section symbol.

Wed Aug  7 14:40:48 1996  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* configure.in: Call BFD_NEED_DECLARATION on strstr and sbrk.
	* acconfig.h (NEED_DECLARATION_STRSTR): New macro.
	(NEED_DECLARATION_SBRK): New macro.
	* configure, config.in: Rebuild.
	* sysdep.h (strstr): Declare if NEED_DECLARATION_STRSTR.
	* ldmain.c (sbrk): Declare if HAVE_SBRK and
	NEED_DECLARATION_SBRK.

	* ldlang.c (lang_record_phdrs): Cast xmalloc and xrealloc return.

Mon Aug  5 16:26:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlex.l: Recognize OVERLAY.
	* ldgram.y: Add section_phdr field to %union.
	(section): Handle phdr_opt result.  Add OVERLAY case.
	(opt_exp_without_type): New nonterminal.
	(phdr_opt): Return list of phdrs.
	(overlay_section): New nonterminal.
	* ldlang.c: Include <ctype.h>.
	(lang_leave_output_section_statement): Add phdrs parameter.
	Change all callers.
	(lang_section_in_phdr): Remove.
	(overlay_vma, overlay_lmn, overlay_max): New static variables.
	(struct overlay_list): Define.
	(overlay_list): New static variable.
	(lang_enter_overlay, lang_enter_overlay_section): New functions.
	(lang_leave_overlay_section, lang_leave_overlay): New functions.
	* ldlang.h (lang_leave_output_section_statement): Update
	declaration for new parameter.
	(lang_section_in_phdr): Don't declare.
	(lang_enter_overlay, lang_enter_overlay_section): Declare.
	(lang_leave_overlay_section, lang_leave_overlay): Declare.
	* ld.texinfo (Overlays): New node under SECTIONS, documenting
	overlays.

	* ldlex.l: Recognize MAX and MIN.
	* ldgram.y (MAX, MIN): New terminals.
	(exp): Recognize MAX and MIN.
	* ldexp.c (fold_binary): Handle MAX and MIN.
	* ld.texinfo (Arithmetic Functions): Document MAX and MIN.

	* ld.texinfo (PHDRS): Use @cindex, not @kindex, for program header
	index entries.

	* ldgram.y (SIZEOF, ADDR): Do not specify type.

	* ldcref.c (check_nocrossref): Skip symbols with no output
	sections.

Fri Aug  2 14:57:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (LOADADDR): New terminal.
	(exp): Handle LOADADDR.
	* ldlex.l: Recognize LOADADDR.
	* ldexp.c (exp_print_token): Add LOADADDR.
	(fold_name): Implement LOADADDR.
	* ldlang.c (exp_init_os): Treat LOADADDR like ADDR.
	* ld.texinfo (Arithmetic Functions): Document LOADADDR.

Thu Aug  1 12:52:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (check_nocrossrefs): Declare.
	* ldlang.h (struct lang_nocrossref): Define.
	(struct lang_nocrossrefs): Define.
	(nocrossref_list): Declare.
	(lang_add_nocrossref): Declare.
	* ldlex.l: Recognize NOCROSSREFS keyword.
	* ldgram.y (%union): Add nocrossref field.
	(NOCROSSREFS): New terminal.
	(ifile_p1): Recognize NOCROSSREFS.
	(nocrossref_list): New nonterminal.
	* ldlang.c (nocrossref_list): Define.
	(lang_add_nocrossref): New function.
	* ldmain.c (main): If nocrossref_list is not NULL, call
	check_nocrossrefs.
	(warning_callback): Free symbols if there is no place to store
	them.
	(notice): Call add_cref if nocrossref_list is not NULL.
	* ldcref.c: Include "ldexp.h" and "ldlang.h".
	(check_nocrossrefs): New function.
	(check_nocrossref): New static function.
	(struct check_refs_info): Define.
	(check_refs, check_reloc_refs): New static functions.
	* Makefile.in: Rebuild dependencies.
	* ld.texinfo (Option Commands): Document NOCROSSREFS.

	* ld.texinfo (Section Placement): Improve the wording of the
	wildcard documentation.  Mention that wildcards are only searched
	for on the command line, not in the file system.

	* emultempl/sunos.em (gld${EMULATION_NAME}_after_open): Move
	definition of lib_path inside condition where it is used.

Wed Jul 31 13:17:10 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* emulparams/d10velf.sh: Now works with elf.sc.

Wed Jul 31 11:52:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* emulparams/d10velf.sh (SCRIPT_NAME): Change to vanilla.

Tue Jul 30 14:46:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_size_sections): Add the section VMA to the result
	value when computing the address of a section.

	* ld.h (args_type): Add cref field.
	* lexsup.c (parse_args): Set command_line.cref.
	* ldmain.c (main): Check command_line.cref rather than
	link_info.notice_all.
	(notice): Likewise.

	* ldcref.c (output_one_cref): Don't crash if a symbol is defined
	in a section without an owner.

Mon Jul 29 17:23:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.h, fnmatch.c: New files.
	* ldlex.l: Remove unused definition of FILENAME.  Add definition
	of WILDCHAR.  In SCRIPT mode, accept any sequence of WILDCHAR as a
	NAME.
	* ldgram.y (file_NAME_list): Accept '*' and '?' specially.
	(input_section_spec): Accept '?' specially.
	(statement): Change exp to mustbe_exp in length and FILL cases.
	(section): Call ldlex_script before section statements, and call
	ldlex_popstate after them.
	* ldlang.c: Include "fnmatch.h".
	(wildcardp): New static function.
	(wild_section): Permit the section name to be a wildcard.
	(wild_file): New static function, broken out of wild.
	(wild): Call wild_file.  Permit the file name to be a wildcard.
	(open_input_bfds): Don't call lookup_name for a wildcard pattern.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add fnmatch.c.
	(HFILES): Add fnmatch.h.
	(OFILES): Add fnmatch.o.
	* ld.texinfo: Document that file and section names can now be
	wildcard patterns.

	* ldlang.c (lang_place_orphans): Correct condition: place a common
	section if not relocateable or if common definitions are forced.

Wed Jul 24 12:16:38 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* emulparams/d10velf.sh (SCRIPT_NAME): Change to elf.

Wed Jul 24 13:38:22 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* configure.tgt (d10v-*-*): Don't require the -elf, allow plain d10v.

Tue Jul 23 10:36:19 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in (ed10velf.c): New target.
	* configure.tgt (d10v-*-elf*): New target.
	* emulparams/d10velf.sh: New file.

Thu Jul 18 16:25:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (sparc*-*-sysv4*): New target.  From Andrew Gierth
	<ANDREWG@microlise.co.uk>.

	* configure.host: Change irix5 to irix[56]*.
	* configure.tgt: Likewise.

Wed Jul 17 10:52:46 1996  Kim Knuttila  <krk@cygnus.com>

	* emultempl/pe.em (sort_sections): Pay attention to return code.

	* ldmisc.c (demangle): Remove all prefix '.'s from a name.

Mon Jul 15 11:49:49 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Round
	the value of __start_SECNAME to the alignment required by the
	section to be placed.

Tue Jul  9 12:09:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (mips*el-*-elf*): Use elf32elmip.
	(mips*-*-elf*): Use elf32ebmip.
	* emulparams/elf32bmip.sh (EMBEDDED): Don't define.
	* emulparams/elf32lmip.sh (EMBEDDED): Don't define.
	* emulparams/elf32elmip.sh: New file; copy of elf32lmip.sh with
	EMBEDDED defined.
	* emulparams/elf32ebmip.sh: New file; copy of elf32bmip.sh with
	EMBEDDED defined.
	* emulparams/elf32b4300.sh (EMBEDDED): Define.
	* emulparams/elf32l4300.sh (EMBEDDED): Define.
	* Makefile.in (ALL_EMULATIONS): Add eelf32ebmip.o eelf32elmip.o.
	(eelf32ebmip.c, eelf32elmip.c): New targets.

Thu Jul  4 12:01:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldver.c (ldversion): Set version to cygnus-2.7.1.

	* Released binutils 2.7.

	* emulparams/pc532macha.sh: Rename from pc532machaout.sh to avoid
	System V file name limitations.
	* configure.tgt (nc32k-pc532-mach*, ns32k-pc532-ux*): Use
	pc532macha rather than pc532machaout.
	* Makefile.in (ALL_EMULATIONS): Change epc532machaout.o to
	epc532macha.o.
	(epc532macha.c): Rename target from epc532machaout.c.

Wed Jul  3 11:40:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (print_padding_statement): Use %u, not %x, to print
	fill value.

Sun Jun 30 11:16:43 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-eppcmac.c: Update to reflect May 23 change to aix.em.

Thu Jun 27 14:03:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Put the .sa
	file just before the .so file, rather than just after.

	* configure.host: Use -print-file-name=FILE rather than piping
	-print-libgcc-file-name through sed.
	(i[345]86*-*-sco*, i[345]86-*-isc*): Create crtbegin.o and
	crtend.o files, in case gcc doesn't use them.
	* Makefile.in (mostlyclean): Remove crtbegin.o and crtend.o.

Wed Jun 26 15:57:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (mips*-dec-osf*): New target.

Tue Jun 25 22:15:29 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	(AC_PROG_INSTALL): Added.
	* configure: Rebuilt.

Mon Jun 24 18:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc (_GLOBAL_OFFSET_TABLE_): Don't do a
	PROVIDE of _GLOBAL_OFFSET_TABLE_, since it needs to be at a
	non-fixed location.

Mon Jun 24 17:55:31 1996  Jouke Numan  <jnuman@bazis.nl>

	* ldlang.h (enum section_type): Define.
	(lang_output_section_statement_type): Remove loadable field.  Add
	sectype field.
	(lang_enter_output_section_statement): Change flags parameter in
	prototype to sectype.
	* ldgram.y (typebits): Remove.
	(sectype): New static variable.
	(opt_at): Use sectype rather than typebits.
	(type): Set sectype rather than typebits.
	(atype): Likewise.
	* ldlex.l: Recognize DSECT, COPY, INFO, and OVERLAY in
	EXPRESSION mode.
	* ldlang.c (lang_output_section_statement_lookup): Set sectype
	field rather than loadable field.
	(wild_doit): Check sectype rather than loadable.
	(lang_record_phdrs): Likewise.
	(lang_enter_output_section_statement): Rename flags parameter to
	sectype.  Set sectype field rather than loadable field.  Set flags
	field based on sectype.

Mon Jun 24 12:00:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elf.sc: Force .stab* and .comment sections to start
	at 0.

	* configure.in: On alpha*-*-osf*, link against libbfd.a if not
	using shared libraries.
	* configure: Rebuild with autoconf 2.10.

Fri Jun 21 17:40:56 1996  Joel Sherrill  <joel@merlin.gcs.redstone.army.mil>

	* configure.tgt: Add support for *-*-rtems* configurations.

Fri Jun 21 13:05:51 1996  Richard Henderson  <rth@tamu.edu>

	* configure.tgt (alpha-*-linuxecoff*): New target.
	(alpha-*-linux*): Use elf64alpha.
	* emulparams/elf64alpha.sh: New file.
	* emultempl/elf32.em: If ELFSIZE is not set, set it to 32.  Use
	${ELFSIZE} rather than 32 when calling BFD routines.
	(hold_rodata): New static variable.
	(gld${EMULATION_NAME}_place_orphan): Use hold_rodata for a
	readonly section that is not code.
	(gld${EMULATION_NAME}_place_section): Set hold_rodata.  Don't use
	a .rel section unless its bfd_section field is not NULL.
	* Makefile.in (ALL_EMULATIONS): Add eelf64alpha.o.
	(eelf64alpha.c): New target.

Fri Jun 21 12:45:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldmisc.c (vfinfo): Correct handling of 0 in %W case.

Thu Jun 20 13:55:28 1996  Ian Lance Taylor  <ian@cygnus.com>

	Add enough support to understand the gcc svr3.ifile script:
	* ldlex.l: Recognize BLOCK and GROUP in EXPRESSION context.  Add
	BIND keyword.
	* ldgram.y: Add BIND token.
	(section): Recognize GROUP.
	(opt_ext_with_type): Recognize a couple of cases of BIND.
	* ldlang.c (init_os): Don't do anything if section is already
	initialized.  Call exp_init_os on addr_tree field.
	(exp_init_os): New static function.
	(map_input_to_output_sections): Call exp_init_os on assignment
	expression.
	(lang_place_orphans): Check for common sections by name COMMON
	rather than by common_section field.  Don't warn about absence of
	[COMMON] command.

	* ldlang.h (lang_input_statement_type): Remove useless fields
	common_section, common_output_section, and complained, as well as
	all references to them.

	* ldexp.c: Reindent a lot of code.
	(exp_fold_tree): Call FAIL rather than einfo in default case.

Wed Jun 19 11:40:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host (m88*-*-dgux*): Quote HOSTING_CRT0.  From
	<randall.hron@medaphis.com>.

Tue Jun 18 15:53:09 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* scripttempl/h8300s.sc: New file for H8/S.
	* emulpararms/h8300s.sh: New file for H8/S.
	* Makefile.in (ALL_EMULATIONS): Add H8/S.
	(e_h8300s.c): Add dependencies.
	* configure.tgt: Add H8/S to targ_extra_emuls.

Tue Jun 18 17:55:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (i[345]86*-*-isc*): New target.  From
	<uddeborg@carmen.se>.

Wed Jun 12 12:46:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c: Include "libiberty.h".
	(parse_args): Copy the -Y argument into memory.
	(set_default_dirlist): Don't put the ':' back into the directory
	list.

Fri Jun  7 11:27:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em: Include libiberty.h.
	(gld${EMULATION_NAME}_set_symbols): New static function to add
	LD_LIBRARY_PATH to the list of search directories.
	(ld_${EMULATION_NAME}_emulation): Add new set_symbols routine.

Thu Jun  6 11:50:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emulparams/elf32bmip.sh (OTHER_GOT_SYMBOLS): Use ALIGN(16)
	rather than . when computing _gp value.  From Per Fogelstrom.
	* emulparams/elf32lmip.sh (OTHER_GOT_SYMBOLS): Likewise.

	* ldmain.c (main): Don't close and unlink the file on error, since
	remove_output will do it anyhow.
	* ldlang.c (open_output): Set boolean variable to true, not 1.

Wed Jun  5 18:34:14 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* emulparams/{elf32b4300.sh,elf32l4300.sh} (SCRIPT_NAME): Use
	elfmips instead of elf.

Tue Jun  4 18:43:07 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldcref.c: New file.
	* ld.h (add_cref, output_cref): Declare.
	* ldmain.c (main): Initialize notice_all field.  If it is set at
	end of link, call output_cref.
	(notice): Rename from notice_ysym.  Check notice_all.
	* ldmisc.c (finfo): Make globally visible.
	* ldmisc.h (finfo): Declare.
	* lexsup.c (OPTION_CREF): Define.
	(ld_options): Add "cref".
	(parse_args): Handle OPTION_CREF.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add ldcref.c.
	(OFILES): Add ldcref.o.
	* ld.texinfo, ld.1: Document --cref.

Tue Jun  4 12:12:25 1996  Tom Tromey  <tromey@csk3.cygnus.com>

	* Makefile.in (install): Make $(tooldir) and $(tooldir)/bin.

Fri May 31 12:40:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (sort_sections): Don't assume that a
	wild_statement has a section name.

Wed May 29 13:13:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/elfmips.sc: Quote test -z argument.

	* ld.texinfo: Clarify the CONSTRUCTORS command.

Thu May 23 16:07:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_read_file): Initialize
	file, not impfile.

Wed May 22 11:31:30 1996  Doug Evans  <dje@seba.cygnus.com>

	* ldlang.c (wild_doit): Don't copy over SEC_LINK_{ONCE,DUPLICATES}
	if final link.
	* emultempl/pe.em (sfunc): Renamed to sort_by_file_name.
	(sort_by_section_name, sort_sections_1): New functions.
	(sort_sections): Only sort by file name sections in .idata.
	Add "Grouped Sections" support.
	(gld${EMULATION_NAME}_place_orphan): Rewrite to support Grouped
	Sections.
	(gld${EMULATION_NAME}_place_section): Delete.
	* scripttempl/pe.sc (.text,.data,.rdata): Add *(.foo\$).
	(.CRT,.rsrc): Rewrite to use Grouped Section support.

Tue May 21 14:31:48 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-eppcmac.c: Update to reflect changes to aix.em.

Sun May 19 16:59:44 1996  Doug Evans  <dje@seba.cygnus.com>

	* ldlang.c (dprint_statement): Stop printing at end of list.

Sat May 18 13:12:05 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	Support for --force-exe-suffix
	* ld.h (args_type): Add force_exe_suffix.
	* ld.texinfo: Add documentation.
	* ldmain.c (main):  Add support for option.
	* lexsup.c (OPTION_FORCE_EXE_SUFFIX): New.
	(ld_options, parse_args):  Add support for option.

Wed May 15 12:50:25 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* emultempl/pe.em (set_pe_value): Pass 0 not 16 to strtoul call.

Fri May 10 16:28:44 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc (__stack): Make __stack 0 if it was
	referenced but not defined.

Thu May  9 08:52:23 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* emulparams/{elf32bmip.sh,elf32lmip.sh,mipsidt.sh,mipsidtl.sh}:
	Set a new variable to signify if the final target is an embedded
	system.
	* scripttempl/{mips.sc,elfmips.sc}: Don't add SIZEOF_HEADERS to
	.text for an embedded system.

Tue May  7 10:56:11 1996  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/pe.em (gld${EMULATION_NAME}_place_orphan): New function.
	(gld${EMULATION_NAME}_place_section): New function.
	(hold_{section,use,text,rdata,data}): New static locals.
	(ld_${EMULATION_NAME}_emulation): Update orphan field.
	* scripttempl/pe.sc: Whitespace cleanup.  Semicolon usage cleanup.
	(INIT,FINI): Delete, unused.
	(.text): Document orphan .text.foo sections.
	(.rdata): Document orphan .rdata.foo sections.
	(.data): Document orphan .data.foo sections.

Tue May  7 11:35:46 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300.sc: Place ".tiny" sections right
	after ".data" sections.
	* scripttempl/h8300h.sc: Place ".tiny" sections into
	the "tiny" memory region, 0xff8000 through 0xffff00.

	* scripttempl/h8300.sc: Set the entry point to the value of
	"_start" rather than the start of the text segment.
	* scripttempl/h8300h.sc: Likewise.

	* scripttempl/h8300.sc: Place .rodata sections before .text
	sections in main ram.
	* scripttempl/h8300h.sc: Likewise.

Mon May  6 23:32:30 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300h.sc: Use "eight", not "eightbit" for the
	8-bit region and 8-bit sections.

Wed May  1 17:50:06 1996  Doug Evans  <dje@canuck.cygnus.com>

	* ldlang.c (section_already_linked): Fix typos.

Mon Apr 29 20:31:06 1996  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/pe.sc (.endjunk): Define __end__.

Mon Apr 29 17:05:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (longest_section_name): Remove.
	(SECTION_NAME_MAP_LENGTH): Define.
	(print_size, print_alignment, print_fill, print_section): Remove.
	(print_flags): Remove.
	(lang_map): Rewrite.
	(print_output_section_statement): Rewrite.
	(print_assignment): Rewrite.
	(print_one_symbol): Rewrite.
	(print_input_section): Rewrite.
	(print_fill_statement): Rewrite.
	(print_data_statement): Rewrite.
	(print_address_statement): New static function.
	(print_reloc_statement): Rewrite.
	(print_padding_statement): Rewrite.
	(print_wild_statement): Rewrite.
	(print_statement_list): Clean up.
	(print_statement): Clean up.  Some minor output changes.
	(print_statements): Clean up.
	(load_symbols): Put another - before -whole-archive.
	* ldexp.c (exp_print_tree): Change etree_value and etree_rel to
	print 0x and to omit leading zeroes.  For etree_rel, use %B to
	print the BFD.  For etree_assign, remove the space after the
	destination name.
	* ldwrite.c: Include "libiberty.h".
	(clone_section): Call xstrdup, not strdup.
	(ldwrite): Don't print any map information.
	(print_symbol_table, print_file_stuff, print_symbol): Remove.
	* ldmain.c (main): Call lang_map when appropriate.
	* ldmisc.c (vfinfo): Add support for %W.
	(print_address): Remove.
	* ldmisc.h (print_address): Don't declare.
	* Makefile.in: Rebuild dependencies.

Mon Apr 29 10:29:07 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.host (m68*-*-linux*): Add -dynamic-linker to
	HOSTING_CRT0.  Search -lgcc both before and after -lc in
	HOSTING_LIBS.  Look for crt{begin,end}.o in the compiler directory
	at first.
	(i[345]86-*-linux*): Look for crt{begin,end}.o in the compiler
	directory at first.

Fri Apr 26 14:42:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldmisc.h (demangle): Declare.
	* ldmisc.c: Include "libiberty.h".  Include demangle.h with "",
	not <>.
	(demangle): Make non-static.  Remove remove_underscore paramter.
	Always return an allocated string.
	(vfinfo): Free result of demangle.  Add case 'G'.  Use %T to print
	functionname, rather than calling demangle.  Print a colon between
	the BFD(section+offset) and the line number.
	* ldmain.c (add_archive_element): Improve format of archive
	information in map file.
	(constructor_callback): Don't print anything to the map file.
	* ldlang.c (lang_one_common): Improve format of common symbol
	information in map file.
	* ldctor.c (ldctor_build_sets): If producing a map file, print set
	information.
	* ldwrite.c (print_symbol_table): Print a newline before the
	header in the map file.
	* Makefile.in: Rebuild dependencies.

	* ldmisc.c (vfinfo): Reindent.

Mon Apr 22 12:07:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_size_sections): If _cooked_size is not 0, then
	don't clobber it when not relaxing.

	* ld.h (ld_config_type): Remove traditional_format field.
	* ldmain.c (main): Use link_info.traditional_format rather than
	config.traditional_format.
	* ldlang.c (ldlang_open_output): Likewise.
	* lexsup.c (parse_args): Likewise.
	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Likewise.
	* mpw-eppcmac.c (gldppcmacos_parse_args): Likewise.

	* ldlang.c (wild_doit): Discard debugging sections if we are
	stripping debugging information.

	* emulparams/z8002.sh (ARCH): Set to z8002, not z8k.

Tue Apr 16 16:38:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldexp.c (fold_binary): Correct handling of subtraction with
	absolute values.
	(fold_name): Permit symbols in lang_allocating_phase_enum.

	* scripttempl/aout.sc: Only PROVIDE __stack when RELOCATING.  Undo
	accidental changes in last patch.

Tue Apr 16 10:25:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.tgt (powerpc*-*-{sysv,linux}): Add aliases.
	(powerpcle*-*-{sysv,solaris}): Ditto.

Mon Apr 15 14:50:56 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* scripttempl/aout.sc: Add PROVIDE (__stack = 0) so I can use it
	in m68k/crt0.S without things blowing up.

Fri Apr 12 16:40:56 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* scripttempl/m68kcoff.sc: Remove default address for .data so
	.text, .data, and .bss are all sequential.

Thu Apr 11 12:05:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/m68kcoff.sc: Remove regions and simplify.

Wed Apr 10 14:41:53 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300.sc: Add the "8-bit area" in the upper 256
	bytes of the address space.  Put data from the ".eight" sections
	into the 8-bit area.
	* scripttempl/h8300h.sc: Likewise.

Tue Apr  9 14:10:42 1996  Doug Evans  <dje@canuck.cygnus.com>

	* emultempl/generic.em (gld${EMULATION_NAME}_before_parse):
	Pass $ARCH to ldfile_set_output_arch instead of setting
	ldfile_output_architecture directly.

Tue Apr  9 14:22:15 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc (.init,.fini): Put .init, .fini section
	next to .text.  Put _etext after .text, .init, .fini, and
	.rodata{,2} sections.

Tue Apr  9 12:18:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo: Rearrange option documentation.

	* lexsup.c (ld_options): New static array.
	(parse_args): Build shortopts and longopts from ld_options array.
	(help): New static function.
	* ldver.h (help): Don't declare.
	* ldver.c (ldversion): Reindent.
	(help): Remove.

	* ld.texinfo, ld.1: Mention -E as a synonym for -export-dynamic.

Mon Apr  8 11:56:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em: When checking for a native emulation, check
	that the current emulation is the default emulation.
	* emultempl/sunos.em: Likewise.

	* configure.in: Permit --enable-shared to specify a list of
	directories.
	* configure: Rebuild.

	* lexsup.c (parse_args): Add -E as a synonym for -export-dynamic,
	for HP/UX compatibility.

Fri Apr  5 14:30:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): New
	static function, if ${host} = ${target}.
	(gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
	needed shared library if ${host} = $[target}.

	* configure.host (i[345]86-*-linux*): Add -dynamic-linker to
	HOSTING_CRT0.  Search -lgcc both before and after -lc in
	HOSTING_LIBS.

	* configure.tgt: Add i[345]86-*-freebsdelf* target; from John
	Polstra <jdp@polstra.com>.

Fri Apr  5 18:11:25 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* emulparams/elf32{b,l}4300.sh (MACHINE): Add explicit
	architecture number.
	* scripttempl/elf.sc: Use $MACHINE definition if present.
	* configure.tgt (targ_extra_emuls): Force 4100 build to use same
	template as 4300.

Mon Apr  1 17:35:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_size_sections): Change region check to handle
	regions which end at the highest possible address correctly.
	From Roland Weber <roweber@ira.uka.de>.

	* ldlang.c (section_already_linked): New static function.
	(wild_doit): Discard sections with SEC_EXCLUDE set if not doing a
	relocateable link.  Don't worry about section being NULL, since it
	never should be.  Don't call init_os unless the section is going
	to be added.
	(ldlang_add_file): Call section_already_linked for each section.
	* ldmain.c (multiple_definition): Don't warn about multiple
	definitions in sections which are being discarded.

Sun Mar 31 00:30:47 1996  steve chamberlain  <sac@slash.cygnus.com>

	* scripttempl/{ppcpe.sc, pe.sc} (.junk): Remove and use /DISCARD/.
	* emultempl/pe.em (init): Remove special case PPC code.

Fri Mar 29 00:01:29 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300.sc: Make vectors section 0xc4 bytes long
	so as not to overwrite the magic syscall entry at 0xc4.
	* scripttempl/h8300h.sc: Likewise.

Thu Mar 28 11:05:47 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.tgt (sparc64-*-solaris2*): Delete.
	Stick with sparc-*-solaris2*.

Wed Mar 27 12:33:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (DISCARD_SECTION_NAME): Define to "/DISCARD/".
	* ldlang.c (init_os): Fail on an attempt to initialize any section
	named DISCARD_SECTION_NAME.
	(wild_doit): Discard input sections assigned to an output section
	named DISCARD_SECTION_NAME.
	* ld.texinfo: Document use of /DISCARD/.

	* ldlang.c: Fix some indentation and comments.

Tue Mar 26 18:14:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Call bfd_set_error_program_name.

Thu Mar 21 13:17:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo: Fix a couple of indexing entries.  Mention that
	--verbose displays builtin linker scripts.

	* ldmisc.c (vfinfo): case 'I': If the file is not in an archive,
	and the local symbol name does not match the filename, print the
	filename as well.

	Patches from John Polstra <jdp@polstra.com> for FreeBSD ELF:
	* lexsup.c (parse_args): -Bshareable is a synonym for -shared.
	* emulparams/elf_i386.sh (NONPAGED_TEXT_START_ADDR): Make the same
	as TEXT_START_ADDR.

Wed Mar 20 18:18:25 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* ld.texinfo: Fix typos.  Use @pxref only inside parentheses.

Wed Mar 20 16:56:15 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (add_wrap): New function.
	* ldmain.h (add_wrap): Declare.
	* lexsup.c (parse_args): Call add_wrap.

Tue Mar 19 16:44:20 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.host (sparc*-*-solaris2* host): Accept any sparc variant.

Wed Mar 13 17:47:31 1996  Jeffrey A Law  (law@cygnus.com)

	* scripttempl/h8300.sc: Change name of page zero memory
	from "null" to "vectors".  Create an output section for
	vectors.  Add comments on how to explicitly place items
	in the vector table.
	* scripttempl/h8300h.sc: Likewise.

Wed Mar 13 12:40:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/lnk960.em (machine_table): Add jx and hx.

	* genscripts.sh: Don't use ${9:-xx}, since Ultrix /bin/sh doesn't
	support it.

Tue Mar 12 12:43:59 1996  David Mosberger-Tang  <davidm@koala.azstarnet.com>

	* ld.h (ld_config_type): Add warn_multiple_gp field.
	* lexsup.c (parse_args): Handle --warn-multiple-gp.
	* ldmain.c (warning_callback): Suppress multiple gp values warning
	if --warn_multiple_gp was not used.
	* ld.texinfo, ld.1: Document --warn-multiple-gp.

Tue Mar 12 12:02:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Handle --wrap.
	* ldmain.c (main): Initialize link_info.wrap_hash.
	* ldexp.c (fold_name): Use bfd_wrapped_link_hash_lookup in DEFINED
	and NAME cases.
	* ld.texinfo, ld.1: Document --wrap.

	* configure: Rebuild with autoconf 2.8.

	Don't do SunOS style dynamic linking for sparc-aout:
	* configure.tgt (sparc64-*-aout*): Use sparcaout, not sun4.
	(sparclite*-fujitsu-*, sparc*-*-aout): Likewise.
	(sparc*-wrs-vxworks*): Likewise.
	* emulparams/sparcaout.sh: New file.
	* Makefile.in (ALL_EMULATIONS): Add esparcaout.o.
	(esparcaout.c): New target.

Wed Mar  6 16:06:52 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* scripttempl/elfppc.sc (.sdata2, .sbss2): Implement Feb 2 change
	in a different manner to work around differences in shell variable
	expansion.

Wed Mar  6 18:08:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.h (ldemul_unrecognized_file): Declare.
	(ldemulation_xfer_type): Add unrecognized_file field.
	* ldemul.c (ldemul_unrecognized_file): New function.
	* ldlang.c (load_symbols): If a file can not be recognized, call
	ldemul_unrecognized_file before trying it as a linker script.
	* aix.em (gld${EMULATION_NAME}_unrecognized_file): New static
	function.
	(gld${EMULATION_NAME}_read_file): Use FOPEN_RT, not "r".
	(ld_${EMULATION_NAME}_emulation): Initialize unrecognized_file.

Mon Mar  4 14:11:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (wild): Handle foo.a(.text) by mapping each included
	member of foo.a separately.  From Jouke Numan <jnuman@bazis.nl>.

Fri Mar  1 10:24:59 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
	Search trinary.cond rather than searching trinary.lhs twice.

Tue Feb 27 15:08:43 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Edit out shared library support.
	(@TDIRS@): Edit out, can't use genscripts.

Tue Feb 27 15:09:21 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.tgt (m68k-*-linuxaout*, m68k-*-linux*): New targets.
	* emulparams/m68klinux.sh: New file.
	* emultempl/linux.em (gld${EMULATION_NAME}_before_allocation):
	Call bfd_${EMULATION_NAME}_size_dynamic_sections instead of
	bfd_linux_size_dynamic_sections.
	* Makefile.in (ALL_EMULATIONS): Add em68klinux.o.
	(em68klinux.c): New target.
	* configure.host (m68*-*-linuxaout*, m68*-*-linux*): New hosts.

Tue Feb 27 12:55:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ALL_EMULATIONS): Sort into alphabetical order.
	Fill in missing entries.

	* lexsup.c (parse_args): Recognize --no-whole-archive.
	* ldlang.h (lang_input_statement_type): Add whole_archive field.
	* ldlang.c (new_afile): Set whole_archive field.
	(load_symbols): Check input file specific whole_archive field
	rather than global variable.
	* ld.texinfo, ld.1: Document --no-whole-archive.

Tue Feb 20 16:07:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt: Correct gldi960 to gld960.

Mon Feb 19 11:16:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Check
	the SONAME if it is available.
	(gld${EMULATION_NAME}_stat_needed): Use the SONAME, not the
	filename, when checking for conflicting library versions.  Don't
	assume that the suffix is only numbers and dots.

	* ld.texinfo: Mention that -R can be used for -rpath.

Sun Feb 18 15:05:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Check for 'do not mix' from native linker before
	trying to use -rpath.

Thu Feb 15 13:58:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Remove explicit substitution of CFLAGS; autoconf
	does it anyhow.
	* configure: Rebuild.
	* Makefile.in (LDFLAGS): Set to @LDFLAGS@.

	* configure.in: Call AC_PROG_CC before configure.host.
	* configure: Rebuild.
	* configure.host: Remove go32 host, since it should no longer be
	necessary.  Don't set CC for romp host.

	* scripttempl/elf.sc: Don't skip a page in virtual memory space if
	the text segment ends exactly on a page boundary.

	* configure.in: Substitute RPATH_ENVVAR.
	* configure: Rebuild.
	* configure.host: Set RPATH_ENVVAR.
	* Makefile.in (RPATH_ENVVAR): New variable.
	(check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.

Wed Feb 14 18:49:01 1996  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* configure.in: Redo emulation handling so that each emulation
	searches the correct tool directory, based on the target alias.
	For example, "configure --enable-targets=m68k-coff i386-linux"
	will search /usr/local/i386-linux/lib for linux and
	/usr/local/m68k-coff/lib for m68k-coff.
	* configure: Rebuild.
	* configure.tgt: Add special tdir settings for Linux.
	* Makefile.in: Add @TDIRS@.  Pass "$(tdir_EMUL)" to ${GENSCRIPTS}
	for each eEMUL.c target.
	* genscripts.sh: Accept specific alias as 9th argument, and use it
	in LIB_PATH.

Wed Feb 14 16:38:36 1996  Martin Anantharaman  <martin@mail.imech.uni-duisburg.de>

	* ldlang.c (lang_set_startof): Don't do anything for a
	relocateable link.

	* ldgram.y (mri_script_file): Call mri_draw_tree.
	* mri.c (mri_draw_tree): Make globally visible.  Don't bother to
	create memory regions.
	(mri_load): Don't call mri_draw_tree.
	* mri.h (mri_draw_tree): Declare.

	* configure.tgt (m68*-*-psos): New target.
	* emulparams/m68kpsos.sh: New file.
	* scripttempl/psos.sc: New file.
	* Makefile.in (ALL_EMULATIONS): Add em68kpsos.o.
	(em68kpsos.c): New target.

Wed Feb 14 11:09:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.tgt (*-*-ieee*): New target; use vanilla.

	* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Strip
	`:foo' from ${ARCH}.

Tue Feb 13 15:58:58 1996  Bryan Ford  <baford@snake.cs.utah.edu>

	* scripttempl/i386msdos.sc: Don't pad the .text section.  Put
	.rodata in .data.

Tue Feb 13 14:04:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Set HDLFLAGS for *-*-hpux with --enable-shared.

	* emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Warn if
	it looks like we might be linking in two different versions of the
	same shared library.  Based on a patch from H J Lu <hjl@zoom.com>.

Thu Feb  8 19:25:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_size_sections): Increment the section size when a
	padding statement is encountered.

Wed Feb  7 14:01:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Look for --enable-shared.  Change the value of
	BFDLIB when linking against a shared library on SunOS.
	* configure: Rebuild.
	* configure.host: If using a shared BFD library, try to pass a
	reasonable -rpath option when linking.
	* Makefile.in (BFDLIB): Set to @BFDLIB@.

Tue Feb  6 12:29:14 1996  Doug Evans  <dje@charmed.cygnus.com>

	* emulparams/elf64_sparc.sh (ARCH): Change to `sparc:v9'.
	* emultempl/generic.em: Strip `:foo' from ${ARCH}.

Mon Feb  5 16:25:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	Support for building bfd and opcodes as shared libraries, based on
	patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
	* configure.in (HLDFLAGS): New substitution.
	* configure: Rebuild.
	* configure.host: Set HLDFLAGS on SunOS.
	* Makefile.in (HLDFLAGS): New variable.
	(BFDDEP): New variable.
	(BFDLIB): Change to -L../bfd -lbfd.
	($(LD_PROG)): Depend upon $(BFDDEP) rathern than $(BFDLIB).  Use
	$(HLDFLAGS) in link.
	(check): Set LD_LIBRARY_PATH in the environment.

Fri Feb  2 19:26:25 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* scripttempl/elfppc.sc (.sdata2, .sbss2): Put .sdata2 and .sbss
	in the read-only section, not read/write unless we are making a
	shared library.
	(.debug*): Add dwarf debug sections.
	(.rela.{sdata*,sbss*}): Add sections.

Fri Feb  2 16:50:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Regenerate.

Thu Feb  1 10:50:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emulparams/elf_i386.sh (TEXT_START_ADDR): Change to 0x8048000,
	for SVR4 compatibility.

	* ldexp.c (exp_fold_tree): Correct handling of ABSOLUTE.

Wed Jan 31 17:30:19 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.tgt (i[345]86-*-cygwin32, powerpcle-*-cygwin32): New.
	* emultempl/pe.em (definfo init): Make the default stack reserve
	of a PPC larger.

Wed Jan 31 14:34:23 1996  Richard Henderson  <rth@tamu.edu>

	* configure.tgt (m68*-apple-aux*): New target.
	* emulparams/m68kaux.sh: New file.
	* scripttempl/m68kaux.sc: New file.
	* Makefile.in (ALL_EMULATIONS): Add em68kaux.o.
	(em68kaux.c): New target.

Tue Jan 30 13:18:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Ignore
	-bnoentry, since the right thing tends to happen anyhow.

Mon Jan 29 12:29:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo, ld.1: Document -export-dynamic.

Fri Jan 26 11:11:55 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* emultempl/sunos.em: Check for native compile by comparing
	${target} and ${host}.

Thu Jan 25 16:46:58 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* emulparams/{elf32b4300.sh, elf32l4300.sh}: Changed
	TEXT_START_ADDR to allow use on IDT and PMON systems.

Wed Jan 24 20:59:40 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
	correct spelling.

Wed Jan 24 16:59:19 1996  Doug Evans  <dje@charmed.cygnus.com>

	* configure.tgt (sparc64-*-solaris2*): New configuration.
	(sparc64-*-aout*): Renamed from sparc64*.

Mon Jan 22 13:01:35 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.in (GENSCRIPTS): Pass @host@ @target@ @target_alias@.
	* genscripts.sh: Set host, target and target_alias variables.
	Check for native compile by comparing ${target} and ${host}.
	* emultempl/elf32.em: Likewise.
	* scripttempl/elfmips.sc: Test ${target}, not ${target_alias}.

Mon Jan 22 11:03:23 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc: Refine eabi support to better support
	.sdata, .sdata2, .sbss, etc. sections.

Tue Jan 16 15:16:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (%union): Add phdr field.
	(phdr): Use phdr_qualifiers rather than opt_hdrs and opt_at.
	(phdr_qualifiers): New nonterminal.  Add support for FLAGS.
	(opt_hdrs, hdr): Remove.
	(phdr_val): New nonterminal.
	* ldlang.c (lang_new_phdr): Replace hdrs parameter with filehdr
	and phdrs parameters.  Add flags parameter.
	(lang_record_phdrs): Update for changes to lang_phdr.  Pass flags
	to bfd_record_phdr.
	* ldlang.h (struct lang_phdr): Replace hdrs field with filehdr and
	phdrs fields.  Add flags field.
	(LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Remove.
	(lang_new_phdr): Update declaration.
	* ld.texinfo: Document FLAGS.

Mon Jan 15 15:07:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation):
	Don't make a shared library because of an undefined reference to
	__GLOBAL_OFFSET_TABLE_.

	Add some Irix 5 support, mostly from Kazumoto Kojima
	<kkojima@info.kanagawa-u.ac.jp>:
	* emulparams/elf32bmip.sh (SCRIPT_NAME): Change to elfmips.
	(SHLIB_TEXT_START_ADDR): Define.
	(OTHER_GOT_SYMBOLS): Define.
	(OTHER_READWRITE_SECTIONS): Remove initialization of _gp.
	(EXECUTABLE_SYMBOLS): Don't define.
	(DYNAMIC_LINK): Don't define.
	* emulparams/elf32lmip.sh: Same changes as elf32bmip.sh.
	* scripttempl/elfmips.sc: New file.
	* configure.host (mips*-dec-bsd*): Change mips to mips*.
	(mips*-sgi-irix4*): Likewise.
	(mips*-sgi-irix5*): New entry.
	* Makefile.in (eelf32bmip.c): Depend upon elfmips.sc rather than
	elf.sc.
	(eelf32lmip.c): Likewise.

Sat Jan 13 09:41:43 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc: Remove support for .rel.* sections.  Add
	.rela.got.neg section.

Fri Jan 12 14:56:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/sh.sc: Only build constructors when CONSTRUCTING.

	* ldmisc.c: Include <stdarg.h> rather than <varargs.h> if
	ANSI_PROTOTYPES is defined.  Remove special handling of
	WINDOWS_NT.  Various indendation fixes.
	(vfinfo): Change fmt parameter to const char *.
	(info_msg): Write <stdarg.h> version.
	(einfo, minfo, finfo): Likewise.
	(info_assert): Change file parameter to const char *.
	* ldmisc.h (einfo, minfo, info_msg): If ANSI_PROTOTYPES is
	defined, use a real prototype.
	(info_assert): Change first parameter to be const char *.

Fri Jan 12 13:29:55 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc: Add support for .sdata2/.sbss2, etc.  Add
	in old support that 2.7.2 needs, but the current compiler does
	not.

	* Makefile.in (eelf32{,l}ppc.c): Fix up dependencies to use the
	correct Linker script template.

	* emulparams/elf32{,l}ppc.sh (TEXT_START_ADDR): Set to 0x40000,
	not 0x400000.
	(DATA_ADDR,NONPAGED_TEXT_START_ADDR): Delete.

Tue Jan  9 15:53:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/alpha.sc: Put .rconst right after .rdata.

Fri Jan  5 14:07:45 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation):
	sort using right pointer.

Fri Jan  5 12:25:47 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc: Remove support for creating special
	labels for eabi section begin/end here.  The compiler now uses
	crt{i,n}.o to create these symbols.

Thu Jan  4 17:08:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Change existing Linux HOSTING_CRT0 to be used
	for a.out only, and put in appropriate HOSTING_CRT0 and
	HOSTING_LIBS values for Linux ELF.

Thu Jan  4 12:02:05 1996  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/h8300.sc: Use all 64K for ram.
	* scripttempl/h8300h.sc: Define 256K ram size.

Thu Dec 21 15:57:18 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Pass
	export_defines as true to bfd_xcoff_size_dynamic_sections if -unix
	was used, regardless of whether -bE was used.

Tue Dec 19 17:35:38 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_after_open): Only set
	relocateable before calling ldctor_build_sets if the output file
	is in an XCOFF format.

Fri Dec 15 16:34:36 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldwrite.c (build_link_order): When handling a data statement, if
	the endianness of the output file is unknown, use the endianness
	of the input file.

Tue Dec 12 13:55:41 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Recognize mips-*-* as equivalent to
	mips-idt-ecoff.
	* mpw-eppcmacos.c: Rename to shorter mpw-eppcmac.c.
	* mpw-ld.r: Add version resources.
	(cfrg): Use symbolic instead of literal name for executable.

Mon Dec 11 15:13:41 1995  Kim Knuttila  <krk@cygnus.com>

	* scripttempl/ppcpe.sc (FINI): Moved the .reloc section.

Wed Dec  6 14:33:50 1995  Doug Evans  <dje@canuck.cygnus.com>

	* ldlang.c (print_statement{,s}): Delete duplicate prototype.
	(print_statement_list): Renamed from print_statement.  All callers
	updated.
	(print_statement): New function to print just one statement.
	(print_{data,reloc,padding}_statement): Don't crash if
	output_section == NULL.
	(dprint_statement): New function.

	* emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix
	call to sort_sections.

Wed Dec  6 14:59:06 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (unix_ld): New static variable.
	(gld${EMULATION_NAME}_parse_args): Handle -unix.
	(gld${EMULATION_NAME}_before_allocation): If unix_ld, pass
	gc as false and export_defineds as true to size_dynamic_sections.

	* ldexp.c (exp_fold_tree): Permit assignments to dot in the final
	phase if the current section is abs_output_section.


Tue Dec  5 09:49:39 1995  Doug Evans  <dje@canuck.cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix call
	to sort_sections.

Fri Dec  1 16:48:36 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (PHDRS): New token.
	(ifile_p1): Accept phdrs.
	(section): Accept phdr_opt at the end of the section definition.
	(phdr_op): New nonterminal.
	(phdrs, phdr_list, phdr, phdr_type, opt_hdrs, hdr): Likewise.
	* ldlex.l: Accept PHDRS.
	* ldlang.h (struct lang_output_section_phdr_list): Define.
	(lang_output_section_statement_type): Add phdrs field.
	(struct lang_phdr): Define.
	(LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Define.
	(lang_new_phdr): Declare.
	* ldlang.c (lang_phdr_list): New static variable.
	(lang_output_section_statement_lookup): Initialize phdrs field.
	(lang_process): Call lang_record_phdrs.
	(lang_new_phdr): New function.
	(lang_section_in_phdr): New function.
	(lang_record_phdrs): New static function.
	* ld.texinfo: Document PHDRS.

Thu Nov 30 13:14:30 1995  Kim Knuttila  <krk@cygnus.com>

	* scripttempl/ppcpe.sc: Moved .edata into its own section to
	expose it.

Thu Nov 30 11:32:34 1995  Manfred Hollstein KS/EF4A 60/1F/110 #40283  <manfred@lts.sel.alcatel.de>

	* configure.host (m68*-motorola-sysv): Define HOSTING_CRT0 and
	HOSTING_LIBS for testing.
	(m88*-motorola-sysv3): Define HOSTING_CRT0 and HOSTING_LIBS for
	testing.

Tue Nov 28 12:14:53 1995  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Set config.dynamic_link to false for -N
	and -n.

Mon Nov 27 13:12:09 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.7.

Fri Nov 24 18:35:35 1995  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/pe.sc: Two .junk's is too much junk.

Tue Nov 21 16:14:32 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use BFD_NEED_DECLARATION.
	* acconfig.h: Put NEED_DECLARATION_FREE in @TOP@ section.
	* configure, config.in: Rebuild with autoconf 2.6.

	* ldmain.c (constructor_callback): Don't warn about BFD_RELOC_CTOR
	being unsupported if this is not a relocateable link and the input
	BFD supports it, since ldctor_build_sets can cope with that case.

Fri Nov 17 16:23:15 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.tgt (powerpc-*-macos*): New target.
	* emulparams/ppcmacos.sh: New file, PowerMac emulation.
	* Makefile.in (ALL_EMULATIONS): Add eppcmacos.o.
	(eppcmacos.c): New target.
	* mpw-eppcmacos.c: Update.
	* mpw-make.sed: Edit out attempts to use {GENSCRIPTS}.

Fri Nov 17 10:37:27 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
	$(host_canonical) and $(target_canonical).
	(CXX_FOR_TARGET): Likewise.

Thu Nov 16 11:23:42 1995  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/pe.sc (.endjunk): Move definition of `end' to here
	so the malloc heap begins at a sane place.

Thu Nov 16 03:09:32 1995  Ken Raeburn  <raeburn@cygnus.com>

	Version 2.6 released.
	* ldver.c (ldversion): Update to 2.6.

	* Makefile.in (mostlyclean): Delete ldemul-list.h here, but not
	$(GENERATED_*FILES), since they need to be retained by distclean.
	(maintainer-clean, realclean): Delete them here.

Tue Nov 14 17:08:06 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Open the
	base file with FOPEN_WB, not "w".

	* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Use the
	environment variable LD_RUN_PATH if neither -rpath nor -rpath-link
	were used.
	(gld${EMULATION_NAME}_before_allocation): Use the environment
	variable LD_RUN_PATH if -rpath was not used.
	* ld.texinfo, ld.1: Document LD_RUN_PATH.

Thu Nov  9 13:09:29 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Recognize
	-bl and -bloadmap options.

	* ldfile.c (ldfile_try_open_bfd): If bfd_error_invalid_target,
	report a better error.

	* emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Add
	new local variable special_sections, and pass it to
	size_dynamic_sections.  Look through the results, and move the
	sections around in the mapping so that they are defined correctly.

Wed Nov  8 11:40:59 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.c (ldemul_default_target): Cast getenv return value.

Tue Nov  7 11:15:36 1995  Kim Knuttila  <krk@cygnus.com>

	* emulparams/ppcpe.sh (ARCH): New file for PowerPC Portable
	Executable support.
	* scripttempl/ppcpe.sc: New file for PowerPC Portable Executable
	support.

	* configure.tgt (targ_extra_emuls): Added powerpcle-pe target.
	* Makefile.in (ALL_EMULATIONS): Added eppcpe.o target.

	* emultempl/pe.em (TARGET_IS_ppcpe): file tailoring macro
	(gld_$_before_allocation): added hooks for toc construction based
	on the above macro.

Tue Nov  7 11:47:23 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ld.texinfo: The linker does not use _main as an entry point.

Tue Nov  7 11:46:11 1995  Manfred Hollstein KS/EF4A 60/1F/110 #40283  <manfred@lts.sel.alcatel.de>

	* scripttempl/m88kbcs.sc (.data): Calculate next boundary modulo
	0x2000 not 0x200.

Mon Nov  6 10:59:21 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add test for whether free must be declared.
	* sysdep.h: Declare free if necessary.  Include "ansidecl.h".
	* acconfig.h: Explain NEED_DECLARATION_FREE.
	* configure, config.in: Rebuild.

	* lexsup.c (parse_args): Take B:: out of shortopts.

Sun Nov  5 03:08:28 1995  Ken Raeburn  <raeburn@cygnus.com>

	* emulparams/i386nbsd.sh (EXECUTABLE_SYMBOLS): Set __DYNAMIC to 0
	for now, as with m68k4kbsd, until shared library support gets
	done.

	* configure.host: For i386 BSD variants, crt0.o lives in
	/usr/lib.  (True for NetBSD at least, unconfirmed for others.)

Wed Nov  1 15:42:45 1995  Manfred Hollstein KS/EF4A 60/1F/110 #40283  <manfred@lts.sel.alcatel.de>

	* Makefile.in (ALL_EMULATIONS): Add edelta68.o.
	(edelta68.c): New target.
	* configure.tgt (m68*-motorola-sysv*): New target.
	* emulparams/delta68.sh: New file.
	* scripttempl/delta68.sc: New file.

	* scripttempl/m88kbcs.sc: Handle .init and .fini.  Change section
	addresses.

Wed Nov  1 11:41:56 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (mri_script_command): Accept ',' as well as '=' in
	ALIGN and ALIGNMOD statements.

	* emultempl/aix.em: Include ldgram.h.
	(gld${EMULATION_NAME}_parse_args): Handle -pD and -pT, as used on
	AIX 4.1.
	* Makefile.in ($(EMULATION_OFILES)): Depend upon ldgram.h.

Tue Oct 31 18:22:24 1995  David Mosberger-Tang  <davidm@azstarnet.com>

	* configure.host (alpha-*-linux*): New host.
	* configure.tgt (alpha-*-linux*): New target.

Tue Oct 31 12:36:52 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (export_files): Remove.
	(import_files): Make static.
	(struct export_symbol_list): Define.
	(export_symbols): New static variable.
	(gld${EMULATION_NAME}_parse_args): Handle an initial -b option
	correctly.  Call read_file for an export file.
	(gld${EMULATION_NAME}_before_allocation): Call
	bfd_xcoff_export_symbol for each export symbol, rather than
	calling read_file for each export file.
	(gld${EMULATION_NAME}_read_file): For an export file, make the
	exported symbols undefined, and store them on the export_symbols
	list.

Sat Oct 28 00:10:03 1995  steve chamberlain  <sac@slash.cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
	Don't hang if last option is unrecognised.
	(gld_${EMULATION_NAME}_set_symbols): Insert created
	symbols into ABS output section.

Fri Oct 27 18:03:17 1995  Niklas Hallqvist  <niklas@appli.se>

	*  Makefile.in (ALL_EMULATIONS): Added support for the NetBSD
	m68k4k arch.
	(em68k4knbsd.c): New rule.

	* configure.tgt: Added support for the NetBSD m68k4k arch.

	* genscripts.sh, ldint.texinfo,
	emulparams/{a29k,armaoutb,armaoutl,coff_sparc,ebmon29k,gld960,
	gld960coff,go32,h8300,h8300h,h8500,h8500b,h8500c,h8500m,h8500s,
	hp300bsd,hp3hpux,hppaelf.sh,i386aout,i386bsd,i386coff,i386go32,
	i386linux,i386lynx,i386nbsd,lnk960,m68kaout,m68kcoff,m68klynx,
	m88kbcs,mipsbig,mipsbsd,mipsidt,mipsidtl,mipslit,news,ns32knbsd,
	pc532machaout,riscix,sa29200,sh,shl,sparclynx,sparcnbsd,
	st2000,sun3,sun4,vanilla,vax,vsta,w65,z8001,z8002}.sh: Changed
	PAGE_SIZE to TARGET_PAGE_SIZE.

	* emulparams/m68knbsd.h: Ditto.
	(TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR): We have 8K pagesize.
	(EXECUTABLE_SYMBOLS): Hardcode __DYNAMIC to zero for the time
	being.

	* emulparams/m68k4knbsd.sh: New file.

	* scripttempl/aout.sc: Expand EXECUTABLE_SYMBOLS if relocating.

Fri Oct 27 17:59:09 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em: Include ldctor.h.
	(gld${EMULATION_NAME}_after_open): New static function.
	(gld${EMULATION_NAME}_before_allocation): Call find_relocs.
	(gld${EMULATION_NAME}_find_relocs): New static function.
	(gld${EMULATION_NAME}_find_exp_assignment): New static function.
	(ld_${EMULATION_NAME}_emulation): Use new after_open function.
	* scripttempl/aix.sc: Use CONSTRUCTORS in .data.
	* ldctor.c (struct set_info): Move definition into ldctor.h.
	(struct set_element): Likewise.
	(sets): Make non-static.
	(ldctor_add_set_entry): Add name parameter.  Save it in the new
	set element.
	(ldctor_build_sets): Avoid being called twice.  Pass set element
	name to lang_add_reloc.
	* ldctor.h (struct set_info): Move definition here from ldctor.c.
	(struct set_element): Likewise.  Add new field name.
	(sets): Declare.
	(ldctor_add_set_entry): Declare new name parameter.
	* ldwrite.c (build_link_order): Don't insist that either name or
	section be NULL in a lang_reloc_statement.
	* ldmain.c (add_to_set): Pass NULL to ldctor_add_new_set_entry for
	new name parameter.
	(constructor_callback): Pass name to ldctor_add_new_set_entry for
	new name parameter.

	* ldmisc.c (demangle): Fix indentation.  Remove a leading period.

Thu Oct 26 22:22:49 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Add PowerMac target support, generate config.h.
	* mac-ld.r: New file, Mac resources.
	* mpw-make.sed: New file, edits Makefile.in into MPW syntax.
	* mpw-make.in: Remove.
	* mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.

Thu Oct 26 14:11:26 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Treat
	-static as a synonym for -bnso.

	* scripttempl/aix.sc: Move special symbols inside sections.
	Always start .data at 0.

Wed Oct 25 11:52:12 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (diststuff):  Also make info.
	(maintainer-clean realclean):  Also delete *.info*.

Wed Oct 25 11:27:25 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/aix.em: Add support for various AIX linker options,
	for AIX import and export files, and for AIX shared objects.
	* scripttempl/aix.sc: Add .pad.  Put .ds just before the TOC.

	* ldmain.c (main): Initialize new field link_info.static_link.

	* ldmain.c (add_keepsyms_file): Add \n at end of einfo calls.
	(constructor_callback): Likewise.
	* ldmisc.c (vfinfo): Likewise.
	* ldwrite.c (build_link_order): Likewise.

	* ld.texinfo: The MRI ALIGN directive is supported.

Mon Oct 23 11:46:43 1995  James G. Smith  <jsmith@pasanda.cygnus.co.uk>

	* emulparams/elf32vr4300.sh: Deleted.
	* emulparams/elf32vr4300el.sh: Deleted.
	* emulparams/elf32b4300.sh: Added.
	* emulparams/elf32l4300.sh: Added.
	* configure.tgt, Makefile.in: Updated the build to use the
	new 8.3 unique names.

Thu Oct 19 17:41:46 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (entry_symbol): Make non-static.
	* ldlang.h (entry_symbol): Declare.

	* ldlex.l: Treat PROVIDE as a keyword in expression state.

Wed Oct 18 17:34:06 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttempl/pe.sc (.bss): Move to be after .text

Tue Oct 17 12:22:05 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_exp_assignment):
	Search trinary.cond rather than searching trinary.lhs twice.  From
	linli@ihp.PHys.ethz.CH.

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Move
	directory searching code into gld${EMULATION_NAME}_search_dir.
	(gld${EMULATION_NAME}_search_dir): New static function, extracted
	from gld${EMULATION_NAME}_find_so.
	(global_needed, global_found): New static variables.
	(gld${EMULATION_NAME}_after_open): New static function.
	(gld${EMULATION_NAME}_search_needed): New static function.
	(gld${EMULATION_NAME}_try_needed): New static function.
	(gld${EMULATION_NAME}_check_needed): New static function.
	(ld_${EMULATION_NAME}_emulation): Use new after_open function.
	* ld.texinfo, ld.1: Mention -rpath-link on SunOS.

	* Makefile.in (eelf32ppc.c): Depend upon elf32.em, not generic.em.
	(eelf32lppc.c): Likewise.
	* emulparams/elf32lppc.sh (TEMPLATE_NAME): Define as elf32.
	(GENERATE_SHLIB_SCRIPT): Define as yes.

Mon Oct 16 19:11:13 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em: Struct bfd_elf_link_needed_list is now named
	bfd_link_needed-list; make appropriate changes.

	* configure.tgt (powerpc-*-aix*): New target; use aixppc.
	(rs6000-*-aix*): New target; use aixrs6.
	* emulparams/aixppc.sh, emulparams/aixrs6.sh: New files.
	* emultempl/aix.em: New file.
	* scripttempl/aix.sc: New file.
	* Makefile.in (ALL_EMULATIONS): Add eaixppc.o and eaixrs6.o.
	(eaixppc.c, eaixrs6.c): New targets.

Fri Oct 13 14:00:37 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttemp/pe.sc (.reloc): Move to the end.

Tue Oct 10 17:53:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_finish): Don't try to use an entry_symbol from a
	section which was not linked into the final output.

Tue Oct 10 10:17:22 1995  steve chamberlain  <sac@slash.cygnus.com>

	* emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Fix
	fatal typos.

Tue Oct 10 01:01:51 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (args_type): Add rpath_link field.
	* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Search for
	required dependencies in rpath_link path.  Only search
	LD_LIBRARY_PATH when configured native.
	* lexsup.c (parse_args): Recognize -rpath-link.
	* ld.1, ld.texinfo: Document -rpath-link.

Sat Oct  7 17:07:17 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't
	bother searching for needed libraries unless doing a final link.

Fri Oct  6 16:26:16 1995  Ken Raeburn  <raeburn@cygnus.com>

	Mon Sep 25 22:49:32 1995  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* ld/ld.1: Fix formatting bugs.

Wed Oct  4 17:37:46 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldexp.c (exp_get_abs_int): Return bfd_vma, not int.
	* ldexp.h (exp_get_abs_int): Update declaration.
	* ldlang.c (print_output_section_statement): Use fprintf_vma to
	print return value of exp_get_abs_int.

Mon Oct  2 13:56:09 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (global_stat): New file static variable.
	(gld${EMULATION_NAME}_try_needed): Call stat_needed to make sure
	that the file has not already been included under another name.
	(gld${EMULATION_NAME}_stat_needed): New static function.

Fri Sep 29 12:00:18 1995  Doug Evans  <dje@deneb.cygnus.com>

	* scripttempl/armcoff.sc: Start .text at 0x8000.
	Start .data at 0x40000.

Fri Sep 29 11:09:46 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): If
	command_line.rpath is set, use it, rather than the -L options, to
	build the rules section.
	* ld.texinfo: Document this use of -rpath.

	* lexsup.c (parse_args): Don't set link_info.shared for -assert
	pure-text.  Pass true, not 1, to lang_add_entry.
	* emultempl/sunos.em (find_assign): New static variable.
	(found_assign): New static variable.
	(gld${EMULATION_NAME}_before_allocation): Rename local h to hdyn.
	If not a relocateable link, and no start symbol was specified on
	the command line, and there are any undefined symbols, set
	link_info.shared.  If link_info.shared is set, set the address of
	the .text section to 0x20.
	(gld${EMULATION_NAME}_find_assignment): Rename from
	gld${EMULATION_NAME}_find_statement_assignment.  If find_assign is
	set, then just set found_assign based on whether an assignment is
	found to find_assign.
	(gld${EMULATION_NAME}_get_script): Don't use a special script when
	producing a shared library.
	* emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Remove.
	* scripttempl/aout.sc: Remove CREATE_SHLIB tests.
	* ldlang.c (entry_from_cmdline): New global variable.
	(lang_add_entry): Change cmdline parameter from int to boolean.
	Use global entry_from_cmdline rather than function static
	from_cmdline.
	* ldlang.h (entry_from_cmdline): Declare.
	(lang_add_entry): Change declaration of second parameter from int
	to boolean.
	* ldgram.y: Pass false, not 0, to lang_add_entry.

Thu Sep 28 12:34:13 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (parsing_defsym): Declare.
	* ldlex.h (lex_string): Declare.
	* ldlex.l (lex_string): Define.
	* lexsup.c (parsing_defsym): Define.
	(parse_args): In OPTION_DEFSYM case, set lex_string before calling
	lex_redirect, and clear it after calling yyparse.  Set
	parsing_defsym around call to yyparse.
	* ldmain.c (main): Set lex_string before calling lex_redirect, and
	clear it after calling yyparse.
	* ldmisc.c (vfinfo): For %S, handle --defsym arguments and built
	in linker scripts correctly.

	* scripttempl/sparccoff.sc: Add .ctors/.dtors handling like other
	COFF targets, allowing for the leading underscore used on SPARC
	COFF.

	* lexsup.c (parse_args): Handle -assert.
	* emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Define.
	* emultempl/sunos.em (gld${EMULATION_NAME}_get_script): Use the
	shared library script when appropriate.
	* scripttempl/aout.sc: If CREATE_SHLIB is set, start the .text
	section at SIZEOF_HEADERS.

Thu Sep 28 01:40:37 1995  Doug Evans  <dje@deneb.cygnus.com>

	* Makefile.in (earmcoff.c): Build.
	* configure.tgt (arm-*-coff): New target
	* emulparms/armcoff.sh: New file.
	* scripttempl/armcoff.sc: New file.

Tue Sep 26 10:59:32 1995  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/i386coff.sc: Remove .data2; no longer needed.

Fri Sep 22 18:09:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldfile.c (ldfile_set_output_arch): Make arch const.

Thu Sep 21 17:55:24 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc: Correctly locate __bss_start at the
	beginning of the .bss area, not at the end of data.  Add
	__sbss_{start,end} symbols.

Wed Sep 20 12:29:36 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (CC_FOR_TARGET): Quote $(program_transform_name).
	(CXX_FOR_TARGET, install): Likewise.

Mon Sep 18 14:53:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches by Alan Modra <alan@spri.levels.unisa.edu.au>:
	* Makefile.in (CC_FOR_TARGET): Remove brokensed stuff.
	(CXX_FOR_TARGET): Likewise.
	(install): Likewise.
	(GENERATED_HFILES): Remove config.h.
	(.dep): Depend upon config.h.

Mon Sep 18 14:39:38 1995  Arne H. Juul  <arnej@pvv.unit.no>

	* configure.tgt (mips*-dec-netbsd*): New target.

Fri Sep 15 20:01:52 1995  Ken Raeburn  <raeburn@cygnus.com>

	* configure.host (m88*-*-dgux*): Fix another shell syntax error.

Fri Sep 15 23:28:05 1995  Andrew Cagney  <cagney@highland.com.au>

	* configure.host (i[345]86-*-bsd*): Fix shell syntax error.

Thu Sep 12 12:50:49 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttemp/pe.sc:  Allow both spellings of .ctors/.dtors.
	Start .text section on the right boundary. Always align
	stabs.

Tue Sep 12 12:24:17 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New target.

	* ldmain.c (struct warning_callback_info): Define.
	(warning_callback): Add new parameter symbol.  Call
	warning_find_reloc to try to find the section and VMA.
	(warning_find_reloc): New static function.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Pass NULL as symbol parameter to warning callback.

	* ld.texinfo: Clarify -L option.

	* ldlang.c (lang_one_common): Add cast to avoid warning.
	(topower): Likewise.  Also, reindent.
	* ldwrite.c (clone_section): Change i to unsigned int.
	* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Add
	cast to avoid warning.

Fri Sep  8 16:32:43 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (config.status): Depend upon configure.tgt.

	* ldemul.h (ldemul_set_symbols): Declare.
	(ldemul_parse_args): Declare.
	* ldemul.c (ldemul_parse_args): Fix indentation.

	* configure.in: Call AC_HEADER_DIRENT.
	* configure, config.in: Rebuild.
	* emultempl/sunos.em: Use autoconf recommend mechanism to define
	DIR and struct dirent.

	* configure.tgt (mips*-*-bsd*): New case.

	* configure.host (i[345]86-sequent-ptx* | i[345]86-sequent-sysv*)
	New case.
	* configure.tgt (i[345]86-*-ptx*): New case.

Thu Sep  7 10:48:26 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.in: Rename from config.h.in.
	* configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
	Check for config.h:config.in when creating stamp-h.
	* configure: Rebuild.
	* Makefile.in (stamp-h): Depend upon config.in rather than
	config.h.in.  Set CONFIG_HEADERS to config.h:config.in when
	calling config.status.

	* Makefile.in (distclean): Remove config.h and stamp-h.

	* configure.host (sparc-*-sunos64*): Remove.
	* ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.

	* ldexp.c (exp_fold_tree): Don't warn about moving the location
	counter backward in the absolute section.

Wed Sep  6 14:42:11 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Rewrite to use autoconf.
	* configure.host: New file.
	* configure.tgt: New file.
	* aclocal.m4: New file.
	* configure: New file, built by autoconf.
	* acconfig.h: New file.
	* config.h.in: New file, built by autoheader.
	* sysdep.h: New file.
	* ld.h: Incorporate old contents of config.h.
	* config.h: Remove.
	* Makefile.in: Various changes for new configure script.  Also:
	(CC_FOR_BUILD): Remove.
	(ldmain.o): Don't bother to ensure that EMUL is non-empty.
	(dep.sed): Use @SRCDIR@, not @srcdir@.
	* dep-in.sed: Use @SRCDIR@, not @srcdir@.
	* genscripts.sh: Create ldscripts if it does not exist.
	* ldemul.c, lexsup.c, mpw-emipsidt.c: Don't include "config.h".
	* mpw-esh.c, emultemp/*.em: Likewise.
	* ldmain.c: Likewise.  Include <ctype.h>.  Don't try to set
	HAVE_SBRK here.
	* config/*.mt, config/*.mh: Remove.

Tue Sep  5 14:55:24 1995  Ken Raeburn  <raeburn@cygnus.com>

	* configure.in: Treat ns32k-pc532-ux* like ns32k-pc532-mach*, and
	ns32k-pc532-lites* like ns32k-pc532-netbsd*.  From Ian Dall.

Fri Sep  1 22:29:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/pe.sc: Fix typo in spelling of .ctors/.dtors.

Fri Sep  1 13:13:29 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (warning_callback): Add abfd, section, and address
	parameters.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Change call to warning accordingly.

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): If not
	relocateable and not shared, put .gnu.warning.SYMBOL sections into
	the .text section.

Fri Sep  1 08:35:16 1995  James G. Smith  <jsmith@beauty.cygnus.com>

	* configure.in: Added mips*vr4300-idt-elf* and
	mips*vr4300el-idt-elf* targets.
	* Makefile.in: Added eelf32vr4300* targets.
	* emulparams/{elf32vr4300.sh, elf32vr4300el.sh}: Added.
	* config/{mips-vr4300.mt, mips-vr4300el.mt}: Added.

Fri Sep  1 10:51:45 1995  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/a29k.sc: Fix to be reasonable.  From Brendan Kehoe
	<brendan@cygnus.com>.

Thu Aug 31 16:37:07 1995  steve chamberlain  <sac@slash.cygnus.com>

	* ldemul.c (ldemul_parse_args): New.
	* ldemul.h (ld_emulation_xfer_struct): Add parse_args.
	* lexsup.c (all pe stuff): Moved into pe.em
	(parse_args): Call emulation arg parser.
	* emultempl/pe.em (parse_args): handle PE specfic args.

Thu Aug 31 17:01:37 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_memory_region_lookup): Don't use the first region
	as the default region.  Create a new region instead.

Tue Aug 29 14:21:41 1995  steve chamberlain  <sac@slash.cygnus.com>

	* ldemul.c (ldemul_set_symbols): New function.
	* ldemul.h (ld_emulation_xfer_struct): Add set_symbols.
	* ldmain.c (main): Add call to ldemul_set_symbols.
	* lexsup.c (set_pe_value): New args.
	(set_pe_name): New.
	(parse_args): Cope with new set_pe_value args.
	* emultempl/pe.em (set_symbols): New function.
	(ld_emulation_xfer_struct): Add set_symbols.
	* scripttempl/pe.sc: Use new symbols.

Thu Aug 24 18:12:18 1995  Ian Lance Taylor  (ian@cygnus.com)

	* lexsup.c (parse_args): Don't call set_default_dirlist for -O.
	For -Y, ignore a leading `P,', and only call set_default_dirlist
	after processing all the other arguments.

Tue Aug 22 07:36:58 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttempl/pe.sc: Keep .edata, don't base stabs at 0.
	* emulparams/armpe.sh: Run PE script.

Mon Aug 21 18:30:42 1995  steve chamberlain  <sac@slash.cygnus.com>

	* ldmain.c (main): Remove PE stuff.
	* lexsup.c (options): Load more PE options.
	(set_pe_value): New function.

Thu Aug 17 13:35:49 1995  steve chamberlain  <sac@slash.cygnus.com>


	* emultempl/{armpe.sc, i386pe.sc}: Deleted.
	* emultempl/pe.sc: New file performs generic PE support and sorts
	archive members.
	* emulparams/{armpe.sh,i386pe.sh}: Use new file.
	* scripttempl/{armpe.sc, i386pe.sc}: Deleted
	* scripttempl/pe.sc: New.
	* Makefile.in: Use new files.

Thu Aug 17 14:46:34 1995  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/h8500s.sc (.rdata): All data must go in data segment.
	(.strings,.ctors,.dtors): Likewise.

Wed Aug 16 11:38:59 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttempl/armpe.sc: Always start code at 0x401000, even
	if -r.
	* ldwrite.c (strdup): New extern declaration.
	* ldgram.y (atype): New rule to clarify type parsing.
	* ldlang.c (init_os): Remove commented out code.
	(lang_size_sections): Set SEC_ALLOC and SEC_LOAD bits
	unless told not to by the link script.

Wed Aug 16 11:45:11 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_set_startof): New static function.
	(lang_process): Call it.

	* ldgram.y: Tweak casesymlist to avoid bison errors.

	* lexsup.c (parse_args): Accept -h as a synonym for --soname, for
	Solaris compatibility.

Tue Aug 15 17:31:16 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldgram.y (YYDEBUG): If not defined, define as 1.
	(CASE, EXTERN, START): New tokens.
	(mri_script_command): Handle CASE, EXTERN, INCLUDE, START.
	(casesymlist): New nonterminal.
	(extern_name_list): New nonterminal.
	* ldlex.l: Accept lower case trailing base specifiers.  Don't
	ignore the first digit when the base is a suffix.  Accept many
	EXPRESSION state tokens in MRI state.  Support MRI continuation
	lines and MRI semicolon comments.  Accept all MRI keywords in
	lower case.  Add CASE, EXTERN, and START MRI keywords.

Tue Aug  8 19:14:58 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Use xmalloc
	instead of alloca.

Tue Aug  8 15:24:05 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET): Don't use
	$r/../gcc/xgcc unless it is present.

Thu Aug  3 11:56:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* scripttempl/m68kcoff.sc: Only put .ctors and .dtors in .text
	when CONSTRUCTING.
	* scripttempl/m68klynx.sc: Likewise.
	* scripttempl/nw.sc: Likewise.
	* scripttempl/sa29200.sc: Likewise.
	* scripttempl/sparclynx.sc: Likewise.

Fri Jul 28 12:02:23 1995  steve chamberlain  <sac@slash.cygnus.com>

	* emulparams/{z8001.sh, z8002.sh}: Fix typo.

Thu Jul 27 21:06:21 1995  Ken Raeburn  <raeburn@cygnus.com>

	* configure.in (i[345]86-*-linuxoldld): Treat like linuxaout*.

Thu Jul 27 15:26:28 1995  steve chamberlain  <sac@slash.cygnus.com>

	* scripttempl/i386pe.sc: Cope with constructors.
	* scripttempl/z8ksim.sc: Deleted.
	* scripttempl/z8000.sc: Resurrected as this, but
	can handle z8001 and z8002 formats.
	* emulparams/z8ksim.sh: Deleted.
	* emulparams/{z8001.sh, z8002.sh}: New files.
	* config/z8ksim.mt: Deleted
	* config/z8k-coff.mt: New, generates both emulations.

Tue Jul 25 14:53:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmisc.c (vfinfo): In %C and %D case, always print the BFD using
	%B, in case it is in an archive.

Mon Jul 24 15:23:39 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_process): Call reset_memory_regions for each
	relaxation pass.

Fri Jul 21 22:49:44 1995  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfppc.sc: Add support for .sdata, .sbss, and
	_SDA_BASE.

Thu Jul 20 16:26:55 1995  Ken Raeburn  <raeburn@cygnus.com>

	* ldmain.c (constructor_callback): Allocate set_name in stack
	frame, rather than always calling alloca with a fixed size.

Wed Jul 19 16:21:43 1995  Doug Evans  <dje@canuck.cygnus.com>

	* emulparams/armpe.sh (OUTPUT_FORMAT): Change to pei-arm-little.
	(LITTLE_OUTPUT_FORMAT, BIG_OUTPUT_FORMAT): Define.

Mon Jul 17 13:57:00 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldwrite.c (clone_section): Set the alignment of the clone
	section to that of the section being cloned.

	* ldwrite.c (split_sections): Don't split the first input section
	into a new output section.

Sat Jul 15 00:26:35 1995  Michael Meissner  <meissner@cygnus.com>

	* emulparams/elf32ppc.sh (TEMPLATE_NAME): Define as elf32.
	(GENERATE_SHLIB_SCRIPT): Define as yes.

Fri Jul 14 12:11:46 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/mipsecoff.em (check_sections): Use %P, not %F.

	* ldver.c (help): Update list of options to match currently
	supported list.

Thu Jul 13 13:52:10 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/lnk960.em (ld_lnk960_emulation): Initialize
	after_open field.

	* ldexp.c (exp_intop): Don't cast stat_alloc arg to bfd_size_type;
	it takes a size_t anyhow.
	(exp_binop): Likewise.
	(exp_trinop): Likewise.
	(exp_unop): Likewise.
	(exp_nameop): Likewise.
	(exp_assop): Likewise.
	* ldlang.c (lang_memory_region_lookup): Likewise.
	(init_os): Likewise.
	(ldlang_add_undef): Likewise.
	(insert_pad): Likewise.
	* ldfile.c (ldfile_add_arch): Don't cast xmalloc arg to
	bfd_size_type.

	* Makefile.in (ALL_EMULATIONS): It's earmaoutb.o, not earmoutb.o.

Wed Jul 12 11:32:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.h (ldemul_open_dynamic_archive): Add search parameter to
	declaration.
	(ld_emulation_xfer_type): Add search parameter to
	open_dynamic_archive entry point.
	* ldemul.c (ldemul_open_dynamic_archive): Add search parameter.
	* ldfile.c (ldfile_try_open_bfd): Rename from try_open_bfd, and
	make non-static.  Change all callers to use new name.
	(ldfile_open_file_search): Make static.  If entry is dynamic, call
	ldemul_open_dynamic_archive.
	(ldfile_open_file): Don't call ldemul_open_dynamic_archive.
	* ldfile.h (ldfile_open_file_search): Don't declare.
	(ldfile_try_open_bfd): Declare.
	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Accept search parameter.  Don't search for a library, just look in
	a single place.
	* emultempl/linux.em (gld${EMULATION_NAME}_open_dynamic_archive):
	Likewise.

Tue Jul 11 16:44:21 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (set_scripts_dir): Don't base script directory on
	current directory.

Tue Jul 11 12:29:02 1995  Rick Sladkey  <jrs@world.std.com>

	* ldmisc.c (vfinfo): Don't print the line number if it isn't
	meaningful.

Mon Jul 10 13:38:28 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ld.h (ld_config_type): Add field warn_constructors.
	* ldmain.c (add_to_set): Warn if config.warn_constructors.
	(constructor_callback): Likewise.
	* lexsup.c (parse_args): Handle -warn-constructors.
	* ld.texinfo, ld.1: Document -warn-constructors.

	* emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Don't
	get confused by directory names if we searched for the file.

	Based on patches from H.J. Lu <hjl@nynexst.com>:
	* ldlang.h (lang_input_statement_type): Add new field dynamic.
	* ldlang.c (new_afile): Set dynamic from config.dynamic_link.
	* ldfile.c: Include bfdlink.h.
	(ldfile_open_file): Check dynamic field of entry, not global
	dynamic_link field.  Don't do a dynamic search when doing a
	relocateable link.
	* ldmain.c (main): Don't warn about dynamic_link for a
	relocateable link.
	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Skip file if
	dynamic is false.
	(gld${EMULATION_NAME}_create_output_section_statements): Always
	loop over input files.
	* Makefile.in: Rebuild dependencies.

	* ld.texinfo, ld.1: Document -Bstatic, -Bdynamic, -Bshared, and
	-shared.

Mon Jul 10 13:29:43 1995  Eric Youngdale  <eric@aib.com>

	* ldmain.c (main): Set link_info.symbolic to false.
	* lexsup.c (parse_args): Handle -Bsymbolic.

Wed Jul  5 00:12:11 1995  Fred Fish  (fnf@cygnus.com)

	* ldmain.c (HAVE_SBRK):  Define for everything except
	specific systems that are known to not support sbrk.
	(main):  Use HAVE_SBRK to decide whether or not to use sbrk.

Tue Jul  4 12:55:48 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
	Handle etree_provide.

	* emultempl/elf32.em (global_needed): New static variable.
	(global_found): Likewise.
	(gld${EMULATION_NAME}_after_open): New static function.
	(gld${EMULATION_NAME}_search_needed): Likewise.
	(gld${EMULATION_NAME}_try_needed): Likewise.
	(gld${EMULATION_NAME}_check_needed): Likewise.
	(ld_${EMULATION_NAME}_emulation): Replace after_open_default with
	gld${EMULATION_NAME}_after_open.

Mon Jul  3 14:26:37 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.in (i386-*-win32): New target.

Mon Jul  3 14:39:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Let -G either set the small data size or
	be equivalent to --shared, depending on the next argument.  Accept
	and ignore -z for Solaris compatibility.

Sun Jul  2 17:52:34 1995  Ian Lance Taylor  <ian@cygnus.com>

	* lexsup.c (parse_args): Cast fopen result to PTR before storing
	it in link_info.base_file.  Fix indentation.

Wed Jun 28 17:11:25 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* ldmain.c (main): Always initialize PE info in link_info.
	* lexsup.c (OPTION_BASE_FILE): New option.
	(parse_args): Handle new option.
	* emulparams/armpe.sh: Output pei.
	* emultempl/i386pe.em: Add newline to end.
	* scripttempl/armpe.sc: Change output and quote the $s.
	* scripttempl/i386pe.sc: Change output and quote the $s.

Thu Jun 22 19:55:41 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	Sun May  7 11:53:41 MDT 1995  Bryan Ford  <baford@cs.utah.edu>

	* configure.in (i386-*-msdos*, i386-*-moss*): New targets.
	* Makefile.in (ALL_EMULATIONS): Added i386msdos.o.
	(i386msdos.o): New target.
	* config/i386-msdos.mt: Created.
	* emulparams/i386msdos.sh: Created.
	* scripttempl/i386msdos.sc: Created.

Thu Jun 22 15:06:35 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* scripttempl/elfppc.sc (.fixup): Add support for a .fixup section
	that contains pointers to be relocated.

Tue Jun 20 17:47:20 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-esh.c: New file, modified for MPW from esh.c.
	* scripttempl/sh.sc: Reformatted to simplify MPWification,
	use *() to concat stab sections instead of [].

Thu Jun 15 08:48:16 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* scripttempl/armpe.sc: Add constructor support.

Tue Jun 13 09:11:20 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* ldlang.c (lang_size_sections):  Any section with a DATA
	statement has contents.

Sun Jun 11 15:20:46 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* emulparams/m68kelf.sh (NOP): Define.
	(DYNAMIC_LINK): Don't define.
	(TEXT_START_ADDR): Set to 0x80000000; the extra 0x100 for headers
	will come from the linker script.

Thu Jun  8 14:17:33 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* emulparams/armpe.sh, scriptempl/armpe.sc: Add end and stack.

Mon Jun  5 02:16:24 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	* configure.in (i[345]86-*-gnu*): Use GNU elf config.

Thu May 25 11:49:28 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	From Andrew Cagney <cagney@highland.com.au>
	* Makefile.in: Fixup more gotchas from renaming elf32ppcle to
	elf32lppc.

Wed May 24 11:23:21 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	Add support for ARM-PE.
	* Makefile.in (ALL_EMULATIONS): Add armpe.o
	* configure.in: Recognize armpe.
	* config/arm-pe.mt: New file.
	* emulparams/armpe.sh: New file.
	* scripttempl/armpe.sc: New file.


Mon May 22 15:19:26 1995  Doug Evans  <dje@chestnut.cygnus.com>

	* configure.in (h8300h-*-hms): Deleted
	* config/cf-h8300h.mt: Deleted.

Thu May 18 04:26:10 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)

	From David Taylor (dtaylor@armltd.co.uk)
	* Makefile.in (ALL_EMULATIONS): Add earmout[lb].o
	* configure.in: Recognize arm{,e[lb]-*-aout.
	* config/arm[lb]-aout.mt: New files.
	* emulparams/armaout[lb].sh: New files.
	* scripttempl/armaout.sc: New file.

Tue May 16 18:27:11 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/ppcle-elf32.mt (EMUL): Use elf32lppc, not elf32ppcle, to
	be unique in 8 characters for DOS.

	* emulparams/elf32lppc.sh: New file, renamed from elf32ppcle.sh.
	* emulparams/elf32ppcle.sh: Deleted.

Fri May 12 11:03:55 1995  Steve Chamberlain  <sac@slash.cygnus.com>
			  Tom Griest <griest@cs.yale.edu>

	Initial support for PE executables (eg NT, win32)

	* Makefile.in (configure.in, ei386pe): Add support.
	* ldmain.c (main): Initialize PE argument info.
	* ldwrite.c (print_file_stuff): Don't print out .drectve
	and .debug section info.
	* lexsup.c (set_subsystem, set_stack_heap, OPTION_HEAP,
	 OPTION_SUBSYSTEM, parse_argsm set_subsystem, set_stack_heap):
	 Handle new arguments.
	* config/i386-pe.mt, emultempl/i386pe.em, scripttempl/i386pe.sc:
	New files

Wed May 10 18:37:59 1995  Stu Grossman  (grossman@andros.cygnus.com)

	* scripttempl/hppaelf.sc:  Remove .PARISC.unwind section from text
	segment.  This allows ld -r to preserve unwind sections.

Tue May  9 17:19:57 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in: Add little endian PowerPC support.

	* Makefile.in (ALL_EMULATIONS): Add eelf32ppcle.o.
	(eelf32ppcle.c): Support for little endian PowerPC.

	* config/ppcle-elf32.mt: New file for little endian PowerPC.
	* emulparams/elf32ppcle.sh: Ditto.

Wed May  3 12:56:32 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* ldlang.c (print_output_section_statement): Check
	subsection_alignment, instead of checking section_alignment twice.
	Noticed by Alan Modra <alan@spri.levels.unisa.edu.au>.

Tue May  2 16:36:07 1995  Jeff Law  (law@snake.cs.utah.edu)

	* configure.in (hppa*-*-lites*): Handle like hppa*-*-*elf*.

Mon Apr 24 19:21:02 1995  Michael Meissner  <meissner@cygnus.com>

	* ldwrite.c (ldwrite): Before doing anything, reset the error
	code.  If bfd_final_link returns an error, but the error code is
	unset, don't issue an extra message.  Assume a correct error
	message was already set.

Fri Apr 14 16:31:24 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (ALL_EMULATIONS): Added em68kelf.o.
	(em68kelf.o): New target.
	* config/m68k-elf.mt, emulparams/m68kelf.sh: New files.
	* configure.in: Use them for m68*-*-elf.

Tue Apr 11 12:02:03 1995  Stan Shebs  <shebs@andros.cygnus.com>

	Merge in support for Mac MPW as a host.
	(Old change descriptions retained for informational value.)

	* mpw-config.in (i386-unknown-aout): Change to i386-unknown-go32.
	(i386-unknown-coff): Remove.
	(sh-hitachi-hms): New target.
	(emulation_ofiles): Set correctly for each target.
	(version, TDEFINES): Add to makefile fragment.
	* mpw-make.in (BISON): Use byacc instead of bison.
	(em_*.c): Replace with e*.c everywhere.
	(ldgram.h): Separate action from ldgram.c generation.
	(LD_PROG): Depend on Version.r.
	(Version.r): generate from version info.
	* mpw-emipsidt.c: New file, modified for MPW from emipsidt.c.

	* mpw-config.in (m68k-apple-macos, ppc-apple-macos,
	i386-unknown-aout, i386-unknown-coff): New targets.
	(m68k-aout, m68k-coff): Remove targets.
	(mk.tmp): Add definition of EMUL.

	* mpw-config.in (emulname): Set based on target.
	(ldemul-list.h): Construct.
	* mpw-make.in (install-only): New target.
	(install): Depend on install-only.

	* mpw-make.in (bindir): Fix pathname.
	(install): Move here from mpw-build.in.

	* mpw-config.in: New file, MPW configuration fragment.
	* mpw-make.in: New file, MPW makefile fragment.
	(This file is semi-automatically generated from Makefile.in.)
	* ldfile.c (slash): If MPW, set to `:'.
	* ldlex.l (TRUE_FALSE_ALREADY_DEFINED): If MPW, set this to
	prevent redefinition errors.

Tue Apr  4 17:55:18 1995  Steve Chamberlain  <sac@bang.hack.com>

	* ldwrite.c (clone_section): Align clone sections on even
	boundaries.

Thu Mar 30 14:32:26 1995  H.J. Lu (hjl@nynexst.com)

	* configure.in: Change linux to default to elf.  Using
	i[345]86-*-linuxaout will build a linker which defaults to a.out.
	* config/i386-laout.mt: Rename from old config/i386-linux.mt.
	* config/i386-linux.mt: Rename from old config/i386-lelf.mt.
	* config/i386-lelf.mt: Remove.

Thu Mar 30 13:09:46 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): If opening the map file fails, call
	bfd_set_error before calling einfo.

	* ld.texinfo, ld.1: Document the -no-keep-memory option.

Mon Mar 27 11:10:08 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Revert patch of March 10, since the SVR4 linker
	does mark shared libraries as executable.

Tue Mar 21 15:15:38 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_common): Change power to int.  Pass larger values
	before smaller values.
	(lang_one_common): Treat info as int *.  Don't bother to check for
	last value, since it is now zero.

Sat Mar 18 01:49:14 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (load_symbols): An empty archive is OK.

Fri Mar 17 16:15:31 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* ldmain.c (progress.h): Include.
	(main): Call START_PROGRESS and END_PROGRESS.

Thu Mar 16 17:17:33 1995  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfppc.sc: Move _GOT2_END_ after the .ctors and
	.dtors sections, so that these pointers get relocated also.
	Define the symbols __{C,D}TOR_{LIST,END}__ to mark the beginning
	and end of the constructors/destructors.

Thu Mar 16 13:59:14 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ldlang.c (load_symbols): If whole_archive is true and ENTRY
	describes an archive, call bfd_link_add_symbols on each member.
	* ldmain.c (whole_archive): New variable.
	(main): Initialize it to false.
	* ldmain.h: Declare whole_archive.
	* lexsup.c (parse_args): Grok --whole-archive switch.
	* ld.texinfo, ld.1: Document --whole-archive.

Thu Mar 16 11:38:48 1995  Ian Lance Taylor  <ian@cygnus.com>

	* genscripts.sh (EMULATION_NAME): Set LIB_PATH to empty when not
	using the default emulation.

	* config/dgux.mh (HOSTING_EMU): Use -m rather than trying to set
	LDEMULATION.
	* config/hppaelf.mh (HOSTING_EMU): Likewise.

Tue Mar 14 12:28:03 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Set force_maj
	for -lc.N.  From H.J. Lu <hjl@nynexst.com>.

Fri Mar 10 14:43:48 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): Don't set EXEC_P if link_info.shared is set.

	* ldlex.l: Return -lFILENAME as the token LNAME.
	* ldgram.y: Add token LNAME.
	(input_list): Treat LNAME like NAME, but pass it to
	lang_add_input_file as lang_input_file_is_l_enum.
	* ld.texinfo: Document using -lFILENAME in INPUT.

Thu Mar  9 12:21:51 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ldlang.c (lang_check): If the architectures are compatible call
	bfd_merge_private_bfd_data to let the backend do additional
	checks.

Tue Mar  7 00:53:08 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.c (ldemul_choose_mode): If emulation not recognized, list
	all supported emulations.

Mon Mar  6 14:03:50 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldemul.c (ldemul_list_emulations): New function.
	* ldemul.h (ldemul_list_emulations): Declare.
	* ldver.c (help): List supported targets and emulations.

Fri Mar  3 15:40:36 1995  Doug Evans  <dje@canuck.cygnus.com>

	* scripttempl/elf.sc (.debug): Relocate to address 0.
	(.debug_srcinfo, .debug_aranges, .debug_pubnames,
	.debug_sfnames, .line): Likewise.

Fri Mar  3 17:07:14 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (hold_rel): New static variable.
	(gld${EMULATION_NAME}_place_orphan): Place readonly sections with
	contents whose names begin with ".rel" after hold_rel.  Remove the
	assertion which checked for unplaced .rel sections.  Don't try to
	sort the section into place if place->bfd_section is NULL.
	(gld${EMULATION_NAME}_place_section): Set hold_rel to the first
	section beginning with ".rel".

Thu Mar  2 14:34:43 1995  Ian Lance Taylor  <ian@cygnus.com>

	Doc note from pierre@phi.la.tce.com (Pierre Willard):
	* ld.texinfo: -X and -x work even if -s or -S are not specified.
	* ld.1: Similar change.

Wed Mar  1 13:51:16 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emulparams/gld960coff.sh (COFF_CTORS): Define.
	* scripttempl/i960.sc: Use COFF_CTORS if CONSTRUCTING.

Tue Feb 28 12:42:56 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (i[345]86-*-linuxelf*): New target.  Use i386-lelf.
	(i[345]86-*-gnuelf*): New target.  Use i386-gelf.
	* config/i386-lelf.mt: New file.
	* config/i386-gelf.mt: New file.

Tue Feb 28 10:27:54 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* configure.in: Match on mips-ecoff, and default to the IDT
	configuration.

Fri Feb 17 13:06:47 1995  Michael Meissner  <meissner@cygnus.com>

	* scripttempl/elfppc.sc: Add support for .got1 and .got2 sections.
	Offset _GLOBAL_OFFSET_TABLE_ 32768 from the start of the GOT area
	to double the size of the table.

Thu Feb  9 18:29:43 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (distclean): Do recursive deletion, since ldscripts
	is a directory.

Thu Feb  9 11:38:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (main): If trace_file_tries is true, and we are using
	an internal linker script, print out the script.
	* ldfile.c (try_open): Reindent function.  Make the messages about
	opening script files more informative.

	* lexsup.c (parse_args): For -V, call ldversion with 1, not 0.
	* ld.texinfo, ld.1: Update accordingly.

Wed Feb  8 17:34:45 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldlang.c (lang_one_common): Adjust references to common symbol
	information for new structure.

Mon Feb  6 12:17:24 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldmain.c (undefined_symbol): Handle section being NULL.

	* ldctor.c (ldctor_build_sets): Handle bfd_link_hash_defweak.
	* ldexp.c (fold_name): Likewise.
	* ldlang.c (print_one_symbol): Likewise.
	(lang_finish): Likewise.
	* ldmain.c (multiple_common): Likewise.
	* ldwrite.c (print_symbol): Likewise.  Also, bfd_link_hash_weak
	renamed to bfd_link_hash_undefweak.

	* scripttempl/alpha.sc: Set address of .data section correctly
	when -n or -N is used.  Patch from Chris G Demetriou
	<Chris_G_Demetriou@LAGAVULIN.PDL.CS.CMU.EDU>.
	* scripttempl/mips.sc: Similar change.

Tue Jan 31 16:20:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* ldlang.c (lang_size_sections): Clarify error message when user
	specified start addr conflicts with region.  Fix resetting of
	region pointer.

Tue Jan 31 12:37:09 1995  Ian Lance Taylor  <ian@cygnus.com>

	* ldexp.c (fold_name): In case NAME, permit an absolute symbol
	in lang_allocating_phase_enum.

Mon Jan 30 11:33:25 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (distclean): Depend upon clean.  Don't bother to
	remove files which will be removed by clean.  From patch by
	alan@SPRI.Levels.UniSA.Edu.Au (Alan Modra).

Fri Jan 27 16:27:34 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): For
	a MIPS target, clobber the size of all but the first input
	.reginfo section to be 0, so that lang_size_sections sets the
	correct size for the output .reginfo section.

Thu Jan 26 19:53:37 1995  Ian Lance Taylor  <ian@cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Remove unused variable is.

Thu Jan 26 12:33:05 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in: Add support for powerpc-*-eabi.

	* scripttempl/elfppc.sc: New file for PowerPC embedded ABI
	support.

	* emulparams/elf32ppc.sh (SCRIPT_NAME): Use elfppc.sc instead of
	elf.sc, which defines some new symbols PowerPC elf needs.

Tue Jan 24 10:32:15 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldctor.c (ldctor_add_set_entry): Don't dump core if a
	constructor entry is in the absolute section.

Mon Jan 23 13:58:13 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* configure.in (i[345]86-*-gnu*): Set ld_target to i386-gnu.
	* config/i386-gnu.mt: New file.  Include ELF support.

Thu Jan 19 16:22:11 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): If
	there are any input sections named .gnu.warning, treat them as
	containing a warning message to be printed by the linker, and
	clobber the size so that the message is not copied into the output
	file.
	* scripttempl/elf.sc: Put .gnu.warning sections into the .text
	section.

Sun Jan 15 16:45:00 1995  Steve Chamberlain  <sac@splat>

	* configure.in (w65-*-*): New target.
	* Makefile.in: Update.
	* scripttempl/w65.sc: New.
	* config/coff-w65.mt: New.

Thu Jan 12 01:32:25 1995  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>

	* ldlang.c (lang_place_orphans): Don't ignore files with
	just_syms_flag set.  Instead, put all their sections in
	bfd_abs_section_ptr, using the section VMA as the output_offset.

Wed Jan 11 22:59:09 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* ldctor.c (ldctor_build_sets): Don't use `const' with typedef
	name `reloc_howto_type', since it's now defined to be const.
	* ldlang.c (lang_add_reloc): Ditto.
	* ldlang.h (lang_reloc_statement_type, lang_add_reloc): Ditto.

Wed Jan 11 11:24:45 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldexp.c (fold_binary): Adding or subtracting an absolute value
	to a relative value does not require forcing the relative value to
	be absolute.  Also, reindent function.

Wed Dec 28 22:05:52 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ldwrite.c (clone_section): Create a symbol with the
	same name as the section.

Mon Dec 19 14:02:13 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ld.h (split_by_reloc, split_by_file): New flags.
	* ldwrite.c  (clone_section, split_sections): New functions.
	* lexsup.c (parse_args): Understand new split options.

Fri Dec  9 17:22:55 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* scripttempl/elf.sc: Move .ctors and .dtors from .text segment to
	.data segment.  They must be writable when creating a shared
	library.  From H.J. Lu <hjl@nynexst.com>.

Fri Dec  2 14:09:00 1994  Ian Lance Taylor  <ian@rtl.cygnus.com>

	* emultempl/miposecoff.em: New file.
	* emulparams/mipsidt.sh (TEMPLATE_NAME): Set to mipsecoff.
	* emulparams/mipsidtl.sh (TEMPLATE_NAME): Likewise.
	* scripttempl/mips.sc: Put .rel.sdata sections in .text, and
	provide __runtime_reloc_start and __runtime_reloc_stop if they are
	used.   Align _fdata to a 16 byte boundary.
	* Makefile.in (emipsidt.c): Depend upon mipsecoff.em rather than
	generic.em.
	(emipsidtl.c): Likewise.
	(check): Pass CC_FOR_HOST and CFLAGS_FOR_HOST to runtest.

	* ld.h (args_type): Add new field embedded_relocs.
	* ldemul.h (ldemul_after_open, after_open_default): Declare.
	(ld_emulation_xfer_struct): Add new field after_open.
	* ldemul.c (ldemul_after_open): New function.
	(after_open_default): New function.
	* ldlang.c (lang_process): Call ldemul_after_open.
	* lexsup.c (parse_args): Handle --embedded-relocs.
	* emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Initialize
	new after_open field to after_open_default.
	* emultempl/generic.em, emultempl/gld960.em: Likewise.
	* emultempl/gld960c.em, emultempl/hppaelf.em: Likewise.
	* emultempl/linux.em, emultempl/m88kbcs.em: Likewise.
	* emultempl/sunos.em, emultempl/vanilla.em: Likewise.
	* ld.texinfo, ld.1: Mention -embedded-relocs.

Wed Nov 23 22:04:47 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* Makefile.in: Add eshl.o.
	* config/coff-sh.mt: Add shl emulation.

Tue Nov 22 11:55:37 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* scripttempl/elf.sc: Fill .text section with NOPS.  From Eric
	Youngdale <eric@aib.com>.

Thu Nov 17 14:39:48 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	Patches from pirker@eiunix.tuwien.ac.at (Martin Pirker).
	* config/i386linux.mh: New file; set HOSTING_CRT0.
	* genscripts.sh: Don't put ${libdir} in LIB_PATH if it is
	/usr/lib, since that is already in LIB_PATH.

Wed Nov 16 10:03:03 1994  Jeff Law  (law@snake.cs.utah.edu)

	* scripttempl/hppaelf.sc (.text): Handle a use rdefined text start
	address.
	(.data, .bss): If "-N", then place the data/bss just after the end
	of the .text section rather than at the default 0x40000000.

	* scripttempl/hppaelf.sc (.text): Place unwind descriptors in the
	text segment.

Sat Nov 12 15:55:56 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Patches from Eric Youngdale <eric@aib.com>:
	* ldlang.c (lang_finish): Don't warn if entry symbol not found
	when generating a shared library.
	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Warn if
	attempting to place an orphaned relocation section when generating
	a dynamically linked object.

	* scripttempl/elf.sc: Add ENTRY(${ENTRY}), and default ${ENTRY} to
	_start.

Fri Nov 11 14:27:23 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ld.h (args_type): Add field export_dynamic.
	* lexsup.c (parse_args): Recognize --export-dynamic.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Pass export_dynamic argument to bfd_elf32_size_dynamic_sections.

Wed Nov  9 12:47:11 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldlang.c (lang_one_common): Set SEC_ALLOC in any section where
	we allocate common symbols.

Tue Nov  8 17:50:43 1994  Eric Youngdale  (eric@aib.com)

	* scripttempl/elf.sc: Add .rel.init, .rela.init, .rel.fini, and
	.rela.fini to the list of .rel* sections.

Tue Nov  8 17:47:45 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldlang.c (load_symbols): Add new argument place.  Only accept
	linker scripts if place is not NULL.  Put commands found in an
	assumed linker script into place.
	(lookup_name): Pass NULL as place argument to load_symbols.
	(open_input_bfds): In lang_input_statement_enum case, pass a place
	argument to load_symbols, and store any new statements after the
	current one.

Mon Nov  7 15:53:02 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* ldver.c (ldversion): Bump to 2.5.3.

Fri Nov  4 15:11:26 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (e*nbsd.c): Fix typo in dependencies.

Thu Nov  3 19:35:44 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (check): Add missing "else true" clause.

	* emulparams/vax.sh (OUTPUT_FORMAT): Use "a.out".

	* scripttempl/go32coff.sc: Changes from DJ Delorie: Change default
	entry point to "start".  Align at end of each section to 0x200.
	Start .text section 0x1000 later.  Add _etext, _edata, _end
	symbols.

Wed Nov  2 12:17:49 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldctor.c (ldctor_add_set_entry): Don't permit a set to be
	composed of different object file formats.
	(ldctor_build_sets): If the output format does not support the
	reloc, and we are not generating a relocateable link, try getting
	the reloc from the input format.

Tue Nov  1 10:30:19 1994  J.T. Conklin  (jtc@rtl.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Added em68knbsd.o.
	  (em68knbsd.c): New target.

	* config/m68k-nbsd.mt: New file.
	* emulparams/m68knbsd.sh: New file.
	* configure.in (m68*-*-netbsd*): Use above configs.

Mon Oct 31 19:35:17 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* emultempl/sunos.em (gld${EMULATION_NAME}_find_so): If we find an
	appropriately named static library, stop the search at that
	directory.

Wed Oct 26 13:59:12 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Added ei386nbsd.o, ens32knbsd.o
	  and esparcnbsd.o; sorted entries.
	  (ei386nbsd.c,ens32knbsd.c,esparcnbsd.c): New targets.

	* config/netbsd532.mt: Removed.
	* emulparams/netbsd532.sh: Removed.

	* config/{i386-nbsd.mt,ns32k-nbsd.mt,sparc-nbsd.mt}: New files.
	* emulparams/{i386nbsd.sh,ns32knbsd.sh,sparcnbsd.sh}: New files.
	* configure.in (i[345]86-*-netbsd*, ns32k-pc532-netbsd*,
	  sparc*-*-netbsd*): Use above configs.

Tue Oct 25 11:47:10 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldmain.c (multiple_common): One of the types may now be
	bfd_link_hash_indirect.  The old BFD argument may be NULL.

Thu Oct 20 22:01:39 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Add * at the end of m68k-hp-hpux.

Tue Oct 18 15:58:39 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* ldlex.l: Cast assignment to yy_ch_buf field to char *, not to
	YY_CHAR *.

Mon Oct 17 14:53:16 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* scripttempl/nw.sc: Gather constructors and destructors and
	  define __CTOR__LIST__ and __DTOR_LIST__ appropriately.

Fri Oct 14 14:35:38 1994  J.T. Conklin  (jtc@rtl.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Add ei386nw.o and eppcnw.o.
	  (ei386nw.c, eppcnw.c): New targets.

	* config/{i386,ppc}-nw.mt, emulparams/{i386,ppc}nw.sh,
	  scripttempl/nw.sc: New files, for i386 and powerpc netware.

	* configure.in: Changed netware ld_target name to be {i386,ppc}-nw
	  instead of {i386,ppc}-elf.

	* configure.in (sparc*-*-netware): Removed.  There is no such
	  thing anymore.

	* ldint.texinfo: Move misplaced `@end iftex'.

Fri Oct 14 12:02:18 1994  Eric Youngdale  (eric@aib.com)

	* scripttempl/elf.sc: Add .rel.ctors, .rela.ctors, .rel.dtors, and
	.rela.dtors to the list of .rel* sections.

Thu Oct 13 14:16:27 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* ldver.c (ldversion): Update to version 2.5.
	* Version 2.5 released.

	* configure.in (all_targets): Handle i386-linux*.

Thu Oct 13 11:24:33 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* scripttempl/aout.sc: Set _etext and __etext to ., not
	${DATA_ALIGNMENT}.  This is compatible with SunOS, and, with luck,
	will not break any other system.  From Eric Valette
	<ev@chorus.fr>.

Wed Oct 12 16:22:58 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* lexsup.c (parse_args): Change -V to be a synonym for -v.  Add
	--verbose to get the old -V behaviour.
	* ld.1, ld.texinfo: Document this change.

Tue Sep 27 14:56:20 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Remove
	assertion, since it could fail with a user defined linker script.

	* ldexp.c (fold_name): For DEFINED case, don't try to look up the
	name in the hash table during the first phase--the hash table does
	not even exist at that point, much less have the right value.

	* Makefile.in (CC): Define.
	(CXX): Move definition, change from g++ to gcc.
	(EXPECT, RUNTEST): Copy definitions from top level Makefile.in.
	(RUNTEST_CC, RUNTEST_CFLAGS): Remove.
	(RUNTEST_CXX, RUNTEST_CXXFLAGS): Remove.
	(CC_FOR_TARGET, CXX_FOR_TARGET): Copy from top level Makefile.in.
	(.cc.o): Comment out.
	(testdir): Remove.
	(site.exp): Don't create testdir or set tmpdir.
	(check): Run checks even if not running native.  Use CC_FOR_TARGET
	instead of RUNTEST_CC, and likewise for CXX.
	(cdtest targets): Comment out.
	* config/solaris2.mh (HOSTING_LIBS): Only mention crtend.o once.
	* cdtest-bar.cc, cdtest-foo.cc, cdtest-foo.h: Remove.
	* cdtest-main.cc, cdtest.exp: Remove.

Mon Sep 26 11:40:30 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* emulparams/elf32bmip.sh: Rename from elf32mipb.sh to avoid DOS
	file naming problems.
	* emulparams/elf32lmip.sh: Rename from elf32mipl.sh.
	* Makefile.in (ALL_EMULATIONS): Rename eelf32mipb.o to
	eelf32bmip.o and eelf32mipl.o to eelf32lmip.o.
	(eelf32bmip.c): Rename from eelf32mipb.c.  Use elf32bmip.sh.
	(eelf32lmip.c): Rename from eelf32mipl.c.  Use elf32lmip.sh.
	* config/mipsb-elf32.mt (EMUL): Use elf32bmip, not elf32mipb.
	* config/mipsl-elf32.mt (EMUL): Use elf32lmip, not elf32mipl.

	* genscripts.sh: Always search /usr/local/TARGET/lib.

	* scripttempl/elf.sc: If -N is set, force DATA_ADDR to be ".".

Fri Sep 23 15:05:49 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* configure.in: Handle i386-bsdi* targets like i386-bsd.

Fri Sep 23 00:06:59 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* lexsup.c (parse_args): Add support for -a for HP/UX
	compatibility.

	* lexsup.c (parse_args): -c takes an argument.

Tue Sep 20 14:35:27 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ld.h (args_type): Add new field endian.
	* lexsup.c (parse_args): Handle -EB and -EL by setting
	command_line.endian.
	* ldgram.y (ifile_p1): Accept OUTPUT_FORMAT with three arguments.
	* ldlang.c (lang_add_output_format): Add arguments big and little.
	If command_line.endian is set, use it to select big or little
	rather than the default.  Changed all callers.
	* ldlang.h (lang_add_output_format): Update declaration.
	* emulparams/elf32mipb.sh: Define BIG_OUTPUT_FORMAT and
	LITTLE_OUTPUT_FORMAT.
	* emulparams/elf32mipl.sh: Likewise.
	* emulparams/mipsbig.sh: Likewise.
	* emulparams/mipsbsd.sh: Likewise.
	* emulparams/mipsidt.sh: Likewise.
	* emulparams/mipsidtl.sh: Likewise.
	* emulparams/mipslit.sh: Likewise.
	* scripttempl/elf.sc: Define BIG_OUTPUT_FORMAT and
	LITTLE_OUTPUT_FORMAT if not already defined.  Pass them to
	OUTPUT_FORMAT.
	* scripttempl/mips.sc: Pass BIG_OUTPUT_FORMAT and
	LITTLE_OUTPUT_FORMAT to OUTPUT_FORMAT.
	* scripttempl/mipsbsd.sc: Likewise.

	* Makefile.in (ldgram.h): Make separate target from ldgram.c,
	depending upon ldgram.c, so that a parallel make does not try to
	build both at once.

	* configure.in (mips*el-elf*): New target.
	* Makefile.in (ALL_EMULATIONS): Add eelf32mipb.o and eelf32mipl.o.
	(eelf32mipl.c): New target.

	* config/mipsl-elf32.mt: New file.
	* emulparams/elf32mipl.sh: New file.

Fri Sep 16 12:16:20 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldmain.c (main): Rather than prohibiting ld -r -s, treat it as
	ld -r -S -x.

Thu Sep 15 13:05:44 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldmisc.c (vfinfo): Print BFD file name as well as file name
	returned by find_nearest_line, in case the file name is something
	unhelpful such as a .h file.  Handle %u.

Wed Sep 14 12:49:12 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ldlang.c (lang_do_assignments): Make sure output statement
	has an attached bfd_section before trying to dereference it.

Wed Sep 14 12:48:09 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ld.h (ld_config_type): Add new field warn_once.
	* ldmain.c (undefined_symbol): Handle -warn-once.
	* lexsup.c (parse_args): Recognize -warn-once.
	* ld.texinfo (Options): Document -warn-once.
	* ld.1: Likewise.

	* ldmisc.c (vfinfo): Handle %D as %C, but never print the function
	name.  For %C, print the function name on a separate line, to keep
	the length of error messages under control.
	* ldmain.c (multiple_definition): Use %D for ``first defined
	here.''
	(undefined_symbol): Use %D for ``more undefined references
	follow''.

	* ldmisc.c (multiple_warn): Remove; no longer used.
	* ldmisc.h (multiple_warn): Don't declare.

Tue Sep 13 20:47:58 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ldlang.c (print_output_section_statement): Print all lines
	to the map file.

Tue Sep 13 16:30:11 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldlang.c (load_symbols): Check for archive before object.  Use
	bfd_check_format_matches, and, if ambiguous, print a list of
	matching formats.  If file format is not recognized, treat file as
	a linker script.
	* ldgram.y (yyerror): If assuming an object file is a script,
	mention that.  Tweak the format of the error messages.
	* ldlex.l (lex_warn_invalid): If assuming an object is a script,
	guess that this is not actually a script, and just report that the
	file format was not recognized.
	* ld.texinfo (Options): Admit that -( may be used more than once.
	Add note that unrecognized object files are now treated as linker
	scripts.

	* ldfile.c (ldfile_input_filename): Make const.
	(ldfile_assumed_script): New variable.
	(try_open): Change arguments types to const.
	(ldfile_find_command_file): Likewise.
	(ldfile_open_command_file): Likewise.  Also, set lineno to 1.
	* ldfile.h: Update declarations for ldfile.c changes.
	* ldlex.l: Include <ctype.h>.
	(file_name_stack): Change to be const char *.
	(lineno_stack): New static variable.
	(<<EOF>>): Set lineno as well as ldfile_input_filename.
	(lex_push_file): Make name argument const.  Initialize
	lineno_stack entry.
	(lex_redirect): Initialize lineno_stack entry.
	(lex_warn_invalid): Handle non printable characters nicely.
	* ldlex.h (lex_push_file): Declare second argument as const.

	* ldgram.y (ifile_p1): Recognize GROUP.
	* ldlex.l: Recognize GROUP.
	* ld.texinfo (Option Commands): Document GROUP.

Mon Sep 12 17:04:27 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* config/m68klynx.mh: New file.

Mon Sep 12 01:50:03 1994  Jeff Law  (law@snake.cs.utah.edu)

	* emultempl/hppaelf.em: Add newlines to the error messages.

Sat Sep 10 16:05:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config/i386lynx.mh: New file.
	* scripttempl/i386lynx.sc: Don't put .ctors and .dtors in .text
	unless CONSTRUCTING.

Thu Sep  8 13:25:24 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* emulparams/elf32mipb.sh (TEMPLATE_NAME): Define as elf32.
	(GENERATE_SHLIB_SCRIPT): Define as yes.
	(DYNAMIC_LINK): Define as false.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse):
	Initialize config.dynamic_link to DYNAMIC_LINK if it is defined.
	(gld${EMULATION_NAME}_place_orphan): Reset stat_ptr at end.
	* Makefile.in (eelf32mipb.c): Depend upon elf32.em rather than
	generic.em.

Thu Sep  8 16:30:37 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* scripttempl/h8500b.sc: Put rdata stuff into own segment.

Thu Sep  8 13:25:24 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS): Don't define;
	.got section is now explicitly handled in elf.sc.

Wed Sep  7 13:08:34 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* scripttempl/alpha.sc: Redo script to set . outside of sections
	and not bother to explicitly specify section addresses.
	Explicitly place .sdata section.

Tue Sep  6 23:51:45 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/m68kcoff.sc: Put .bss in data segment.

	* scripttempl/h8300.sc: Change .stab and .stabstr to use a VMA of
	0, and to only be marked as NOLOAD if relocating.
	* scripttempl/h8500.sc, scripttempl/h8500b.sc: Likewise.
	* scripttempl/h8500c.sc, scripttempl/h8500m.sc: Likewise.
	* scripttempl/h8500s.sc, scripttempl/i386coff.sc: Likewise.
	* scripttempl/i386go32.sc, scripttempl/i386lynx.sc: Likewise.
	* scripttempl/m68kcoff.sc, scripttempl/m68klynx.sc: Likewise.
	* scripttempl/sh.sc, scripttempl/sparccoff.sc: Likewise.
	* scripttempl/sparclynx.sc: Likewise.

Sun Sep 04 17:58:10 1994  Richard Earnshaw (rwe@pegasus.esprit.ec.org)

	* Makefile.in, configure.in: Add support (disabled) the ARM/RISCiX.
	* config/riscix.mt, emulparams/riscix.sh, scripttempl/riscix.sc:
	New files.

Tue Aug 30 11:48:08 1994  Eric Youngdale  (ericy@cais.cais.com)

	* ld.h (args_type): Add field soname.
	* lexsup.c (parse_args): Handle -soname argument.
	* emultempl/elf32.em: In call to bfd_elf32_size_dynamic_sections,
	pass soname.
	* ld.texinfo: Document -soname.

Mon Aug 29 15:21:50 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldlang.c (lang_check): Don't try to set the architecture if the
	input and output files are incompatible.  Just warn.

Wed Aug 24 12:52:30 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Change i[34]86 to i[345]86.

Sun Aug 21 16:17:19 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* emulparams/hp3hpux.sh: Define __DYNAMIC to be 0.

Thu Aug 18 15:37:45 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	Make the ELF linker handle orphaned sections reasonably.  Also,
	define __start_SECNAME and __stop_SECNAME around sections whose
	names can be represented in C, for the benefit of symbol sets in
	glibc.
	* ldemul.h (ldemul_place_orphan): Declare.
	(ld_emulation_xfer_type): Add place_orphan field.
	* ldemul.c (ldemul_place_orphan): New function.
	* ldlang.h (wild_doit): Declare.
	* ldlang.c (wild_doit): Make nonstatic.
	(lang_place_orphans): Call ldemul_place_orphan.
	* emultempl/elf32.em: Include <ctype.h> and "ldgram.h".
	(hold_section, hold_use, hold_text, hold_data, hold_bss): New
	static variables.
	(gld${EMULATION_NAME}_place_orphan): New static function.
	(gld${EMULATION_NAME}_place_section): New static function.
	(ld_${EMULATION_NAME}_emulation): Initialize place_orphan field.

Tue Aug 16 00:17:20 1994  Eric Youngdale  (ericy@cais.cais.com)

	* scripttempl/aout.sc: Add .linux-dynamic after .data.

Tue Aug 16 00:08:22 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* lexsup.c (parse_args) Treat --dll-verbose as --version, for
	Linux compatibility.  From hjl@nynexst.com (H.J. Lu).

Mon Aug 15 17:17:33 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldexp.h (exp_get_abs_int): Declare.

Sat Aug  6 01:45:39 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ldlang.c (lang_do_assignments):  Handle complex AT's better.
	* ldexp.c (exp_get_abs_int):  New function.

Fri Aug  5 20:55:55 1994  Jason Molenda (crash@phydeaux.cygnus.com)

	* configure.in: add i960-nindy-coff support.

Thu Aug  4 14:45:50 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldlex.l (yy_create_string_buffer): Handle change to internal
	interface in flex 2.4.7.

Tue Aug  2 11:52:06 1994  Eric Youngdale  (ericy@cais.cais.com)

	* emultempl/linux.em (gld${EMULATION_NAME}_find_address_statement):
	New function; add 0x20 to any use of -Ttext.
	(gld${EMULATION_NAME}_create_output_section_statements): New
	function.
	(ld_${EMULATION_NAME}_emulation): Use the new function
	gld${EMULATION_NAME}_create_output_section_statements.

Mon Aug  1 15:50:44 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* scripttempl/mips.sc: Redo script to set . outside of sections
	and not bother to explicitly specify section addresses.

Tue Jul 26 11:02:35 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* scripttempl/elf.sc: Copy several more relocation sections into
	the output.  Put .got.plt sections into .got.

Fri Jul 22 12:15:36 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* scripttempl/elf.sc: Use PROVIDE to define etext, edata, and end.

	Add a new script operator, PROVIDE, to define a symbol only if it
	is needed.
	* ldgram.y (PROVIDE): New token.
	(assignment): Accept PROVIDE.
	* ldlex.l (PROVIDE): New token.
	* ldexp.h (node_type): Add etree_provide to node_class enum.
	(exp_provide): Declare.
	* ldexp.c (exp_fold_tree): Handle etree_provide.
	(exp_provide): New function.
	(exp_print_tree): Handle etree_provide.
	* ld.texinfo: Document PROVIDE.

	* ldlang.c (lang_common): Pass desired alignment to
	lang_one_common as power of two.
	(lang_one_common): Get common symbol alignment from linker hash
	table entry.  Treat desired alignment as a power of two.

	* ldlang.c (wild_section): Attach all section with the given name,
	not just the first one.  If there is no name, attach all sections
	even if the SEC_IS_COMMON flag is set.

Wed Jul 20 15:49:27 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ld.h (args_type): Add field rpath.
	* lexsup.c (S_ISDIR): Define if not already defined.
	(parse_args): Add support for -rpath.  If -R is used to name a
	directory, treat it as -rpath for Solaris compatibility.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
	Pass command_line.rpath to bfd_elf32_size_dynamic_sections.
	* ldmain.c (main): Initialize command_line.rpath to NULL.
	* ld.texinfo: Document -rpath option.

Sun Jul 10 00:33:24 1994  Ian Dall  (dall@hfrd.dsto.gov.au)

	* emulparams/pc532machaout.sh: New file. Pc532 mach script
	parameters.

	* emulparams/netbsd532.sh: New file. Netbsd 532 script parameters.

	* config/pc532mach.mt: New file. Pc532 mach target support.

	* config/pc532mach.mh: New file. Pc532 mach host support.

	* config/netbsd532.mt: New file. Netbsd 532 target support.

	* configure.in: Add ns32k-pc532-mach and ns32k-pc532-netbsd support.

	* Makefile.in: Add epcmachaout.c dependency and enetbsd532.c
	dependency.

Fri Jul  8 10:57:02 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Use
	bfd_abs_section_ptr, not &bfd_abs_section.

	* lexsup.c (parse_args): Changed "retain-symbols-file" from
	no_argument to required_argument.  From djm.

Thu Jul  7 12:29:53 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* scripttempl/elf.sc: Explicitly mention .stab and .stabstr
	sections to force a VMA of 0; needed for ELF backends which have
	not been converted to the new linker style.

Mon Jul  4 19:35:45 1994  Jeff Law  (law@snake.cs.utah.edu)

	* scripttempl/hppaelf.sc (__stack_zero): Don't define this name,
	it was for the HPUX dynamic loader's use and it creates problems
	with ELF GDB.

Fri Jul  1 12:53:47 1994  Jeff Law  (law@snake.cs.utah.edu)

	* ldlang.c (lang_do_assignments): No longer static.  Delete decl.
	* ldlang.h (lang_do_assignments): Put external decl here.
	* emultempl/hppaelf.em: Minor cleanups throughout file.
	(hppa_elf_create_output_section_statements): Rewrite.
	(hppaelf_finish): Rewrite.

Wed Jun 29 16:50:00 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* config/solaris2.mh (NATIVE_LIB_DIRS): Define as /usr/ccs/lib.

	* lexsup.c (parse_args): Accept -Bstatic and -Bdynamic.  Do not
	accept plain -B.
	* ld.texinfo: -Bstatic is not ignored.

Tue Jun 28 12:13:34 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* ldlex.l: Recognize \r the same as \n.

Thu Jun 23 17:53:04 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	Preliminary support for generating shared libraries, from Eric
	Youngdale <ericy@cais.cais.com>.
	* genscripts.sh: If the emulation parameter file sets
	GENERATE_SHLIB_SCRIPT, generate a .xs script file with
	CREATE_SHLIB defined.
	* emultempl/elf32.em (gld${EMULATION_NAME}_get_script): If
	link_info.shared is set, use the .xs script file.
	* scripttempl/elf.sc: If CREATE_SHLIB is set, don't create a
	.interp section, and don't include TEXT_START_ADDR in the starting
	address of the first section.
	* emulparams/elf_i386.sh (GENERATE_SHLIB_SCRIPT): Likewise.
	* emulparams/elf32_sparc.sh (GENERATE_SHLIB_SCRIPT): Define.

Thu Jun 23 12:52:22 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure.in: Change --with-targets to --enable-targets.

Wed Jun 22 13:42:14 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* lexsup.c (parse_args): Add support for new options -( -) with
	synonyms --start-group --end-group.
	* ldlang.h (enum statement_enum): Add lang_group_statement_enum.
	(lang_group_statement_type): Define new struct.
	(lang_statement_union_type): Add group_statement field.
	(lang_enter_group, lang_leave_group): Declare.
	* ldlang.c (lang_for_each_statement_worker): Handle
	lang_group_statement_enum.
	(map_input_to_output_sections, print_statement): Likewise.
	(lang_size_sections, lang_do_assignments): Likewise.
	(open_input_bfds): Completely rewrite.  Now does its own looping,
	rather than using lang_for_each_statement.  Handle groups.
	(lang_process): Update call to open_input_bfds.
	(print_group): New static function.
	(lang_enter_group, lang_leave_group): New static functions.
	* ldfile.c (ldfile_open_file): If the file has already been
	opened, just return rather than taking an assertion failure.
	* ldver.c (help): Mention new options.
	* ld.texinfo: Document new options.

	* ldlang.c (end_of_data_section_statement_list): Don't define.
	(lang_leave_output_section_statement): Don't set obsolete variable
	end_of_data_section_statement_list.

	* scripttempl/go32coff.sc: Don't put ${DATA_ALIGNMENT} inside an
	ALIGN.

	* ldlang.c (lang_size_sections): Adjust current region address
	even for sections with an explicit address.  From
	ralphc@pyramid.com (Ralph Campbell).

	* emulparams/i386linux.sh (NONPAGED_TEXT_START_ADDR): Set to 0.
	From jrs@world.std.com (Rick Sladkey).

	* scripttempl/mipsbsd.sc: Let sections align to their natural
	boundaries.

Tue Jun 21 11:27:04 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* ldlang.c (lang_init): Use new bfd_abs_section_ptr, not
	&bfd_abs_section.
	(lang_abs_symbol_at_beginning_of): Likewise.
	(lang_abs_symbol_at_end_of): Likewise.
	(lang_size_sections): Use bfd_is_abs_section to check for the
	absolute section.  Don't try to set the VMA or output_offset or
	size of the absolute section.
	* ldmain.c (notice_ysym): Use bfd_is_und_section to check for the
	undefined section.

Thu Jun 16 22:48:41 1994  Jeff Law  (law@snake.cs.utah.edu)

	* scripttempl/hppaelf.sc: Place .data and .bss at 0x40000000
	when generating relocatable objects.

Thu Jun 16 14:25:22 1994  Eric Youngdale  (ericy@cais.cais.com)

	* emultempl/linux.em: New file providing support for linking
	against Linux shared libraries.
	* config/i386-linux.mt (ei386linux.c): Depend upon linux.em.
	* emulparams/i386linux.sh (TEMPLATE_NAME): Define as linux.

Thu Jun 16 12:22:01 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* lexsup.c (parse_args): Add -shared to longopts, and handle it.
	* ldmain.c (main): Initialize link_info.shared to false.  Give
	error if link_info.relocateable and link_info.shared are both set.

	* configure.in: If EMUL_EXTRA* is defined in a config file, treat
	it as naming an emulation to be added to EMULATION_OFILES.
	* config/i386-linux.mt (EMUL_EXTRA1): Define as elf_i386.

	* Makefile.in: Rebuilt dependencies.
	(ALL_EMULATIONS): Add ei386linux.o, eelf32_sparc.o,
	eelf64_sparc.o.  Remove $(OTHER_EMULATIONS).
	(ei386linux.c, eelf32_sparc.c, eelf64_sparc.c): New targets.
	* config/i386-linux.mt (OTHER_EMULATIONS): Don't define.
	(ei386linux.c): Remove; now in Makefile.in.
	* config/i386-lynx.mt (OTHER_EMULATIONS): Don't define.
	* config/m68k-lynx.mt (OTHER_EMULATIONS): Don't define.
	* config/sparc-lynx.mt (OTHER_EMULATIONS): Don't define.
	* config/sparc64-elf.mt (OTHER_EMULATIONS): Don't define.
	(eelf64_sparc.c): Remove; now in Makefile.in.
	* config/sun4sol2.mt (OTHER_EMULATIONS): Don't define.
	(eelf32_sparc.c): Remove; now in Makefile.in.

	* ldexp.c (exp_print_tree): Don't crash if etree_rel section has
	no owner--it might be bfd_abs_section.  From Eric Youngdale
	<ericy@cais.cais.com>.

	* scripttempl/aout.sc: Let sections align to their natural
	boundaries.

Wed Jun 15 01:54:54 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldemul.h (ldemul_open_dynamic_archive): Declare.
	(ld_emulation_xfer_type): Add new field open_dynamic_archive.
	* ldemul.c: Include ldexp.h and ldlang.h.
	(ldemul_open_dynamic_archive): New function.
	* ldfile.h (ldfile_open_file_search): Declare.
	* ldfile.c: Include ldemul.h.
	(try_open_bfd): Rename from cache_bfd_openr.  Return boolean
	argument, not bfd *.  Change all callers.
	(ldfile_open_file_search): Rename from open_a.  Return boolean
	argument, not bfd *.  Clean up.  Change all callers.
	(ldfile_open_file): If doing a dynamic link, call
	ldemul_open_dynamic_archive rather than assuming the extension of
	a dynamic object is ".so".
	* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
	New function.
	(ld_${EMULATION_NAME}_emulation): Initialize open_dynamic_archive
	field.
	* emultempl/sunos.em (ld_${EMULATION_NAME}_emulation): Likewise.

	* ldmain.c (get_emulation): Ignore -m486 for Linux compatibility.
	* lexsup.c (parse_args): Ignore -qmagic for Linux compatibility.
	Accept -static as a synonym for -non_shared.

	Let the user change the dynamic linker used by ELF code.
	* ld.h (args_type): Add new field interpreter.
	* lexsup.c (parse_args): Add dynamic-linker to longopts, and
	handle it.
	* ldmain.c (main): Initialize command_line.interpreter to NULL.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Get
	the ELF backend to return the .interp section.  If
	command_line.interpreter is not NULL, set the contents of .interp
	to it.
	* ld.texinfo: Mention -dynamic-linker.

	* config/sun4sol2.mt (eelf32_sparc.c): Depend upon elf32.em, not
	generic.em.

	* lexsup.c (parse_args): Sort out the option macros and change the
	definitions to make it easier to add a new option.

	* scripttempl/aout.sc: Define __etext and __edata to go along with
	_etext and _edata.

	* ld.h (ld_config_type): Add new field traditional_format.
	* lexsup.c (parse_args): Add traditional-format to longopts, and
	handle it.
	* ldmain.c (main): Initialize config.traditional_format to false.
	* ldlang.c (ldlang_open_output): Set BFD_TRADITIONAL_FORMAT in BFD
	flags of output_bfd according to config.traditional_format.
	* ldver.c (help): Mention -traditional-format.
	* ld.texinfo: Document -traditional-format.

Tue Jun 14 23:10:07 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldctor.c (ldctor_add_entry): Add entries to a set in the order
	they are encountered.

Tue Jun 14 18:05:09 1994  Eric Youngdale  (ericy@cais.cais.com)

	* emulparams/i386linux.sh (TEXT_START_ADDR): Define as 0x1000.
	(NONPAGED_TEXT_START_ADDR): Define as 0x20.

Mon Jun 13 15:46:09 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/alpha.sc: Define _ftext, _etext and _fdata insted of
	_FTEXT, _ETEXT and _FDATA.  Dont define _END.

	* ldfile.c (open_a): If this is not an archive, try to open it in
	the current directory before searching for it.

	* lexsup.c (parse_args): Treat -i as a synonym for -r.

	* ldgram.y (exp): Treat BLOCK as a synonym for ALIGN, so that
	BLOCK works in a section address as documented.

	* ldgram.y (YYDEBUG): Don't define.

Fri Jun 10 16:45:39 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* emultempl/gld960.em: Pass false for new argument to
	ldfile_add_library_path.
	* emultempl/gld960c.em, emultempl/lnk960.em: Likewise.

	* emultempl/sunos.em: Only look for .so files if doing a dynamic
	link.

Thu Jun  9 08:35:17 1994  Ian Lance Taylor  (ian@cygnus.com)

	* scripttempl/i960.sc: Add CONSTRUCTORS to .data.

Thu Jun  9 06:52:29 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in (check): Delete ld.new dependency so that a regression
	  test doesn't trigger a rebuild of the linker.

Thu Jun  9 00:17:20 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (map_input_to_output_sections): For lang_address, call
	init_os if it hasn't already been called.

Thu Jun  2 17:24:08 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Add support for SunOS shared libraries.
	* aout.sc: Don't define __DYNAMIC here.  Add new sections used by
	shared library support code.
	* emultempl/sunos.em: New file.
	* emulparams/sun4.sh (TEMPLATE_NAME): Define as sunos.
	* emulparams/sun3.sh (TEMPLATE_NAME): Likewise.
	* Makefile.in (esun4.c): Depend upon sunos.em, not generic.em.
	(esun3.c): Likewise.

	* ldlang.c: Minor formatting cleanups.
	(lang_for_each_input_file): New function.
	* ldlang.h (lang_for_each_input_file): Declare.

	* ldfile.h (search_dirs_type): Move from ldfile.c, and add cmdline
	field.
	(search_head): Declare.
	(ldfile_add_library_path): Add new cmdline argument in prototype.
	* ldfile.c (search_head): Make non-static.
	(search_dirs_type): Move to ldfile.h.
	(ldfile_add_library_path): Accept cmdline argument, and save it.
	* lexsup.c (parse_args): Pass true for new cmdline argument of
	ldfile_add_library_path.
	(set_default_dirlist): Likewise.
	* ldmain.c (check_for_scripts_dir): Pass false for new cmdline
	argument of ldfile_add_library_path.
	* ldgram.y (ifile_p1): Likewise.

Wed Jun  1 14:24:08 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.h (lang_input_statement_type): Remove fields subfiles,
	total_size, superfile and chain.
	* ldfile.c (open_a): Don't clear search_dirs_flag.
	(ldfile_open_file): Don't try to open superfile.  Assert that file
	has not already been opened.
	* ldlang.c (new_afile): Don't initialize superfile.
	* ldmain.c (add_archive_element): Don't initialize subfiles or
	chain or superfile.  Initialize search_dirs_flag to false.

Fri May 27 12:25:33 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* ldver.c (ldversion): Changed version to "cygnus-2.4.1".

	Changes from binutils-2.4 release:

	* genscripts.sh (RELOCATING, CONSTRUCTING): When setting
	variables, use whitespace, so scripts don't break.

	* config/alphaosf.mh (HDEFINES, CFLAGS): Deleted.

	* emultempl/generic.em: Find emultempl/stringify.sed in ${srcdir}.

	* cdtest-bar.cc: Renamed from cdtest-func.cc.
	* Makefile.in: Noted change.

	* scripttempl/a29k.sc: Don't include /lab3/u3/..../segments.o; I
	don't know where that's supposed to come from, or why it's
	necessary.

	Wed May 11 22:32:00 1994  DJ Delorie (dj@ctron.com)

	* configure.bat: update to latest makefile.in
	* emulpara/go32.sh: set to coff-go32 not aout
	* emultemp/generic.em: strength-reduce the structure of
	  this shell script, since the only available shell for
	  DOS can't handle complex syntax.
	* emultemp/stringify.sed: for "sed -f" instead of inline.
	* makefile.in: depend on stringify.sed as well as genscripts.sh
	* scripttemp/go32coff.sc: correct for djgpp 1.11's COFF format
	* genscripts.sh: empty variables aren't always considered "set",
	  so set them to "y" instead.

Fri May 27 01:08:14 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (entry_symbol): Make static.
	(lang_add_entry): Add cmdline argument.
	* ldlang.h (lang_add_entry): Change prototype.
	* ldgram.y (statement_anywhere): Change lang_add_entry call.
	* lexsup.c (parse_args): Likewise.

Tue May 24 16:13:43 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* emulparams/elf32mipb.sh (OTHER_READONLY_SECTIONS): Don't give
	.reginfo an address.
	(OTHER_READWRITE_SECTIONS): Don't give .lit4 or .lit8 an address.
	(OTHER_SECTIONS): Define for .gptab.sdata and .gptab.sbss.
	* scripttempl/elf.sc: Use OTHER_SECTIONS at end of script.

Thu May 19 13:31:33 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Add support for ELF shared libraries.
	* ld.h (ld_config_type): Add field dynamic_link.
	* ldmain.c (main): Initialize config.dynamic_link to false.  Warn
	on attempts to use -r with -relax, -call_shared or -s.
	* lexsup.c (longopts): Separate OPTION_CALL_SHARED from
	OPTION_NON_SHARED.  Add OPTION_IGNORE.  Adjust macro values
	accordingly.  Add "dy" and "non_shared" options.  Change "Qy" to
	OPTION_IGNORE for now.  Handle OPTION_CALL_SHARED and
	OPTION_NON_SHARED by setting dynamic_link field accordingly.
	Handle OPTION_IGNORE by ignoring it.  Clear dynamic_link field for
	-r and -Ur.
	* ldfile.c (ldfile_open_file): If config.dynamic_link is true, try
	opening a file with a .so extension first.
	* emultempl/elf32.em: New file.
	* emulparams/elf32_sparc.sh (TEXT_START_ADDR): Change to 0x10000.
	(NONPAGED_TEXT_START_ADDR): Likewise.
	(TEMPLATE_NAME): Define as elf32.
	(DATA_PLT): Define.
	* emulparams/elf_i386.sh (TEMPLATE_NAME): Define as elf32.
	* scripttempl/elf.sc: Add placement for new dynamic sections.
	Don't use CREATE_OBJECT_SYMBOLS.  Define _etext, _edata and _end
	outside of any section.  Don't use ALIGN(8); just let one section
	VMA follow another.  Put .dynbss in .bss.  Don't mention debugging
	sections; they'll be handled correctly anyhow.
	* Makefile.in (eelf_i386.c): Depend upon elf32.em, not generic.em.

Wed May 18 10:15:39 1994  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (install): Redirect output of ln to /dev/null.

Mon May 16 13:35:08 1994  Jeff Law  (law@snake.cs.utah.edu)

	* emultempl/hppaelf.em: Change all references of
	.hppa_linker_stubs to .PARISC.stubs.
	* scripttempl/hppaelf.sc: Likewise.

Fri May 13 13:00:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (print_output_section_statement): Change ``no attached
	output section'' message slightly.
	(lang_do_assignments): Don't recurse down if there is no real
	section.

	* config/i386-linux.mt (OTHER_EMULATIONS): Change em_ to e to
	match corresponding change in emulation templates.
	* config/i386-lynx.mt, config/m68k-lynx.mt: Likewise.
	* config/sparc-lynx.mt, config/sun4sol2.mt: Likewise.

Wed May 11 18:16:46 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* ldver.c (ldversion): Updated version number.

	* cdtest-foo.cc: Use explicit "#pragma implementation".
	* cdtest-bar.cc: Renamed from cdtest-func.cc.
	* Makefile.in: References to cdtest-func.o changed to
	cdtest-bar.o.

Wed May 11 16:24:19 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Don't create unnecessary output sections.
	* ldlang.c (out_bfd_get_section_by_name): Remove.
	(wild_section): Call bfd_get_section_by_name rather than
	our_bfd_get_section_by_name.  Don't call wild_doit if there is no
	section.
	(lang_create_output_section_statements): Remove.
	(map_input_to_output_sections): For several cases, call init_os if
	it has not already been called.
	(lang_size_sections): If output section was not created, skip it.
	(lang_process): Don't call lan_create_output_section_statements.
	(lang_place_orphans): Skip files with just_syms_flags set to true.
	* ld.texinfo: Document change.

Tue May 10 14:31:16 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (wild_doit): Don't bother initializing the vma and
	section size.  Don't special case SEC_SHARED_LIBRARY.
	(lang_size_sections): Handle SEC_COFF_SHARED_LIBRARY sections
	specially.

Fri May  6 12:24:27 1994  Steve Chamberlain  (sac@cygnus.com)

	* config/go32.mh : New file for Xgo32X.

Fri May  6 15:15:35 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldfile.c (ldfile_open_command_file): Set bfd_error_system_call
	before calling einfo, since we are reporting an fopen failure.
	From jrs@world.std.com (Rick Sladkey).

	* configure.in: Use "e" rather than "em_" as prefix for
	emulations.

Fri May  6 01:08:14 1994  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* emultempl/generic.em: Use "e" rather than "em_" as prefix for
	filename.
	* emultempl/gld960.em, emultempl/gld960c.em, emultempl/lnk960.em,
	emultempl/hppaelf.em, emultempl/m88kbcs.em, emultempl/vanilla.em:
	Ditto.
	* Makefile.in: Changed all generated file names.
	(ldemul-list.h): Depend on Makefile, not config.status.  Changed
	sed patterns to handle new filenames.

	* config/mipsl-idt.mt: Renamed from mips-idtl.mt.
	* configure.in: Adjusted.

Thu May  5 15:07:32 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* Makefile.in (install-info): Don't use "$<*", it doesn't always
	work.  Instead, check build dir and $srcdir explicitly, and use
	`echo' to get all the filenames.

	* configure.in (h8300h-*-hms): Changed ld_target name to
	cf-h8300h.
	* config/cf-h8300h.mt: Renamed from coff-h8300h.mt, to make it
	unique in 8.3.

	* config/i960coff.mt: New file.
	* emulparams/gld960coff.sh: New file.
	* emultempl/gld960c.em: New file.
	* configure.in (i960-*-vxworks5* except -vxworks5.0*): Use
	i960coff configuration.
	* Makefile.in (em_gld960coff.c): Added dependencies, build rule.

	* Makefile.in (ALL_EMULATIONS): Remove em_delta68.o, since the
	code isn't included in FSF releases, and it can still be
	explicitly selected.
	(distclean): Remove site.bak and tmpdir.
	(STAGESTUFF): Removed $(GENERATED_CFILES) $(GENERATED_HFILES).
	(mostlyclean): Delete them explicitly here.  Also remove tmpdir.

	Patches from Ralph Campbell:
	* config/mipsbsd.mh: New file.
	* Makefile.in (em_mipsbsd.c): Use mipsbsd.sc, not aout.sc.
	* scripttempl/mipsbsd.sc: Don't define __DYNAMIC.
	* emulparams/mipsbsd.sh (OUTPUT_FORMAT): Fix name to have `a.out'
	instead of `aout'.

	* configure.in (i386-*-gnu*): Treat like i386-*-mach*.

Wed May  4 11:59:40 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config/m68k.mt (EMUL): Set to m68kaout.
	* emulparams/m68kaout.sh: New file.
	* Makefile.in (ALL_EMULATIONS): Add em_m68kaout.o.
	(em_m68kaout.c): New target.

	* ldlang.c (lang_size_sections): If dot moves because of an
	assignment, don't try to insert a pad into the absolute output
	section, just change the address of the default memory region
	instead.

	* Makefile.in (mostlyclean): Remove cdtest.tmp, cdtest-ur,
	cdtest-ur.out, and cdtest-ur.tmp.

Wed Apr 27 16:03:37 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/sa29200.sc: Align all sections to four byte
	boundaries.

Wed Apr 27 10:48:03 1994  Steve Chamberlain  (sac@cygnus.com)

	* Makefile.in, configure.in: Support for go32 coff.
	* config/i386-go32.mt: New file
	* emulparams/i386go32.sh: New file
	* scripttempl/i386go32.sc: New file

Tue Apr 26 17:20:03 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in (em_m68klynx.c, em_i386lynx.c, em_sparclynx.c): Use
	Lynx-specific script templates.
	* configure.in (sparclite*-*-coff): Use coff-sparc.
	* emulparams/i386lynx.sh (SCRIPT_NAME): Set to i386lynx.
	* emulparams/sparclynx.sh (SCRIPT_NAME): Set to sparclynx.
	(ENTRY): Set to __main.
	* scripttempl/i386lynx.sc: New file, script for I386 Lynx.
	* scripttempl/m68klynx.sc: Add insertion of ctor/dtor sections.
	* scripttempl/sparclynx.sc: New file, script for uSparc Lynx.

Tue Apr 26 12:41:03 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/mips.sc: Force _gp and .lit8 to be aligned to a 16
	byte boundary, in case the global constructors do not take up an
	even 16 bytes.

	* config/i386v4.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
	exist, get crtbegin based on gcc -print-libgcc-file-name.
	(HOSTING_LIBS): Similar change for ../gcc/crtend.o.

Mon Apr 25 15:27:52 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (lang_size_sections): When no address is given for a
	section, align it according to its requirements.

Thu Apr 21 17:24:24 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (clean, distclean): Remove configdoc.texi.

Tue Apr 19 12:12:15 1994  Bill Cox  (bill@rtl.cygnus.com)

	* configure.in: Add i[34]86-*-bsd386 to the patterns recognized.

Fri Apr 15 14:35:42 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (lang_size_sections): When relaxing, adjust the
	position of a padding statement, and adjust dot accordingly.

Mon Apr 11 17:37:09 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in (EXPECT, RUNTEST): Set these for the check goal.

Mon Apr 11 12:32:57 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/i386coff.sc: If relocating, don't put .init and
	.fini sections into .text; keep them separate.
	* config/i386sco.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
	exist, get crtbegin based on gcc -print-libgcc-file-name.
	(HOSTING_LIBS): Similar change for ../gcc/crtend.o.

Mon Apr 11 10:31:00 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in (check): Set TCL_LIBRARY for runtest.

Wed Apr  6 00:09:37 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* configure.in (hppa*-*-*elf*): Don't require "-hp-" for the
	manufacturer.

	* emultempl/hppaelf.em (hppaelf_finish): Only resize sections
	if building a final executable.

Tue Apr  5 12:17:30 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (main): Check the return value of bfd_close.

Thu Mar 31 18:07:06 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/alpha.sc: Clean up section alignment to ensure that
	sections never overlap when using -r.

Wed Mar 30 15:51:15 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmisc.c (vfinfo): Change symbol reading slightly for recent BFD
	changes: get_symtab_upper_bound renamed and returns long,
	bfd_canonicalize_symtab returns long, check for error indications.

Fri Mar 25 17:20:01 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (print_input_section): For section size, use
	_cooked_size if it is non-zero, size otherwise.
	(size_input_section): Likewise.
	(lang_do_assignments): Likewise (case lang_input_section_enum).

Thu Mar 24 15:20:47 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (new_afile): Add new argument add_to_list.  Don't set
	real to true for lang_input_file_is_marker_enum.  Clear the_bfd.
	(lang_add_input_file): Pass true to new_afile for add_to_list.
	(lookup_name): Remove force_load argument.  Changed all callers.
	Pass false to new_afile for add_to_list.  Split loading of symbols
	out into separate function.
	(load_symbols): New function split out of lookup_name.  Don't load
	the symbols if they are already loaded.
	(open_input_bfds): For lang_input_statement_enum call load_symbols
	rather than lookup_name.
	(lang_process): Pass abs_output_section rather than NULL to
	lang_size_sections.
	(lang_startup): Set real field of first_file to true.

Wed Mar 23 14:15:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (had_relax): Removed.
	(relax_again): New static variable.
	(lang_size_sections): Change call to bfd_relax_section to
	correspond to BFD changes.  Set relax_again appropriately.
	(lang_process): Remove #if 0 code.  When relaxing, keep calling
	lang_do_assignments and lang_size_sections until relax_again
	becomes false.

	* emultemp/gld960.em: Include libiberty.h
	(gld960_before_parse): Pass NULL as final argument to concat.

Tue Mar 22 13:08:28 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/aout.sc: Force _end and __end to be aligned to a
	four byte boundary.

	* ldwrite.c (build_link_order): Handle lang_data_statement_enum by
	building a bfd_data_link_order, rather than by setting the section
	contents immediately.

Mon Mar 21 18:28:37 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Changes to make -Ur work again.
	* ldmain.c (add_to_set): Now takes reloc argument rather than
	bitsize.  Check config.build_constructors here.  If an new hash
	table entry is created, mark it as undefined.
	(constructor_callback): No longer takes bitsize argument.  Pass
	BFD_RELOC_CTOR to ldctor_add_set_entry, but first make sure the
	BFD backend supports it.
	(reloc_overflow): Handle a NULL abfd argument.
	(reloc_dangerous, unattached_reloc): Likewise.
	* ldctor.c: Include ldmain.h.
	(struct set_info): Change bitsize field to reloc.
	(ldctor_add_set_entry): Now takes reloc argument rather than
	bitsize.  Don't bother to check config.build_constructors here.
	(ldctor_build_sets): Get the size from the reloc howto.  If
	generating relocateable output, call lang_add_reloc rather than
	lang_add_data.
	* ldctor.h (ldctor_add_set_entry): Change declaration to use reloc
	instead of bitsize.
	* ldlang.h (statement_enum): Add lang_reloc_statement_enum.
	(lang_reloc_statement_type): New structure.
	(lang_statement_union_type): Add reloc_statement field.
	(lang_add_reloc): Declare new function.
	* ldlang.c (lang_for_each_statement_worker): Handle
	lang_reloc_statement_enum.
	(map_input_to_output_sections, print_statement): Likewise.
	(lang_size_sections, lang_do_assignments): Likewise.
	(print_reloc_statement): New function.
	(lang_add_reloc): New function.
	* ldwrite.c (build_link_order): Handle lang_reloc_statement_enum.

	* Makefile.in (cdtest.out, cdtest-ur.o): New targets.
	(cdtest-ur, cdtest-ur.out): New targets.
	(check-cdtest): Now also check that -Ur works correctly.

	* scripttemp/alpha.sc: Align all sections to 16 byte boundaries.

Thu Mar 17 12:45:41 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (lang_process): Move lang_common call before
	map_input_to_output_sections, to ensure that any alignment
	constraints set by common symbols are copied over to the output
	sections.

Fri Mar 11 22:17:34 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* emulparams/elf32ppc.sh (TEMPLATE_NAME): Don't define.
	(OTHER_READWRITE_SECTIONS): Rename .toc to .got.
	* Makefile.in (em_elf32ppc.c): Depend upon generic.em, not ppc.em.
	* emultempl/ppc.em: Remove ugly stub code; turns out not to be
	needed for ELF.

Tue Mar  8 04:22:27 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* config/i386bsd.mh: New file.

Mon Mar  7 15:23:24 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* elf.sc: Permit TEXT_START_SYMBOLS and DATA_START_SYMBOLS to be
	defined.
	* emulparams/elf32mipb.s (TEXT_START_SYMBOLS): Define _ftext.
	(DATA_START_SYMBOLS): Define _fdata.

Mon Feb 28 10:59:14 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* ldlang.c (cat): Define using ANSI style if ALMOST_STDC defined.

Sun Feb 27 16:29:38 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* emultempl/hppaelf.em (hppaelf_finish): Update comments.  This
	works again.  Attach some output symbols to the stub file bfd.

	* emultempl/hppaelf.em: Include elf32-hppa.h.
	(file_chain): Add decl.
	(hppa_look_for_stubs_in_section): Delete decl.
	(hppaelf_finish): Reenable code.  Do not pass symbols
	down to hppa_look_for_stubs_in_section.

Sat Feb 26 10:58:25 1994  Ian Lance Taylor  (ian@cygnus.com)

	* ldmain.c (write_map): Don't define.  Removed all references.
	Just use map_file or map_filename instead.
	(add_archive_element): Use minfo to write map information, not
	info_msg.
	(constructor_callback): Use fprintf to write map information, not
	info_msg.
	* ldmain.h (write_map): Don't declare.
	* ldgram.y (mri_script_command): Removed reference to write_map.
	* ldlang.c (lang_one_common): Likewise.
	* lexsup.c (parse_args): Likewise.

Fri Feb 25 19:12:03 1994  Ian Lance Taylor  (ian@cygnus.com)

	* scripttempl/elf.sc: Force all sections to be aligned.

	* ldgram.y (section): Reverse the order of memspec_opt and
	fill_opt to avoid an ambiguity when both are used.
	* ld.texinfo: Changed accordingly.

	* ldgram.y: Move include of ldlex.h back with other includes.
	* ldlex.h (input_type): Don't initialize enum constants to
	particular values.
	* ldlex.l: Use a switch to return the right token based on
	input_type, rather than knowing that input_type has a value based
	on a token type.

	* ldgram.y (dirlist_ptr): Removed; not used.
	* lexsup.c: Include ldver.h.
	* Makefile.in: Rebuilt dependencies.

Fri Feb 25 18:55:54 1994  Ted Lemon  (mellon@pepper.ncd.com)

	* ldlang.c (lookup_name): don't call bfd_set_gp_size.
	(ldlang_add_file): call it here instead.

Fri Feb 25 18:13:46 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* ldgram.y: Include ldlex.h after %token decls, for byacc.

Fri Feb 25 10:47:25 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* emultempl/hppaelf.em: First attempt to clean this file up.
	Add comments in several functions as to their purpose and
	how they function (or my current best guess).  Clean up horrible
	spacing and indention that never should have been accepted in the
	first place.  Add FIXMEs for issues which need to be resolved.
	Disable linker-stub generation until it gets fixed.  This allows
	the linker to at least work on simple code for testing purposes.

	* ldlang.c (lang_size_sections): No longer static (PA ELF calls
	it via hppaelf_finish).  Prototype moved into ldlang.h.
	(lang_process): Move problematic extra call to lang_size_sections
	into the PA ELF specific code.
	* emultempl/hppaelf.em (hppaelf_finish): Extra call to
	lang_size_sections moved here.

Thu Feb 24 16:47:33 1994  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in (powerpc-*-elf*): New target; use ppc-elf32.
	* config/ppc-elf32.mt: New file.
	* emulparams/elf32ppc.sh: New file.
	* emultempl/ppc.em: New file.
	* Makefile.in (ALL_EMULATIONS): Added em_elf32ppc.o.
	(em_elf32ppc.c): New target; uses elf32ppc.sh, ppc.em and elf.sc.
	(EMULATION_OFILES): Added dependencies on ldexp.h and ldlang.h.

Thu Feb 24 12:27:07 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* lexsup.c (parse_args): Use symbolic numbers for long options.
	Fix misunderstanding in -Y and -call_shared et al.

	Use getopt instead of lex and yacc to parse the command line.

	* ld.texinfo (Options): Document changes to option syntax.
	* Makefile.in: Update dependencies.
	* ldver.c (help): Tweak dashes in usage message.
	* ldgram.y (%union): Remove unused members.
	Remove %tokens for command line options; add ones for input types.
	(command_line): Rules removed.
	(file): Instead of command line, recognize an
	input type indicator, then use the nonterminal for that type.
	(defsym_expr): New nonterminal from code formerly in command_line.
	* ldlex.h: Declare parser input type enum and variable.
	Don't declare parse_line.
	* ldlex.l: Remove unused variables.  Make some used ones static
	and comment them.
	(COMMAND): Start state and its rules removed.
	At start of yylex, return input state token if at start of input.
	(lex_redirect): Don't need to set yyout.
	(ldlex_command): Function removed.
	* ldmain.c (main): Instead of calling parse_line, set up the
	redirections and call yyparse directly.
	* ldmisc.c (vfinfo): If there's no input filename, print nothing, not
	"command line".
	* lexsup.c: Remove #if 0'd code.
	(parse_line): Function removed.
	(parse_args): Rewrite to use getopt_long_only.
	(set_default_dirlist): New function from code formerly in
	ldgram.y:command_line.
	(set_section_start): New function.
	* emultempl/generic.em, emultempl/gld960.em, emultempl/hppaelf.em,
	emultempl/lnk960.em, emultempl/m88kbcs.em: Don't enclose
	compiled-in link scripts in "{" and "}", as the grammar no longer
	wants them to be.

Thu Feb 24 08:43:26 1994  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* Makefile.in (ld.dvi): Depend on configdoc.texi, but don't
	require that it be in $(srcdir).

Tue Feb 22 09:21:18 1994  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (lang_size_sections): Only align section to alignment
	required by linker script, not to maximum alignment of input
	sections.

	* ldlang.h (largest_section): Don't declare.
	* ldlang.c (largest_section): Don't define.
	(size_input_section): Don't set largest_section; not used.

Mon Feb 21 15:15:29 1994  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (new_afile): Pass NULL as last argument to concat.

Thu Feb 17 15:51:23 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c, ldmain.c: Include libiberty.h.

	* ldmisc.h (concat): Don't declare.
	* ldmisc.c (concat): Don't define; just use the one in libiberty.

	* ld.h (as_output_section_statement): Removed; not used.

Thu Feb 17 09:32:14 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldlang.c, ldmain.c, ldmisc.c: Use bfd_get_error and
	bfd_set_error and new error names.

Tue Feb 15 20:14:53 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* ldwrite.c (build_link_order): If the cooked size of the section
	has been set, use it, for determining link_order size.
	(ldwrite): In the error message displayed if bfd_final_link fails,
	indicate that it was in fact the final link step that failed.

	* ldlang.c (lang_size_sections): Clear bfd_error before calling
	bfd_relax_section, in case it returns false but doesn't flag an
	error.  If an error is returned, indicate which one it is in the
	error message.

	* Makefile.in (install-info): Depend on ld.info, and use "$<*" so
	it'll get picked up from $(srcdir) if appropriate.

Tue Feb 15 16:32:04 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* scripttempl/aout.sc: Only pad .text if PAD_TEXT is set.
	* emulparams/i386mach.sh (PAD_TEXT): Set PAD_TEXT.

Fri Feb 11 17:02:49 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldlex.l (comment): Increment line number when newline is read.

Fri Feb 11 17:36:20 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (lookup_name): Take new argument, force_load.  If true,
	reload the file even if it is already loaded.
	(wild): Call lookup_name with force_load argument of 0.
	(open_input_bfds): Call lookup_name with force_load argument of 1.
	(print_symbol): Remove declaration of non-existent function.
	(print_one_symbol): Return true rather than falling off end.

Thu Feb 10 11:52:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (main): Use %ld when printing long values.

	* scripttempl/elf.sc: Move _edata after the .sdata section.
	Permit OTHER_BSS_SYMBOLS to be defined.
	* emulparams/elf32mipb.s (OTHER_BSS_SYMBOLS): Define _fbss.

Mon Feb  7 16:31:15 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* Rename all "hppaosf" files to "hppaelf".
	* Change all "osf" references to "elf" in hppaelf files.
	* Makefile.in: Likewise.
	* configure.in: Likewise.

Sun Feb  6 20:31:56 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmain.c (main): Call xatexit, not atexit.
	Call xmalloc_set_program_name.

	* ldlang.c (lang_size_sections): Check if bfd_relax_section set
	bfd_errno.

Sat Feb  5 03:54:34 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* emultempl/lnk960.em (append), emultempl/hppaosf.em
	(hppaosf_finish): Call xmalloc, not ldmalloc.
	* ldmain.c (preserve_output): Function removed.
	(main): Do it here instead.

Fri Feb  4 23:02:19 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* ldlang.h (LANG_FOR_EACH_{INPUT,OUTPUT}_SECTION): Delete (unused)
	GNU C specific macros.

	* emultempl/hppaosf.em (hppaosf_finish): Expand the only remaining
	call to LANG_FOR_EACH_INPUT_SECTION.

Fri Feb  4 16:26:08 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmisc.c (ldmalloc, xmalloc, ldrealloc, xrealloc): Functions
	deleted; will use libiberty versions instead.
	* ldctor.c ldfile.c ldlang.c ldmain.c ldmisc.c ldmisc.h lexsup.c
	mri.c Makefile.in: Change callers.

	* ldmisc.c (vfinfo): Remove cleanup code.
	* ldmain.c (remove_output): Put it here (new function).
	(preserve_output): New function.
	(main): Register remove_output and preserve_output with atexit.
	* ldmain.c ldgram.y: Call xexit instead of exit.
	* ldmisc.h: Declare xexit.

Fri Feb  4 15:19:01 1994  Steve Chamberlain  (sac@cygnus.com)

	* Makefile.in: Lots of new H8/500 memory models.

Sun Jan 30 14:33:40 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* ldlex.l: Removed duplicate rules.
	(yywrap): Provide default definition, needed with some versions of
	flex.

Fri Jan 28 09:12:56 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmisc.c (vfinfo): For `%I', if the file is in an archive, print
	the archive filename too.

	* ldlex.l: Add rule to catch invalid input characters instead of
	printing them.  Include "ldmain.h" for program_name decl.
	(lex_warn_invalid): New function.
	* Makefile.in: Add dependency.

Fri Jan 28 12:58:45 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* Makefile.in (check): Don't bother running any tests of
	cross-linker until the test suite no longer assumes native mode.

Thu Jan 27 17:19:54 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* ldlang.c (print_one_symbol, print_input_section):  Print
	global symbols in symbol table again.

Thu Jan 27 12:35:01 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmain.c ldmain.h ldgram.y: If -v -V or --version was given,
	exit successfully instead of complaining if no input files are
	given.

Tue Jan 25 13:19:41 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in: Format variable definitions consistently.
	(LD_PROG): Remove unnecessary variables from link command,
	change variable LOADLIBES to EXTRALIBS.

	* ldmain.c (main): Compute and display total execution time.
	* ld.texinfo (-stats): Document the option.

Mon Jan 24 12:56:37 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (reloc_overflow): Added name, reloc_name and addend
	arguments.

	* ldlang.c (lookup_name): Set BFD GP size to -G argument value
	after opening BFD.

	* ldlang.c (relaxing): Removed global variable.
	(lang_size_sections): If the canonical symbols have not already
	been read in, read them in before relaxing.
	* ldlang.h (relaxing): Removed declaration.

Fri Jan 21 00:44:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (new_afile): Initialize loaded field to false.
	(lookup_name): If file was already loaded, don't call the
	add_symbols entry point again.

Wed Jan 19 13:57:00 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ld.texinfo: Clarify what -T option does.

Tue Jan 18 16:18:15 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* scripttempl/m88kbcs.sc: Don't use CREATE_OBJECT_SYMBOLS, that's
	for a.out.

Tue Jan 11 13:22:04 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (add_archive_element): If trace_files or
	trace_file_tries, print file name.
	* ldlang.c (lookup_name): Likewise.
	(ldlang_add_file): Don't put files on input_bfds list in reverse
	order.

	* scripttempl/elf.sc: Correct typo.

Mon Jan 10 19:49:05 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldgram.y, ldlex.l: Make the space between -e, -u, and -y and
	their arguments optional, for compatibility with the old GNU ld.

Fri Jan  7 20:00:24 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/elf.c: Define __bss_start before the .sbss section.

Thu Jan  6 00:13:10 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (add_to_set): Add bitsize argument.
	(constructor_callback): New function.
	(link_callbacks): Add constructor_callback.
	* ldctor.c (struct set_info): Add bitsize field.
	(ldctor_add_set_entry): Add bitsize argument.
	(ldctor_build_sets): Base the size of the elements of the set on
	the bitsize, rather than always using LONG.
	* ldctor.h (ldctor_add_set_entry): Add bitsize to declaration.

	* ld.h (QUAD_SIZE): Define.
	* ldgram.y (QUAD): New token.
	(length): Handle it.
	* ldlex.l: Return QUAD.
	* lexsup.c (keywords): Add QUAD.
	* ldwrite.c (build_link_order): Handle QUAD.
	* ldlang.c (print_data_statement): Handle QUAD.
	(lang_size_sections): Likewise.
	(lang_do_assignments): Likewise.
	* ldexp.c (exp_print_token): Add QUAD to table.
	* ld.texinfo: Describe QUAD.

	* scripttempl/alpha.sc: Don't create .lit4 or .sdata sections,
	since the Alpha doesn't use them.

Wed Jan  5 17:42:16 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldemul.h (ld_emulation_xfer_struct): Comment the members.

Sat Jan  1 13:39:31 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* Makefile.in, configure.in: Add support for VSTa micro-kernel.
	* config/vsta.mt, emulparams/vsta.sh: New files for VSTa.

Sat Jan  1 10:53:35 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* scripttempl/aout.sc: Pad .text to DATA_ALIGNMENT if relocating;
	needed for i386mach.  (Should be a no-op on other systems.)

	* emulparams/i386mach.sh (SEGMENT_SIZE): Fix again.
	(PAGE_SIZE): Don't define; not used.

Fri Dec 31 16:12:06 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldgram.y (yyerror): Make argument const char *, and actually
	print it out rather than assuming it is a syntax error.
	* ldmisc.h: Change declaration of yyerror.
	* ldemul.c, ldwrite.c: Add /*ARGSUSED*/ as appropriate.

Fri Dec 31 11:37:28 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* emulparams/i386mach.sh (NONPAGED_TEXT_START_ADDR): Don't include
	exec header offset, since the exec header isn't loaded.
	(PAGE_SIZE, SEGMENT_SIZE): Agree with bfd/i386mach3.c.

Thu Dec 30 13:01:43 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	A major rewrite to move the bulk of the linker into BFD so that
	more efficient backend code can be written for specific object
	files.
	* lderror.c, lderror.h, ldindr.c, ldindr.h, ldsym.c, ldsym.h,
	ldwarn.c, ldwarn.h, relax.c, relax.h: Removed.
	* ldctor.c, ldctor.h: Complete rewrite.
	* ldwrite.c, ldwrite.h: Complete rewrite.
	* ld.h (strip_symbols_type, strip_symbols): Removed.  Use
	link_info.strip instead.  Changed all uses.
	(discard_locals_type, discard_locals): Removed.  Use
	link_info.discard instead.  Changed all uses.
	(ld_config_type): Removed relocateable_output field; use
	link_info.relocateable instead; changed all uses.  Added stats
	field.
	(set_asymbol_chain, get_asymbol_chain, get_loader_symbol,
	set_loader_symbol): Removed.
	* ldexp.h (node_class): Added etree_rel.
	(etree_type): Added rel field.
	* ldexp.c (exp_print_token): Bracketed table initialization.
	(exp_relop): New function.
	(fold_name): Use linker hash table rather than ldsym functions.
	(exp_fold_tree): Likewise.  Also, handle etree_rel case.
	(exp_print_tree): Handle etree_rel.
	* ldgram.y (strip_symbols, discard_locals): Removed.
	(OPTION_stats, OPTION_no_keep_memory): New tokens.  Handle them.
	(REL): New token.  Does not appear in grammar, but needed for
	expression code.
	(file): Don't call lang_final; it's called by main anyhow.
	* ldlex.l: Accept -stats and -no-keep-memory options.
	* ldlang.h (fill_type): Make unsigned int, not unsigned short.
	* ldlang.c: Consistently use fill_type for fill argument.
	(lang_init_script_file, script_file): Removed.
	(create_object_symbols): Removed.  Use
	link_info.create_object_symbols_section instead.  Changed all
	uses.
	(lang_add_keepsyms_file): Removed.
	(lookup_name): Call bfd_link_add_symbols instead of
	ldmain_open_file_read_symbol.
	(wild): Don't iterate over script_file.
	(open_output): Create link hash table.
	(lang_place_undefineds): Rewrote.
	(lang_size_sections): Handle relaxing (doesn't work yet).
	(lang_relocate_globals): Removed.
	(lang_finish): Use link hash table rather than ldsym functions.
	(lang_common): Rewrote.
	(lang_one_common): New function.
	(ldlang_add_file): Add file to link_info.input_bfds list.  Set
	usrdata.
	(create_symbol): Removed.
	(lang_process): Don't call lang_init_script_file.  Call
	ldctor_build_sets rather than find_constructors.  Don't call
	lang_relocate_globals.
	(lang_abs_symbol_at_beginning_of): Rewrote.
	(lang_abs_symbol_at_end_of): Rewrote.
	* ldmain.c (had_y): Removed.
	(lprefix, lprefix_len): Removed; use link_info fields instead.
	Changed all uses.
	(multiple_def_count, commons_pending, undefined_global_sym_count,
	total_symbols_seen, total_files_seen): Removed.
	(link_callbacks, link_info): New variables.
	(main): Initialize link_info.  Don't call init_bfd_error_vector or
	ldsym_init.  Don't set now unused variables.  Handle -stats.
	(get_emulation): Removed obsolete and nonfunctional GNU960 code.
	(add_ysym): Rewrote.
	(read_entry_symbols, refize, enter_global_ref, enter_file_symbols,
	search_library, gnu960_check_format, decode_library_subfile,
	linear_library, symdef_library, clear_syms, subfile_wanted_p):
	Removed.
	(add_keepsyms_file, add_archive_element, multiple_definition,
	multiple_common, add_to_set, warning_callback, undefined_symbol,
	reloc_overflow, reloc_dangerous, unattached_reloc, notice_ysym):
	New functions.
	* ldmisc.c (vfinfo): Accept a string for %T, not a symbol.  Don't
	require symbols for %C; look them up instead.
	* emultempl/hppaosf.em: Pass link_info to
	hppa_look_for_stubs_in_section.
	* Makefile.in: Rebuilt dependencies.
	(CFILES): Removed lderror.c, ldindr.c, ldsym.c, ldwarn.c, and
	relax.c.
	(HFILES): Removed lderror.h, ldindr.h, ldsym.h, ldwarn.h, and
	relax.h.
	(EMULATION_OFILES): Depend on bfdlink.h, ldmain.h, ldexp.h,
	ldlang.h and ldctor.h.

	* Makefile.in (ldlex.c): Don't depend on ldgram.h.  Remove
	declarations of free and malloc from flex output.  Change malloc
	to ldmalloc in flex output.

Thu Dec 16 21:19:57 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* ldmain.c (lprefix): Change default from a char to a string
	with only one character.
	(lprefix_len): Set default to one.

	* ldmain.h (lprefix_len): Declare.

	* ldsym.c (write_file_locals): Use strncmp rather than a character
	comparison for lprefix.

	* emultmpl/m88kbcs.em (before_parse): Set lprefix and lprefix_len
	correctly.

	* emultmpl/hppaosf.em: Include ldexp.h.
	(before_parse): Set lprefix and lprefix_len correctly.

Tue Dec 14 17:19:03 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlex.h: Don't declare yywrap if it is a macro.
	* ldlex.l: Include sysdep.h.
	* ldlang.c (lang_for_each_statement_worker,
	lang_for_each_statement): Forgot to use PARAMS.

Mon Dec 13 14:30:03 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in: Added .PHONY targets where appropriate.  Added some
	comments.  Also:
	(gcclibdir, version): Removed unused variables.
	(DEP): New variable, set to mkdep.
	(ALL_CFLAGS): New variable.  Used in .c.o target.
	(CFILES, HFILES, GENERATED_CFILES, GENERATED_HFILES): New
	variables.
	(HEADERS, MANSOURCES, LDCSOURCES, GENERATED_SOURCES,
	GENERATED_HEADERS, LDSOURCES, BFD_SOURCES, SOURCES): Removed
	mostly obsolete variables.  Adjusted remaining uses.
	(DEF_EMUL): Removed variable.
	(ldmain.o): Handle undefined EMUL error correctly.
	(ldemul-list.h): Depend on config.status rather than Makefile.
	Create via temporary file.
	(ver960.c, roll, make): Removed obsolete targets.
	(.dep, .dep1, dep.sed, dep, dep-in): New targets.  Used to rebuild
	dependencies.
	* dep-in.sed: New file, used when rebuilding dependencies.

Sat Dec 11 14:43:44 1993  Ian Lance Taylor  (ian@deneb.cygnus.com)

	Made many changes to eliminate gcc warnings.  Made various
	cosmetic changes, declared various things in header files, removed
	various extern declarations from .c files.  No substantive
	changes.

	* ldlang.c (lang_process): Ifdef out final call to
	lang_size_sections again (reverting change of Nove 2), since it
	breaks the Sun4 linker.

Thu Dec  2 16:31:47 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (alpha-*-netware*): New target; use alpha.

Wed Dec  1 14:04:20 1993  Ken Raeburn  (raeburn@cygnus.com)

	* configure.in: Group targets by CPU.  Merge some m68k target
	entries with different CPU specs that use the same ld_target
	values.

	* configure.in: Add sparc*-*-coff.
	* config/coff-sparc.mt, emulparams/coff_sparc.sh: New files.
	* Makefile.in (ALL_EMULATIONS): Add em_coff_sparc.o.
	(em_coff_sparc.c): Add dependencies and build rules.

	* ldmisc.c (errno, sys_nerr, sys_errlist): Don't declare.

Wed Dec  1 12:19:55 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldgram.y (OPTION_call_shared, OPTION_non_shared, OPTION_Oval):
	New tokens.
	(command_line_option): Accept and ignore them (for now).
	* ldlex.l (<COMMAND>): Handle -non_shared, -call_shared, and -On
	where n is a number.

Mon Nov 22 14:14:29 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (subfile_wanted_p): If merging a common symbol which is
	not in bfd_com_section, create the section in the BFD so that it
	can be placed in the right output section.

Fri Nov 19 14:12:39 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (mips*-sgi-irix5*): New target.  Use mipsb-elf32.
	* emulparams/elf32mipsb.sh (DATA_ADDR): Define.
	(OTHER_READONLY_SECTIONS): Define for .reginfo.
	(EXECUTABLE_SYMBOLS): Define for _DYNAMIC_LINK.
	* scripttempl/elf.sc: Use EXECUTABLE_SYMBOLS when not relocating.
	Move OTHER_READONLY_SECTIONS after all the other readonly
	sections.  Don't use DATA_ADDR twice.

	* ldmain.c (enter_file_symbols): Removed duplicate tests of p.  If
	p is in a common section, make sure the BFD has a section of that
	name.

	* ldlang.c (lang_common): Add newline to error message.

Thu Nov 11 15:54:41 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* emulparams/m68klynx.sh (SCRIPT_NAME): Define to use a
	Lynx-specific script instead of m68kcoff.
	(OUTPUT_FORMAT): Define as "coff-m68k-lynx".
	(ENTRY): Define as __main.
	(TEXT_START_ADDR): Define as 0.
	(PAGE_SIZE): Define as 0x1000.
	* emulparams/i386lynx.sh, emulparams/sparclynx.sh: Fix comment.
	* scripttempl/m68klynx.sc: New file.

Mon Nov  8 12:00:16 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (get_emulation): Ignore -mips1, -mips2 and -mips3
	arguments rather than treating them as emulation names.

Fri Nov  5 09:02:52 1993  D. V. Henkel-Wallace  (gumby@blues.cygnus.com)

	* configure.in: Support x86 unixware and netware plus generic netware.

Fri Nov  5 21:47:55 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* emulparams/i386mach.sh (TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR):
	Correct values (?).

Wed Nov  3 15:10:15 1993  Ken Raeburn  (raeburn@rover.cygnus.com)

	* Makefile.in (distclean): Don't delete dvi or info files.
	(ld.info): Update dependency list.
	(ld.dvi): Ditto.  Extend TEXINPUTS to get bfdsumm.texi.

Wed Nov  3 12:07:39 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldlang.c (lang_add_output): Take new arg, FROM_SCRIPT.
	Set output_filename instead of creating a new node.
	(open_output): Don't set output_filename.
	(lang_final): Create the new node here.
	* ldlang.c, ldlang.h, ldgram.y, mri.c: pass FROM_SCRIPT.

Tue Nov  2 15:45:51 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	From Pete Hoogenboom (hoogen@cs.utah.edu):

	* scripttempl/hppaosf.sc: (___stack_zero, etext, _etext,
	edata, _edata, end): Add definitions of these symbols.
	(__end):  Remove definition of this symbol.
	(__data_start): Move definition of this symbol.

	* emultempl/hppaosf.em:  Various fixes and support for linker stub
	generation.
	(hppaosf_finish, hppaosf_search_for_padding_statements,
	hppaosf_create_output_section_statements): New functions in
	support of linker stub generation.
	(ld_hppaosf_emulation):  Redefine to include new
	emulation-specific routines.

	* ldlang.c (lang_process): Re-enable last call lang_size_sections.
	Pass abs_output_section rather than NULL to avoid invalidating
	absolute symbols.

Thu Oct 28 21:16:42 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Add em_i386mach.o.
	(em_i386mach.c): New rule.
	* configure.in (i[34]86-*-mach*): New case.
	* config/i386-mach.mt: New file.
	* emulparams/i386mach.sh: New file.

Fri Oct 29 14:55:05 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ld.h (flag_is_*): Removed macros.
	* ldmain.c (enter_global_ref), ldsym.c (write_file_locals):
	Consistently check the BFD symbol flags directly, rather than
	using file_is_* macros.

Thu Oct 28 19:08:42 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* configure.in (sparc*-*-lynxos*): New target.
	* Makefile.in: Add rule for em_sparclynx.c.
	(ALL_EMULATIONS): Add Lynx emulations.
	* config/sparc-lynx.mt: New file.
	* emulparams/sparclynx.sh: New file.
	* scripttempl/sparccoff.sc: New file.

Thu Oct 28 13:50:25 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in: Add dependency for $(EMULATION_OFILES).

Mon Oct 25 16:09:24 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* relax.c (write_relax): Check return value of bfd_seclet_link.

Mon Oct 25 09:31:21 1993  Ken Raeburn  (raeburn@cygnus.com)

	* ldlang.c (delete_output_file_on_failure): New variable.
	(open_output): Set it after bfd open succeeds.
	* ldmisc.c (vfinfo): Test it.

	Changes from Peter Hoogenboom, hoogen@cs.utah.edu:

	* ldsym.c (write_file_locals): Set the BSF_FILE flag for object
	symbols.

	* ldemul.c: Support was added to allow emulation-specific
	processing to occur.  This support was added primarily for linker
	stub generation in the elf32-hppa gld.
	(ldemul_finish, ldemul_create_output_section_statements):  New
	functions.
	* ldemul.h: Support was added to allow emulation-specific
	processing to occur. (As described above.)  Added finish and
	create_output_section_statements fields to
	ld_emulation_xfer_struct structure.
	* ldlang.c: Add calls to emulation-specific routines.
	(lang_process):  Add call to
	ldemul_create_output_section_statements function.
	(lang_process):  Add call to a emulation-specific routine (and
	some processing after the call).

Fri Oct 22 20:54:13 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: mips*- instead of mips-, mips*el changes

Tue Oct 19 15:46:28 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (alpha-*-osf*): New target; use alpha.mt.
	* Makefile.in (ALL_EMULATIONS): Added em_alpha.o.
	(em_alpha.c): New target; use alpha.sh and alpha.sc.
	* config/alphaosf.mh (NATIVE_LIB_DIRS, HOSTING_CRT0): Define.
	* config/alpha.mt: New file.
	* emulparams/alpha.sh: New file.
	* scripttempl/alpha.sc: New file.

Fri Oct 15 02:20:04 1993  Doug Evans  (dje@canuck.cygnus.com)

	* ldlang.c (lang_size_sections, lang_common): ALIGN_N can't handle
	types of different sizes (eg: 64 and 32 bits), so coerce.
	* ld.h (ALIGN_N): Add warning about usage.

Wed Oct 13 16:02:39 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldmain.c (enter_global_ref): Just ignore any weak symbol for
	which we already have a definition, rather than checking in
	several different places whether the symbol is weak.

Tue Oct 12 17:30:51 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (mips-*-elf*): New target; use mipsb-elf32.
	* scripttempl/elf.sc: Only use OTHER_READONLY_SECTIONS and
	OTHER_READWRITE_SECTIONS if relocating.  Shell variables are not
	expanded within them.
	* config/mipsb-elf32.mt: New file.
	* emulparams/elf32mipb.sh: New file.
	* Makefile.in (em_elf32mipb.c): New target.

Thu Sep 30 17:00:36 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* ldgram.y: In input_list, change lang_input_file_is_file_enum to
	lang_input_file_is_search_file_enum so objects brought in using
	INPUT() do a path lookup.

Tue Sep 28 13:31:23 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* configure.in: Change Lynx ld_target to be {i386,m68k}-lynx
	instead of {i386,m68k}-coff.
	* Makefile.in (em_i386lynx.c, em_m68klynx.c): New targets.
	* config/i386-lynx.mt: New file.
	* config/m68k-lynx.mt: New file.
	* emulparams/i386lynx.sh: New file.
	* emulparams/m68klynx.sh: New file.

	* scripttempl/i386coff.sc: Make ENTRY get its value from ${ENTRY},
	but defaulting to _start.

	* ldemul.c, ldfile.c, ldlang.c, ldmain.c, ldmisc.c, ldmisc.h,
	ldsym.c, ldwarn.c: Rename info to info_msg, to avoid conflict with
	LynxOS libc.

Thu Sep 23 14:51:03 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/solaris2.mh: New file.  Define HOSTING_CRT0 and
	HOSTING_LIBS for testing.

Fri Sep 17 17:52:24 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Finish up support for i386-sysv4 (without shared libraries):
	* ld.h (flag_is_weak): Define.
	* ldlang.c (print_symbol): Mention whether symbol is weak.
	(print_input_section): Print weak symbols as globals.
	* ldmain.c (refize): Do not zero out BSF_WEAK flag.
	(enter_global_ref): Do not warn if a weak symbol redefines a
	global symbol.  Do not let a weak symbol redefine a common symbol.
	(enter_file_symbols): Treat weak symbols as global symbols.
	(subfile_wanted_p): Do not pull in an object file from a archive
	just to resolve an undefined weak symbol.
	* ldmisc.c (vfinfo): Don't needlessly malloc space after a fatal
	error; the error might be that malloc has run out of space.
	* ldsym.c (write_file_locals): Treat weak symbols as global.
	* configure.in (i[34]86-*-sysv4*, i[34]86-*-elf*): New targets;
	use i386-elf.
	* config/i386v4.mh: New file; set NATIVE_LIB_DIRS to /usr/ccs/lib.
	* config/i386-elf.mt: New file; set EMUL to elf_i386.
	* emulparams/elf_i386.sh: New file.
	* scripttempl/elf.sc: Use ${NOP} as filler (defaults to 0).
	* Makefile.in (NATIVE_LIB_DIRS): Define to be empty.
	(ALL_EMULATIONS): Add em_elf_i386.o.
	(GENSCRIPTS): Pass NATIVE_LIB_DIRS as sixth argument.
	(em_elf_i386.c): New target, like other em_*.c targets.
	($(LD_PROG)): Pass $(CFLAGS) to $(CC).
	* genscripts.sh: Accept NATIVE_LIB_DIRS as sixth argument.  If
	nonempty, and configured for native, add it to LIB_PATH.

Fri Sep 17 13:07:39 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* scripttempl/{h8300.sc,h8500.sc,i386coff.sc,m68kcoff.sc,sh.sc}:
	Added statements to pass stab and stabstr sections through and
	mark them as NOLOAD, which makes GDB happier.

Wed Sep 15 16:02:29 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* configure.in: Accept m68k-lynx-lynxos config.

	* Makefile.in: Use $(SHELL) to run genscripts.sh.

Sun Sep 12 16:04:40 1993  Doug Evans  (dje@cygnus.com)

	* config/coff-h8300.mt: Add EMUL=h8300h.

	* ldmain.c (main): Call set_scripts_dir after argv has been processed.

Fri Sep 10 09:36:29 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Makefile.in: Changed CXX back to g++.

Fri Sep 10 09:34:29 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Makefile.in: Fixed RUNTEST* CXX CXXFLAGS macros and check rule.

Fri Sep 10 07:26:57 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* Makefile.in (TAGS): Use shell wildcards.

Tue Sep  7 18:04:54 1993  Jeffrey Osier  (jeffrey@cygnus.com)

	* Makefile.in:  add TEXINPUTS variable and use it in ld.dvi target

Fri Sep  3 16:46:41 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* ld.texinfo: re-enable included config file; conditionalize doc
	for -oformat to interact properly with SingleFormat doc config
	var; rename @up/@down to @raisesections/@lowersections.

Wed Aug 25 16:29:56 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* configure.in: recognize m88110.

Tue Aug 24 18:49:40 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	From Peter Hoogenboom <hoogen@shafer.cs.utah.edu>:
	* emultempl/hppaosf.em (ld_hppaosf_emulation): Correct name for PA
	ELF emulation is "elf32-hppa" not "elf-big".
	(hppaosf_before_parse): Remove unneeded processing of environment
	variables.
	* scripttempl/hppaosf.sc: Include .hppa_linker_stubs sections in
	.text segment of output file.
	* emulparams/hppaosf.sh (OUTPUT_FORMAT): Use elf32-hppa.

Tue Aug 24 16:17:00 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* ld.h: define BYTE_SIZE, SHORT_SIZE, and LONG_SIZE which are no
	  longer in bfd.h.

	* ldlang.c, ld.h: updated copyright.

Tue Aug 17 15:22:03 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldlang.c (open_output, lang_check): Check return value of
	bfd_set_arch_mach.

Tue Aug 17 07:02:19 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* scripttempl/h8500.sc: Start all sections in a different segment.
	* scripttempl/z8ksim.sc: Handle constructors

Thu Aug 12 16:05:37 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Makefile.in: revert earlier changes back to execute runtest
	  with make check. cdtest and bootstrap now function as they
	  did within the Makefile.

Thu Aug 12 10:20:05 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* Makefile.in: 	Update dependencies.

	* configure.in: Set EMULATION_OFILES in Makefile based on
	--with-targets option.

Thu Aug 12 08:52:29 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Makefile.in: check targets reimplemented to old way.

Wed Aug 11 08:26:11 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/i386v.mh, config/irix4.mh: Use gcc
	-print-libgcc-file-name rather than $(libdir)/libgcc.a.
	* config/i386sco.mh: New file; copy of i386v.mh to correspond to
	bfd/configure.host change.

Mon Aug  9 14:25:35 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* scripttempl/elf.sc: Handle .line and .debug* sections.

	* ldlex.l: Use bfd_scan_vma, not strtoul.

Fri Aug  6 08:57:39 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldexp.c, ldfile.c, ldlang.c, lexsup.c, ldmain.c, ldemul.c:
	Remove inital caps in some error messages, change "can't" to
	"cannot", add missing colons.
	* ldmisc.c (vfinfo): Print "%%" as a single %.
	For '%' followed by unrecognized character, print them both
	verbatim instead of expecting a char * arg.
	For '%C', don't put the function name in parens.

	* ldexp.c (invalid): Pass "%%", not "% ".

Fri Aug  6 14:31:22 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* scripttempl/mips.sc: Always define _ftext, _fdata, _fbss.
	(BSS_VAR): Removed; now always define _fbss.
	* emulparams/mipsidt.sh, emulparams/mipsidtl.sh (BSS_VAR):
	Removed.

Thu Aug  5 15:55:19 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: z8k-coff is the same as z8k-sim

Wed Aug  4 21:00:18 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* testsuite/lib/ld.exp: new file
	* testsuite/config/unix-ld.exp: new file
	* testsuite/ld.bootstrap/bootstrap.exp: new file
	* Makefile.in: add dejagnu support for make check

Wed Aug  4 17:52:32 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldlex.l (comment): Add missing newline in message.
	* ldindr.c (add_indirect): Ditto.
	* ldexp.c (exp_fold_tree): Ditto.

Tue Aug  3 10:57:41 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldgram.y, ldlex.l, mri.c, ldwrite.c: Change multiple commons
	into externs.

	* ldmisc.c (multiple_warn): New function.
	* ldmisc.h: Declare it.
	* ldmain.c (enter_global_ref): Call it.
	* ld.h (ld_config_type): Add warn_common.
	* ldlex.l, ldgram.y: Set it with -warn-common option.
	* ldver.c (help): Document it.

Mon Aug  2 12:04:36 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* scripttempl/elf.sc: Add hooks for .sdata, .sbss, and
	target-specific sections, and for changing data section vma.

Mon Jul 26 14:00:02 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* ldgram.y (OPTION_Qy, OPTION_Y, OPTION_dn, OPTION_YP): New
	terminals, for Solaris.
	(dirlist_ptr): New static variable.
	(command_line_option): Accept new options.

	* ldlex.l: Accept command-line options "-Qy", "-dn", "-Y", and
	"-YP,...".

	* config/sun4sol2.mt: Pass emulation name without ".sh".

	* emulparams/elf32_sparc.c: Renamed from elf32-sparc.c.
	* config/sun4sol2.mt (em_elf32_sparc.c): Adjusted accordingly.

Fri Jul 23 13:51:09 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* scripttempl/elf.sc: Add support for .init, .fini, .ctors,
	.dtors, .data1, .rodata1 sections, instead of combining them into
	other sections.  For `-r', set all section start addresses to
	zero.

	* emulparams/elf32-sparc.sh (TEXT_START_ADDR,
	NONPAGED_TEXT_START_ADDR): Value should be 0x10100.
	(MAXPAGESIZE): Renamed from PAGE_SIZE.

Wed Jul 21 14:28:42 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* genscripts.sh: If this is the default emulation, set
	COMPILE_IN.
	* emultempl/*.em: Use it to determine whether to compile in the
	scripts.

	* Makefile.in (GENSCRIPTS): Pass the default emulation name to
	genscripts.sh.  Pass the current emulation name without ".sh" on
	the end.
	* genscripts.sh: Take an default emulation arg.
	Use the current emulation name as EMULATION_NAME.
	Make default lib path for cross-compiling ':', not null.
	* emulparams/*.sh: Don't set EMULATION_NAME.
	* ldemul.c (ldemul_get_script): Take isfile arg.
	Pass it to emulation's get_script function.
	* ldemul.h: Adjust get_script prototypes.
	* ldfile.c (ldfile_find_command_file): Renamed from find_a_name.
	No longer static.
	* ldfile.h: Declare it.
	* ldgram.y: Accept a script on the command line again,
	for parsing compiled-in scripts.
	* ldmain.c (main): If ld script is a file, parse it as a -T
	option, otherwise parse it directly.
	* emultempl/*.em (*get_script): Return the scripts themselves if
	this is the default emulation; otherwise return their file names.
	* emultempl/m88kbcs.em: New file, to take m88kbcs #ifdef out of
	generic.em.
	* emulparams/m88kbcs.sh: Use it.

	* ld.h (ld_config_type::unix_relocate): Remove unused element.

Tue Jul 20 12:01:49 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Delete em_i386linux.o (for which
	there's no change log entry yet, tsk tsk) from the list of
	emulations compiled in until Mark gets around to checking in
	emulparams/i386linux.sh.
	(ldemul-list.h): Depend on Makefile, so if EMULATION_OFILES is
	changed, this file gets updated.

Fri Jul 16 14:14:32 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldgram.y (OPTION_Lfile): New token.
	(command_line_option): Accept OPTION_L NAME (whitespace after -L).
	* ldlex.l (<COMMAND>): Accept -L without FILENAME.

Fri Jul 16 13:44:26 1993  Doug Evans  (dje@canuck.cygnus.com)

	* configure.in: h8/300h support needs own .mt file.
	config/coff-h8300h.mt: New file.

Thu Jul 15 12:44:35 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmain.c: Don't include sys/stat.h; it already got included
	somewhere along the way.

Thu Jul 15 14:43:34 1993  Doug Evans  (dje@canuck.cygnus.com)

	* Makefile.in: Add h8300h support.
	emulparams/h8300h.sh: New file.
	scripttempl/h8300h.sc: New file.

Thu Jul 15 12:44:35 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldfile.c (ldfile_open_file): In error message, use the name the
	user gave (e.g., "-lc"), rather than the base file name.

	* ldexp.c (exp_fold_tree): Don't assign an int to an enum.

	* ldmain.[ch]: Remove initial Q_ from function names.
	* ldexp.c, ldindr.c, ldlang.c: Change callers.

	* ldfile.c, ldmain.c, ldgram.y: Rename option_v to trace_file_tries.

	* ldlang.c (lang_process): Move loading of default script from
	here to main.  Add a "/" to start of script name to prevent
	finding it in "." first.

	* ldmain.c (set_scripts_dir): Don't look in "." first.

	* ldgram.y, ldlang.c, ldsym.c: Remove traces of unused var
	option_longmap.

Thu Jul 15 10:55:59 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (em_m88kbcs.c): Correct dependency.
	* scripttempl/m88kbcs.sc: It's ARCH, not arch.  Removed TARGET
	statement.  Changed OUTPUT_FORMAT to use ${OUTPUT_FORMAT}.
	* emulparams/m88kbcs.sh: It's coff-m88kbcs, not m88kbcs.

Wed Jul 14 21:42:53 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldfile.c (ldlang_open_file, ldfile_open_command_file),
	main.c (main): Print the errno string in the error message.

Tue Jul 13 20:00:30 1993  Doug Evans  (dje@canuck.cygnus.com)

	* configure.in: Accept h8300h for target cpu.

	* ldmisc.c (vfinfo): Have demangle remove leading underscore if
	present (demangle is smart enough to know whether to do it or not).

Mon Jul 12 11:45:48 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldmain.c (set_scripts_dir): Check . and <ld bin dir>/../lib for
	ldscripts, as well as <ld bin dir> and SCRIPTDIR.

	* ldlang.c (lang_process): Use sizeof instead of magic constant.

	* ldmain.c (get_emulation, check_for_scripts_dir,
	set_scripts_dir):  New functions.
	(main): Call them.

Mon Jul 12 10:57:03 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* scripttempl/elf.sc: Include .init, .fini, .rodata sections.
	Create symbol "end" instead of "__end".  Comment out some parts
	that may not be needed (yet) for elf.

	* configure.in: Accept sparc-elf and sparc-solaris2 configs.

Thu Jul  8 15:33:32 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (ALL_EMULATIONS): Include $(OTHER_EMULATIONS).

	* ldmisc.h (einfo, minfo, info): Don't bother with PARAMS macro
	when no prototype is being supplied.
	(ldmalloc, ldrealloc): Size argument is now size_t.

	* ldmisc.c (finfo): New function, accepts FILE* argument.
	(vfinfo, case 'v'): New format character; displays bfd_vma in hex
	without leading zeros.
	(vfinfo, cases 'R' and 'C'): Use finfo(%v) when displaying a
	bfd_vma value, instead of fprintf(%x) which won't hold a long long
	value.
	(concat, buystring): String lengths are size_t.
	(ldmalloc, ldrealloc, xrealloc): Size argument is now size_t.

	* ldlang.c (new_statement): Size argument is now size_t.  Added
	forward declaration with prototype.

Thu Jul  8 10:53:47 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldgram.y (OPTION_v): Don't turn on verbose output.

Wed Jul  7 17:10:45 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* ldlex.l: Get rid of local typedef for bfd_vma!  Get it from
	bfd.h instead.

Wed Jul  7 11:33:12 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (install): Don't install as $(tooldir)/bin/gld;
	collect2 doesn't look for gld any more anyhow.

Mon Jul  5 14:29:48 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (lang_relocate_globals): Skip indirect symbols, which
	now have a non NULL srefs_chain.

	* config/hp300hpux.mt: Use emulation hp3hpux rather than
	hp300hpux, since the latter does not exist.

Fri Jul  2 18:06:05 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* genscripts.sh: Put the scripts in the ldscripts directory, not
	emulations.
	* configure.in (ldscripts): Make, instead of emulations.
	* Makefile.in (scriptdir): Take off the "ld" part.
	(install, clean, distclean): Use ldscripts, not emulations.
	In tests, don't pass -Lemulations.
	Don't pass tooldir/lib to genscripts.sh.
	* genscripts.sh: Don't take tooldir/lib arg.
	* ldlang.c (lang_process): Add "ldscripts/" to the name of the
	default script file.

Fri Jul  2 17:13:35 1993  Doug Evans  (dje@canuck.cygnus.com)

	* scripttempl/h8300.sc: Add .tors section for constructor/destructors.

Thu Jul  1 16:38:45 1993  Doug Evans  (dje@canuck.cygnus.com)

	* config/coff-h8300.mt: EMUL=h8300hms -> h8300.

Wed Jun 30 15:45:55 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* Makefile.in (.y.c): skip default .y.c rules. gnu make can now
	  run in parallel without colliding on yacc's static file names.
	  Without the stub rule, make will try to start two yacc's
	  concurrently which fails because of yacc's static file names.

Tue Jun 29 12:20:36 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldmain.c (subfile_wanted_p): Don't dump core if there are no
	symbols.

Mon Jun 28 12:22:11 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* genscripts.sh (LIB_PATH): Only add /usr/local/lib if it's
	different from libdir.

	* Makefile.in (scriptdir): Base on tooldir, not datadir.

Sat Jun 26 12:03:57 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldver.c (help): New function.
	* ldver.h: Declare it.
	* ldlex.l, ldgram.y: Recognize new options --help and --version.

Mon Jun 21 20:39:48 1993  Ken Raeburn  (raeburn@poseidon.cygnus.com)

	* Makefile.in (INCLUDES): Don't need ../include any more.

Mon Jun 21 16:38:35 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldlex.l, ldgram.y: Support new -oformat option.
	Remove attempt at supporting script fragments on the command line.
	* ldlang.c (lang_add_output_format): Take new arg, FROM_SCRIPT.
	* mri.c (mri_format), ldgram.y: Change callers.
	* ldlang.h: Change prototype.

Thu Jun 17 16:53:56 1993  david d `zoo' zuhn (zoo@cygnus.com)

	* Makefile.in: canonicalize install.sh; for use within
	this directory (and subdirs)

Thu Jun 17 14:33:09 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldgram.y: Tweak grammar to make reporting of invalid options work.

	* Makefile.in (.cc.o): Restore .SUFFIXES entry for .cc
	and .cc.o rule.

Wed Jun 16 11:45:32 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldfile.c (ldfile_open_command): Don't try .ld extension.
	It wasn't documented (or likely used) and wastes time.
	(try_open): If EXTEN is empty, don't try it.

	* ldctor.c, lderror.c, ldexp.c, ldfile.c, ldindr.c, ldlang.c,
	ldlex.l, ldmain.c, ldmisc.c, ldsym.c, ldver.c, ldwarn.c,
	ldwrite.c, lexsup.c, mri.c, relax.c: Replace DEFUN macro calls
	with normal function declarations.

	* Move *.em to emultempl/*.em.  Move *.sh to emulparams/*.sh.
	Move *.sc-sh to scripttempl/*.sc.
	* {emultempl,emulparams,scripttempl}/README: New files.
	* sh.em, st2000.em, z8ksim.em, h8300hms.em, h8500hms.em: Files
	removed, replaced with generic.em.
	* h8300.sh, h8500.sh, h8300.sc, h8500.sc: Renamed from
	 h8[35]00hms.s[ch].  Change their contents to omit the "hms".

	* *.em (*_get_script): Return script name instead of script contents.
	* ldlang.c (lang_process): Change caller.

	* ldlex.l, ldgram.y: Recognize -m option.
	Check for input files after *all* options in grammar.
	* ldmain.c (main): Check for -m options.  Add default directory
	for -m.

	* mkscript.c: File removed.
	* genscripts.sh: Take two more parameters, tooldirlib and libdir,
	to add to the default LIB_PATH.
	Look for input files in the new subdirectories.
	Create the scripts in emulations subdirectory and don't filter
	them through mkscript.
	* configure.in: Make the emulations subdirectory.

	* Makefile.in: Account for all of the above changes.
	Remove unused .SUFFIXES.  Get libgcc.a path with gcc
	-print-libgcc-file-name instead of $(libdir)/libgcc.a.
	Put CFLAGS last in the compilation rules.
	Add -I../bfd to INCLUDES so sysdep.h is found.

Tue Jun 15 23:04:46 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (INCLUDES): Look in ../include, not ../bfd.

	* aout.sc-sh: Add SHLIB_PATH like STACKZERO.  Make STACKZERO
	dependent on RELOCATING, not RELOCATION.
	* hp3hpux.sh (SHLIB_PATH): Define it.

Mon Jun 14 19:06:15 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* ldfile.c (try_open): If opening without the extension fails,
	try with the extension even if -v or -V was given.
	had_script is imported (from ldgram.y), not exported.

Mon Jun 14 16:26:10 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)

	* Makefile.in: remove parentdir support, use INSTALL_XFORM

Thu Jun 10 14:00:06 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldexp.c (exp_fold_tree): Don't lose the old flag bits.
	* ldgram.y (statement_list_opt): New nonterminal, either empty or
	statement_list.
	(section): Use statement_list_opt, not statement_list.
	* m68kcoff.sc-sh: Gather constructors and destructors and define
	__CTOR_LIST__ and __DTOR_LIST__ appropriately.
	* sa29200.sc-sh: Gather constructors and destructors and define
	___CTOR_LIST__ and ___DTOR_LIST__ appropriately.

Mon Jun  7 12:53:28 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (INCLUDES):  Add -I../bfd for sysdep.h and bfd.h.
	* configure.in:  No longer need to configure to get sysdep.h.

Fri Jun  4 16:18:24 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: remove install:all and install-info:info
	dependencies (these cause some spurious rebuilds at 'make install'
	time)

Fri Jun  4 08:50:14 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in (mips-idt-ecoffl*): New target; use mips-idtl.
	(mips-idt-ecoff*): Added trailing '*'.
	* config/mips-idtl.mt: New file; use EMUL of mipsidtl.
	* mipsidtl.sh: New file; like mipsidt.sh, but little endian.
	* Makefile.in (ALL_EMULATIONS): Added em_mipsidtl.o.

	* config/sun3.mh (HOSTING_LIBS, HOSTING_EMU): Removed obsolete and
	incorrect definitions.

Tue Jun  1 14:56:10 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* ldsym.c (write_file_locals):  Write BSF_CONSTRUCTOR
	symbols, unless stripping.

Tue May 25 15:34:25 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: configure looks for ####, so remove lines with many
	'#' characters.
	* config/irix4.mh, config/i386v.mh: New files; set HOSTING_CRT0
	and HOSTING_LIBS correctly so that ``make check'' will work.

Thu May 20 13:56:16 1993  Per Bothner  (bothner@deneb.cygnus.com)

	* mips.sc-sh:  Define _etext, _edata, and _end, in addition
	to etext, edata, and end.  Needed for IRIX 4.0.5F.
	Patch from mwp@iconix.oz.au (Michael Paddon).

	* Version 2.2.1 released.

Thu May 20 11:42:06 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* mipsbsd.sc-sh: Renamed from aout-mipsbsd.sc-sh.
	* mipsbsd.sh (EMULATION_NAME): Use new file name.

Tue May 18 17:10:24 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (LDDISTSTUFF): Remove ld.mm since we can't build it
	properly right now.

	* Version 2.2 released.

Mon May 17 15:37:28 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* ldver.c (ldversion): Bump version number to 2.2.

Mon May 17 12:44:31 1993  Per Bothner  (bothner@cygnus.com)

	* NEWS:  New file.

Fri May 14 11:26:24 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.sc-sh: Don't define BSS_VAR unless relocating.

Wed May 12 13:33:29 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (mkscript.o, mkscript): Build mkscript via
	mkscript.o, rather than directly from mkscript.c.

Tue May  4 21:58:56 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* configure.in: Look for ${target_makefile_frag} relative to
	${srcdir}, not relative to build directory.

	* hppaosf.em, hppaosf.sc-sh, hppaosf.sh: New files.
	* configure.in: Recognize hppa*-hp-osf.
	* Makefile.in (ALL_EMULATIONS): Include hppaosf emulation.
	(em_hppaosf.c): Build it.
	* config/hppaosf.mh, hppaosf.mt: New files.

	* ld.h (ALIGN_N): Renamed from ALIGN, because that conflicted with
	some system header files.  All uses changed.

	* configure.in: Recognize i386-aix configurations as i386-coff
	targets.

	* configure.in: Recognize m68*-*-hpux.
	* aout.sc-sh: If STACKZERO and RELOCATING are both defined, output
	the value of STACKZERO.
	* Makefile.in (ALL_EMULATIONS): Include hp300-hpux emulation.
	(em_hp3hpux.c): Build it.
	* hp3hpux.sh, config/hp300hpux.mt: New files.

Tue May  4 12:37:35 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.sc-sh: Put constructors in the .data section.
	* Makefile.in (cdtest): Added dependency on ld.new.

Mon May  3 19:43:39 1993  Per Bothner  (bothner@cygnus.com)

	* Makefile.in:  Change definition of $(tooldir) to match FSF.
	* vax.sh, config/vax.mt, configure.in, Makefile.in:
	Support VAX Ultrix and BSD.

Mon Apr 26 18:35:47 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* sh.em, sh.sh, sh.sc-sh: New files supporting Hitachi SH.

Wed Apr 14 21:01:51 1993  John Gilmore  (gnu@cygnus.com)

	* ldlang.h (struct memory_region):  Change `length' and
	`old_length' fields to bfd_size_type.  Eliminate use of bfd_offset.
	* ldlang.c, mri.c:  Corresponding changes, plus lint.

Thu Apr  8 22:08:18 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: For all i386 targets, accept i486 as well.

Mon Apr  5 17:33:39 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (wild_doit): Preserve all flags for a
	SEC_SHARED_LIBRARY section.
	(size_input_section): Consider any SEC_HAS_CONTENTS section when
	computing largest_section.

Fri Apr  2 14:33:52 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (lang_output_section_statement_lookup): Initialize all
	fields of newly created structure.

Wed Mar 31 18:19:15 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldmain.c (g_switch_value): New variable.
	* ldgram.y (OPTION_G, OPTION_Gval): New tokens.
	(command_line_option): Accept -G and set g_switch_value.
	* ldlex.l (COMMAND): Accept -G.
	* ldlang.c (open_output): Call bfd_set_gp_size on new BFD.

Tue Mar 30 09:40:25 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	Support for linking and loading at different places:

	* ldlex.l: Add "AT" keyword.
	* ldgram.y: Cleanup, and parse AT.
	* ldlang.c (print_output_section_statement): Print output address
	of section in map. (lang_size_sections): Fill sections' lma with
	load address.
	* ldlang.h (lang_output_section_statement_type): Add load_base
	information.

	* ldindr.c (add_indirect): Keep more information in the alias
	symbol chain.
	* ldlang.c (wild_doit):  Don't inherit NEVER_LOAD section
	attribute from an input section.
	* ldmain.c (Q_enter_file_symbols): Common section is NEVER_LOAD by
	default. (Q_enter_file_symbos): Indirect symbols now are known by
	their section, not a special symbol flag.
	* ldsym.c (write_file_locals): Indirect symbols aren't local.
	(write_file_globals): Write the mapping for an indirect symbol.
	* relax.c (build_it): When forced to write a NEVER_LOAD section,
	fill it with zeros.

Tue Mar 23 13:24:10 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* ld.texinfo:  changes for q1

Tue Mar 23 00:13:29 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: add dvi target, define & use TEXI2DVI, add installcheck

Mon Mar  8 20:30:35 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: rename HOST_CC to CC_FOR_BUILD

Thu Mar  4 12:44:33 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.sc-sh: Added variables which may be overridden by a
	specific emulation.
	* mipsidt.sh: New file; emulation for IDT MIPS board.
	* Makefile.in (ALL_EMULATIONS): Added em_mipsidt.o.
	(em_mipsidt.c): New target.  Uses mipsidt.sh and mips.sc-sh.
	* config/mips-idt.mt: New file; sets EMUL to mipsidt.
	* configure.in (mips-idt-ecoff): New target; uses mips-idt.

Sat Feb 27 00:00:14 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* aout-mipsbsd.sc-sh, mipsbsd.sh: New files from Ralph Campbell,
	ralphc@pyramid.com.
	* i386bsd.sh, config/i386bsd.mt: New files.
	* configure.in, Makefile.in: Added support for mipsbsd and 386bsd.

Thu Feb 25 15:33:10 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* mri.c:  Add extern declaration of strdup.
	* ldsym.c (KEEP macro):  Add spaces around '=' for the
	sake of old (e.g. PCC) compilers.

Wed Feb 24 19:49:31 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* ldver.c:  Bump to version 2.1.

Fri Feb 12 08:09:11 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldgram.y: allow section types without address  expressions.
	* ldlang.c (lang_relocate_globals): avoid possible hang with
	undefined but unreferenced symbols.
	* relax.c (relax_section): don't complain if the script file isn't
	relaxable but -relax is set

Thu Feb 18 17:58:45 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: go32 is the 3rd part of the triple, not the 2nd

Wed Feb  3 09:05:56 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mipsbig.sh: New file.  Big endian MIPS emulation.
	* config/mips-big.mt: New file.  Use mipsbig emulation.
	* configure.in (mips-sgi-irix*): Use target mips-big.
	* Makefile.in (ALL_EMULATIONS): Added em_mipsbig.o.
	(em_mipsbig.c): New target.  Uses mipsbig.sh.

Tue Feb  2 11:32:27 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.sc-sh: Put .scommon sections into .sbss section.

	* ldmain.c (subfile_wanted_p): Preserve section of common symbols,
	rather than always putting them in bfd_com_section.
	* ldlang.c (lang_common): If a common symbol is not in
	bfd_com_section, put in a section of the same name, rather than
	always putting it in section COMMON.

Fri Jan 29 09:57:58 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldmain.c (subfile_wanted_p): If we already have a common
	definition of a symbol, don't necessarily pull in an object file
	that provides a non-common definition.

	* ldlex.l (COMMAND): Accept -EB and -EL command line arguments,
	returning OPTION_EB and OPTION_EL.  gcc passes these to a MIPS
	linker.
	* ldgram.y (OPTION_EB, OPTION_EL): New tokens.
	(command_line_option): Accept and ignore OPTION_EB and OPTION_EL.

Thu Jan 28 15:12:04 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (install): Remove $(tooldir)/bin/gld before creating
	the link to it.

Tue Jan 26 11:49:50 1993  Ian Lance Taylor  (ian@cygnus.com)

	* ldmain.c, ldsym.c: Use new bfd_is_com_section macro rather than
	checking for equality to bfd_com_section.

Fri Jan 22 14:22:44 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.sc-sh: New file.  Ultrix, and hopefully other MIPS ECOFF
	targets, linker script.
	* mipslit.sh: New file.  Little endian MIPS emulation.
	* config/mips-lit.mt: New file.  Use mipslit emulation.
	* configure.in (mips-dec-ultrix*): Use target mips-lit.
	* Makefile.in (ALL_EMULATIONS): Added em_mipslit.o.
	(em_mipslit.c): New target.  Uses mipslit.sh.

Thu Jan 14 15:30:27 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (install): Install ld as both $(tooldir)/bin/ld and
	$(tooldir)/bin/gld, so that gcc can find it with or without
	collect2.

Mon Jan 11 18:50:07 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* ldwrite.c: Removed perform_relocation, copy_and_relocate, and
	write_norel.  All linking is now done via write_relax.  Call
	ldsym_write before calling write_relax.
	* relax.c: Added copyright.
	(write_relax): Renamed from write_relaxnorel.  Added relocateable
	argument.  seclet_dump renamed to bfd_seclet_link.
	* relax.h: Added copyright.

Mon Jan 11 15:41:56 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmain.c (decode_library_subfile): Patch from
	hoogen@shafer.cs.utah.edu, don't reread library symbol tables.

Fri Jan  8 18:04:33 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config/vxworks960.mt renamed to config/i960.mt

	* configure.in: sparc-aout emulates a sun4, as does
	sparc*-vxworks, i960-nindy uses gld960 emulation

Fri Jan  8 14:39:07 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	 Fix support for NOLOAD, add INCLUDE
	* ldfile.c (ldfile_open_command_file): pass file name to
	lex_push_file.
	* ldlex.l, ldgram.y: tidy up, parse INCLUDE and NOLOAD
	* ldlang.c (wild_doit): make output sections inherit NEVER_LOAD
	attribute.

Thu Jan  7 10:22:19 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in, config.h: no more default emulation.  Make the lack
	of emulation a compile time error

Wed Jan  6 01:08:37 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: recognise all sparclite variants, not just 'sparclite'

Mon Dec 28 11:15:35 1992  Ian Lance Taylor  (ian@cygnus.com)

	* m68kcoff.sc-sh: define _end as well as end, for consistency with
	aout.sc-sh.

	* configure.in: accept *-ericsson-ose for any m68k CPU.

	* ldwrite.c (write_rel): don't always set SEC_HAS_CONTENTS flag
	for each output section.

Mon Dec 21 16:06:59 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldexp.c, ldlang.c, ldmain.c, ldsym.c, ldwarn.c:  Use new
	macro bfd_asymbol_bfd as appropriate.
	* Makefile.in:  Un-duplicate ldlex.c dependency.
	* condigure.in:  Replace my_host case table by sourcing
	../bfd/configure.host.  Allow std-host as the default.
	* ldmisc.c:  Change logic for C++ name demangling:  There is
	no initial '_' to remove from stab-derived function names.

Sun Dec 13 16:31:26 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlang.c (lang_init_script_file): don't attach the output file
	sections to the script file.

Wed Dec  9 08:38:05 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
	* ldlang.c (wild): run expansion loop over command line bfd too.
	(lang_ini_script_file): initialize more parts of the command line
	bfd.
	* ldlex.l: fix DEFINED start states.

Mon Dec  7 08:43:41 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
	 -y support
	* ld.texinfo: new doc.
	* ldgram.y, ldlex.l: understand -y<symbol>
	* ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
	print info. (add_ysym): new function.
	* ldsym.h: (ldsym_type): new define SYM_Y.

Sat Nov 21 03:15:27 1992  John Gilmore  (gnu@cygnus.com)

	* ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c,
	ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h,
	ldwrite.h, relax.h:  Replace all uses of EXFUN and PROTO ansi-glue
	macros with PARAMS.  Recreational cleanup.  Update copyrights.

Tue Nov 10 00:23:37 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: pass down the bfd source directory for includes

Thu Nov  5 15:41:55 1992  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (lang_size_sections): don't change size and address for
	SEC_SHARED_LIBRARY sections rather than for SEC_NEVER_LOAD
	sections.

Thu Nov  5 11:33:57 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* relax.c (build_it): re-enable the processing of data_statements
	in scripts, makes counted contructor lists work again.

Thu Nov  5 05:43:01 1992  John Gilmore  (gnu@cygnus.com)

	* ldemul.h:  Remove uses of SDEF and PROTO macros (use PARAMS).

Tue Oct 20 10:56:06 1992  Ian Lance Taylor  (ian@cygnus.com)

	* m68kcoff.sc-sh: don't use initial underscores for etext, edata
	and end.

Mon Oct 19 09:45:38 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Support for i386-sysv.
	configure.in: check for i386-*-sysv* and i386-*-sco*.
	i386coff.sc-sh: rewrote to support SVR3 by default.
	ldctor.c (find_constructors): preserve stat_ptr.
	ldlang.c (wild_doit): initialize vma and size of new output
	section to corresponding input section.  This is required for
	shared library support.
	(lang_size_sections): don't modify vma and size of sections which
	are never loaded (for shared libraries).
	ldwrite.c (copy_and_relocate): copy the contents of any section
	which has contents, not just sections which are loaded (for shared
	libraries).

Thu Oct 15 15:20:26 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlang.c (size_input_section): count the sizes of all sections
	we allocate.

Thu Oct  8 09:05:25 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmisc.c (demangle,vfinfo): use the new underscore in bfd to
	to demangle symbols better

Tue Oct  6 13:08:54 1992  Ian Lance Taylor  (ian@cygnus.com)

	* ldlang.c (lang_finish): don't warn if -e start symbol does not
	exist when linking with -r.

Mon Oct  5 14:07:37 1992  Ian Lance Taylor  (ian@cygnus.com)

	* aout.sc-sh, m68kcoff.sc-sh: set __bss_start to the start of the
	.bss segment.

Mon Oct  5 08:55:14 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmain.c (linear_library): don't even think about processing
	an object file if it's already been done

Thu Oct  1 23:14:59 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: the hp9000/300 config file is now hp300

Wed Sep 30 07:34:09 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* config/z8ksim.mt: new file

Fri Sep 25 13:49:52 1992  Ken Raeburn  (raeburn@kyriath.cygnus.com)

	* Makefile.in (ldexp.o, ldctor.o, ldlang.o, ldmain.o, ldwrite.o,
	lexsup.o, mri.o, relax.o): Indicate dependence on ldgram.h.

	* ld.h (strip_symbols_type): Add value STRIP_SOME.
	* ldgram.y (OPTION_RETAIN_SYMBOLS_FILE): New terminal token.
	* ldlang.c (lang_add_keepsyms_file): New function.
	* ldlex.l: Handle "-retain-symbols-file".
	* ldsym.c (keepsyms_file, kept_syms): New vars.
	(process_keepsyms): New functihon; reads file, marks symbols for
	saving.
	(write_file_locals): File symbols should always be kept.
	(ldsym_write): Warn about "-retain-symbols-file" overriding "-S"
	and "-s".  Process retain-symbols file before setting symtab.
	* ldsym.h (SYM_KEEP): New flag for ldsym_type flags.
	(keepsyms_file, kept_syms): Declare them.

	* ldmain.c (main): Non-fatal errors should still cause non-zero
	exit status even with -r.

Fri Sep 25 11:08:01 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	Added initial support for the z8k
	* z8ksim.em, z8ksim.sc-sh, z8ksim.sh: new files
	* configure.in, Makefile.in: modified to reflect above

	* ldlang.c (lang_check): when linking conflicting architectures,
	make the output file reflect at least one of the bad inputs.

Tue Sep 15 15:35:38 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (install): if $(tooldir) exists, install ld in
	$(tooldir)/bin.

Fri Sep 11 10:24:22 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in, configure.in: modified to support i386-coff
	* i386coff.sh: new file

Wed Sep  9 11:52:58 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
	added m68k-coff emulation mode, stolen from a29k emulation.
	Almost certainly wrong, but perhaps better than sun3.

Thu Sep  3 14:19:30 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in, Makefile.dos, generic.em, genscripts.sh,
	gld960.em, h8300hms.em, h8300xray.em, lnk960.em, st2000.em,
	vanilla.em:  Rename all (generated) ld__*.c files to em_.c.
	This is one character shorter, and lets people build on
	SVR3 system. (ld__h8300xray.[co] was the killer there;
	h8300xray.sc-sh is also overlong, but seems harmless.)
	Based on a patch from Jonathan Ryshpan <hitachi!amito!jon>.
	* Makefile.in (clean):  Fix typo mostclean -> mostlyclean.
	* configure.in:  Add host isc.

	* ldver.c:  Call it version 2.0.

Wed Sep  2 00:21:33 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldver.c:  Bump to version 0.98.
	* TODO:  New file.

	* Makefile.in:  Added mostlyclean, distclean, realclean rules.

Tue Sep  1 23:42:16 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldmisc.c (xrealloc):  New (needed by ../libiberty/cplus.dem.c).
	* ldlex.l: Moved comment() to end, since some compilers
	otherwise have problems with input() used before it is defined.

Tue Sep  1 17:45:51 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: added Solaris 2 and Irix 4 host support.

Mon Aug 31 19:27:11 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: remove -S flag from the FLEX definition

	* configure.in: rewrote, using new style case statement.  use
	m68k.mt for m68k-aout systems

Sun Aug 30 21:38:53 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: map "ld" through program_transform_name when
	installing.

Sun Aug 30 18:12:13 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  Removed.  Use the version in libiberty now.
	* ldmisc.c:  Use new libiberty version of cplus_demangle().

Thu Aug 27 16:38:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gld960.em (gld960_choose_target): default to little endian, not
	big endian.

Wed Aug 26 17:28:51 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlang.c (lang_process): don't pass null pointers when
	abs_output_section is what is required.
	* ldwrite.c (ldwrite): use malloc to allocate the largest space
	used, and pass that down.
	* relax.c,relax.h (write_relaxnorel): use the passed malloc area rather
	than alloca.

Mon Aug 24 14:42:06 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in, config/ose68.mt: renamed OSE to ose.

Thu Aug 20 19:55:22 1992  Ken Raeburn  (raeburn@cygnus.com)

	* ldsym.c (write_file_locals): Reorder check for common or
	undefined symbols so that it works.

Tue Aug 18 13:41:36 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: accept all m68K family members.

	* Makefile.in: always create installation directories.

Thu Aug 13 11:49:34 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlex.l: now parses comment correctly, added ~ to acceptable
	chars in filenames

	* ldexp.c (exp_unop): pass down abs_output_section - now can have
	unary -ve constants.

	* ldlang.c (lang_finish): warn when an entry symbol supplied on
	the command line can't be found.

Fri Aug  7 12:31:10 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlang.h: add new field "loadable" to output_section_statement.
	* ldlang.c (lang_output_section_statement_lookup): initilize new
	field. (wild_doit): if new field is not set, then stop output
	section from being loadable.
	(lang_enter_output_section_statement): set the field from the
	NOLOAD keyword
	* ldgram.y: new synax for NOLOAD. Removes a shift/reduce too.
	* h8300hms.sc-sh, h8300hms.em: get -r right.

Thu Aug  6 18:35:21 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldint.texinfo:  New internals manual (beginnings thereof).
	* PORTING:  Removed, merged into ldint.texinfo.

Tue Aug  4 21:12:29 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc,
	cdtest.exp:  A test program (copied from libg++/test-install)
	that tests that constructor and destructors are handled
	corrrectly.

Mon Aug  3 14:58:19 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in (install): install from ld.new, renaming during the
	copy, or else the next 'make install' needs to re-link ld.

Mon Jul 20 03:37:06 1992  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* configure.in: generalise hp recognition (from sef).

Sat Jul 18 14:46:04 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: recognize bsd and hpux hppa configurations.
	error messages echo to stderr, not stdout

Fri Jul 17 22:06:11 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.dos, gld.1, ld.texinfo, ldemul.c, ldfile.c, ldlang.c,
	  ldmisc.c: removed rcsid's.

Tue Jul 14 08:34:34 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlang.c (lang_map): print changes in sizes due to relaxing
	(size_input_section): maintain the delta information.
	* ldlang.h: add new field to struct to contain delta info.
	* relax.c  (relax_section): complain if input not relaxable.
	* ldlex.l : add '_', ',' and '$' to chars which can appear at the
	start of a filename

Mon Jul 13 17:33:00 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmain.c(main): prevent -r and -relax from being on at the same
	time.

Wed Jul  1 17:51:19 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmain.c (Q_enter_global_ref), ldindr.c (add_indirect): fix for
	aliasing problems


Thu Jun 18 09:38:56 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* h8300hms.em, h8300hms.sc-sh:  do the right thing for -r
	* ldexp.c:  lint
	* ldlang.c(open_output): set the target arch and machine as soon
	as we can. (lang_size_sections): use new macros for setting vma
	* ldwrite.c: lint

Mon Jun 15 08:47:43 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)

	* configure.in (my_target): Accept m680?0 for wrs as vxworks68.
	Also deleted an unreachable path to wrs.

Wed May 27 23:24:19 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)

	* Makefile.in (install): use -d test for $tooldir before
	installing ld there so that $tooldir can be inherited from
	top-level Makefile.

Wed May 27 16:56:48 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldlang.c:  Two non-substantial changes for the sake of
	the old Portable C Compiler.

Wed May 27 15:15:58 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldgram.y, ldlex.l: parse ABSOLUTE
	* ldexp.c: add support for ABSOLUTE

Wed May 27 13:07:20 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Added default definitions for HOSTING_CRT0,
	HOSTING_LIBS, and HOSTING_EMU, based on those in config/*.mh.
	* config/*.mh:  Miscellaneous clean-up:  Removed definitions
	of YACC (since it is not longer used in the Makefile).
	Remove HOSTING_* definitions that are subsumed by the
	ones added to Makefile.in.  Removed most definitions of CC.
	* config/{sparc,news,hp300bsd,decstation}.mh:  Removed;
	These are no longer needed.

Fri May 22 13:47:19 1992  Per Bothner  (bothner@cygnus.com)

	* Makefile.in:  Use srcdir instead of VPATH in ldgram/ldlex
	rules, since these are used when building a distribution.
	* Makefile.in (ldlex.c):  Don't re-direct output, since that
	leaves a bogus output files if it fails.

	* config/sparc.mh:  Fix HOSTING_LIBS so it has a chance of working.
	* ldlex.c:  Fix some unnecessary flex-specific-isms.

Fri May  8 11:49:43 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldgram.y: move spurious semicolon
	* ldexp.h: fix prototype

Thu May  7 17:01:12 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* ld.texinfo: references to linker now say "ld" not "gld".

Wed May  6 13:26:19 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	changed calling convention for Q_enter_global_ref
	* ldexp.c, ldlang.c, ldmain.c: reflect this
	* ldver.c: bump version to 1.97.1
	* ldindr.c (add_indirect): when an edict declaring an indirect
	symbol is found, make sure that any ideas about the symbol being
	common are changed if it now known to be defined.
	* ldmain.c (linear_library): complain once if archive isn't
	ranlibbed.
	* ldlang.h, ldlang.c: make room for and initialize the complain
	once field.

Wed May  6 11:07:35 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: use flex & bison from ../ if they exist.

Tue May  5 17:47:33 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* relax.c (build_it): don't allocate space in the output file for
	stuff if -R flag applys to it.
	* ldfile.c: merge in VMS filename support
	* ldmain.c (main): take out ./ from library path, and close file
	before unlinking. Make multiple defs of a symbol create an
	unexecable file.
	* ldmisc.c: fatal errosrs delete output file

Tue May  5 14:05:05 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* ldver.c:  Increase version number to 1.97, for consistency
	with ../binutils.

Tue May  5 12:12:24 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: FLEX -> LEX.

	* ld.texinfo: {} -> @{@}.

Mon May  4 17:52:41 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* ld.texinfo: describe alternate, MRI-compatible linker scripts
	(and associated change in -c option, now used for these scripts)

Mon May  4 16:10:10 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldver.c: Bumped version to 1.96 - new release, resync with the
	bfd too #.
	* ldexp.c, ldlang.c: now build memory shape tree in obstacks
	rather than with raw malloc, makes it easier to track where memory
	is going.
	* ldsym.h, ldsym.c: create obstack for all global symbols too.
	* ldwrite.c (ldwrite): moved malloc so only used when needed.
	* sa29200-sc.sh: added support for .lit, data1 and data2 sections.


Fri May  1 18:17:52 1992  K. Richard Pixley  (rich@cygnus.com)

	* config/sparc.mh: use ../gcc/libgcc.a on check if it exists.

	* Makefile.in: use bootstrap for check.

Fri May  1 13:03:41 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldgram.y, ldlex.c, mri.c: added more compatible words; BASE, ALIAS and
	PUBLIC.
	* Makefile.in: now use flex, not lex
	* ldlex.l, ldlang.c, ldctor.c: lint

Wed Apr 22 12:48:42 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlex.l: added CMDFILENAMECHAR state so that you can lex
	different sorts of filenames on the command line than in a script.

Mon Apr 20 22:37:04 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: rework CFLAGS so that they can be passed on the
	  make command line.  Remove MINUS_G.  Default CFLAGS to -g.

Fri Apr 17 08:57:17 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* relax.c: added handling for new "padding" seclet type, used to
	fill out gaps between section.
	* ldgram.y, ldlex.l: now -defsym on the command line is done
	properly.

Wed Apr 15 21:20:07 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: the tooldir copy of ld goes directly in tooldir.

Wed Apr 15 16:09:33 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* mri.c, ldgram.y, ldlex.l: added support for minimal strange link
	scripts.

Thu Apr  9 05:52:02 1992  Ken Raeburn  (Raeburn@Cygnus.COM)

	* Makefile.in (install): Install second copy in $(tooldir)/bin
	without $(program_prefix), since that's what gcc expects.

Sat Apr  4 17:44:06 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldlex.l, ldgram.y, ldlex.h: Rewrote lexer. Now it's much nicer.
	* h8300*: fix bit rot and add support for h8300xray target
	* go32.sh: target emulation for go32.

Mon Mar 16 14:53:29 1992  Steve Chamberlain  (sac@rtl.cygnus.com)

	* gld960.em, i960.sc-sh. Fix i960 bit rot

Fri Mar 13 19:47:22 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: install man page.

Fri Mar 13 08:23:59 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* config/mt-<foo> renamed to <foo>.mt
	* config/mh-<foo> renamed to <foo>.mt
	* configure.in changed to reflect this
	* genscripts.sh now make .xbn files rather than .xN files

Sat Mar  7 03:40:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* ldver.h: fix decl of ldversion.

Fri Mar  6 22:00:35 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: added check target.

Fri Mar  6 06:59:04 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldmain.c (Q_enter_file_symbols): now aliases work again

Thu Mar  5 21:39:29 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: added clean-info target.

Thu Mar  5 16:55:56 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* ldexp.c (exp_print_tree): don't try and follow null pointers
	around.
	* ldgram.y: remove 11 shift reduce errors

Tue Mar  3 15:46:39 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: added tooldir and program_prefix.

Fri Feb 28 08:17:45 1992  Steve Chamberlain  (sac at thepub.cygnus.com)

	* ldlang.c (size_input_section): don't move absolute sections
	around!


Thu Feb 27 09:20:41 1992  Steve Chamberlain  (sac at thepub.cygnus.com)

	* cplus-dem.c: yet another copy of this - maybe it should go into
	libiberty ?
	* ldgram.y: now -V and -v have different actions
	* ldver.c: if -V, prints list of emulations compiled in
	* ldmisc.c: support for cplus demangling


Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed traces of namesubdir,
	  -subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
	  copyrights to '92, changed some from Cygnus to FSF.

Thu Feb 20 17:43:46 1992  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  Change mkscript rule into one for ./mkscript
	(for the sake of makes that don't realize they're the same).
	* PORTING:  Add more details.
	* genscripts.sh:  Add more tailorability of DATA_ALIGNMENT.

Mon Feb 17 12:04:36 1992  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, and new files hp300bsd.sh, config/mh-hp300bsd,
	config/mt-hp300bsd:  New port to hp300 running BSD.

Sat Feb 15 13:59:54 1992  Per Bothner  (bothner at cygnus.com)

	Major rewrite of how ld is configured.  The major idea
	is to use shell scripts to generate everything.
	* generic.em replaces ldtemplate.
	* Other *.em files replace various *.c files.
	A *.em file is a shell script that generates the corresponding
	ld__*.c file that implements an emulation.  This is usually
	a straight 'cat' of a here-document, possibly with substitutions.
	* Script files (*.sc) are places by *.sc-sh scripts.
	Again, these are simple shell scripts that 'cat'
	here-documents, usually with some substitutions.
	The output a *.sc-sh is a script file.
	* Each emulation is defined by a short shell script with
	extension *.sh that specifies the emulation-specific
	parameters (such as the name of the *.sh-sc and *.em
	files to use).
	* genscript.sh is the master shell script used to generate
	an emulation.  It is passed various argument, including
	the name a the emulation-speciic *.sh file that it
	"sources" to set variables to emulation-specifc parameters.
	* config/mt-foo:  Changed EMUL=GLDFOO_EMULATION_NAME
	to EMUL=foo. (The GLDFOO_EMULATION_NAMEs have bee removed.)
	* config/mh-foo:  Rename LDEMULATION names as appropriate
	(usually 'gldfoo' -> plain 'foo').
	* ldwrite.c:  Fixed a typo in a comment.
	* Makefile.in:  Major changes.  Removed some the sed
	magic to converts scripts, since that is now handled
	by genscripts.sh and the *.sc-sh scipt generators.
	* config.h:  Remove a bunch of macros defining emulations
	and targets.  This becomes one less file to edit when
	adding emulations or targets.
	* ldemul.h (struct ld_emulation_xfer_struct):  Add
	emulation_name and target_name fields.
	* ldemul.c, ldemul.h:  Define some default functions used
	by most emulations (and remove from the *.em scripts).
	* ldemul.c (ldemul_choose_target):  Search the new
	ld_emulations array using a loop (instead of a hardwired
	nested if statement).
	Define the ld_emulation from the automatically-geenrated
	ldemul-list.h.  This means you no longer have to edit ldemul.c
	to add a new emulation.
	* ldmain.c:  Replace {GLD,LNK}960_EMULATION_NAME by
	their expansions, since the former no longer exist.
	* PORTING:  A very rough first draft of a porting guide.

	* ldgram.y, ldlex.l, lexsup.c: Changes to allow an assignment
	to be terminated by a new-line (instead of requiring a semicolon).

Mon Feb 10 16:21:02 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* ldexp.c, ldlang.c: added new idea "abs_output_section", removes
	tests for NULL pointers all over the place.
	* ldlang.c (lang_process): remember to relocate global symbols
	*after* relaxing has done it stuff.

Thu Feb  6 11:40:15 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* config/mt-coff-h8300: use EMUL like everything else
	* ldlang.c: (print_padding_statement): print the right address.
	* Makefile.in, config.h, ldemul.c: renamed  h8300hds to h8300hms


Tue Feb  4 15:28:01 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* ldlex.l: Put pack -noinhibit-exec and -sort-common
	* ldlang.c (print_data_statement): print the right address.

Thu Jan 30 17:51:53 1992  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  The rule for testing ld by re-linking itself
	via an intermediate -r link was moved to the ld1 rule
	instead of the ld2 rule.  This allows ld2 and ld3 to be identical,
	which allows the bootstrap rule to work.
	* ldctor.c (find_constructors):  Don't create a constructor
	list if it is already defined (as would happen if ld is
	invoked by collect).

Wed Jan 29 08:35:39 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* config/mh-sparc.h: now uses libgcc.a
	* ldmain.c: quit using exit
	* *sc: use *(COMMON) rather than [COMMON]
	* ldlex.l, lexsup.c: much thinking moved from .l and put into .c,
	to allow preprocessing of .l file.
	* Makefile.in: New ldlex.l mangling
	* ldexp.c (fold_binary): perform expressions with % and / in
	integer.
	* ldfile.c (open_a): open archives on VMS in a special way


Tue Jan 28 10:18:16 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* ldgram.y: map -M behave in the same way as -Map (sets file name
	to be "-".
	* ldsym.c, ldlang.c: remember that size of a section is dependent on
	whether or not relaxing has been done.
	* ldmain.c: don't open a map file if it doesn't have a name
	* relax.c: all the brains have moved into bfd.
	* ldwrite.c: ammend comment

Fri Jan 24 14:23:46 1992  Steve Chamberlain  (sac at rtl.cygnus.com)

	* Makefile.in: added relax, also made three stage go through a
	partial link stage.
	* relax.c : added
	* config.h: if GNU960 defined, then default emulation mode is
	GLD960
	* ldexp.h, ldexp.c: map to file hooks
	* ldlang.c: map to file hooks
	* ldgram.y: added -Map -relax
	* ldlex.l: added -relax, -Map
	* ldmain.c: open map file
	* ldmisc.c: support for map file
	* ldwrite.c: new relax magic

Thu Dec 19 18:49:51 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in, config/tm-*.h:  Clean up make output, only
	pass DEFAULT_EMULATION to ldmain.c.

Wed Dec 18 15:02:47 1991  Per Bothner  (bothner at cygnus.com)

	* ldver.c:  Bump to version 1.94.

Tue Dec 10 04:07:23 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: infodir belongs in datadir.

Mon Dec  9 16:26:43 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  Pass -y to bison.  (Again;
	accidentally deleted by Rich.)
	* news.sc, ldgld68k.sc:  Define __end as well as _end.

Sat Dec  7 17:19:26 1991  Steve Chamberlain  (sac at rtl.cygnus.com)

	* ldindr.h: added to contain prototypes of ldindr.c
	* ldfile.c: include ctype.h
	* ldmain.c: include the requried prototype headers
	* ldwrite.c: get_reloc_upper_bound has been renamed
	bfd_get_reloc_upper_bound

Fri Dec  6 23:29:26 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: punt "fundamental" mode because it breaks my emacs
	  macros.  install using INSTALL_PROGRAM and INSTALL_DATA.  remove
	  spaces following hyphens, bsd make can't cope.  added
	  standards.text support and made it look like all the other
	  makefiles.

	* configure.in: configure now runs entirely in objdir so make file
	  existence checks against ${srcdir}.  Mark this directory as
	  target dependent.

Thu Dec  5 22:46:16 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
	  and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
	  and mandir now keyed off datadir by default.

Wed Dec  4 23:36:55 1991  Per Bothner  (bothner at cygnus.com)

	* ldver.c:  Bumped version to 1.93.
	* Makefile.in:  Pass -y to bison.

Mon Nov 25 18:28:40 1991  Steve Chamberlain  (sac at cygnus.com)

	* config.h: h8 is now coff, not ieee
	* h8300hds.sc: reflect the same

Thu Nov 14 19:55:09 1991  Per Bothner  (bothner at cygnus.com)

	* ldver.c (ldversion()):  Update to 1.92.
	* ldctor.c: There are two places constructor sets
	can be defined.  One of them checked for an existing
	duplicate, the other didn't.  Unfortunately, the latter
	was called after the former ...
	So, factor out code for inserting a new element into
	constructor_name_list (after checking for a duplicate)
	into a new function add_constructor_name, and call
	it from both aforementioned places (ldlang_add_constructor
	and ldlang_check_for_constructors).

Wed Nov 13 15:17:43 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  Rename .c files generated from ldtemplate
	to have names starting with ld__.  This helps 'make clean'.

Tue Nov 12 18:36:50 1991  Steve Chamberlain  (sac at cygnus.com)

	* Makefile.in: Take out the version number for install
	* m88kbcs.sc: put in contructor blocks.

Mon Nov 11 18:47:33 1991  Per Bothner  (bothner at cygnus.com)

	* ldmisc.c, ldmisc.h:  Re-write info() to take a filename
	parameter, a format, and an arg pointer, and rename it to
	vfinfo().  Write info() in terms of new vfinfo().
	New einfo() is the same as info(), except it writes to stderr.
	* ldemul.c, ldexp.c, ldlang.c, ldlnk960.c, ldmain.c, ldwrite.c,
	ldmisc.c:  Replace "error" calls to info() by new einfo().

Mon Nov 11 09:57:32 1991  Steve Chamberlain  (steve at cygnus.com)

	* ldlex.l ldgram.y: made -V option do same as -v
	* Makefile.in: Added $(MINUS_G) flag so debugging can be
	turned off

Sun Nov  3 16:37:37 1991  Steve Chamberlain  (steve at cygnus.com)
	 i386 aout changes from Bob Kukura
	* Makefile.in, config.h: added i386aout support
	* configure.in: fixed /h-{myhost} typo
	* ldgram.y: -MM now gives more boring map.
	* ldlang.c: now does D_PAGED flag the right way.
	* ldsym.c: -MM flags does the right thing.

Sun Nov  3 15:00:03 1991  Per Bothner  (bothner at cygnus.com)

	* configure.in:  Fixed typo.  Also, a fix for hp300bsd.
	* ldlang.c (init_os):  Compensate for BFD change,
	where bfd_make_section now returns NULL for a duplicate
	section request, instead of the old section.

Thu Oct 17 15:27:13 1991  Per Bothner  (bothner at cygnus.com)

	* ldver.c: Bump to version 1.91 (consistent with binutils).

Wed Oct 16 12:27:08 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, config.h, ld.h, ldemul.c, ldexp.c, ldexp.h,
	ldgram.y, ldlex.l, ldlnk960.c, ldmain.c, ldmisc.c, ldmisc.h,
	ldsym.c, ldsym.h, ldtemplate, ldvanilla.c, ldver.c, ldver.h,
	ldwarn.c, ldwarn.h, ldwrite.c, ldwrite.h, mkscript.c:
	Add or update copyright notices.

Mon Oct 14 23:55:27 1991  Per Bothner  (bothner at cygnus.com)

	* README: New file.
	* Makefile.in:  Changed installation directory name scheme
	to be consistent with gcc.  Also changed 'install'.

Mon Oct 14 17:30:02 1991  Roland H. Pesch  (pesch at cygnus.com)

	* Makefile.in: new targets ld.mm, ld.me

Mon Oct 14 17:27:24 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, ldtemplate:  Need to use separate scripts
	for -n and -N options.  Yet more complication.

Fri Oct 11 22:40:46 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Avoid using $< in explicit Make rules (it doesn't
	work).  Add some lines to avoid Sun Make VPATH bugs.

Fri Oct 11 16:42:22 1991  Per Bothner  (bothner at cygnus.com)

	* news.sc: Add alignment for data segment.
	* ldtemplate: Add (yet another) script to get for -n or -N
	options.  (These need different alignment than ZMAGIC files.)
	* Makefile.in:  Add stuff for new foo.xn scripts.
	These are generated by replacing "ALIGN(0x...00)" by ".".

Fri Oct 11 15:43:04 1991  Roland H. Pesch  (pesch at cygnus.com)

	* Makefile.in: new targets ld.ms, ld-index.ms
	ld.texinfo: remove tabs, other cleanups for texi2roff

Fri Oct 11 13:51:54 1991  Per Bothner  (bothner at cygnus.com)

	* ldmain.c (main): Make config.magic_demand_paged be true
	by default.  Don't set the WP_TEXT and D_PAGED flags of
	output_bfd here; it's too late, so set it when output_bfd
	is created (in ldlang.c).  Also fix setting of EXEC_P flag
	* ldlang.c (ldlang_open_output):  Set output_bfd->flags here.
	* ldlang.c: Remove some duplicate extern declarations.
	* ldgram.y: Fixes to -N and -n options.
	* Makefile.in:  Recognize upper case letters in sed script
	to remove assignments from script files.
	* ldtemplate:  Don't assukme that -N or -n options
	imply use of -r script.
	* mkscript.c:  Tweaking to correctly handle \n and \\ in input.

Fri Oct 11 10:29:27 1991  Steve Chamberlain  (steve at cygnus.com)

	* ldtemplate: include bfd.h before sysdep.h.

Fri Oct 11 04:24:45 1991  John Gilmore  (gnu at cygnus.com)

	Restructure configuration scheme for bfd, binutils, ld.

	* include/sys/h-*.h:  Move to bfd/hosts/h-*.h.
	* configure.in:  Revise to symlink sysdep.h to ../bfd/hosts/h-xxx.h.
	Change some config names to match other dirs.
	* *.c:  Include bfd.h before sysdep.h, so ansidecl and PROTO()
	get defined first.
	* config/:  Rename some config files to match up h-*.h names.
	Remove all the HOST_SYS definitions from the config files.

Tue Oct  8 16:00:57 1991  Per Bothner  (bothner at cygnus.com)

	* ldexp.h, ldlang.h: Change enum boolean -> enum bfd_boolean.
	* ldtemplate: Remove ldfile_add_library_path calls;
	just use the SEARCH_DIR commands in the script files.
	* Makefile.in: Add LIB_PATH macro, which if set is used to replace
	the SEARCH_DIR commands in the scripts (using ugly sed magic).
	This is primarily intended for cross-linking, where you would
	place libaries in a different place than native libraries.
	Also, emulations made from ldtemplate now use $(srcdir).
	* ldglda29k.sc:  Change SEARCH_DIR commands to a conventional
	form; people can use the Makefile's LIB_PATH to override.

Tue Oct  8 14:51:21 1991  Roland H. Pesch  (pesch at cygnus.com)

	* Makefile.in: fix target ld.dvi, add target ld.info
	ld.texinfo: make info filename ld.info

Fri Oct  4 21:51:58 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Avoid using $< in non-suffix rules (breaks on Sun
	Make).
	* ldfile.c, ldlang.c, ldmain.c, ldwrite.c:  Cope with renames of a
	few BFD types & enums.

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