Commit graph

72 commits

Author SHA1 Message Date
Ian Lance Taylor
d0c45fcb75 tweak last patch 1997-04-03 16:27:28 +00:00
Ian Lance Taylor
ba254dc504 Revert last patch, and:
* elflink.h (elf_link_add_object_symbols): Let a common symbol
	override an uninitialized symbol from a shared library with a
	smaller size.
1997-04-02 22:47:29 +00:00
Ian Lance Taylor
f74e2365dd * elflink.h (elf_link_add_object_symbols): When there is a size
change, use the larger size.  From H.J. Lu <hjl@gnu.ai.mit.edu>.
1997-04-02 22:17:35 +00:00
Ian Lance Taylor
3cd5cf3d40 * stabs.c (_bfd_link_section_stabs): Copy over the first header
symbol.  Check for memory allocation failure of *psinfo.
	(_bfd_write_section_stabs): Add psinfo parameter.  Change all
	callers.  Set the value of the header symbol.
	* libbfd-in.h (_bfd_write_section_stabs): Update declaration.
	* libbfd.h: Rebuild.
1997-03-25 19:46:12 +00:00
Ian Lance Taylor
34bc6ffca6 * elflink.h (elf_bfd_final_link): Set the value of a section
symbol to the section address unless doing a relocateable link.
1997-03-20 17:40:06 +00:00
Ian Lance Taylor
37897db02c * elflink.h (elf_link_add_object_symbols): Don't warn about type
or size changes because of a weak symbol.
PR 11827.
1997-03-13 19:24:20 +00:00
Ian Lance Taylor
e549b1d2a3 * elflink.h (elf_link_add_object_symbols): Use extsymoff when
setting ever.  Sanity check the version number.  Sort out copying
	flags and other information when adding an indirect symbol.
	(NAME(bfd_elf,size_dynamic_sections)): Preserve any dynamic
	symbols added by the backend.  Clear the entire contents of the
	versym section.
	(elf_export_symbol): Ignore indirect symbols.
	(elf_link_output_extsym): Accept a section without an owner in an
	assert.
	* elfcode.h (elf_slurp_symbol_table): Add a sanity check on the
	version count.  Correct the allocation of x_versymp.
1997-03-13 02:41:44 +00:00
Ian Lance Taylor
52c92c7f75 From Eric Youngdale <eric@andante.jic.com>:
* elf-bfd.h (ELF_LINK_FORCED_LOCAL): Define.
	* elf.c (bfd_elf_print_symbol): Correct errors in last change.
	* elflink.h (elf_link_add_object_symbols): Handle cases in which a
	versioned symbol appears in both a regular and a shared object.
	(elf_link_assign_sym_version): Set ELF_LINK_FORCED_LOCAL when
	appropriate.  Improve error message.
	(struct elf_outext_info): Rename from elf_finfo_failed.  Change
	all uses.  Add localsyms field.
	(elf_bfd_final_link): When generating a shared library, call
	elf_link_output_extsym to output all local symbols.
	(elf_link_output_extsym): Handle symbols which were forced to
	become local.
1997-03-11 06:46:46 +00:00
Ian Lance Taylor
d6bfcdb505 From Eric Youngdale <eric@andante.jic.com>:
* elf-bfd.h (elf_symbol_type): Add version field.
	* elfcode.h (elf_slurp_symbol_table): Set version field.
	* elflink.h (elf_link_add_object_symbols): When creating an
 	indirect symbol for a default version symbol, set DEF_DYNAMIC if
 	appropriate.  Set up an indirection from the nondefault version of
	the symbol as well.
	(NAME(bfd_elf,size_dynamic_sections)): Call
	elf_link_assign_sym_version before checking whether there are any
	versions.  Always record the version name as a dynamic symbol.
	Initialize counters.
	(elf_link_assign_sym_version): After finding a version, see if a
	symbol should be forced to local scope.  Create a new version
	definition if appropriate.
	(elf_link_output_extsym): Correct indirect symbol handling.
	* elf.c (bfd_elf_print_symbol): Print version information.
	(bfd_section_from_shdr): Turn version sections into BFD sections.
	(elf_fake_sections): Only copy cverdefs and cverrefs into sh_info
	if sh_info is not already set.
	(_bfd_elf_copy_private_section_data): Copy sh_info for version
	sections.
	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Tell
	_bfd_stringtab_add to copy the name into permanent memory if
	appropriate.
1997-03-10 04:43:42 +00:00
Ulrich Drepper
d2f0374f23 (elf_link_add_object_symbols): Use correct sh_size
entry for reading verdef records.
Use correct braces for computing increments of extverdaux and
exteverdef record pointers.
1997-03-03 21:32:39 +00:00
Ian Lance Taylor
a48ef404c7 * elflink.h (elf_link_find_version_dependencies): Check that
DEF_REGULAR is not set as well as checking that DEF_DYNAMIC is
	set.
1997-03-03 00:27:52 +00:00
Ian Lance Taylor
e316f51498 * aoutx.h (aout_link_write_symbols): Use bfd_is_local_label_name
rather than comparing against info->lprefix.
	* cofflink.c (_bfd_coff_link_input_bfd): Likewise.
	* elflink.h (elf_link_input_bfd): Likewise.
	* linker.c (_bfd_generic_link_output_symbols): Likewise.
	* xcofflink.c (xcoff_link_input_bfd): Likewise.
1997-02-28 04:12:07 +00:00
Ian Lance Taylor
fa802cb057 * elflink.h (elf_link_input_bfd): Don't skip symbols from sections
that have no contents merely because linker_mark is not set.
1997-02-26 18:35:56 +00:00
Ian Lance Taylor
d044b40a40 From Eric Youngdale <eric@andante.jic.com>:
* elflink.h (elf_link_add_archive_symbols): If a default symbol is
	not found, try looking it up again without the version name.
	(elf_link_add_object_symbols): Always link against the dynamic
	symbol table of a dynamic object.  When linking against a dynamic
	object, include version strings in symbol names, and set up
	version information.  Add indirect symbols for default versions.
	(elf_link_create_dynamic_sections): Add special version sections.
	(struct elf_assign_sym_version_info): Define.
	(struct elf_find_verdep_info): Define.
	(NAME(bfd_elf,size_dynamic_sections)): Add verdefs parameter.  Set
	up version sections.
	(elf_adjust_dynamic_symbol): Ignore indirect symbols.
	(elf_link_find_version_dependencies): New static function.
	(elf_link_assign_sym_version): New static function.
	(elf_link_renumber_dynsyms): New static function.
	(struct elf_final_link_info): Add symver_sec field.
	(elf_bfd_final_link): Initialize finfo.symver_sec.  Don't count
	local symbols of a dynamic object.  Handle DT_VER* constants.
	(elf_link_output_extsym): Simplify BFD_ASSERT checking for a
	dynamic object.  Skip indirect symbols from ELF objects.  Remove
	the version name before choosing a hash bucket.  Write out the
	version information if appropriate.
	(elf_link_input_bfd): Check for DYNAMIC, not ET_DYN.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuild.
	* elf-bfd.h (struct elf_link_hash_entry): Add verinfo field.
	Change elf_link_hash_flags to unsigned short.
	(ELF_LINK_HIDDEN): Define.
	(struct elf_obj_tdata): Add fields dynversym_hdr, dynverref_hdr,
	dynverdef_hdr, dynversym_section, dynverdef_section,
	dynverref_section, cverdefs, cverrefs, verdef, verref.
	(elf_dynversym, elf_dynverdef, elf_dynverref): Define.
	(_bfd_elf_swap_verdef_in, _bfd_elf_swap_verdef_out): Declare.
	(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Declare.
	(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Declare.
	(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Declare.
	(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Declare.
	(_bfd_elf_slurp_version_tables): Declare.
	* elf.c (_bfd_elf_swap_verdef_in): New function.
	(_bfd_elf_swap_verdef_out): Likewise.
	(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Likewise.
	(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Likewise.
	(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Likewise.
	(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Likewise.
	(_bfd_elf_print_private_bfd_data): Add DT_VER* constants.  Print
	version information if there is any.
	(_bfd_elf_link_hash_newfunc): Initialize verinfo field.
	(bfd_section_from_shdr): Handle SHT_GNU_ver* section types.
	(elf_fake_sections): Handle .gnu.version* section names.
	(assign_section_numbers): Handle SHT_GNU_ver* section types.
	(_bfd_elf_slurp_version_tables): New function.
	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't include
	version name in string entered in dynamic hash table.
	* elfcode.h: Include fnmatch.h.
	* elf32-i386.c (elf_i386_relocate_section): Handle a dynamic
	symbol which was forced to become local.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise.
1997-02-24 23:13:07 +00:00
Ian Lance Taylor
54626f1aa4 * elflink.h (elf_link_add_object_symbols): Don't issue a warning
about a symbol defined in a dynamic object if it has already been
	defined in a regular object.
1997-02-15 00:12:47 +00:00
Ian Lance Taylor
ba4a45946c * elflink.h (elf_link_input_bfd): If we've discarded a section,
the output section will be the absolute section; don't print an
	assertion message for that case when doing a relocateable link.
PR 11647.
1997-02-07 17:40:24 +00:00
Ian Lance Taylor
258b1f5d18 * elflink.h (elf_link_input_bfd): Discard local symbols that are
attached to sections which are not being included in the link.
1997-02-06 22:02:51 +00:00
Ian Lance Taylor
db109ca2d8 * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Change type of
auxiliary_filters parameter to be const char * const *.  Accept a
	NULL terminated array.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf32_size_dynamic_sections): Update declaration.
	* bfd-in2.h: Rebuild.
1997-01-16 22:48:57 +00:00
Ian Lance Taylor
56f3b62cf5 fix copyrights 1997-01-03 22:17:57 +00:00
Ian Lance Taylor
ff12f30335 Fri Jan 3 16:58:31 1997 Richard Henderson <rth@tamu.edu>
elf64-alpha multiple .got rewrite:

	* elf-bfd.h (struct elf_backend_data): Add always_size_sections entry.
	(bfd_elf*_mkobject): Don't define here ...
	* elfxx-target.h: ... but rather here.  Default always_size_sections
	hook to NULL.
	* elf.c (elf_mkobject): Rename to bfd_elf_mkobject, since that was
	what the #defines in elf-bfd.h transmuted it to anyway.

	* section.c: Add SEC_LINKER_CREATED flag.
	* bfd-in2.h: Rebuild.
	* elf32-i386.c (elf_i386_check_relocs): Add SEC_LINKER_CREATED to
	relocation section flags.
	(elf_i386_size_dynamic_sections): Use SEC_LINKER_CREATED instead of
	SEC_IN_MEMORY to recognize generated bits.
	* elf32-m68k.c (elf_m68k_check_relocs, elf_m68k_size_dynamic_sections):
	Likewise.
	* elf32-mips.c (mips_elf_final_link, mips_elf_create_dynamic_sections,
	mips_elf_create_compact_rel_section, mips_elf_create_got_section,
	mips_elf_check_relocs, mips_elf_size_dynamic_sections): Likewise.
	* elf32-ppc.c (ppc_elf_create_linker_section,
	ppc_elf_size_dynamic_sections): Likewise.
	* elf32-sparc.c (elf32_sparc_check_relocs,
	elf32_sparc_size_dynamic_sections): Likewise.
	* elflink.c (_bfd_elf_create_got_section): Add SEC_LINKER_CREATED to
	section flags.
	(_bfd_elf_create_dynamic_sections): Likewise.
	(_bfd_elf_make_linker_section_rela): Likewise.
	* elflink.h (elf_link_create_dynamic_sections): Likewise.
	(bfd_elf,size_dynamic_sections): Call the always_size_sections hook.
	(elf_bfd_final_link): Use SEC_LINKER_CREATED instead of SEC_IN_MEMORY
	to identify generated bits.
	(elf_link_input_bfd): Likewise.

	* elf64-alpha.c: Rewrite everything touching relocations.
1997-01-03 22:09:40 +00:00
Ian Lance Taylor
148437ec14 * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Add
filter_shlib and auxiliary_filter_shlib parameters.
	* elf.c (_bfd_elf_print_private_bfd_data): Handle DT_AUXILIARY and
	DT_FILTER.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuild.
1996-12-31 19:46:37 +00:00
Ian Lance Taylor
6b8ec6f321 * elflink.h (elf_buckets): Add some more values for larger
binaries.
1996-12-27 16:51:27 +00:00
Ian Lance Taylor
440f391466 * elflink.h (elf_link_add_object_symbols): Only add a weak
symbol if the real definition is in the dynamic symbol table.
	After finding the real definition, then, if it is dynamic, add the
	weak symbol to the dynamic symbol table.
PR 11244.
1996-12-13 02:29:37 +00:00
Ian Lance Taylor
80be821d2e * elflink.h (elf_link_add_object_symbols): Calling check_relocs
even if SEC_ALLOC is not set.
	* elf32-i386.c (elf_i386_check_relocs): Don't check SEC_ALLOC
	when deciding whether to copy a reloc into a shared object.
	(elf_i386_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
	(elf32_sparc_relocate_section): Likewise.
	* elf32-i386.c (elf_i386_check_relocs): Don't set SEC_ALLOC in a
	reloc section if it is not set in the source section.
	* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
	* elf.c (bfd_section_from_shdr): Mark a reloc section associated
	with a SEC_DEBUGGING section as SEC_DEBUGGING.
PR 11174.
1996-12-05 18:47:03 +00:00
Ian Lance Taylor
6c02f1a02c * elf-bfd.h (struct elf_link_hash_entry): Add other field.
* elf.c (_bfd_elf_link_hash_newfunc): Initialize other field.
	(swap_out_syms): Set st_other from existing st_other field.
	* elflink.h (elf_link_add_object_symbols): Store st_other in hash
	table other field.
	(elf_link_output_extsym): Set the other field from the global hash
	table entry.
	* elf32-mips.c (enum reloc_type): Add R_MIPS16_26.
	(elf_mips16_jump_howto): New static variable.
	(mips16_jump_reloc): New static function.
	(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_JMP.
	(mips_info_to_howto_rel): Handle R_MIPS16_26.
	(mips_elf_relocate_section): Handle R_MIPS16_26.  Handle R_MIPS_26
	to a mips16 symbol.
	* reloc.c (BFD_RELOC_MIPS16_JMP): Add to list of relocs.
	* bfd-in2.h, libbfd.h: Rebuild.
	* cpu-mips.c (arch_info_struct): Add mips:16 entry.
1996-11-26 16:43:03 +00:00
Ian Lance Taylor
1c4794f58f * elflink.h (elf_link_add_object_symbols): If a symbol is a weak
definition in a dynamic object, add it to the dynamic symbol table
	if any dynamic object mentions it.  Reverts part of last patch.
PR 10827.
1996-10-08 18:50:59 +00:00
Ian Lance Taylor
0db6249c77 * elflink.h (elf_link_add_object_symbols): Only put a symbol from
a dynamic object in the dynamic symbol table if it is referenced
	or defined by a regular object.
PR 10711.
1996-10-01 16:33:01 +00:00
Ian Lance Taylor
c86158e591 Add SH ELF support.
* elf32-sh.c: New file.
	* elf.c (prep_headers): Handle bfd_arch_sh.
	* elfcode.h (write_relocs): Handle absolute symbol.
	* elf-bfd.h (_bfd_elf32_link_read_relocs): Declare.
	(_bfd_elf64_link_read_relocs): Declare.
	* elflink.h (NAME(_bfd_elf,link_read_relocs)): Rename from
	elf_link_read_relocs.  Make globally visible.  Change all
	callers.
	(elf_link_input_bfd): Get external symbols from cache in
	symtab_hdr->contents.  Get contents from cache in
	elf_section_data.
	* elfxx-target.h (bfD_elfNN_bfd_relax_section): Only define if not
	already defined.
	* reloc.c: Define BFD_RELOC_SH_* relocs.
	* libbfd-in.h (_bfd_sh_align_load_span): Declare.
	* coff-sh.c (sh_insns_conflict): Fix a return value.
	(_bfd_sh_align_load_span): New globally visible function, broken
	out of sh_align_load.
	(sh_align_load): Call _bfd_sh_align_load_span.
	(sh_swap_insns): Change relocs parameter to PTR.
	* bfd-in2.h, libbfd.h: Rebuild.
	* targets.c (bfd_elf32_sh_vec): Declare.
	(bfd_elf32_shl_vec): Declare.
	* config.bfd (sh-*-elf*): New target.
	* configure.in (bfd_elf32_sh_vec): New target vector.
	(bfd_elf32_shl_vec): New target vector.
	* configure: Rebuild.
	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add elf32-sh.o.
	(BFD32_BACKENDS_CFILES): Add elf32-sh.c.

	* elf.c (map_sections_to_segments): Check that LMA does not skip a
	page before checking D_PAGED.
1996-08-30 22:09:51 +00:00
Ian Lance Taylor
4596421b67 * elflink.h (elf_link_add_object_symbols): Do not resolve a common
symbol against a STT_FUNC symbol in a shared library.
1996-08-11 03:39:46 +00:00
Michael Meissner
cb73f5d786 Comment out code to make GOT pointers negative of the GOT symbol for now 1996-06-25 19:45:17 +00:00
Michael Meissner
4a4953f54c Add debug msg 1996-06-24 22:45:02 +00:00
Ian Lance Taylor
2e0567eb0d * elf.c (elf_fake_sections): Don't set sh_addr of a non SEC_ALLOC
section to 0 if user_set_vma is set.
	* elflink.h (elf_bfd_final_link): Likewise.
1996-06-24 22:00:22 +00:00
Ian Lance Taylor
1726b8f0a4 Optimize linking of stabs in sections as used in ELF and COFF.
* stabs.c: New file.
	* libbfd-in.h (_bfd_link_section_stabs): Declare.
	(_bfd_write_section_stabs): Declare.
	(_bfd_write_stab_strings): Declare.
	* libbfd.h: Rebuild.
	* libcoff-in.h (struct coff_section_tdata): Add stab_info field.
	(struct coff_link_hash_table): Add stab_info field.
	* libcoff.h: Rebuild.
	* cofflink.c (_bfd_coff_link_hash_table_init): Initialize
	stab_info field.
	(coff_link_add_symbols): Call _bfd_link_section_stabs if
	appropriate.
	(_bfd_coff_final_link): Write out stab strings hash table.
	(_bfd_coff_link_input_bfd): Handle optimized stabs sections.
	* coff-ppc.c (ppc_bfd_coff_final_link): Write out stab strings
	hash table.
	* elf-bfd.h (struct elf_link_hash_table): Add stab_info field.
	(struct bfd_elf_section_data): Add stab_info field.
	* elf.c (_bfd_elf_link_hash_table_init): Initialize stab_info
	field.
	* elflink.h (elf_link_add_object_symbols): If appropriate, call
	_bfd_link_section_stabs.
	(elf_bfd_final_link): Write out stab strings hash table.
	(elf_link_input_bfd): Handle optimized stabs sections.
	* reloc.c (_bfd_final_link_relocate): Check address against
	_raw_size rather than _cooked_size.
	* Makefile.in: Rebuild dependencies.
	(BFD_LIBS): Add stabs.o
	(BFD_LIBS_CFILES): Add stabs.c.
1996-04-22 22:35:53 +00:00
Ian Lance Taylor
ce6a773183 * elflink.h (elf_adjust_dynamic_symbol): If a common symbol got
defined in a regular file, set ELF_LINK_HASH_DEF_REGULAR.
1996-04-01 17:42:59 +00:00
Ian Lance Taylor
ff0e4a9341 Remove SEC_LINKER_MARK, and add a linker_mark bitfield to the asection
structure instead.
1996-03-27 22:23:18 +00:00
Ian Lance Taylor
7ec49f9133 * section.c (SEC_LINKER_MARK): Define.
* bfd-in2.h: Rebuild.
	* aoutx.h (NAME(aout,final_link)): Mark sections included in the
	link.
	(aout_link_input_bfd): Don't link unmarked sections.
	* cofflink.c (_bfd_coff_final_link): Mark sections included in the
	link.
	(_bfd_coff_link_input_bfd): Don't link unmarked sections.
	* coff-ppc.c (ppc_bfd_coff_final_link): Mark sections included in
	the link.
	* elflink.h (elf_bfd_final_link): Mark sections included in the
	link.
	(elf_link_input_bfd): Don't link unmarked sections.
	* xcofflink.c (_bfd_xcoff_bfd_final_link): Mark sections included
	in the link.
	(xcoff_link_input_bfd): Don't link unmarked sections.
1996-03-27 19:21:19 +00:00
Ian Lance Taylor
8881b321e0 * linker.c (bfd_wrapped_link_hash_lookup): New function.
(_bfd_generic_link_add_one_symbol): Remove BFD_ASSERT on hash
	table string.  Use bfd_wrapped_link_hash_lookup.
	(_bfd_generic_link_write_global_symbol): Remove BFD_ASSERT on hash
	table string.
	* aoutx.h (aout_link_write_symbols): Use the name from the hash
	table, if any, when writing out symbols.
	(aout_link_input_section_std): Use the name from the hash table,
	if any, when reporting undefined symbols.
	(aout_link_input_section_ext): Likewise.
	(aout_link_reloc_link_order): Use bfd_wrapped_link_hash_lookup.
	* bout.c (get_value): Likewise.
	* cofflink.c (_bfd_coff_reloc_link_order): Likewise.
	* ecoff.c (ecoff_reloc_link_order): Likewise.
	* elflink.h (elf_link_add_object_symbols): Likewise.
	(elf_reloc_link_order): Likewise.
	* linker.c (_bfd_generic_link_output_symbols): Likewise.
	(_bfd_generic_reloc_link_order): Likewise.
	(default_indirect_link_order): Likewise.
	* reloc16.c (bfd_coff_reloc16_get_value): Likewise.
	* sunos.c (sunos_add_one_symbol): Likewise.
	* xcofflink.c (xcoff_link_add_symbols): Likewise.
	(bfd_xcoff_link_count_reloc): Likewise.
	(xcoff_reloc_link_order): Likewise.
1996-03-12 23:14:58 +00:00
Ian Lance Taylor
60a49e7f8a * elf-bfd.h (struct elf_obj_tdata): Rename dt_needed_name to
dt_name.
	(elf_dt_name): Rename from elf_dt_needed_name.
	* elf.c (bfd_elf_set_dt_needed_name): Use elf_dt_name, not
	elf_dt_needed_name.
	(bfd_elf_get_dt_soname): New function.
	* elflink.h (elf_link_add_object_symbols): Use elf_dt_name, not
	elf_dt_needed_name.  Save the SONAME back in elf_dt_name.
	* bfd-in.h (bfd_elf_get_dt_soname): Declare.
	* bfd-in2.h: Rebuild.
1996-02-19 17:41:04 +00:00
Ian Lance Taylor
e303e2e358 * elflink.h (elf_adjust_dynamic_symbol): Don't try to get the
flavour of a section with no owner.
1996-02-05 15:47:53 +00:00
Ian Lance Taylor
869b7d80d3 * elf-bfd.h (ELF_LINK_NON_ELF): Define.
* elf.c (_bfd_elf_link_hash_newfunc): Set elf_link_hash_flags to
	ELF_LINK_NON_ELF.
	* elflink.h (elf_link_add_object_symbols): Reset ELF_LINK_NON_ELF
	flag for a newly defined symbol.
	(NAME(bfd_elf,record_link_assignment)): Likewise.
	(elf_adjust_dynamic_symbol): If ELF_LINK_NON_ELF is set, try to
	set the DEF or REF_REGULAR flags correctly.
1996-02-01 23:15:23 +00:00
Ian Lance Taylor
28c16b5525 * elflink.h (elf_bfd_final_link): Don't output initial dummy
symbol or section symbols if stripping all symbols and this is not
	a relocateable link.  Don't output the symbol string table if
	there are no symbols.
	(elf_link_flush_output_syms): Don't do anything if there are no
	symbols to flush.
1996-01-31 21:22:02 +00:00
Ian Lance Taylor
d2bb6c7900 * elflink.h (elf_link_add_object_symbols): Only set weakdef to a
real defined symbol, not to a weak defined symbol.
1996-01-29 18:09:20 +00:00
Michael Meissner
eb82bc605f Add more eabi relocations 1996-01-25 17:15:24 +00:00
Michael Meissner
05f927dd46 Make 64k .sdata and .sdata2 sections work; fix typos 1996-01-22 23:55:25 +00:00
David Edelsohn
5a5bac6471 * elflink.h (elf_finish_pointer_linker_section): Fix typo. 1996-01-22 18:17:16 +00:00
Michael Meissner
3b3753b874 snapshot of eabi relocation support. 1996-01-22 16:43:35 +00:00
Ian Lance Taylor
6014cea70c update copyrights 1996-01-15 21:06:31 +00:00
Ian Lance Taylor
252239f877 * elf32-mips.c: Numerous changes to dynamic linking code, mostly
from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
	* elflink.h (elf_link_output_extsym): Remove special check for
	_rld_new_interface.
1996-01-15 20:25:53 +00:00
Ian Lance Taylor
5b3b9ff61d * elf32-mips.c: Extensive changes for a start at dynamic linking
support, from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.

	* elf-bfd.h (struct elf_backend_data): Add type_change_ok field.
	(struct elf_backend_data): Remove
	elf_backend_create_program_headers field.  Add
	elf_backend_additional_program_headers and
	elf_backend_modify_segment_map fields.
	* elfxx-target.h (elf_backend_type_change_ok): Define if not
	defined.
	(elf_backend_additional_program_headers): Likewise.
	(elf_backend_modify_segment_map): Likewise.
	(elf_backend_create_program_headers): Don't define.
	(elfNN_bed): Change to account for field changes.
	* elf.c (assign_file_positions_for_segments): Call new
	modify_segment_map backend function.  Don't call old
	create_program_headers backend function.
	(get_program_header_size): Call additional_program_headers rather
	than create_program_headers.
	* elflink.h (elf_link_add_object_symbols): Initialize
	type_change_ok from new backend field.
	(elf_link_output_extsym): Don't warn if _rld_new_interface is
	defined.
	(elf_reloc_link_order): Treat a reloc against a defined symbol as
	a reloc against the appropriate section.
1996-01-11 21:06:42 +00:00
Ian Lance Taylor
010d9f2d13 * elflink.h (elf_link_add_object_symbols): Set section_count to 0
when setting sections to NULL.
PR 8600.
1995-12-08 22:47:28 +00:00