mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-02 23:04:09 +08:00
4a6afc88bb
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. |
||
---|---|---|
.. | ||
config | ||
emulparams | ||
emultempl | ||
scripttempl | ||
testsuite | ||
.Sanitize | ||
cdtest-foo.cc | ||
cdtest-foo.h | ||
cdtest-func.cc | ||
cdtest-main.cc | ||
cdtest.exp | ||
ChangeLog | ||
config.h | ||
configure | ||
configure.bat | ||
configure.in | ||
dep-in.sed | ||
genscripts.sh | ||
h8-doc.texi | ||
ld.1 | ||
ld.h | ||
ld.texinfo | ||
ldctor.c | ||
ldctor.h | ||
ldemul.c | ||
lderror.c | ||
lderror.h | ||
ldexp.c | ||
ldexp.h | ||
ldfile.c | ||
ldfile.h | ||
ldgram.y | ||
ldindr.c | ||
ldindr.h | ||
ldlang.c | ||
ldlang.h | ||
ldlex.h | ||
ldlex.l | ||
ldmain.c | ||
ldmain.h | ||
ldmisc.c | ||
ldmisc.h | ||
ldsym.c | ||
ldsym.h | ||
ldver.c | ||
ldver.h | ||
ldwarn.c | ||
ldwarn.h | ||
ldwrite.c | ||
ldwrite.h | ||
Makefile.in | ||
mri.c | ||
mri.h | ||
NEWS | ||
README | ||
relax.c | ||
relax.h | ||
TODO |
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.