Commit Graph

94 Commits

Author SHA1 Message Date
Richard Henderson 65c2dd6ec7 * config.bfd (sparc64-*-linux*): New target.
* elf-bfd.h (struct elf_backend_data): Add plt_alignment member.
        * elflink.c (_bfd_elf_create_got_section): Set .got alignment based
        on arch_size.
        (_bfd_elf_create_dynamic_sections): Likewise for .rel* sections.
        Set .plt alignment from new plt_alignment.
        * elflink.h (elf_link_create_dynamic_sections): Set version section
        alignment to LOG_FILE_ALIGN.
        * elfxx-target.h (elf_backend_plt_alignment): Provide default.
        (elfXX_bed): Init plt_alignment.

        * elf64-sparc.c (sparc64_elf_check_relocs,
        sparc64_elf_adjust_dynamic_symbol, sparc64_elf_size_dynamic_sections,
        sparc64_elf_adjust_dynindx, sparc64_elf_finish_dynamic_symbol,
        sparc64_elf_finish_dynamic_sections): New functions.
        (sparc64_elf_howto_table): Fix a few name strings.
        (ELF_DYNAMIC_INTERPRETER): New definition.
        (sparc64_elf_relocate_section): Handle shared libraries.

        * elf64-sparc.c (struct plt_template, plt_*_header, plt_*_entry,
        sparc64_elf_build_plt_entry, sparc64_elf_finish_dynamic_symbol):
        PLT definitions sparc64-linux originally choose.  These will go
        away soon in favour of the official abi definitions.
1997-10-23 07:37:25 +00:00
Richard Henderson bccab6306f * elflink.h (elf_link_assign_sym_version): For explicitly versioned
symbols, check globals list before matching on locals.
1997-10-17 07:04:28 +00:00
Ian Lance Taylor 3359a0bcec * elflink.h (elf_merge_symbol): Don't check the hash creator until
after we have set *sym_hash.
1997-09-25 16:16:11 +00:00
Ian Lance Taylor 13eb6306e7 Wed Jul 30 21:30:35 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elflink.h (NAME(bfd_elf,record_link_assignment)): Remove any
	version info if this symbol came from a dynamic object.
	(elf_link_add_object_symbols): Set the version info of a symbol
	only if the object actually contains version definitions and
	defines this symbol.
1997-07-31 01:35:46 +00:00
Ian Lance Taylor 677525e961 * elflink.h (elf_link_add_object_symbols): When a version
indirection symbol is overridden, make the original symbol point
	at the real overriding symbol.
1997-06-26 16:06:03 +00:00
Ian Lance Taylor 8211c92986 * elflink.h (elf_link_output_extsym): Use the right section for a
common symbol.
	* elf32-mips.c (mips_elf_link_output_symbol_hook): If a common
	symbol was in .scommon, mark it as SHN_MIPS_SCOMMON.
PR 12697.
1997-06-26 05:27:56 +00:00
Ian Lance Taylor e9982ee534 Wed Jun 25 12:43:10 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
* elflink.h (elf_merge_symbols): Resolve indirect and warning
	symbols before checking for new symbols.
1997-06-25 16:45:12 +00:00
Ian Lance Taylor 862eaedc1a comment fix 1997-06-24 14:34:47 +00:00
Ian Lance Taylor 541a4b5425 * elflink.h (elf_merge_symbol): In the case of a new defined
symbol overriding an old defined symbol, return the hash table
	entry which we modify, even if it is the target of an
	indirection.
	(elf_link_add_object_symbols): If the real name of the symbol gets
	overridden, convert the versioned symbol into an indirect symbol
	to the real symbol.
1997-06-24 02:28:03 +00:00
Ian Lance Taylor 044d7d4944 * elflink.h (elf_merge_symbol): New static function, broken out of
elf_link_add_object_symbols.
	(elf_link_add_object_symbols): Call it.
1997-06-23 22:06:29 +00:00
Ian Lance Taylor c4badc83ec revert last patch 1997-06-18 23:02:58 +00:00
Ian Lance Taylor c68867051c * elflink.h (elf_link_add_object_symbols): Don't let a common
symbol in a regular object override a common symbol in a shared
	object if the latter was found via an indirect symbol.
1997-06-18 15:36:33 +00:00
Ian Lance Taylor c19fbe0f57 * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Call
elf_link_assign_sym_version before elf_adjust_dynamic_symbol.
	(elf_fix_symbol_flags): New static function, broken out of
	elf_adjust_dynamic_symbol.
	(elf_adjust_dynamic_symbol): Call elf_fix_symbol_flags.
	(elf_link_assign_sym_version): Likewise.  Permit a symbol to be
	forced local even if NEEDS_PLT is set.  When forcing a symbol to
	be local, clear NEEDS_PLT.
	(elf_link_output_extsym): Remove unused local bed.
1997-06-16 18:41:19 +00:00
Ian Lance Taylor 8519ea2120 * elflink.h (elf_link_output_extsym): Call finish_dynamic_symbol
for a symbol which is being forced to be local.
	* elf32-i386.c (elf_i386_relocate_section): Write out the
 	relocation value for a GOT reloc for a symbol which is turning
 	into a local symbol.
	(elf_i386_finish_dynamic_symbol): If a symbol is turning into a
	local symbol, write out a RELATIVE reloc rather than a GLOB_DAT
	reloc.
	* elf32-m68k.c, elf32-sparc.c: Corresponding changes.
1997-06-11 16:59:00 +00:00
Ulrich Drepper 601acd6158 (elf_link_add_object_symbols): Also read verneed
information by calling `_bfd_elf_slurp_version_tables'.
(elf_link_add_object_symbols): For undefined symbols look for
version informaiton in the verneed records.
(elf_link_add_object_symbols): Use soname of shared object
for verneed record if it is available.
1997-06-10 21:46:23 +00:00
Ian Lance Taylor 94e05b00bd Mon Jun 9 12:34:21 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elflink.h (elf_link_add_object_symbols): Ignore relocations of
	sections that will be discarded.
1997-06-09 16:36:08 +00:00
Ulrich Drepper cf2cd4cf5d (elf_link_find_version_dependencies): When searching
for known version symbol skip non-matching verdef records, not
matching records.
1997-06-06 21:19:41 +00:00
Ian Lance Taylor fd6c00bac2 * elflink.h (elf_link_add_object_symbols): Don't decrease the
alignment of a common symbol.  If two symbols that look like
 	common symbols are found in two shared libraries, and the size is
 	different, use the larger size, and warn if --warn-common.  If a
	common symbol overrides a definition in a shared library, set the
	size to the larger size, and warn if --warn-common.
1997-05-16 16:13:33 +00:00
Ian Lance Taylor 77bd8dfa1f * elflink.h (elf_link_add_object_symbols): Consistently treat
uninitialized symbols in shared objects as common symbols.
1997-05-15 21:38:26 +00:00
Ian Lance Taylor 031dfce06f * elflink.h (elf_link_add_object_symbols): Force ELF symbol size
to common symbol size.
1997-05-15 20:40:54 +00:00
Ian Lance Taylor f02004e95a * elflink.h (elf_link_add_object_symbols): Only subtract the
section VMA from the symbol value if this is a fully linked file.
1997-04-17 16:29:43 +00:00
Ian Lance Taylor a0c807260c * elflink.h (elf_link_add_object_symbols): Don't call check_relocs
if this is a debugging section which we are stripping.
1997-04-15 15:54:24 +00:00
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