binutils-gdb/ld
Ian Lance Taylor 4a6afc88bb 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.
1993-12-30 19:51:41 +00:00
..
config * config/i386-linux.mt: delete ".sh" from genscripts argument 1993-12-27 19:39:55 +00:00
emulparams New file for bare sparc-coff support. 1993-12-01 22:12:20 +00:00
emultempl A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
scripttempl More correct m68k LynxOS support 1993-11-12 00:37:00 +00:00
testsuite Added CXXFLAGS to compile stage in ld.cdtest/cdtest.exp 1993-09-10 17:00:19 +00:00
.Sanitize New file used for rebuilding dependencies. 1993-12-13 19:37:22 +00:00
cdtest-foo.cc * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc, 1992-08-05 04:15:37 +00:00
cdtest-foo.h * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc, 1992-08-05 04:15:37 +00:00
cdtest-func.cc * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc, 1992-08-05 04:15:37 +00:00
cdtest-main.cc * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc, 1992-08-05 04:15:37 +00:00
cdtest.exp * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc, 1992-08-05 04:15:37 +00:00
ChangeLog A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
config.h fix my default emulation changes 1993-01-08 22:06:17 +00:00
configure resync 1991-10-02 04:15:56 +00:00
configure.bat DJ naming change 1992-02-22 00:11:39 +00:00
configure.in * configure.in: Group targets by CPU. Merge some m68k target entries with 1993-12-01 22:14:05 +00:00
dep-in.sed New file used for rebuilding dependencies. 1993-12-13 19:37:22 +00:00
genscripts.sh The default script is now compiled in; the others are still in the filesystem. 1993-07-22 00:33:10 +00:00
h8-doc.texi ld.texinfo: 1993-03-30 23:25:03 +00:00
ld.1 clarify reason for -sort-common 1993-10-29 00:30:51 +00:00
ld.h * ldlang.c (lang_size_sections, lang_common): ALIGN_N can't handle 1993-10-15 09:29:32 +00:00
ld.texinfo Fixed minor typo ("host" sb "target" in discussion of GNUTARGET). 1993-11-03 00:09:34 +00:00
ldctor.c Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldctor.h Initial revision 1991-12-08 01:21:25 +00:00
ldemul.c A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
lderror.c More gcc lint. 1993-12-12 00:54:14 +00:00
lderror.h * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c, 1992-11-21 11:18:00 +00:00
ldexp.c Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldexp.h Fixed some grammer ambiguities 1991-04-03 22:03:55 +00:00
ldfile.c Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldfile.h checkpoint before a merge 1991-04-14 03:22:42 +00:00
ldgram.y A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
ldindr.c More gcc lint. 1993-12-12 00:54:14 +00:00
ldindr.h * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c, 1992-11-21 11:18:00 +00:00
ldlang.c More gcc lint. 1993-12-12 00:54:14 +00:00
ldlang.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldlex.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldlex.l More gcc lint. 1993-12-12 00:54:14 +00:00
ldmain.c More gcc lint. 1993-12-12 00:54:14 +00:00
ldmain.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldmisc.c Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldmisc.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldsym.c * ldmain.c (lprefix): Change default from a char to a string 1993-12-17 05:21:33 +00:00
ldsym.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
ldver.c * ldver.c: Increase version number to 1.97, for consistency with ../binutils. 1992-05-05 21:07:32 +00:00
ldver.h Initial revision 1991-05-18 02:58:02 +00:00
ldwarn.c Lynx support 1993-09-28 20:51:22 +00:00
ldwarn.h * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c, 1992-11-21 11:18:00 +00:00
ldwrite.c A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
ldwrite.h Initial revision 1991-03-21 21:29:06 +00:00
Makefile.in A major rewrite to move the bulk of the linker into BFD so that 1993-12-30 19:51:41 +00:00
mri.c Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
mri.h Made many changes to eliminate gcc warnings. Made various 1993-12-11 22:55:55 +00:00
NEWS New file. 1993-05-17 19:45:17 +00:00
README Initial revision 1991-10-15 06:57:32 +00:00
relax.c More gcc lint. 1993-12-12 00:54:14 +00:00
relax.h More gcc lint. 1993-12-12 00:54:14 +00:00
TODO * ldver.c: Bump to version 0.98. 1992-09-03 06:02:56 +00:00

This is a BETA release of a completely rewritten GNU linker.
It is distributed with other "binary utilities" which should
be in ../binutils.  See ../binutils/README for more general notes,
including where to send bug reports.

There are many new features of the linker:

* The linker uses a Binary File Descriptor library (../bfd)
that it uses to read and write object files.  This helps
insulate the linker itself from the format of object files.

* The linker support a number of different object file
formats.  It can even handle multiple formats at once:
Read two input formats and write a third.

* The linker can be configured for cross-linking.

* The linker contains a control language.

* There is a manual.

Installation
============

See ../binutils/README.
If you want to make a cross-linker, you may want to specify
a different search path of -lfoo libraries than the default.
You can do this by setting the LIB_PATH variable in ./Makefile.

Porting to a new target
=======================

A new target configuration may need a new linker script (.sc file)
to specify linker actions (such as the layout of the output).
See if one of the existing ones are suitable.
Note that the Makefile generates variants of the standard script
that are used when ld is passed -r -Ur -N or -n options.
These variant default scripts are generated from the "master"
script using sed scripts that may not work in all cases.
Look at the rules and comments in ld/Makefile.in to make sure
you stay with the rules.

Otherwise, you may need to add a new "emulation" (a sample of a
recently added target and emulation is for the SOny 68k News
family - look for files named *news*).

Also see the notes in ../binutils/README.

Reporting bugs etc
===========================
See ../binutils/README.