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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* Makefile.am (ALL_EMULATIONS): Add eelf32bmipn32.o.
	(eelf32bmipn32.c): New target.
	* Makefile.in: Regenerated.
	* configure.tgt (mips-sgi-irix6*): Make n32 the default
	emulation.
	* emulparams/elf32bmipn32.sh: New file.
	
1999-06-28  Jim Pick <jim@jimpick.com>

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

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

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

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

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

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

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

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

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

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

	* emultempl/pe.em: Add new command line switch --thumb-entry.
	* emultempl/armelf.em: Add new command line switch --thumb-entry.
	* emultempl/armcoff.em: Add new command line switch --thumb-entry.
	* ld.texinfo: Document new ARM command line switch: --thumb-entry.	
1999-06-20  H.J. Lu  <hjl@gnu.org>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* scripttempl/v850.sc: Add initp support.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* emulparams/arm_epoc_pe.sh: New file.

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

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

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

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

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

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

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

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

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

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

Wed Mar  3 09:13:34 1999  Catherine Moore  <clm@cygnus.clm>
 
        * scripttempl/elf.sc: Remove .end.ctors and .end.dtors
        sections.  Reorder .ctors section entries.
        * scripttempl/elfd10v.sc: Likewise.
        * scripttempl/elfd30v.sc: Likewise.
        * scripttempl/elfppc.sc: Likewise.

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

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

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

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

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

	* scripttempl/elf.sc: Don't gather .ctor and .dtor sections
        for relocateable links.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfppc.sc: Likewise.
        
1999-02-22  Jim Lemke  <jlemke@cygnus.com>

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

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

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

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

	Patch from: Scott Bambrough <scottb@corelcomputer.com>
	
	* configure.tgt: Added armv*-*-linux-gnu to $targ_emul
	recognition. 

Wed Feb 17 Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
 
        * emultempl/armelf_oabi.em
        (bfd_elf32_arm_allocate_interworking_sections,
        bfd_elf32_arm_get_bfd_for_interworking,
        bfd_elf32_arm_process_before_allocation): Define them to use the
        old ABI versions of the functions.

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

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

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

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

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

	* ldlang.c (print_assignment, lang_size_sections,
	lang_do_assignments): Ditto.
	
1999-02-11  Nick Clifton  <nickc@cygnus.com>

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

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

	* ldmain.c: Initialise check_section_addresses field to true.

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

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

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

	* configure.tgt: Add support for StrongARM target.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.tgt: Replace fr30 with elf32fr30.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* ldemul.h (ldemul_recognized_file): Declare.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* ld.texinfo: added i386pe option summary

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

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

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

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

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

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

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

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

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

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

	* Makefile.am: Add support for FR30 target.
	* configure.tgt: Add support for FR30 target.
	* Makefile.in: Regenerate.
	* emulparams/fr30.sh: New file.
	* scripttemp/fr30.sc: New file.
	
Mon Nov  2 14:47:15 1998  Catherine Moore  <clm@cygnus.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* ld.texinfo: Completely rewrite linker script documentation.

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

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

	* Branched binutils 2.9.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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