Commit Graph

127 Commits

Author SHA1 Message Date
Ian Lance Taylor d22ec3b090 * 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.
1996-08-05 20:37:52 +00:00
Ian Lance Taylor 5735ac9e57 * 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.
1996-08-02 19:01:58 +00:00
Ian Lance Taylor 582dd77f65 * 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.
1996-08-01 17:35:49 +00:00
Ian Lance Taylor 72df7117d7 * ldlang.c (lang_size_sections): Add the section VMA to the result
value when computing the address of a section.
1996-07-30 22:56:46 +00:00
Ian Lance Taylor 86bc0974cb * 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.
1996-07-29 21:33:26 +00:00
David Edelsohn 0a0d1bdd6e * ldlang.c (section_already_linked): Fix typos. 1996-05-02 00:51:15 +00:00
Ian Lance Taylor 0cacbcbe6e * 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.
1996-04-29 21:12:49 +00:00
Ian Lance Taylor efa6c49704 * 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.
1996-04-26 22:15:10 +00:00
Ian Lance Taylor 6799c638e5 * 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.
1996-04-22 21:32:58 +00:00
Ian Lance Taylor 6429ad7e58 * ldlang.c (wild_doit): Discard debugging sections if we are
stripping debugging information.
1996-04-22 16:22:52 +00:00
Ian Lance Taylor 0932869065 * 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>.
1996-04-01 22:51:35 +00:00
Ian Lance Taylor 23595ba57a * 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.
1996-04-01 16:52:17 +00:00
Ian Lance Taylor cf2e4f5fde * 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/.
1996-03-27 18:17:28 +00:00
Ian Lance Taylor 64664e69cb * ldlang.c: Fix some indentation and comments. 1996-03-27 17:34:15 +00:00
Ian Lance Taylor 3d0c8fa1d4 * ldlang.c (wild): Handle foo.a(.text) by mapping each included
member of foo.a separately.  From Jouke Numan <jnuman@bazis.nl>.
1996-03-04 19:12:43 +00:00
Ian Lance Taylor 3c8deccc4f * 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.
PR 9094.
1996-02-27 17:59:46 +00:00
Ian Lance Taylor 307585f1c9 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.
1996-02-14 21:43:54 +00:00
Ian Lance Taylor 708f7fbcd3 * ldlang.c (lang_size_sections): Increment the section size when a
padding statement is encountered.
PR 8965.
1996-02-09 00:26:56 +00:00
Ian Lance Taylor 061e65f855 * 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.
1995-12-01 21:49:51 +00:00
Ian Lance Taylor f054ce204a * 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.
PR 8142.
1995-10-04 21:39:29 +00:00
Ian Lance Taylor 36ea6198a7 * configure.host (sparc-*-sunos64*): Remove.
* ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.
1995-09-07 14:52:12 +00:00
Ian Lance Taylor 1d169acc61 * ldlang.c (lang_set_startof): New static function.
(lang_process): Call it.
1995-08-16 17:18:59 +00:00
Ken Raeburn 943fbd5bd5 fsf address update, but not in COPYING files 1995-07-07 22:49:42 +00:00
Steve Chamberlain 3f38a017be 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
1995-05-12 18:55:06 +00:00
Ken Raeburn fa9dea803d * 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>.
1995-05-03 18:08:09 +00:00
Ian Lance Taylor f400bbbb4f * ldlang.c (load_symbols): An empty is archive is OK. 1995-03-18 06:53:14 +00:00
Ian Lance Taylor 8ed88239b4 * ldctor.c (ldctor_build_sets): Handle bfd_link_hah_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.
1995-02-06 20:01:38 +00:00
David Edelsohn e802f0be04 * ldlang.c (lang_size_sections): Clarify error message when user
specified start addr conflicts with region.  Fix resetting of
	region pointer.
1995-02-01 00:23:47 +00:00
Ken Raeburn cc38364d44 Don't use const with reloc_howto_type, since it's now defined to be const. 1995-01-12 05:04:04 +00:00
Ian Lance Taylor 809391bd0a * ldlang.c (lang_one_common): Set SEC_ALLOC in any section where
we allocate common symbols.
1994-11-09 17:48:24 +00:00
Ian Lance Taylor 6a02a973c4 * 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.
PR 5917.
1994-11-08 22:54:07 +00:00
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