Commit graph

96 commits

Author SHA1 Message Date
Steve Chamberlain
467a038026 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.
1994-09-14 20:45:43 +00:00
Steve Chamberlain
3deb20fbc1 * ldlang.c (print_output_section_statement): Print all lines
to the map file.
1994-09-14 04:55:00 +00:00
Ian Lance Taylor
0b3499f672 * 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.
1994-09-13 20:42:47 +00:00
Ian Lance Taylor
36c6e8c37f * 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.
1994-07-22 18:46:28 +00:00
Ian Lance Taylor
309c8153fa * 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.
1994-07-22 16:23:35 +00:00
Ian Lance Taylor
02b5798089 * 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.
1994-06-22 23:07:14 +00:00
Ian Lance Taylor
686739e2c6 * ldlang.c (lang_size_sections): Adjust current region address
even for sections with an explicit address.  From
	ralphc@pyramid.com (Ralph Campbell).
1994-06-22 20:04:29 +00:00
Ian Lance Taylor
c96386c4d8 * 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.
	* ld.texinfo: Document -traditional-format.
1994-06-15 06:01:45 +00:00
Ian Lance Taylor
ef01a8a873 * ldlang.c (map_input_to_output_sections): For lang_address, call
init_os if it hasn't already been called.
1994-06-09 04:18:39 +00:00
Ian Lance Taylor
a4d2a48e42 * ldlang.c: Minor formatting cleanups.
(lang_for_each_input_file): New function.
	* ldlang.h (lang_for_each_input_file): Declare.
1994-06-02 21:31:40 +00:00
Ian Lance Taylor
210c52ac91 * 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.
1994-06-01 18:28:26 +00:00
Ian Lance Taylor
60e8a53407 * 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.
1994-05-27 15:39:11 +00:00
Ian Lance Taylor
29371b1feb * ldlang.c (lang_add_entry): Only set the entry symbol if it has
not been set already.
1994-05-27 05:09:31 +00:00
Ian Lance Taylor
269773c1a9 * 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.
1994-05-13 18:01:59 +00:00
Ian Lance Taylor
f9d3d71ae8 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.
1994-05-11 20:29:21 +00:00
Ian Lance Taylor
27f7237eca * 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.
1994-05-10 18:33:44 +00:00
Ian Lance Taylor
feaa9c4bda * ldlang.c (lang_size_sections): When no address is given for a
section, align it according to its requirements.
1994-04-25 19:28:58 +00:00
Ian Lance Taylor
9d87af5697 * ldlang.c (lang_size_sections): When relaxing, adjust the
position of a padding statement, and adjust dot accordingly.
1994-04-15 18:37:05 +00:00
Ian Lance Taylor
f078dc7cf2 * 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).
1994-03-25 22:22:29 +00:00
Ian Lance Taylor
193c5f93a1 * 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.
1994-03-24 20:25:12 +00:00
Ian Lance Taylor
4fdbafb247 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.
1994-03-22 00:24:13 +00:00
Stan Shebs
b897ed67cb Mon Feb 28 10:59:14 1994 Stan Shebs (shebs@andros.cygnus.com)
* ldlang.c (cat): Define using ANSI style if ALMOST_STDC defined.
1994-02-28 19:05:34 +00:00
Ian Lance Taylor
b495c31442 * 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.
1994-02-26 19:01:50 +00:00
Ian Lance Taylor
fc1dfb7169 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.
1994-02-26 03:11:21 +00:00
Jeff Law
a62494c41b * 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.
1994-02-25 18:51:35 +00:00
Ian Lance Taylor
6b8929a172 * ldlang.h (largest_section): Don't declare.
* ldlang.c (largest_section): Don't define.
	(size_input_section): Don't set largest_section; not used.
1994-02-22 17:32:30 +00:00
Ian Lance Taylor
ef76742fc5 * ldlang.c (new_afile): Pass NULL as last argument to concat. 1994-02-21 23:19:43 +00:00
Ian Lance Taylor
4c2123b670 * ldlang.c, ldmain.c: Include libiberty.h. 1994-02-17 20:54:37 +00:00
David MacKenzie
5bcb7f28e1 * ldlang.c, ldmain.c, ldmisc.c: Use bfd_get_error and
bfd_set_error and new error names.
1994-02-17 18:12:17 +00:00
Ken Raeburn
09a5aa5eee (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.
1994-02-16 01:18:32 +00:00
David MacKenzie
0b2f8d2edd * 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.
1994-02-05 01:14:56 +00:00
Steve Chamberlain
804c860185 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.
1994-01-28 01:26:25 +00:00
Ian Lance Taylor
de08b0b153 * ldlang.c (lookup_name): Set BFD GP size to -G argument value
after opening BFD.
1994-01-24 19:55:02 +00:00
Ian Lance Taylor
755f42fe99 * 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.
1994-01-24 17:59:18 +00:00
Ian Lance Taylor
5e6cd559cf * 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.
1994-01-21 05:47:18 +00:00
Ian Lance Taylor
c477527cbb * 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.
1994-01-06 19:38:36 +00:00
Ian Lance Taylor
9f6294075e More gcc lint. 1993-12-12 00:54:14 +00:00
Ian Lance Taylor
fcf276c495 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.
1993-12-11 22:55:55 +00:00
Ian Lance Taylor
2c6635a46f * ldlang.c (lang_process): Ifdef out final call to
lang_size_sections again (reverting change of Nove 2), since it
	breaks the Sun4 linker.
1993-12-11 22:46:15 +00:00
Jeff Law
97fbbaca20 * ldlang.c (lang_process): Re-enable last call lang_size_sections.
Pass abs_output_section rather than NULL to avoid invalidating
        absolute symbols.
1993-11-02 23:47:41 +00:00
Rob Savoye
a4aeaacf69 * ldlang.c (lang_add_input_file): If it's a library brought in by
INPUT(), then change the file type to lang_input_file_is_l_enum.
	* 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.
1993-10-01 01:28:55 +00:00
K. Richard Pixley
b98bd3db83 define BYTE_SIZE, SHORT_SIZE, and LONG_SIZE which are no longer in bfd.h. 1993-08-24 23:17:52 +00:00
Ian Lance Taylor
ddddcdf0f3 * ldlang.c (open_output, lang_check): Check return value of
bfd_set_arch_mach.
1993-08-17 19:25:18 +00:00
David MacKenzie
d723cd17d5 * 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.
1993-07-12 19:34:04 +00:00
Ken Raeburn
5af8e9d6a1 (new_stetement): Size argument is now type size_t.
Added forward declaration with prototype.
1993-07-08 20:25:26 +00:00
Ian Lance Taylor
55636aa789 * ldlang.c (lang_relocate_globals): Skip indirect symbols, which
now have a non NULL srefs_chain.
1993-07-05 21:32:13 +00:00
David MacKenzie
173a0c3d26 * ldmain.c (main): Don't add scriptdir to the lib search path.
* 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, pass -L., not -Lemulations.
	(ldmain.o): Don't pass -DSCRIPTDIR=....
	* ldlang.c (lang_process): Add "ldscripts/" to the name of the
	default script file.
1993-07-03 02:01:03 +00:00
David MacKenzie
8ddef5528d * 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.

	* 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.
1993-06-17 20:55:43 +00:00
Ian Lance Taylor
1b8a42f353 * ldlang.c (lang_output_section_statement_lookup): Initialize all
fields of newly created structure.
1993-04-02 22:34:38 +00:00
Steve Chamberlain
9fce28edd5 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.
1993-03-30 22:45:39 +00:00