Commit graph

194 commits

Author SHA1 Message Date
Alan Modra
a060b769bb * emultempl/elf32.em (gld${EMULATION_NAME}_get_script): Add combreloc
support when scripts read from files.
2003-02-28 04:46:04 +00:00
Alan Modra
3bcf55573d * ldemul.c (ldemul_add_options, ldemul_handle_option): New functions.
(ldemul_parse_args): Return bfd_boolean.  Formatting.
	* ldemul.h (ldemul_add_options, ldemul_handle_option): Declare.
	(ldemul_parse_args): Adjust.
	(struct ld_emulation_xfer_struct): Add add_options and handle_option.
	Return bfd_boolean from parse_args.
	* lexsup.c (parse_args): Malloc shortopts, longopts and
	really_longopts.  Call ldemul_add_options and ldemul_handle_option.
	* emultempl/aix.em (gld${EMULATION_NAME}_add_options): Split out from
	gld${EMULATION_NAME}_parse_args.
	(gld${EMULATION_NAME}_handle_option): Likewise.
	(ld_${EMULATION_NAME}_emulation): Adjust initializer.
	* emultempl/armcoff.em: As for aix.em, but remove parse_args.
	* emultempl/beos.em: Likewise.
	* emultempl/pe.em: Likewise.
	* emultempl/ticoff.em: Likewise.
	* emultempl/elf32.em: Likewise.  Don't duplicate long options either.
	(gld${EMULATION_NAME}_add_sysroot): Prototype.
	* emultempl/armelf.em (PARSE_AND_LIST_LONGOPTS): Don't duplicate
	options.
	* emultempl/hppaelf.em (PARSE_AND_LIST_LONGOPTS): Likewise.
	* emultempl/ppc32elf.em (PARSE_AND_LIST_LONGOPTS): Likewise.
	* emultempl/ppc64elf.em (PARSE_AND_LIST_LONGOPTS): Likewise.
	* emultempl/armelf_oabi.em (ld_${EMULATION_NAME}_emulation): Adjust
	initializer.
	* emultempl/generic.em: Likewise.
	* emultempl/gld960.em: Likewise.
	* emultempl/gld960c.em: Likewise.
	* emultempl/linux.em: Likewise.
	* emultempl/lnk960.em: Likewise.
	* emultempl/m68kcoff.em: Likewise.
	* emultempl/mipsecoff.em: Likewise.
	* emultempl/sunos.em: Likewise.
	* emultempl/vanilla.em: Likewise.
	* emultempl/netbsd.em (gldnetbsd_before_parse): Prototype.
2003-02-28 01:32:31 +00:00
Alexandre Oliva
42644a8920 * emultempl/elf32.em (gld${EMULATION_NAME}_add_sysroot): Fix
memory allocation error.
2003-02-26 00:56:14 +00:00
Nick Clifton
cf888e70e2 Disable region size checking whilst relaxing sections. 2003-02-21 10:51:24 +00:00
Daniel Jacobowitz
3dc16cab3d * emultempl/elf32.em: Move gld${EMULATION_NAME}_add_sysroot
outside of GNU/Linux conditional.
2003-02-03 17:47:23 +00:00
Andreas Jaeger
ae42d3a94d * emultempl/elf32.em (gld${EMULATION_NAME}_add_sysroot): Do not
skip ':'.
2003-01-17 10:36:49 +00:00
Daniel Jacobowitz
9c8ebd6a51 * Makefile.am (eelf32iq10.c): Fix tab/whitespace mixup.
* Makefile.am (ldmain.o): Add @TARGET_SYSTEM_ROOT_DEFINE@.
	(GENSCRIPTS): Add @use_sysroot@.
	* Makefile.in: Regenerated.
	* configure.host: Move setting of NATIVE_LIB_DIRS to...
	* configure.tgt: ... here.  Use ${target} instead of ${host}
	for NATIVE_LIB_DIRS.
	* configure.in: Add --with-sysroot.
	* configure: Regenerated.
	* genscripts.sh: Accept use_sysroot option.  Set new variables
	NATIVE and USE_LIBPATH.  Prepend "=" to directory names if
	$use_sysroot.  Don't search $tool_lib if $use_sysroot.
	* ldfile.c (ldfile_add_library_path): Handle leading '='.
	* ldmain.c (TARGET_SYSTEM_ROOT): Define if not defined.
	(ld_sysroot): New variable.
	(main): Initialize ld_sysroot.
	* ldmain.h (ld_sysroot): New extern.
	* emultempl/elf32.em: Use NATIVE and USE_LIBPATH instead of
	searching $EMULATION_LIBPATH.
	(gld${EMULATION_NAME}_add_sysroot): New function.
	(gld${EMULATION_NAME}_check_ld_so_conf): Use it.  Honor ld_sysroot.
	(gld${EMULATION_NAME}_after_open): Likewise.  Only search
	environment variables if $NATIVE.
	* ld.texinfo (Options): Mention "=" prefix in the description of -L.
	* NEWS: Mention --with-sysroot.

	* emulparams/elf32bmipn32-defs.sh: Set NATIVE and LIBPATH_SUFFIX
	instead of setting LIB_PATH.
	* emulparams/elf32ppc.sh: Likewise.
	* emulparams/elf64_s390.sh: Likewise.
	* emulparams/elf64_sparc.sh: Likewise.
	* emulparams/elf64ppc.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.

	* emulparams/elf64_aix.sh: Add "=" prefixes to LIB_PATH.
	* emulparams/elf64hppa.sh: Add "=" prefixes to LIB_PATH.
2003-01-06 16:14:01 +00:00
Alan Modra
1e5e54006d * emultempl/elf32.em (struct orphan_save): Add os_tail field.
(gld${EMULATION_NAME}_place_orphan): Re-order output_section_statement
	list too.
2002-12-10 03:34:43 +00:00
Alan Modra
36478e9d6f * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Set
load_base for orphans that follow a section with load_base set.
2002-12-04 23:56:14 +00:00
Alan Modra
b34976b65a s/boolean/bfd_boolean/ s/true/TRUE/ s/false/FALSE/. Simplify
comparisons of bfd_boolean vars with TRUE/FALSE.  Formatting.
2002-11-30 08:39:46 +00:00
Daniel Jacobowitz
df2a731323 * emultempl/aix.em: Use include <> for generated headers.
* emultempl/beos.em: Likewise.
	* emultempl/elf32.em: Likewise.
	* emultempl/pe.em: Likewise.
	* ldctor.c: Likewise.
	* ldexp.c: Likewise.
	* ldfile.c: Likewise.
	* ldlang.c: Likewise.
	* ldlex.c: Likewise.
	* ldlex.l: Likewise.
	* ldmain.c: Likewise.
	* ldmisc.c: Likewise.
	* ldwrite.c: Likewise.
	* lexsup.c: Likewise.
	* mri.c: Likewise.
	* pe-dll.c: Likewise.
2002-10-30 03:57:39 +00:00
Jakub Jelinek
a8927cfd1a * emultempl/elf32.em (place_orphan): Don't put non-allocated .rel*
sections into .rel{,a}.dyn.
2002-10-23 20:13:01 +00:00
Alan Modra
24cdb50ae8 * emultempl/elf32.em (output_rel_find): Prefer .rel script sections
when orphan is .rel, .rela when orphan is .rela.
	(gld${EMULATION_NAME}_place_orphan): Handle combreloc .rel* case
	first.  Remove outsecname var.
2002-10-10 02:52:27 +00:00
Alan Modra
ba49312244 * emultempl/elf32.em (output_rel_find): Always place orphan loadable
reloc sections just before .rel.plt/.rela.plt.
	(gld${EMULATION_NAME}_place_orphan <.rel>): Remove combreloc code.
	Only put loadable reloc sections in hold_rel.
2002-09-30 03:34:46 +00:00
Alan Modra
25844aaec2 * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
bomb on /DISCARD/ input section.
	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Likewise.
2002-07-20 13:41:11 +00:00
Tom Rix
8243435612 Fix ld segfault for some elf targets. Fix default layout for d10v. 2002-06-17 14:08:40 +00:00
H.J. Lu
c4bb8067a5 2002-06-12 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_try_needed): Return
	false if xvec doesn't match.
2002-06-13 02:43:23 +00:00
Alan Modra
1d475d825e * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Place
SEC_EXCLUDE sections when doing a relocatable link.
2002-06-05 14:07:29 +00:00
Richard Sandiford
ee3cc2e2ee * ldlang.c (lang_size_sections_1): Move check for conflicting load
addresses and regions from here...
	(lang_get_regions): ...to this new function.
	(lang_leave_output_section_statement): Use lang_get_regions.
	(lang_leave_overlay): Likewise.
	* mri.c (mri_draw_tree): Pass null as last argument to
	lang_leave_output_section_statement.
	* emultempl/elf32.em (gld*_place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Likewise.
	* emultempl/pe.em (gld*_place_orphan): Likewise.
2002-05-27 08:22:08 +00:00
Alan Modra
fac1652d6b * ldemul.c (ldemul_new_vers_pattern): New function.
* ldemul.h (ldemul_new_vers_pattern): Declare.
	(struct ld_emulation_xfer_struct): Add new_vers_pattern.
	* ldlang.c (lang_new_vers_pattern): Call ldemul_new_vers_pattern.
	* emultempl/ppc64elf.em (dotsyms): New static var.
	(gld${EMULATION_NAME}_new_vers_pattern): New function.
	(LDEMUL_NEW_VERS_PATTERN): Define.
	(PARSE_AND_LIST_PROLOGUE): Add OPTION_DOTSYMS, OPTION_NO_DOTSYMS.
	(PARSE_AND_LIST_LONGOPTS): Likewise.
	(PARSE_AND_LIST_ARGS_CASES): Handle them.
	* emultempl/aix.em (ld_${EMULATION_NAME}_emulation): Update
	initialiser.
	* emultempl/armcoff.em: Likewise.
	* emultempl/armelf_oabi.em: Likewise.
	* emultempl/beos.em: Likewise.
	* emultempl/elf32.em: Likewise.
	* emultempl/generic.em: Likewise.
	* emultempl/gld960.em: Likewise.
	* emultempl/gld960c.em: Likewise.
	* emultempl/linux.em: Likewise.
	* emultempl/lnk960.em: Likewise.
	* emultempl/m68kcoff.em: Likewise.
	* emultempl/mipsecoff.em: Likewise.
	* emultempl/pe.em: Likewise.
	* emultempl/sunos.em: Likewise.
	* emultempl/ticoff.em: Likewise.
	* emultempl/vanilla.em: Likewise.
2002-05-22 09:04:48 +00:00
H.J. Lu
aa713662e8 2002-05-21 H.J. Lu (hjl@gnu.org)
* emultempl/elf32.em (gld${EMULATION_NAME}_parse_args): Handle
	"-z muldefs".
	(gld${EMULATION_NAME}_list_options): Add "-z muldefs".

	* ld.texinfo: Updated for --allow-multiple-definition and
	"-z muldefs".

	* ldmain.c (main): Initialize the allow_multiple_definition
	field to false.

	* lexsup.c (OPTION_ALLOW_MULTIPLE_DEFINITION): New.
	(ld_options): Add --allow-multiple-definition.
	(parse_args): Support OPTION_ALLOW_MULTIPLE_DEFINITION.
2002-05-22 05:08:31 +00:00
David O'Brien
fed2999dfb 2002-03-18 David O'Brien <obrien@FreeBSD.org>
* emultempl/elf32.em: Use lbasename vs. basename to fix problem where
	the contents of the buffer returned from basename function will are
	getting overwritten while still being used.

Approved by:  Alan Modra <amodra@bigpond.net.au>
              Message-ID: <20020318032031.GD1089@bubble.sa.bigpond.net.au>
2002-03-19 21:03:43 +00:00
Alan Modra
2c382fb6f5 Support arbitrary length fill patterns.
* ldexp.h (etree_value_type): Add "str" field.
	(union etree_union): Add "str" to "value" struct.
	(exp_bigintop): Declare.
	(exp_get_fill): Declare.
	* ldexp.c: Include "safe-ctype.h".
	(exp_intop): Set value.str to NULL.
	(exp_bigintop): New function.
	(new_rel): Pass in "str", and set new.str from it.
	(new_rel_from_section): Set new.str to NULL.
	(fold_name): Adjust calls to new_rel.
	(exp_fold_tree): Likewise.
	(exp_get_fill): New function.
	* ldgram.y (struct big_int bigint, fill_type *fill): New.
	(INT): Returns a "bigint".  Adjust all code handling INTs.
	(fill_opt): Returns a "fill".
	(fill_exp): Split out of fill_opt, use for FILL.
	* ldlang.h (struct _fill_type): New.
	(fill_type): Move typedef to ldexp.h.
	(lang_output_section_statement_type): "fill" is now a pointer.
	(lang_fill_statement_type): Likewise.
	(lang_padding_statement_type): Likewise.
	(lang_add_fill): Now takes a "fill_type *" param.
	(lang_leave_output_section_statement): Likewise.
	(lang_do_assignments): Likewise.
	(lang_size_sections): Likewise.
	(lang_leave_overlay_section): Likewise.
	(lang_leave_overlay): Likewise.
	* ldlang.c: Include ldgram.h after ldexp.h.
	(lang_output_section_statement_lookup): Adjust for fill_type change.
	(print_fill_statement): Likewise.
	(print_padding_statement): Likewise.
	(insert_pad): Now takes a "fill_type *" arg.
	(size_input_section): Likewise.
	(lang_size_sections_1): Likewise.
	(lang_size_sections): Likewise.
	(lang_do_assignments): Likewise.
	(lang_add_fill): Likewise.
	(lang_leave_output_section_statement): Likewise.
	(lang_leave_overlay_section): Likewise.
	(lang_leave_overlay): Likewise.
	Adjust all callers of the above function.
	* ldlex.l: Include ldgram.h after ldexp.h.  Allow hex numbers
	starting with "0X" as well as "0x".  Return bigint.str for hex
	numbers starting with "0x" or "0X", zero bigint.str otherwise.
	Always use base 16 for numbers starting with "$".
	* ldmain.c: Include ldgram.h after ldexp.h.
	* ldwrite.c (build_link_order): Use bfd_data_link_order in place
	of bfd_fill_link_order.
	* pe-dll.c: Adjust lang_do_assignments calls.
	* emultempl/elf32.em: Likewise.
	* emultempl/hppaelf.em: Likewise.
	* emultempl/ppc64elf.em: Likewise.
	* emultempl/beos.em: Include ldgram.h after ldexp.h, adjust
	lang_add_assignment call.
	* emultempl/pe.em: Likewise.
2002-02-15 02:11:05 +00:00
Hans-Peter Nilsson
e3dc884769 * ldlang.c (lang_reset_memory_regions): Rename from
reset_memory_regions.  Change all callers.  Make public.
	* ldlang.h (lang_reset_memory_regions): Prototype.
	* emultempl/elf32.em (gld${EMULATION_NAME}_finish): Call
	lang_reset_memory_regions before lang_size_sections.
2002-02-05 06:52:17 +00:00
Alan Modra
3dfe7a8c3a * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Make use
of bfd_section_list_remove and bfd_section_list_insert macros.
	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Likewise.
2002-01-05 13:14:00 +00:00
Alan Modra
73e87d7038 hash bfd sections for fast lookup and create.
bfd/ChangeLog
	* bfd.c (struct _bfd): Add section_htab, section_tail.
	* libbfd-in.h (_bfd_delete_bfd): Declare.
	(bfd_section_hash_newfunc): Declare.
	* opncls.c (_bfd_new_bfd): Free memory on failure.  Init
	section_htab and section_tail.
	(_bfd_delete_bfd): New function.
	(bfd_openr): Use it.
	(bfd_fdopenr): Likewise.
	(bfd_openstreamr): Likewise.
	(bfd_openw): Likewise.
	(bfd_close): Likewise.
	(bfd_close_all_done): Likewise.
	(bfd_release): Comment.
	* section.c (struct section_hash_entry): New.
	(bfd_section_hash_newfunc): New function.
	(section_hash_lookup): Define.
	(bfd_section_init): New function, split out from
	bfd_make_section_anyway.
	(bfd_get_section_by_name): Lookup via hash table.
	(bfd_get_unique_section_name): Likewise.
	(bfd_make_section_old_way): Rewrite to use hash table.
	(bfd_make_section_anyway): Likewise.
	(bfd_make_section): Likewise.  Return NULL for attempts to make
	BFD_{ABS,COM,UND,IND}_SECTION_NAME.
	(_bfd_strip_section_from_output): Adjust section_tail if needed.
	* configure.in: Bump bfd version.
	* configure: Regenerate.
	* libbfd.h: Regenerate.
	* bfd-in2.h: Regenerate.

ld/ChangeLog
	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Adjust
	section_tail when fiddling with section list.
	(gld${EMULATION_NAME}_list_options): Ensure sentences aren't
	broken into separate strings to make translation easier.
	* emultempl/mmo.em (mmo_place_orphan): Adjust section_tail when
	fiddling with section list.
	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
2001-12-17 00:40:53 +00:00
Jakub Jelinek
6576570080 * elf-bfd.h (enum elf_link_info_type): New.
(struct bfd_elf_section_data): Remove stab_info and merge_info
	fields, add sec_info and sec_info_type.
	(struct elf_obj_tdata): Add eh_frame_hdr field.
	(_bfd_elf_discard_section_eh_frame): New prototype.
	(_bfd_elf_discard_section_eh_frame_hdr): Likewise.
	(_bfd_elf_eh_frame_section_offset): Likewise.
	(_bfd_elf_write_section_eh_frame): Likewise.
	(_bfd_elf_write_section_eh_frame_hdr): Likewise.
	* Makefile.am (BFD32_BACKENDS): Add elf-eh-frame.lo.
	(BFD32_BACKENDS_CFILES): Add elf-eh-frame.c.
	(elf-eh-frame.lo): New.
	* Makefile.in: Rebuilt.
	* configure.in (elf): Add elf-eh-frame.lo.
	* configure: Rebuilt.
	* elf.c (_bfd_elf_print_private_bfd_data): Support PT_GNU_EH_FRAME.
	(map_sections_to_segments): Create PT_GNU_EH_FRAME if requested.
	(get_program_header_size): Take into account PT_GNU_EH_FRAME
	segment.
	(_bfd_elf_rela_local_sym): Use sec_info_type and sec_info.
	(_bfd_elf_rel_local_sym): Likewise.
	(_bfd_elf_section_offset): Likewise.  Call
	_bfd_elf_eh_frame_section_offset too.
	* elfxx-ia64.c (elfNN_ia64_relocate_section): Use sec_info_type and
	sec_info.
	* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
	* elf-eh-frame.c: New file.
	* elflink.h (elf_link_add_object_symbols): Don't optimize SHF_MERGE
	.stab sections.  Set sec_info_type, use sec_info instead
	of merge_info and stab_info.
	(elf_link_create_dynamic_sections): Create .eh_frame_hdr section
	if --eh-frame-hdr.
	(elf_bfd_final_link): Write .eh_frame_hdr section.
	(elf_link_sec_merge_syms): Use sec_info_type and sec_info.
	(elf_link_input_bfd): Likewise.
	Call _bfd_elf_write_section_eh_frame to write .eh_frame sections.
	(elf_bfd_discard_info): Add output_bfd argument.
	Call _bfd_elf_discard_section_eh_frame and
	_bfd_elf_discard_section_eh_frame_hdr.
	(elf_section_ignore_discarded_relocs): Use sec_info_type, not section
	names.
	* bfd-in.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Adjust
	prototypes.
	* bfd-in2.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Likewise.

	* elf/common.h (PT_GNU_EH_FRAME): Define.
	* bfdlink.h (struct bfd_link_info): Add eh_frame_hdr field.

	* emultempl/elf32.em (finish): Supply output_bfd
	to bfd_elf*_discard_info.
	(OPTION_EH_FRAME_HDR): Define.
	(longopts): Add --eh-frame-hdr.
	(parse_args): Handle it.
	(list_options): Add --eh-frame-hdr to help.
	* emultempl/hppaelf.em (finish): Supply output_bfd
	to bfd_elf*_discard_info.
	* scripttempl/elf.sc (.eh_frame_hdr): Add.

	* readelf.c (get_segment_type): Support PT_GNU_EH_FRAME.
2001-12-13 11:09:34 +00:00
Alan Modra
ca0b584738 * emultempl/elf32.em (gld${EMULATION_NAME}_finish): Use NULL instead
of false when calling lang_size_sections.
	(hppaelf_layout_sections_again): Likewise.
2001-11-20 15:19:39 +00:00
Alan Modra
c56feb2b8c * emultempl/elf32.em (gld${EMULATION_NAME}_finish): Only emit this
function when LDEMUL_FINISH isn't set to the same name.  Don't
	call ${LDEMUL_FINISH}.
	(ld_${EMULATION_NAME}_emulation): Call $LDEMUL_FINISH if defined.
	* emultempl/armelf.em (arm_elf_finish): Call
	gld${EMULATION_NAME}_finish.
	* emultempl/hppaelf.em (hppaelf_finish): Rename to
	gld${EMULATION_NAME}_finish.  Call bfd_elf32_discard_info and
	hppaelf_layout_sections_again if necessary.
	(need_laying_out): New var.
	(hppaelf_layaout_sections_again): Rename to
	hppaelf_layout_sections_again.  Clear need_laying_out.
	(PARSE_AND_LIST_OPTIONS): Format text.
2001-11-15 12:44:03 +00:00
Daniel Jacobowitz
73d074b4e2 2001-11-11 Daniel Jacobowitz <drow@mvista.com>
* bfd-in.h (bfd_elf32_discard_info): Add prototype.
	(bfd_elf64_discard_info): Likewise.
	* bfd-in2.h: Regenerate.
	* elf-bfd.h (struct elf_reloc_cookie): New.
	(struct elf_backend_data): Add elf_backend_discard_info,
	elf_backend_ignore_discarded_relocs, and elf_backend_write_section.
	(_bfd_elf32_reloc_symbol_deleted_p): Add prototype.
	(_bfd_elf64_reloc_symbol_deleted_p): Likewise.
	* elf32-mips.c (_bfd_elf32_mips_discard_info): New.
	(_bfd_elf32_mips_ignore_discarded_relocs): New.
	(_bfd_elf32_mips_write_section): New.
	(elf_backend_discard_info): Define.
	(elf_backend_ignore_discarded_relocs): Define.
	(elf_backend_write_section): Define.
	* elfcode.h (elf_bfd_discard_info): Define.
	(elf_reloc_symbol_deleted_p): Define.
	* elflink.h (elf_link_input_bfd): Check
	elf_section_ignore_discarded_relocs.  Call
	bed->elf_backend_write_section if available.
	(elf_reloc_symbol_deleted_p): New.
	(elf_bfd_discard_info): New.
	(elf_section_ignore_discarded_relocs): New.
	* elfxx-target.h (elf_backend_discard_info): Define.
	(elf_backend_ignore_discarded_relocs): Define.
	(elf_backend_write_section): Define.
	(elfNN_bed): Add elf_backend_discard_info,
	elf_backend_ignore_discarded_relocs, and
	elf_backend_write_section.
	* libbfd-in.h (_bfd_discard_section_stabs): Add prototype.
	* libbfd.h: Regenerate.
	* stabs.c (_bfd_discard_section_stabs): New.

2001-11-11  Daniel Jacobowitz  <drow@mvista.com>

	* emultempl/elf32.em (gld${EMULATION_NAME}_finish): New.
	(struct ld_emulation_xfer_struct): Use it.
2001-11-15 01:34:12 +00:00
Alan Modra
146e7110d8 * emultempl/elf32.em (gld*_list_options): Remove extra '\t' from
-z nocopyreloc and -z nocombreloc usage strings.
2001-10-15 23:28:21 +00:00
Nick Clifton
b4330e85f7 Include -z nocopyreloc in usage 2001-10-12 10:34:25 +00:00
Chris Demetriou
61585df298 2001-10-10 Chris Demetriou <cgd@broadcom.com>
* emultempl/elf32.em: Fix shell 'if' usage for portability.
2001-10-10 23:05:55 +00:00
Jakub Jelinek
ec38dd0548 * doc/as.texinfo: Document M and S ELF section flags.
* emultempl/elf32.em (gld_*_list_options): Include -z combreloc and
	-z nocombreloc in usage.
2001-10-05 16:36:55 +00:00
Alan Modra
8bd621d883 Add support for -z nocopyreloc. 2001-10-03 15:11:48 +00:00
H.J. Lu
3882b01078 Locale changes from Bruno Haible <haible@clisp.cons.org>. 2001-09-19 05:33:36 +00:00
Jakub Jelinek
db6751f2e7 * elf-bfd.h (enum elf_reloc_type_class): New.
(struct elf_backend_data): Add elf_backend_reloc_type_class.
	(_bfd_elf_reloc_type_class): New.
	* elfxx-target.h (elf_backend_reloc_type_class): Define.
	(elfNN_bed): Add elf_backend_reloc_type_class.
	* elf.c (_bfd_elf_reloc_type_class): New.
	* elf32-i386.c (elf_i386_check_relocs): Set DF_TEXTREL if the reloc
	is against read-only section.
	(elf_i386_size_dynamic_sections): Use DF_TEXTREL flag instead of
	looking up section names for DT_TEXTREL.
	(elf_i386_reloc_type_class): New.
	(elf_backend_reloc_type_class): Define.
	* elf32-sparc.c (elf32_sparc_check_relocs): Set DF_TEXTREL if the
	reloc is against read-only section.
	(elf32_sparc_size_dynamic_sections): Use DF_TEXTREL flag instead of
	looking up section names for DT_TEXTREL.
	(elf32_sparc_reloc_type_class): New.
	(elf_backend_reloc_type_class): Define.
	* elf64-sparc.c (sparc64_elf_check_relocs): Set DF_TEXTREL if the
	reloc is against read-only section.
	(sparc64_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of
	looking up section names for DT_TEXTREL.
	(sparc64_elf_reloc_type_class): New.
	(elf_backend_reloc_type_class): Define.
	* elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add reltext field.
	(elfNN_ia64_hash_table_create): Clear ia64_info.
	(get_reloc_section): Set DF_TEXTREL if the reloc is against read-only
	section.
	(elfNN_ia64_size_dynamic_sections): Use ia64_info->reltext flag
	instead of looking up section names for DT_TEXTREL.
	(elfNN_ia64_reloc_type_class): New.
	(elf_backend_reloc_type_class): Define.
	* elflink.h (size_dynamic_sections): Add spare DT_NULL tags.
	(struct elf_link_sort_rela): New.
	(elf_link_sort_cmp1, elf_link_sort_cmp2, elf_link_sort_relocs): New.
	(elf_bfd_final_link): Call elf_link_sort_relocs.
	Convert one spare DT_NULL into DT_RELCOUNT resp. DT_RELACOUNT if
	necessary.

	* bfdlink.h (struct bfd_link_info): Add combreloc and
	spare_dynamic_tags fields.

	* emultempl/elf32.em (place_orphan): Place orphan .rel* sections
	into .rel.dyn resp. .rela.dyn if combreloc.
	(get_script): If .x linker script is equal to .xn, only put it
	once into the binary.
	Add .xc and .xsc scripts.
	(parse_args): Handle -z combreloc and -z nocombreloc.
	* scripttempl/elf.sc (.rela.sbss): Fix a typo.
	For .xc and .xsc scripts put all .rel* or .rela* input sections
	but .rel*.plt and PLT-like sections into .rel.dyn resp. .rela.dyn.
	* genscripts.sh (GENERATE_COMBRELOC_SCRIPT): Set if SCRIPT_NAME
	is elf.
	Strip trailing whitespace from script.
	Generate .xc and .xsc scripts if requested.
	* ldmain.c (main): Initialize link_info.combreloc and
	link_info.spare_dynamic_tags.
	* lexsup.c (OPTION_SPARE_DYNAMIC_TAGS): Define.
	(ld_options): Add --spare-dynamic-tags option.
	(parse_args): Likewise.
	* ld.texinfo: Document -z combreloc and -z nocombreloc.
	* ldint.texinfo: Document .xc and .xsc linker scripts.
	* NEWS: Add notes about -z combreloc and SHF_MERGE.
2001-08-23 15:14:18 +00:00
Alan Modra
cde43e70f1 * emultempl/elf32.em: Formatting fixes.
(output_prev_sec_find): Test for bfd_ind_section too;  do so by
	looking at sec->owner.
	(output_rel_find): Move function inside LDEMUL_PLACE_ORPHAN test.
	(gld${EMULATION_NAME}_place_orphan): Add a few comments.  Remove
	unused code, and reorganize orphan section placement code.
2001-08-14 04:40:38 +00:00
Alan Modra
39dcfe18ca (wild_doit): Rename to lang_add_section. 2001-08-14 02:01:31 +00:00
Alan Modra
22af9fd35c * emultempl/elf32.em: For SEC_EXCLUDE sections, ensure that
output_section is set non-NULL.
2001-08-13 14:28:57 +00:00
Alan Modra
0f33d40bfc * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Return
`true' for SEC_EXCLUDE sections so that the generic code doesn't
	needlessly create an output_section_statement.  Treat a correctly
	named output_section_statement with NULL bfd_section as compatible.
2001-08-13 10:56:21 +00:00
Alan Modra
738108961e * emultempl/elf32.em (output_prev_sec_find): Add missing prototype. 2001-08-09 14:44:18 +00:00
H.J. Lu
5030876b5d 2001-07-14 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (output_prev_sec_find): Never return
	bfd_abs_section_ptr, bfd_com_section_ptr nor
	bfd_und_section_ptr.
2001-07-14 16:36:25 +00:00
Jakub Jelinek
95500e1ca4 * emultempl/elf32.em (output_prev_sec_find): New.
(place_orphan): Use it.
2001-07-13 07:25:18 +00:00
David O'Brien
c2a1a436ff 2001-07-09 David O'Brien <obrien@FreeBSD.org>
* emultempl/elf32.em: Do not assuming that contents of the buffer
	returned from basename function will remain unchanged accross other
	function calls.

NOTE: DJ Delorie recomends doing a basename()->lbasename() conversion.

Approved by:  DJ Delorie
              <200107100030.UAA01223@envy.delorie.com>
2001-07-10 00:38:16 +00:00
Hans-Peter Nilsson
605d9b3a4f * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
Update for API change in bfd_elf${ELFSIZE}_size_dynamic_sections.
	* mpw-elfmips.c (gldelf32ebmip_before_allocation): Ditto.
	* ld.h (args_type): Remove member export_dynamic.  All users
	changed to use struct bfd_link_info member.
2001-06-18 22:20:57 +00:00
H.J. Lu
86af25fe1d 2001-05-24 H.J. Lu <hjl@gnu.org>
* emultempl/aix.em (OUTPUT_ARCH): Defined.
	(gld${EMULATION_NAME}_before_parse): Initialize
	ldfile_output_architecture, ldfile_output_machine and
	ldfile_output_machine_name from ${OUTPUT_ARCH} if possible.
	* emultempl/beos.em: Likewise.
	* emultempl/elf32.em: Likewise.
	* emultempl/linux.em: Likewise.
	* emultempl/mipsecoff.em: Likewise.
	* emultempl/pe.em: Likewise.
	* emultempl/sunos.em: Likewise.
2001-05-25 05:39:22 +00:00
Alexandre Oliva
57e6abd277 * emultempl/elf32.em (ELF_INTERPRETER_SET_DEFAULT): Use this new
variable to avoid non-portable shell construct.
2001-05-24 02:44:06 +00:00
Nick Clifton
506eee2253 Improve Solaris compatability 2001-05-22 14:00:18 +00:00
H.J. Lu
1c9acd948f 2001-05-03 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em: Include "libiberty.h".
	(gld${EMULATION_NAME}_vercheck): Call basename () to get the
	basename of the bfd filename.
	(gld${EMULATION_NAME}_stat_needed): Likewise.
	(gld${EMULATION_NAME}_try_needed): Likewise.
	(gld${EMULATION_NAME}_open_dynamic_archive): Likewise.
2001-05-03 06:26:26 +00:00
Ulrich Drepper
cc5ce05235 * emultmpl/elf32.em (gld${EMULATION_NAME}_search_needed): If NAME
is an absolute path look only for this file and not along the path.
2001-03-20 18:39:21 +00:00
Ulrich Drepper
a1ab1d2aa3 * emultempl/elf32.em (OPTION_GROUP): New macro.
Add new option Bgroup to longopts.
	(gld*_parse_args): Handle GROUP_OPTION and recognize -z defs.
	(gld*_list_options): Add -Bgroup and -z defs.
	* ld.1: Document -Bgroup and -z defs.
	* ld.texinfo: Likewise.
2001-03-17 21:24:26 +00:00
Nick Clifton
a2b64bede3 Fixtypos in ChangeLogs, fix copyright dates in files 2001-03-13 06:14:29 +00:00
Hans-Peter Nilsson
f813923cf3 * emultempl/elf32.em: Correct spelling in comments and listed
options.
2001-01-24 06:14:09 +00:00
Alan Modra
577a062318 Extend "ld --unique" functionality. 2001-01-14 04:36:35 +00:00
David O'Brien
482e8b3206 2000-01-07 David O'Brien <obrien@BSDi.com>
* emultempl/elf32.em: Only perform Linux ld hints processing when
	targeting Linux.

Approved by:  Nick Clifton <nickc@redhat.com>
              Message-Id: <200101040127.RAA15127@elmo.cygnus.com>
2001-01-08 05:25:58 +00:00
Nick Clifton
6d02a66752 Remove spurious whitespace 2000-12-12 19:37:01 +00:00
Jim Wilson
c940e6fcdf Handle srdata sections emitted by Intel compiler.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): New local
	hold_sdata.  If SEC_SMALL_DATA set, set place to hold_sdata.
2000-11-08 00:39:32 +00:00
Alan Modra
b3ea35849f Handle out of memory situations. 2000-09-20 04:20:26 +00:00
Alan Modra
ed15ac6a0a Fix an orphan section problem caused by weird linker scripts. 2000-09-07 09:09:19 +00:00
Alan Modra
71bfc0aef6 Fix list handling for orphan section output statements. 2000-09-07 07:08:58 +00:00
Alan Modra
f998903041 Fix place_orphan crash. 2000-09-06 15:28:25 +00:00
Alan Modra
a854a4a7c8 --split-by-reloc, --split-by-file extensions. --unique option. 2000-09-05 03:05:19 +00:00
H.J. Lu
dcb0bd0eef 2000-08-24 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't
	check -rpath nor LD_RUN_PATH for cross link.
	* ld.texinfo: Document the change.
2000-08-25 20:24:11 +00:00
H.J. Lu
6dd8c765d3 2000-08-23 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Get
	the current runpath list from bfd_elf_get_runpath_list ()
	before search.
2000-08-23 23:03:00 +00:00
H.J. Lu
ec4eb78a39 2000-08-22 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Search
	the DT_RPATH/DT_RUNPATH entries for DT_NEEDED after
	LD_LIBRARY_PATH for native linker. Display the needed DSO if
	trace_file_tries is non-zero.
	(gld${EMULATION_NAME}_try_needed): Report the needed DSO found
	if trace_file_tries is non-zero.

	* ld.texinfo: Document the usage of DT_RPATH/DT_RUNPATH.
	* News: Mention it.
2000-08-22 19:34:37 +00:00
Nick Clifton
e374f1d977 Refer to -rpath not --rpath in error message 2000-08-09 00:51:42 +00:00
Alan Modra
4b209b2234 Keep track of last optind value, and rename a couple of functions
for consistency.
2000-08-04 04:41:33 +00:00
Alan Modra
41392f033d Add some shell variables and shell code to elf32.em
to allow elf32.em to be used by ports that require
some minor variations or a few extra functions.
Implement for hppaelf and armelf.
Fix header file include order in m68kcoff.em
2000-07-28 01:33:14 +00:00
Alan Modra
04925e1e0b Move functions around in preparation for next patch 2000-07-28 01:07:09 +00:00
H.J. Lu
699845ef7b 2000-07-20 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (longopts): Duplicate "disable-new-dtags"
	and "disable-new-dtags" to stop getopt from treating -d/-e as
	abbreviations for these options.
2000-07-20 21:59:40 +00:00
H.J. Lu
6c1439be21 2000-07-20 H.J. Lu <hjl@gnu.org>
* ld.texinfo: Add documentation for --disable-new-dtags and
	--enable-new-dtags.

	* ldmain.c (main): Initialize link_info.new_dtags to false.

	* emultempl/elf32.em (gld_${EMULATION_NAME}_parse_args): Add
	--disable-new-dtags and --enable-new-dtags.
	(gld_${EMULATION_NAME}_list_options): Likewise.
2000-07-20 21:18:23 +00:00
H.J. Lu
19e3be22a4 2000-07-20 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld_${EMULATION_NAME}_list_options):
	Print out ignored -z options.
2000-07-20 16:13:26 +00:00
H.J. Lu
e0ee487bb5 2000-07-19 H.J. Lu <hjl@gnu.org>
* emulparams/elf32mcore.sh (PARSE_AND_LIST_ARGS): Removed.
	(PARSE_AND_LIST_PROLOGUE): New.
	(PARSE_AND_LIST_LONGOPTS): Likewise.
	(PARSE_AND_LIST_OPTIONS): Likewise.
	(PARSE_AND_LIST_ARGS_CASES): Likewise.

	* ldmain.c (main): Clear link_info.flags and link_info.flags_1.

	* lexsup.c (ld_options): Comment out 'z'.
	(parse_args): Likewise.

	* emultempl/elf32.em: Include "elf/common.h".
	(gld_${EMULATION_NAME}_parse_args): Defined. Handle some -z
	options.
	(gld_${EMULATION_NAME}_list_options): Likewise.

	* ld.texinfo: Add documentation for the recognized -z options.
2000-07-20 03:25:10 +00:00
H.J. Lu
49e56c493d 2000-07-19 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_try_needed): Call
	bfd_elf_set_dt_needed_soname ().
2000-07-20 03:17:32 +00:00
Alan Modra
b71e277823 Remove some forward declarations in ldemul.h and ldfile.h, and
re-arrange header include order.
Fix shadowing warnings in ldlang.h
Fix compile errors in mpw-elfmips.c
2000-07-11 03:42:41 +00:00
Nick Clifton
60bcf0fa8c Applied Stephane Carrez <Stephane.Carrez@worldnet.fr> patches to add support
for m68hc11 and m68hc12 processors.
2000-06-19 01:22:44 +00:00
Alan Modra
aea4bd9d34 place_orphan optimisations 2000-04-25 05:14:16 +00:00
H.J. Lu
20d04697a8 2000-04-18 H.J. Lu <hjl@gnu.org>
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Call
	lang_leave_output_section_statement () after calling
	lang_enter_output_section_statement ().
	* emultempl/armelf.em: Likewise.
2000-04-18 23:39:03 +00:00
Alan Modra
5ba474214c Yet another set of fixes for orphan sections. 2000-04-18 05:53:41 +00:00
Alan Modra
01cc8ff856 Zero start address of orphan ~(SEC_LOAD | SEC_ALLOC) sections. 2000-04-14 01:58:29 +00:00
Alan Modra
6a345e871d Keep output orphan sections in the same order as input. 2000-04-12 02:43:37 +00:00
Alan Modra
40d109bfbc GCC warning fix: Add missing NULL initialiser for find_potential_libraries. 2000-02-29 05:53:53 +00:00
Timothy Wall
562d3460fb Add LMA memory region functionality. 2000-02-16 18:53:32 +00:00
Jeff Law
93a6d43674 Wed Nov 3 23:31:19 1999 Jeffrey A Law (law@cygnus.com)
* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
        Clean up code to use EXTRA_SHLIB_EXTENSION.

1999-09-14  Ulrich Drepper  <drepper@cygnus.com>

        * configure.in: Define EXTRA_SHLIB_EXTENSION to ".sl" for HP target.
        * config.in: Add EXTRA_SHLIB_EXTENSION.

        * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
        Search for second shared lib extension only if EXTRA_SHLIB_EXTENSION
        is defined.
1999-11-04 06:45:07 +00:00
Jeff Law
9f5b33d795 Fix typo in last change. 1999-09-17 21:58:45 +00:00
Jeff Law
d3cc5bd625 * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
Use the same filename extension for the bfd_elf_dt_needed_name call
        as we did for finding the library.
1999-09-16 20:53:09 +00:00
Jeff Law
070f1aed4e * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
Search for file with .sl extension if no file with a .so extension
        is found.
1999-09-14 02:42:51 +00:00
Nick Clifton
3b108066c9 Add ability for individual targets to have their own command line switches by
defining PARSE_AND_LIST_ARGS.
1999-08-23 09:07:45 +00:00
Ian Lance Taylor
597e25914e * emultempl/ostring.sed: Rename from stringify.sed.
* emultempl/astring.sed: New file.
	* Makefile.am (stringify.sed): New target.
	(GEN_DEPENDS): Change $(srcdir)/emultempl/stringify.sed to
	stringify.sed.
	* configure.in: Define and substitute STRINGIFY.
	* emultempl/*.em: Use stringify.sed from build directory rather
	than source directory.
	* emultempl/elf32.em: Use stringify.sed rather than inline sed
	script.
	* emultempl/gld960.em, emultempl/gld960c.em: Likewise.
	* emultempl/hppaelf.em, emultempl/linux.em: Likewise.
	* emultempl/lnk960.em, emultempl/sunos.em: Likewise.
	* configure, Makefile.in: Rebuild.
1999-08-06 22:46:03 +00:00
Andreas Schwab
5d341b0e2a * emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Add missing
comma in initializer.
1999-07-12 06:24:03 +00:00
Ian Lance Taylor
87f2a3464b * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
as appropriate.  Fill in structure initializations.
1999-07-11 20:09:04 +00:00
Richard Henderson
f97f730029 * emultempl/armelf.em: Watch EMULATION_LIBPATH instead of
DEFAULT_EMULATION.
        * emultempl/elf32.em: Likewise.
        * emultempl/sunos.em: Likewise.
1999-06-20 14:12:08 +00:00
Richard Henderson
252b5132c7 19990502 sourceware import 1999-05-03 07:29:11 +00:00