Commit Graph

1445 Commits

Author SHA1 Message Date
Jim Kingdon dab0844122 * coffgen.c (coff_print_symbol): Make names for section number and
storage class slightly more verbose.  It's not clear how many
	characters I can justify using up, but before this change they
	both were abbreviated "sc" which is (IMHO) clearly unacceptable.
1994-10-19 20:49:03 +00:00
Ian Lance Taylor 8b65c39307 * binary.c (binary_set_section_contents): Set the base file
position from the lowest section VMA, not the start address.
1994-10-19 18:08:42 +00:00
Ian Lance Taylor 7494246592 * aoutx.h (NAME(aout,slurp_symbol_table)): Don't return an error
if there are no symbols.
	* coffgen.c (coff_get_normalized_symtab): Likewise.
	* hp300hpux.c (MY(slurp_symbol_table)): Likewise.
1994-10-19 05:30:15 +00:00
Ian Lance Taylor c768bd3f2d * binary.c: New file for raw binary output format.
* Makefile.in (BFD_LIBS): Add binary.o.
	(CFILES): Add binary.c.
	* targets.c (binary_vec): Declare.
	(bfd_target_vector): Include binary_vec.
1994-10-18 18:51:01 +00:00
Ian Lance Taylor d4d166835f * srec.c (tdata_type): Add field tail.
(srec_mkobject): Initialize tail.
	(srec_set_section_contents): Sort S record list by address.
1994-10-18 16:58:24 +00:00
Ian Lance Taylor b7881f82ee * oasys.c (oasys_slurp_symbol_table): Use udata.p rather than just
udata.
1994-10-17 23:59:36 +00:00
Ian Lance Taylor eb4267a3f9 Use a hash table when writing out ELF symbol names.
* elfcode.h (elf_stringtab_init): New static function.
	(bfd_new_strtab, bfd_add_to_strtab, bfd_add_2_to_strtab): Remove.
	Change all callers to use elf_stringtab_init or
	_bfd_stringtab_add, and get stringtab lengths using
	_bfd_stringtab_size.
	(elf_fake_sections): Change ignored argument to pointer to
	boolean, and set the boolean to true if an error occurs.  If an
	error has already occurred, don't do anything.
	(assign_section_numbers): Just set sh_size, not contents.
	(elf_compute_section_file_positions): Pass the address of a
	boolean to elf_fake_sections.  Pass the address of a
	bfd_strtab_hash to swap_out_syms.  Write out the .strtab section.
	(prep_headers): Change shstrtab to bfd_strtab_hash.
	(swap_out_syms): Take a pointer to a bfd_strtab_hash as an
	argument.  Set it to the symbol names.
	(NAME(bfd_elf,write_object_contents)): Write out the section
	header names using _bfd_stringtab_emit.
	(elf_debug_section): Remove first argument; get the section name
	via the bfd_section pointer.  Change caller.
	(elf_bfd_final_link): Write out the symbol names using
	_bfd_stringtab_emit.  Likewise for the .dynstr section contents.
	Free the symbol names at the end of the function.
	(elf_link_input_bfd): Remove the last argument, output_names,
	from relocate_section.  Save the old symbol contents before
	calling elf_link_output_sym, and restore them afterward.
	* libelf.h (struct elf_link_hash_table): Change dynstr field to
	struct bfd_strtab_hash.
	(struct elf_backend_data): Remove last argument, output_names,
	from elf_backend_relocate_section field.
	(struct strtab): Don't define.
	(struct elf_obj_tdata): Change strtab_ptr field to struct
	bfd_strtab_hash.
	* elf32-hppa.c (elf32_hppa_relocate_section): Remove last
	argument, output_names.
	* elf32-i386.c (elf_i386_relocate_section): Likewise.
	* elf32-mips.c (mips_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
1994-10-17 22:03:14 +00:00
Jim Kingdon a3377a658c Fix thinko in ian's ChangeLog entry 1994-10-17 21:41:20 +00:00
Ian Lance Taylor cb066aa98a * libbfd-in.h (DEFAULT_STRING_SPACE_SIZE): Don't define.
(bfd_add_to_string_table): Don't declare.
	* libbfd.h: Rebuild.
	* libbfd.c (bfd_add_to_string_table): Remove.
1994-10-17 19:31:23 +00:00
Ian Lance Taylor 24f13b0331 * elfcode.h (elf_swap_shdr_in): Use rawdata, not bfd_section.
Clear contents field.
	(bfd_section_from_shdr): In SHT_STRTAB case, check bfd_section,
	not rawdata.  Don't set rawdata if e_shstrndx.  Use bfd_section
	rather than rawdata in commented out code.  In SHT_REL[A] case,
	don't bother to check elf_section_data of section returned by
	section_from_elf_index.
	(elf_fake_sections): Set bfd_section, not rawdata.  Don't set
	size.
	(elf_map_symbols): Don't set elf_num_section_syms.  Don't create
	section symbols that already exist.
	(assign_file_position_for_section): Use bfd_section, not rawdata.
	(section_from_elf_index): Just check bfd_section field.
	(elf_section_from_bfd_section): Likewise.
	(elf_debug_section): Don't print rawdata, contents, or size.
	(elf_link_add_object_symbols): Don't error out if
	section_from_elf_index returns NULL.
	(elf_bfd_final_link): Check return value from
	section_from_elf_index against NULL, not bfd_is_abs_section.
	(elf_link_input_bfd): Don't check section_from_elf_index return
	value.
	* libelf.h (struct elf_obj_tdata): Remove num_section_syms field.
	(elf_num_section_syms): Don't define.
	* elf.c (elf_get_str_section): Store section contents in contents
	field rather than rawdata field.
	(elf_string_from_elf_section): Likewise.
	(_bfd_elf_make_section_from_shdr): Store BFD section pointer in
	bfd_section field rather than rawdata field.
	* elf32-hppa.c (elf32_hppa_read_symext_info): Use bfd_section
	rather than rawdata.
	(elf32_hppa_size_stubs): Likewise.
	* elf32-mips.c (mips_elf_final_write_processing): Use bfd_section
	rathern than rawdata.
	(mips_elf_section_from_shdr): Likewise.
	(mips_elf_section_processing): Likewise.
	(mips_elf_section_from_bfd_section): Remove rawdata check.
1994-10-17 18:27:40 +00:00
Ian Lance Taylor 5e643795a3 * srec.c (pass_over): Set the start address for S7, S8 or S9. 1994-10-17 15:39:37 +00:00
Ken Raeburn f10abb42eb update to version 2.5 1994-10-14 23:17:15 +00:00
Ian Lance Taylor 61c94e5e64 * bfd.c (bfd_scan_vma): Cast end to be non const before passing it
to strtoul.
1994-10-14 15:09:07 +00:00
Ian Lance Taylor 82735983df * bfd.c (bfd_scan_vma): Pass end argument on to strtoul. 1994-10-13 18:41:39 +00:00
Ian Lance Taylor 7b18561f3b * ecoff.c (ecoff_set_symbol_info): Mark local stProc or stLabel
symbols as BSF_DEBUGGING.
PR 5769.
1994-10-12 21:51:04 +00:00
Ken Raeburn ef4b8f6687 * opncls.c (bfd_realloc): Deleted, since it's broken and fixing it would make
it slow.  Besides, it isn't used much.
* elfcode.h (elf_map_symbols): Always allocate new storage for the symbol table.
1994-10-12 21:39:54 +00:00
Ian Lance Taylor 17d9e20376 * rs6000-core.c (rs6000coff_core_file_matches_executable_p): Make
str1 and str2 const pointers.
1994-10-12 16:19:33 +00:00
Ian Lance Taylor bf42caf32c * Makefile.in (INSTALL): Use top level install.sh script.
* config/README (INSTALL): Remove.
	* config/delta88.mh (INSTALL): Remove.
	* config/i386v4.mh (INSTALL): Remove.
	* config/irix4.mh (INSTALL): Remove.
	* config/irix5.mh (INSTALL): Remove.
	* config/ncrt3000.mh (INSTALL): Remove.
1994-10-12 15:57:28 +00:00
Ian Lance Taylor b2bcf39ca2 Tue Oct 11 13:57:56 1994 Eric Youngdale (eric@andante.aib.com)
* elf32-i386.c (elf_i386_check_relocs): Make sure that a symbol
	with a global offset table entry or a procedure linkage table
	entry is added to the dynamic symbol table.
	* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
	* elf32-i386.c (elf_i386_adjust_dynamic_symbol): If a symbol has
	already gotten a procedure linkage table entry, change the
	definition to the PLT entry.
	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.
1994-10-11 21:40:54 +00:00
Ian Lance Taylor 9a406d86e9 * lynx-core.c (lynx_core_file_p): SPARC Lynx appears to start
dumping the .data section in a core file at a page boundary.
1994-10-11 21:13:45 +00:00
Ken Raeburn 4c0322704f * cofflink.c (_bfd_coff_final_link): Cast argument to bfd_h_put_32 to correct
type.
(coff_read_string_table): Cast argument to bfd_h_get_32 to correct type.
* elfcode.h (elf_link_output_extsym): Cast argument to bfd_elf_hash to correct
type.
1994-10-10 20:38:06 +00:00
Ken Raeburn 4fbc96adc8 * elf32-sparc.c (elf_sparc_howto_table): The PC10, PC22, and WPLT30 relocations
are PC-relative.
1994-10-10 20:30:32 +00:00
Ian Lance Taylor 66e4e64904 * archive.c (bfd_construct_extended_name_table): SVR4 uses slash
newline at the end of the file name, not just newline.
1994-10-05 18:43:30 +00:00
Ian Lance Taylor ea4849d5b7 * ecoff.c (_bfd_ecoff_new_section_hook): Default section alignment
power to 4, rather than using align_power_min.
1994-10-04 21:30:45 +00:00
Ian Lance Taylor 28d19d0321 * coffcode.h (coff_new_section_hook): Don't use align_power_min;
use COFF_DEFAULT_SECTION_ALIGNMENT_POWER instead.  Force the .stab
	and .stabstr sections to be aligned to no more than 2.  Remove
	COFF_SPARC special cases.
	* coff-a29k.c: Define COFF_DEFAULT_SECTION_ALIGNMENT_POWER.
	* coff-apollo.c, coff-go32.c, coff-h8300.c: Likewise.
	* coff-h8500.c, coff-i386.c, coff-i960.c, coff-m68k.c: Likewise.
	* coff-m88k.c, coff-rs6000.c, coff-sh.c, coff-sparc.c: Likewise.
	* coff-we32k.c, coff-z8k.c: Likewise.
PR 5706.
1994-10-04 21:13:51 +00:00
Ian Lance Taylor 995b0d3ff3 * configure.in: Use ${config_shell} when running config.bfd. 1994-10-04 16:18:19 +00:00
Ian Lance Taylor a297d42c27 * cofflink.c (coff_link_input_bfd): Don't try to convert a long
filename if the offset field is zero.
1994-10-04 15:54:27 +00:00
Ian Lance Taylor dfaf9ef608 * elfcode.h (swap_out_syms): If the alignment of a common symbol
was not set, use a sensible default rather than zero.
PR 5751.
1994-10-04 15:25:02 +00:00
Peter Schauer 7a6c910ea1 * rs6000-core.c (rs6000coff_core_p): Set SEC_HAS_CONTENTS flag
for .stack and .ldinfo sections. Cast coredata.c_tab to a
	file_ptr to avoid warnings from gcc.
1994-10-03 11:47:38 +00:00
Ian Lance Taylor fb562be02f * elfcode.h (elf_bfd_final_link): Remove assertion when a non
SEC_IN_MEMORY section is found in dynobj.  This can happen when
	linking PIC compiled code.
1994-09-30 17:13:08 +00:00
Ken Raeburn 12cf5d98c7 fix typu 1994-09-29 20:51:57 +00:00
Ken Raeburn 85f340909d * reloc.c (bfd_install_relocation): Change type of data to bfd_byte *, to go
along with yesterday's change.
1994-09-29 20:39:27 +00:00
Ken Raeburn 64e21e0fd7 * elf.c (bfd_elf_print_symbol): Moved here from elf_print_symbol in elfcode.h.
(case bfd_print_symbol_all): Print symbol's size field, except for common
symbols; print their alignment.
* elfcode.h (elf_print_symbol): Deleted.
* libelf.h (bfd_elf_print_symbol): Declare.
(bfd_elf{32,64}_print_symbol): Replace declarations with macros.
1994-09-29 20:36:24 +00:00
Ken Raeburn 9afa408e4f * syms.c (bfd_print_symbol_vandf): Show BSF_LOCAL and BSF_GLOBAL in one column.
Use the column freed up to show BSF_FUNCTION and BSF_FILE.
1994-09-29 20:29:54 +00:00
Ian Lance Taylor ec591fcf45 * syms.c (stt): Add .rdata and .rodata.
PR 5714.
1994-09-29 16:30:12 +00:00
Ian Lance Taylor 094e8be303 * reloc.c (bfd_install_relocation): Cast data_start to bfd_byte *
before trying to add values to it.
1994-09-28 17:36:42 +00:00
Ian Lance Taylor 5ea9089194 * elfcode.h (assign_file_positions_except_relocs): Align the
section VMA and the file position even if D_PAGED is not set.
1994-09-26 15:40:12 +00:00
Ian Lance Taylor d80ebaacea * bfd-in.h (bfd_seek): Change declaration to not mark fp const.
* bfd-in2.h: Rebuild.
	* libbfd.c (bfd_seek): Don't mark parameters const, to avoid
	conflicts with declaration.
1994-09-26 15:01:59 +00:00
Ian Lance Taylor 57b400818d * elfcode.h (map_program_segments): Don't abort if we allocated
too much space for the program header, only if we allocated too
	little.
1994-09-23 19:19:41 +00:00
J.T. Conklin 237402b49b * libaout.h: Fix comment.
* ns32knbsd.h: Changed M_NS32K_NETBSD to M_532_NETBSD to match
  libaout.h.
1994-09-20 20:20:12 +00:00
Ian Lance Taylor f90a2cdcb0 * coff-sh.c (rtype2howto): Remove; unused.
(coff_sh_relocate_section): Remove unused local variable rstat.
	(reloc_processing): Comment out; unused.
1994-09-20 19:24:50 +00:00
Ian Lance Taylor fb9a219279 * aoutx.h (aout_link_write_other_symbol): If h->indx is -2, then
always write it out even if it would normally be stripped.
	(aout_link_input_section_std): If we find a reloc against a
	stripped global symbol, force it to be written out rather than
	merely calling unattached_reloc.
	(aout_link_input_section_ext): Likewise.
	(aout_link_reloc_link_order): Likewise.
1994-09-16 16:14:51 +00:00
Ian Lance Taylor ab0434c26d * aoutx.h (aout_link_write_symbols): Rename skip_indirect to
skip_next.  If we find an N_WARNING symbol which has already been
	written out, set skip_next.
PR 5634.
1994-09-14 23:28:25 +00:00
Jeff Law a8d0866480 * som.h (struct somdata): New field sorted_syms.
(obj_som_sorted_syms): Accessor macro.
	* som.c (som_object_setup): Initialize sorted_syms to NULL.
	(som_prep_for_fixups): Sort a copy of the BFD's symbol table;
	store the sorted symbol table in sorted_syms.
	(som_write_fixups): Initalize tmp_reloc to NULL to make GCC happy.
	(som_begin_writing): Similarly for exec_header.  Pass the sorted
	symbol table to som_write_symbol_strings.
	(som_build_and_write_symbol_table): Use the sorted symbols rather
	than the canonical symbol table.
1994-09-14 22:24:56 +00:00
Jeff Law 8a2cdc6278 * som.h (som_symbol_type): Add "stringtab_offset" field.
* som.c (som_write_symbol_strings): Use "stringtab_offset"
	rather than destroying the "name" field in the BFD symbol.
	(som_build_and_write_symbol_table): Likewise.
1994-09-14 21:44:35 +00:00
Ian Lance Taylor 9be909aef7 * libecoff.h (struct ecoff_tdata): Add field find_buffer.
* ecoff.c: Include aout/stab_gnu.h.
	(ecoff_find_nearest_line): Handle stabs debugging information.
PR 3954.
1994-09-14 20:19:09 +00:00
Ian Lance Taylor 8c62064a26 * elfcode.h (elf_link_output_extsym): Keep a symbol marked as weak
even if it is referenced by another object.
1994-09-14 19:08:26 +00:00
Jeff Law ae880afc1b * som.c (som_fixup_formats): Case R_ENTRY (0xb3), set both
'T' and 'U' to grab all the unwind information.
	(som_set_reloc_info): Make 'U' unwind bits persist across
	multiple SOM relocations.  Set the addend field of an R_ENTRY
	relocation to the value in 'T'; set the addend field on an
	R_EXIT relocation to the value in 'U'.
1994-09-14 03:03:15 +00:00
Jeff Law e10639db44 * som.h (som_symbol_type): Delete unwind field.
* som.c (som_write_fixups): For R_ENTRY fixups, get 32bits of
	unwind information from the addend field of the R_ENTRY, get the
	other 32bits from the addend field of the R_EXIT.
	(bfd_som_attach_unwind_info): Delete function and all references.
1994-09-14 02:28:52 +00:00
Jeff Law 39836432f8 * som.h (som_symbol_type): Delete unused a.out-related fields.
* som.c (bfd_section_from_som_symbol): Use bfd_abs_section_ptr
	instead of &bfd_abs_section.
1994-09-14 00:51:33 +00:00
Jeff Law a0b4aa6265 * som.c (som_object_setup): Handle exec_entry and exec_flags being
switched in executables created by the OSF1 linker.
	(som_write_fixups): Handle R_EXIT just like the R_{F,L,R}SEL
	fixups.  Support R_ALT_ENTRY (handle just like R_EXIT).
1994-09-14 00:29:11 +00:00
Steve Chamberlain cf345e3687 Tue Sep 13 16:04:07 1994 Steve Chamberlain (sac@jonny.cygnus.com)
* cofflink.c (coff_link_input_bfd): syment_base is unsigned
	so can't compare -ve numbers with it.

Mon Sep 12 20:31:17 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* configure.in (shcoff_vec): Use cofflink.o now.
	* coff-sh.c: Rewritten to use new fast coff backend.
1994-09-14 00:10:42 +00:00
Ian Lance Taylor 204ba9e37e * aoutx.h (NAME(aout,final_link)): Don't assume that all the input
files are a.out.
1994-09-13 20:25:46 +00:00
J.T. Conklin a3f7a777c6 * configure.host (sparc-*-netbsd): use sparcnbsd.
(ns32k-*-netbsd): use ns32knbsd.

* hosts/{nbsd,i386nbsd,ns32knbsd,sparcnbsd}.h: New files, NetBSD
  host support.

* sparcnetbsd.c: New file, adds support for NetBSD/sparc.
* config/sparc-nbsd.mt: Likewise.

* netbsd.h: New file, definitions common to all netbsd ports.
* i386netbsd.c: Use it.
* ns32knetbsd.c: Use it.

* Makefile.in, configure.in, targets.c, config/i386-nbsd.mt,
  config/ns32k-nbsd.mt: canonicalize netbsd targets to conform to
  file/variable naming conventions.
* i386netbsd.c: New file, renamed from netbsd386.c.
* ns32knetbsd.c: New file, renamed from netbsd532.c.
1994-09-13 18:39:47 +00:00
Jeff Law c7ca67cb67 * som.c (som_reloc_skip): Correct off-by-one error for 4-byte
R_NO_RELOCATION fixups.
	(bfd_section_from_som_symbol): Return the absolute section if the
	symbol isn't contained in any section in the output file.
	(som_slurp_symbol_table): ST_PRI_PROG and ST_SEC_PROG symbols are
	not function symbols (they are magic code labels which *can* be the
	targets of cross space branches).  $START$ is not a section symbol.
1994-09-13 04:06:07 +00:00
Ian Lance Taylor 3c9832f89f * elfcode.h (swap_out_syms): Set the type of an undefined symbol
to STT_FUNC if the BSF_FUNCTION flag is set.
1994-09-12 22:16:27 +00:00
Ian Lance Taylor 2a89559527 * cofflink.c (coff_link_input_bfd): If r_symndx is -1, don't
change it.
	(_bfd_coff_generic_relocate_section): If r_symndx is -1, it is an
	absolute reloc.  Don't dump core using r_symndx as an array index.
	* cf-m68klynx.c (coff_bfd_link_add_symbols): Define.
	(lynx_link_add_symbols): New static function (copy of function in
	coff-i386.c).
	(coff_m68k_lynxrtype_to_howto): sym argument may be NULL.
	* coff-i386.c (coff_i386_rtype_to_howto): Likewise.
	* coff-a29k.c (coff_a29k_relocate_section): Handle an r_symndx
	value of -1, meaning an absolute reloc.
1994-09-12 21:01:19 +00:00
Ian Lance Taylor 3cd942de1e * ctor.c: Remove; obsolete.
* Makefile.in: Rebuild dependencies.
	(BFD_LIBS): Remove ctor.o.
	(CFILES): Remove ctor.c.
	* libbfd.h: Rebuild.
1994-09-12 15:47:52 +00:00
Jeff Law 27ebd9525d * elf32-hppa.c (elf32_hppa_relocate_section): If there was a link
error of some sort (for example, undefined symbols), then do not
	apply any relocs, just notify the user of the errors.
	(elf32_hppa_backend_begin_write_processing): Do not build a symbol
	extension section for an executable (it's useless).
	(elf32_hppa_link_output_symbol_hook): Do nothing if there was a
	link error of some sort (for example, undefined symbols).
	(elf32_hppa_read_symext_info): Kludge.  Turn off SEC_HAS_CONTENTS
	for all the input symbol extension sections to keep the generic
	BFD code happy.  Temporarily turn it on to read the contents of
	the symbol extension section.
1994-09-12 08:07:13 +00:00
Jeff Law 95bc714ee8 * config/hppaosf.mh (RANLIB): Do not set.
* config/hppabsd.mh (RANLIB): Likewise.
1994-09-12 04:04:09 +00:00
Ian Lance Taylor 5b89e1a00c Get the new COFF linker code working for i386-lynx.
* cf-i386lynx.c: Remove #if 0 code.
	(i386_lynxos_coff_object_p): Remove unused function.
	(coff_bfd_link_add_symbols): Define.
	(lynx_link_add_symbols): New static function.
	* coffcode.h (coff_bfd_link_hash_table_create): If
	coff_relocate_section is defined, only define this if not already
	defined.
	(coff_bfd_link_add_symbols, coff_bfd_final_link): Likewise.

	* linker.c (_bfd_generic_final_link): Handle
	bfd_indirect_link_order explicitly, rather than via
	_bfd_default_link_order.
	(set_symbol_from_hash): New static function, broken out of
	_bfd_generic_link_write_global_symbol.
	(_bfd_generic_link_write_global_symbol): Symbol setting code moved
	to set_symbol_from_hash; call it.
	(default_indirect_link_order): Add generic_linker argument.
	Change all callers.  If false, set the generic symbols based on
	the hash table entries.
1994-09-12 02:57:23 +00:00
Ian Lance Taylor 67ff4a5616 * coffgen.c (coff_get_symtab): Reindented. Removed commented out
call to bfd_constructor_entry.
1994-09-09 20:38:37 +00:00
Ian Lance Taylor bd23b552ef Convert m68k COFF to use new COFF backend linker.
* coff-m68k.c (coff_relocate_section): Define.
	* cf-m68klynx.c (coff_rtype_to_howto): Define.
	(coff_m68k_lynx_rtype_to_howto): New static function.
	* configure.in (m68kcoff_vec): Build cofflink.o.
	(m68kcoffun_vec, m68klynx_coff_vec): Likewise.
1994-09-09 15:54:45 +00:00
Steve Chamberlain 2546fb27f0 * coff-h8300.c (h8300_reloc16_extra_cases, case RELBYTE): Flag overflows
correctly.
1994-09-08 23:27:56 +00:00
Ian Lance Taylor dc5fff10dd * coff-go32.c (RTYPE2HOWTO): Fully parenthesize arguments.
* coff-i960.c (RTYPE2HOWTO): Likewise.
	* coff-m88k.c (RTYPE2HOWTO): Likewise.
	* coff-we32k.c (RTYPE2HOWTO): Likewise.

	Make i386 COFF use new COFF backend linker.
	* coff-i386.c (RTYPE2HOWTO): Fully parenthesize arguments.
	(coff_relocate_section): Define.
	(coff_i386_rtype_to_howto): New function.
	* configure.in (i386coff_vec): Use cofflink.o.
	(i386lynx_coff_vec): Likewise.

	* coffcode.h (bfd_coff_backend_data): Add new field
	_bfd_coff_rtype_to_howto.
	(bfd_coff_rtype_to_howto): Define.
	(coff_rtype_to_howto): Define to use RTYPE2HOWTO, if not already
	defined.
	(bfd_coff_std_swap_table): Initialize new field.
	* cofflink.c (_bfd_coff_final_link): Allocate section_count + 1
	section_info structures, since the target_index is 1 based.
	(coff_link_input_bfd): Set *secpp to bfd_com_section_ptr for a
	common symbol.  Adjust rel_hash by the output reloc count.
	(_bfd_coff_generic_relocate_section): New function.
	* libcoff-in.h (_bfd_coff_generic_relocate_section): Declare.
	* libcoff.h: Rebuild.
	* coff-alpha.c (alpha_ecoff_backend_data): Initialize new field.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.
1994-09-07 23:16:23 +00:00
Jeff Law 3b50c9009c * som.c (som_bfd_derive_misc_symbol_info): Treat undefined code
symbols and undefined symbols which no type in the same manner
	if the associated BFD symbol has BSF_FUNCTION set.  For a defined
	symbol which no type, select a SOM type based on the flags of the
	section containing the symbol.
	(som_slurp_symbol_type): Set BSF_FUNCTION for undefined ST_STUB
	or ST_CODE symbols (importing a non-function code symbol is
	meaningless in SOM).
	(som_set_reloc_info): Don't set "offset" to the section's vma; it
	should always start at zero.
1994-09-07 05:39:13 +00:00
Ian Lance Taylor 6ceff8e7d2 Minor tweaks to make COFF code support both new and old style linker. 1994-09-06 20:40:37 +00:00
Ian Lance Taylor 69645d10fb Add new style linker support to COFF backend. a29k only for now.
* cofflink.c: New file.
	* libcoff-in.h: Include bfdlink.h.
	(obj_coff_external_syms, obj_coff_strings): Define accessor macro.
	(obj_coff_sym_hashes): Define accessor macro.
	(struct coff_tdata): Add fields external_syms, strings, and
	sym_hashes.
	(struct coff_link_hash_entry): Define.
	(struct coff_link_hash_table): Define.
	(coff_link_hash_lookup, coff_link_hash_traverse): Define.
	(coff_hash_table): Define.
	(_bfd_coff_link_hash_table_create): Declare.
	(_bfd_coff_link_add_symbols, _bfd_coff_final_link): Declare.
	* coffcode.h (bfd_coff_backend_data): Add fields _bfd_relsz,
	_bfd_coff_swap_reloc_in, _bfd_coff_sym_is_global,
	_bfd_coff_compute_section_file_positions,
	_bfd_coff_relocate_section.
	(bfd_coff_relsz, bfd_coff_swap_reloc_in): Define.
	(bfd_coff_sym_is_global): Define.
	(bfd_coff_compute_section_file_positions): Define.
	(bfd_coff_relocate_section): Define.
	(coff_mkobject_hook): Initialize obj_raw_syment_count and
	obj_conv_table_size.
	(coff_compute_section_file_positions): Set target_index of all
	sections.  Set output_has_begun field.
	(coff_write_object_contents): Don't set target_index; now done by
	coff_compute_section_file_positions.  Remove obsolete handling of
	scn_base and data_base.  Don't bother to check that target_index
	is positive, since it always is.  Remove use of pad, which is
	always zero.  Check obj_raw_syment_count, not bfd_get_symcount,
	for the number of symbols, but only write them out if
	bfd_get_symcount is non-zero.
	(coff_slurp_symbol_table): Use obj_raw_syment_count, not
	bfd_get_symcount for the number of symbols.  Don't set
	obj_conv_table_size.
	(coff_sym_is_global): New static function or macro.
	(coff_slurp_reloc_table): Call coff_swap_reloc_in, not
	bfd_swap_reloc_in.
	(coff_bfd_link_hash_table_create): If coff_relocate_section is
	defined, define as _bfd_coff_link_hash_table_create.
	(coff_bfd_link_add_symbols): Similar change.
	(coff_bfd_final_link): Similar change.
	(coff_relocate_section): Define as NULL if not defined.
	(bfd_coff_std_swap_table): Initialize new fields.
	* coffgen.c (coff_real_object_p): Don't set obj_raw_syment_count
	and obj_conv_table_size here.
	(coff_count_linenumbers): Reindent.  If bfd_get_symcount is zero,
	add up the line numbers from the sections.
	(coff_write_symbols): Don't set bfd_get_symcount.
	(coff_pointerize_aux): Don't pointerize a nonpositive x_endndx
	field.
	(coff_get_normalized_symtab): Use obj_raw_syment_count, not
	bfd_get_symcount.
	(coff_print_symbol): If auxp->fix_end, print x_endndx value.
	* coffswap.h (coff_swap_reloc_in): Rename from bfd_swap_reloc_in.
	Reindent.  Change argument type to  PTR.
	* coff-a29k.c (coff_a29k_relocate_section): New static function.
	(coff_relocate_section): Define.
	* configure.in (a29kcoff_big_vec): Compile cofflink.o.
	* coff-alpha.c (alpha_ecoff_backend_data): Initialize new fields.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.
	* libcoff.h: Rebuilt.
	* Makefile.in: Rebuilt dependencies.
	(BFD32_BACKENDS): Add cofflink.o.
	(CFILES): Add cofflink.c.
1994-09-06 19:28:55 +00:00
Ken Raeburn de733a0edf * coffgen.c (coff_print_symbol, case bfd_symbol_print_all): Check for section
symbol, and print its aux fields with appropriate labels.
1994-09-06 18:30:06 +00:00
Ken Raeburn 358710a7eb Makefile.in (ALL_MACHINES): ADded cpu-arm.o. 1994-09-06 18:03:03 +00:00
Ian Lance Taylor e1728bee60 Tipos 1994-09-05 19:14:24 +00:00
Ken Raeburn 318b02b6b9 ARM Acorn/RISCiX target and host patches from Richard Earnshaw 1994-09-05 10:53:00 +00:00
Ken Raeburn 0443af3189 * reloc.c (enum bfd_reloc_code_real): Rewrote definition to use new "chew"
commands for simultaneous definition of enumerator and enumerator name table.
(bfd_get_reloc_code_name): New function, for retrieving a symbolic name
associated with an enumerator.

* libbfd.h, bfd-in2.h: Regenerated.
1994-09-02 18:21:41 +00:00
Jeff Law b905bde1a9 * som.c (som_write_fixups, case R_ENTRY): Handle case where no
unwind descriptor information is available.
1994-08-31 03:30:39 +00:00
Ian Lance Taylor 0822b56d66 * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add soname
argument, and use it to set DT_SONAME dynamic entry.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype.
	(bfd_elf64_size_dynamic_sections): Update prototype.
	* bfd-in2.h: Rebuilt.
1994-08-30 16:04:40 +00:00
Ian Lance Taylor b8520cf360 * coffgen.c (coff_real_object_p): Set obj_raw_syment_count.
(coff_get_normalized_symtab): Verify obj_raw_syment_count, rather
	than setting it.
1994-08-26 20:01:21 +00:00
Ian Lance Taylor fc10f31e8b * archive.c (bsd_write_armap): Remove host dependencies. 1994-08-25 19:50:26 +00:00
Ian Lance Taylor 435b470ec3 * aoutx.h (add_to_stringtab): Check for _bfd_stringtab_add error
before adding BYTES_IN_WORD.
1994-08-25 18:56:11 +00:00
Ian Lance Taylor 6d04c6d475 * coffgen.c (coff_find_nearest_line): Look for the best C_FILE,
not merely the first.
1994-08-25 15:58:43 +00:00
Ian Lance Taylor 715cde57f8 * coffgen.c (coff_write_alien_symbol): If we are not using the
symbol, clear the name so that it is not put in the string table.
	From Antti.Miettinen@ntc.nokia.com.
1994-08-25 14:46:10 +00:00
Ian Lance Taylor 5a53b1c178 * coffgen.c (coff_print_symbol): Cast pointer different to long
and use %ld to print it.
	* osf-core.c (osf_core_core_file_p): Remove unused variable
	dseccnt.
	* ecoffswap.h (ecoff_swap_ext_out): If ECOFF_64, clear remaining
	bytes in bits2.
1994-08-24 21:17:40 +00:00
Ian Lance Taylor 073e795f5e * configure.host, config.bfd: Change i[34]86 to i[345]86. 1994-08-24 16:41:48 +00:00
Ian Lance Taylor a74d15178f * coffgen.c (coff_real_object_p): Set obj_conv_table_size here,
rather than waiting until coff_slurp_symbol_table.
	(coff_write_alien_symbol): Just ignore BSF_DEBUGGING symbols.
	From Antti.Miettinen@ntc.nokia.com.
1994-08-24 16:32:40 +00:00
Ian Lance Taylor d37002222d * section.c (bfd_make_section_anyway): Fix failure check of
bfd_make_empty_symbol.  From Antti.Miettinen@ntc.nokia.com.
1994-08-24 16:29:17 +00:00
Ian Lance Taylor 1afd2380ea * aoutx.h (translate_to_native_sym_flags): Use the output_section
(and output_offset) if there is one.

	* aoutx.h (aout_link_check_archive_element): Discard the symbols
	if the archive element was not needed.

	* aoutx.h (aout_get_external_symbols): Ensure that a zero string
	index yields an empty string.
	(aout_link_write_symbols): If info->keep_memory is false, use name
	from original hash table entry, not from entry in *sym_hash.

	* aoutx.h (struct aout_final_link_info): Add fields contents,
	relocs, symbol_map and output_syms.
	(NAME(aout,final_link)): Work out the largest section size, reloc
	size, and number of symbols.  Use them to preallocate buffers that
	are large enough for all cases.
	(aout_link_input_bfd): Use preallocated symbol_map.
	(aout_link_write_symbols): Remove symbol_map argument; use
	preallocated symbol_map instead.  Change all callers.  Use
	preallocated output_syms.
	(aout_link_input_section): Remove symbol_map argument.  Change all
	callers.  Use preallocated contents and relocs.
	(aout_link_input_section_std): Remove symbol_map argument; use
	preallocated symbol_map instead.  Change all callers.
	(aout_link_input_section_ext): Likewise.
1994-08-24 15:59:40 +00:00
Ian Lance Taylor 81eb52b34d * targets.c (BFD_JUMP_TABLE_ARCHIVE): Add _update_armap_timestamp.
(bfd_target): Add field _bfd_update_armap_timestamp.
	* bfd.c (bfd_update_armap_timestamp): Define.
	* bfd-in2.h: Rebuilt.
	* libbfd-in.h (_bfd_noarchive_update_armap_timestamp): Define.
	(_bfd_archive_bsd_update_armap_timestamp): Declare.
	(_bfd_archive_coff_update_armap_timestamp): Define.
	* libbfd.h: Rebuilt.
	* archive.c (_bfd_write_archive_contents): Call
	bfd_update_armap_timestamp instead of checking for a BSD archive
	and calling bsd_update_armap_timestamp.
	(_bfd_archive_bsd_update_armap_timestamp): Rename from
	_bsd_update_armap_timestamp.  Don't assume that armap_datepos is
	already set.
	* aout-target.h (MY_update_armap_timestamp): Define if not already
	defined.
	* coff-rs6000.c (rs6000coff_update_armap_timestamp): Define.
	* ieee.c (ieee_update_armap_timestamp): Define.
	* libecoff.h (_bfd_ecoff_update_armap_timestamp): Define.
	* oasys.c (oasys_update_armap_timestamp): Define.
	* som.c (som_update_armap_timestamp): Define.
1994-08-22 21:20:12 +00:00
Ian Lance Taylor e914ed5219 * hash.c: Copy string hash functions from aoutx.h.
* aoutx.h: String hash functions moved to hash.c.  Retain
	simplified versions of add_to_stringtab and emit_stringtab.
	Change all callers to use new function and structure names.
	* libbfd-in.h (_bfd_stringtab_init, _bfd_stringtab_free): Declare.
	(_bfd_stringtab_size, _bfd_stringtab_add): Declare.
	(_bfd_stringtab_emit): Declare.
	* libbfd.h: Rebuilt.
1994-08-22 16:36:52 +00:00
Ian Lance Taylor 0ff4ca1eef Mon Aug 22 10:49:37 1994 Eric Youngdale (ericy@cais.cais.com)
* i386linux.c (linux_add_one_symbol): Create a fixup for any
	defined absolute symbol, not just GOT or PLT symbols.
	(linux_tally_symbols): Correct handling of references to defined
	symbols.
1994-08-22 15:00:26 +00:00
Ian Lance Taylor f494527192 Get ld -x -r to handle a.out set symbols correctly.
* aoutx.h (adjust_o_magic): If the .bss VMA was set outside of
	BFD, pad the .data section up to the VMA of the .bss section.
	(aout_link_add_symbols): If a set symbol does not get modified,
	treat it as a local symbol.
	(aout_link_write_symbols): Set the value of set symbols
	correctly.  Don't discard set symbols even if discarding local
	symbols.
	(aout_link_write_other_symbol): Don't abort on bfd_link_hash_new,
	since it can now happen for set symbols.
1994-08-18 21:48:23 +00:00
Ian Lance Taylor 32c765539c * elfcode.h (elf_fake_sections): Just check for ".rela" and
".rel", not ".rela." and ".rel."; make this work by checking
	use_rela_p.
	* elf32-i386.c (elf_i386_check_relocs): Just check for ".rel", not
	".rel."
	(elf_i386_size_dynamic_sections): Likewise.
	(elf_i386_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_check_relocs): Just check for
	".rela", not ".rela."
	(elf32_sparc_size_dynamic_sections): Likewise.
	(elf32_sparc_relocate_section): Likewise.
1994-08-18 21:33:07 +00:00
Ian Lance Taylor 7cc5cc22bb * linker.c (_bfd_generic_link_add_archive_symbols): Initialize
PASS to the old value + 1.
1994-08-17 20:58:47 +00:00
Ian Lance Taylor d83689d4de * coffgen.c (coff_get_normalized_symtab): If a C_FILE symbol has
no aux entries, use the symbol name as the file name.
	(coff_find_nearest_line): Look for the right C_FILE symbol, rather
	than always using the first one.  If there is a debugging symbol
	after a function symbol, skip it.  Add the section VMA to the line
	offset, since it was subtracted out in coff_slurp_line_table.
PR 5010.
1994-08-17 17:44:17 +00:00
Jeff Law fde543b5ff * som.c (som_prep_headers): If writing some form of an executable,
allocate and attach an exec header to the BFD private data.
	(som_begin_writing): Don't fill fields of the exec header based
	on BFD private data here (like the exec flags).  Do not write
	the exec header here.
	(som_write_headers): Instead do it here.
	* som.h (struct somdata): New field "exec_hdr" for the executable
	file header.
	(obj_som_exec_hdr): New accessor macro.
1994-08-16 23:11:59 +00:00
Ian Lance Taylor 969ceea035 * i386linux.c (linux_link_create_dynamic_sections): Create section
named .linux-dynamic, not .dynamic.
	(linux_add_one_symbol): Use .linux-dynamic, not .dynamic.
	(bfd_linux_size_dynamic_sections): Likewise.
	(linux_finish_dynamic_link): Likewise.
1994-08-16 04:15:50 +00:00
Ian Lance Taylor 9fbe895ae7 * coffgen.c (STRING_SIZE_SIZE): Define.
(coff_fix_symbol_name): Use STRING_SIZE_SIZE, not 4.
	(coff_write_symbols, build_string_table): Likewise.
	(coff_get_normalized_symtab): Likewise.
1994-08-15 22:07:29 +00:00
Ian Lance Taylor f07bb971a0 * libcoff-in.h (obj_symbol_slew): Don't define.
(struct coff_tdata): Remove unused fields index_slew, raw_linenos,
	and flags.
	* libcoff.h: Rebuilt.
	* coffcode.h (coff_mkobject): Don't initialize raw_linenos.
	(coff_mkobject_hook): Don't initialize flags.
1994-08-15 21:02:05 +00:00
Ian Lance Taylor a932d0ffb7 * aout-target.h (MY_zmagic_contiguous): Define as 0 if not already
defined.
	(MY(backend_data)): Use MY_zmagic_contiguous, not hardcoded 0.
	* i386linux.c (MY_zmagic_contiguous): Define.
1994-08-15 18:12:05 +00:00
Ian Lance Taylor 823609fe90 * elfcode.h (bfd_section_from_shdr): If a SHT_SYMTAB section in a
shared object has SHF_ALLOC set, create a BFD section for it.
	(elf_section_from_bfd_section): There may be a BFD section for a
	SHT_SYMTAB section.
1994-08-15 18:08:13 +00:00
Ian Lance Taylor e8fbe6d924 * coffcode.h (styp_to_sec_flags): Add name argument. If no flags
are recognized, chose section flags based on the name.
	(bfd_coff_backend_data): _bfd_styp_to_sec_flags_hook field: Add
	name argument.
	(bfd_coff_styp_to_sec_flags_hook): Add name argument.
	(coff_compute_section_file_positions): Don't adjust the section
	position by COFF_PAGE_SIZE unless SEC_ALLOC is set.
	* libcoff.h: Rebuilt.
	* coffgen.c (make_a_section_from_file): Pass section name to
	bfd_coff_styp_to_sec_flags_hook.
	* ecoff.c (_bfd_ecoff_styp_to_sec_flags): Add unused name
	argument.
	* libecoff.h (_bfd_ecoff_styp_to_sec_flags): Add name argument to
	prototype.
1994-08-15 16:26:06 +00:00
Ian Lance Taylor e9227b4255 * elfcode.h (section_from_elf_index): Correct check for invalid
section index.
1994-08-12 23:25:23 +00:00
Ian Lance Taylor 1c640609d8 * elfcode.h (elf_link_add_object_symbols): If there is no symbol
table, try using the dynamic symbol table.  From Eric Youngdale
	<ericy@cais.cais.com>.
1994-08-12 15:51:09 +00:00
Ian Lance Taylor e1f99f6068 * aoutx.h (adjust_z_magic): Make sure data section is padded to
page boundary when the VMA is set by the calling program.  From
	Eric Youngdale <ericy@cais.cais.com>.
1994-08-10 17:15:05 +00:00
Stan Shebs fb49a80173 Update to ns32k support, from Ian Dall (dall@hfrd.dsto.gov.au).
* aout-ns32k.c: Add declarations that were in aout-ns32k.h, change
	declarations to traditional form.
	(MY_reloc_howto, MY_put_reloc): Change from macro to function.
	(ns32k_relocate_contents): New function.
	* aout-ns32k.h: Remove.
	* cpu-ns32k.c: Add declarations that were in aout-ns32k.h, change
	declarations to traditional form.
	(ns32k_final_link_relocate): Call ns32k_relocate_contents.
	* netbsd532.c: Reformat to standards, add copyright notice.
	(ARCH): Don't define.
	(aout-ns32k.h): Don't include.
	* pc532-mach.c: Ditto.
1994-08-09 01:06:29 +00:00
Peter Schauer f20860cdbc * irix-core.c (irix_core_core_file_p): Ignore sections that
are not contained in the core file.
1994-08-07 13:26:46 +00:00
Jean Marie Diaz 7432993954 Fix up namespace handling in last patch. 1994-08-04 19:59:27 +00:00
Jean Marie Diaz 8337ee9d51 * coff-m68k.c (_bfd_coff_m68k_reloc_type_lookup): New function.
(coff_bfd_reloc_type_lookup): Define.
1994-08-04 16:38:05 +00:00
Jean Marie Diaz 203778cee1 * elfcode.h (elf_bfd_final_link): Force the vma of sections which
do not have SEC_ALLOC set to be 0.  This is needed to handle
	relocs against debugging sections.
1994-08-04 16:10:23 +00:00
Jean Marie Diaz 1b8a11d430 * coff-i960.c (coff_i960_relocate): Rewrote to change relocs
against locally defined symbols into relocs against section
	symbols, for VxWorks 5.1.
1994-08-03 20:51:59 +00:00
Jean Marie Diaz e696f6a9b9 Wed Aug 3 10:34:37 1994 Eric Youngdale (ericy@cais.cais.com)
* i386linux.c (linux_add_one_symbol): Only handle
	SHARABLE_CONFLICTS specially if BSF_CONSTRUCTOR is set.  Set hashp
	for a GOT or PLT symbol.  Set jump field of fixup for a PLT symbol.
	(linux_tally_symbols): Check section of real symbol.  When looking
	for a builtin fixup, check builtin and jump flags.  Create no more
	than one fixup, and always create one if the real symbol is in the
	absolute section.  Only strip absolute symbols.
1994-08-03 14:43:42 +00:00
David Henkel-Wallace 756b40d520 LynxOS changes 1994-08-03 13:45:11 +00:00
Jean Marie Diaz b2ea35c7ab * hp300hpux.c (BMAGIC): Define as HPUX_DOT_O_MAGIC, to make test
in aoutx.h work correctly.
1994-08-02 19:16:36 +00:00
Jean Marie Diaz 5e694c29a5 * coff-i960.c (coff_i960_relocate): New function.
(howto_rellong, howto_iprmed): Use it as special_function.
1994-08-02 15:26:26 +00:00
Jean Marie Diaz e0566e19aa * libbfd-in.h: Move declarations of bfd_read, bfd_write, bfd_seek,
bfd_tell, bfd_flush, and bfd_stat from here...
	* bfd-in.h: ...to here, to make them visible to programs which
	know more about the object file format than BFD does.
	* libbfd.h, bfd-in2.h: Rebuilt.
1994-08-02 14:48:21 +00:00
Jean Marie Diaz e21679173e Forgot to check this in. 1994-08-01 23:45:51 +00:00
Jean Marie Diaz 4ab1f94712 * elf64-sparc.c (ELF_MAXPAGESIZE): Define. 1994-08-01 23:29:31 +00:00
Jean Marie Diaz 99dd775492 ELF linker patches from Eric Youngdale <ericy@cais.cais.com>.
* elfcode.h (elf_link_create_dynamic_sections): Set type of
	_DYNAMIC to STT_OBJECT.
	(NAME(bfd_elf,record_link_assignment)): Always create hash table
	entry.  Set type to STT_OBJECT.
	(elf_link_output_extsym): Don't set type of weak defined symbol to
	STB_WEAK if symbol was referenced.
	* elf32-i386.c (elf_i386_create_dynamic_sections): Set type of
	_GLOBAL_OFFSET_TABLE to STT_OBJECT.
	(elf_i386_check_relocs): Ignore local PLT32 relocs.
	(elf_i386_relocate_section): Treat local PLT32 relocs as PC32.
1994-08-01 23:11:18 +00:00
Jean Marie Diaz 287e3ce228 Mon Aug 1 17:55:53 1994 Fred Fish (fnf@cygnus.com)
* ptrace-core.c (ptrace_unix_core_file_p):  Convert zalloc usage
	to bfd_zalloc.
1994-08-01 22:00:19 +00:00
Ian Lance Taylor 30e5ad97e9 * elfcode.h (elf_adjust_dynamic_symbol): Correct weak symbol
handling again.
1994-08-01 20:53:48 +00:00
Ian Lance Taylor d510fd893a * elfcode.h (elf_slurp_reloc_table): Don't try to read the relocs
if there aren't any.
1994-08-01 16:34:09 +00:00
Ian Lance Taylor abc61566c0 * configure.host (sparc-*-solaris2*): Use sysv4, not solaris2.
* hosts/solaris2.h: Remove.
	* config/solaris2.mh: Remove.
1994-08-01 16:16:47 +00:00
Jeff Law 58bbba79a2 * elf32-hppa.c, elf32-hppa.h: Update comment reflecting which
HPPA ELF spec the code implements.
1994-07-31 20:29:19 +00:00
Ken Raeburn b5b056fc38 i960xl changes (sanitized) 1994-07-27 00:21:43 +00:00
Ian Lance Taylor 9a402d7ac5 * elfcode.h (elf_adjust_dynamic_symbol): When handling a weak
symbol, correct check to see whether the equivalent normal symbol
	was referenced.
1994-07-26 19:34:14 +00:00
Ian Lance Taylor 374d2ef905 Add support for creating shared libraries under i386 ELF and SPARC
ELF.  Based on patches by Eric Youngdale <ericy@cais.cais.com>.
	* libelf.h (struct elf_link_hash_entry): Remove copy_offset field.
	Add got_offset and plt_offset fields.
	(ELF_LINK_HASH_REF_DYNAMIC_MULTIPLE): Don't define.
	(ELF_LINK_HASH_DEF_DYNAMIC_MULTIPLE): Don't define.
	(ELF_LINK_HASH_NEEDS_COPY): Define.
	(struct elf_backend_data): Add check_relocs field.
	(struct bfd_elf_section_data): Change relocs from PTR to
	Elf_Internal_Rela *.
	(struct elf_obj_tdata): Add local_got_offsets field.
	(elf_local_got_offsets): Define accessor macro.
	(bfd_elf32_link_create_dynamic_sections): Declare.
	(bfd_elf32_link_record_dynamic_symbol): Declare.
	(bfd_elf64_link_create_dynamic_sections): Declare.
	(bfd_elf64_link_record_dynamic_symbol): Declare.
	* elfcode.h (elf_slurp_reloc_table): Don't use the section data
	relocs field.
	(elf_link_record_dynamic_symbol): Make globally visible.  Use
	macro to rename to NAME(bfd_elf,link_record_dynamic_symbol).
	(elf_link_add_object_symbols): If creating a shared library, put
	make all local symbols dynamic.  Don't bother with the
	DYNAMIC_MULTIPLE flags.  Call the check_relocs backend function if
	it is defined.
	(elf_link_create_dynamic_sections): Make globally visible.  Use
	macro to rename to NAME(bfd_elf,link_create_dynamic_sections).  If
	creating a shared library, make sure that _DYNAMIC is added as a
	dynamic symbol.
	(elf_link_read_relocs): New function.
	(NAME(bfd_elf,record_link_assignment)): If creating a shared
	library, always create symbols, and always make them dynamic.
	(elf_bfd_final_link): Permit creation of shared libraries.
	(elf_link_input_bfd): Use elf_link_read_relocs to get the relocs.
	* elf.c (_bfd_elf_link_hash_newfunc): Don't initialize
	copy_offset.  Initialize got_offset and plt_offset.
	* elf32-target.h (elf_backend_check_relocs): Define as 0 if not
	defined.
	(elf32_bed): Initialize check_relocs field.
	* elf64-target.h (elf_backend_check_relocs): Define as 0 if not
	defined.
	(elf64_bed): Initialize check_relocs field.
	* elf32-i386.c (elf_howto_table): Change R_386_PLT32 and
	R_386_GOTPC to be pc_relative and pcrel_offset.
	(elf_i386_pic_plt0_entry): Define.
	(elf_i386_pic_plt_entry): Define.
	(elf_i386_create_dynamic_sections): Create a .got.plt section, and
	define _GLOBAL_OFFSET_TABLE_ at the start of it.  If creating a
	shared library, make sure that _GLOBAL_OFFSET_TABLE_ is added as a
	dynamic symbol.  Don't create .rel.bss if creating a shared
	library.
	(elf_i386_check_relocs): New function.
	(elf_i386_adjust_dynamic_symbol): Don't make a PLT entry if the
	symbol already has one.  When making a PLT entry, set plt_offset.
	Don't create a copy reloc when creating a shared library.  Don't
	set copy_offset, just set ELF_LINK_HASH_NEEDS_COPY.
	(elf_i386_allocate_dynamic_section): Remove.
	(elf_i386_size_dynamic_sections): Look through all the sections
	rather than assuming we know their names.  Remove any empty reloc
	or plt sections.  Only add a DT_DEBUG entry if not creating a
	shared library.  Only add a DT_PLTGOT entry if there is a PLT.
	Add a DT_TEXTREL entry if required.
	(elf_i386_relocate_section): Permit undefined symbols when
	creating a shared library.  Handle the special relocation types
	specially.
	(elf_i386_finish_dynamic_symbol): Create a PLT entry if plt_offset
	is set.  If creating a shared library, produce a PIC PLT entry.
	Only mark a PLT symbol as undefined if it was not defined by a
	regular object file.  Create a GOT entry if got_offset is set.
	Create a copy reloc if ELF_LINK_HASH_NEEDS_COPY is set.
	(elf_i386_finish_dynamic_sections): Change the handling of
	DT_RELSZ to simply subtract out the size of .rel.plt.  If creating
	a shared library, produce PIC PLT code.
	(elf_backend_check_relocs): Define.
	* elf32-sparc.c (elf_sparc_howto_table): Change R_SPARC_GOT10,
	R_SPARC_GOT22, and R_SPARC_PC10 to not warn about reloc overflow.
	(elf32_sparc_create_dynamic_sections): If creating a shared
	library, make sure that _GLOBAL_OFFSET_TABLE_ is added as a
        dynamic symbol, and set the type to STT_OBJECT.  Likewise for
        _PROCEDURE_LINKAGE_TABLE_.  Don't create .rel.bss if creating a
        shared library.
	(elf32_sparc_check_relocs): New function.
	(elf32_sparc_adjust_dynamic_symbol): Don't make a PLT entry if the
	symbol already has one.  When making a PLT entry, set plt_offset.
	Don't create a copy reloc when creating a shared library.  Don't
	set copy_offset, just set ELF_LINK_HASH_NEEDS_COPY.
	(elf32_sparc_allocate_dynamic_section): Remove.
	(elf32_sparc_size_dynamic_sections): Look through all the sections
	rather than assuming we know their names.  Only add a DT_DEBUG
	entry if not creating a shared library.  Add a DT_TEXTREL entry if
	required.
	(elf32_sparc_relocate_section): Permit undefined symbols when
	creating a shared library.  Handle the special relocation types
	specially.
	(elf32_sparc_finish_dynamic_symbol): Create a PLT entry if plt_offset
	is set.  Only mark a PLT symbol as undefined if it was not defined
	by a regular object file.  Create a GOT entry if got_offset is
	set.  Create a copy reloc if ELF_LINK_HASH_NEEDS_COPY is set.
	(elf32_sparc_finish_dynamic_sections): Store dynobj in a local
	variable.
	(elf_backend_check_relocs): Define.
1994-07-26 17:18:37 +00:00
Stan Shebs caede51576 * configure.in (pc532mach_vec): Change to pc532machaout_vec.
* config.bfd (ns32k-*-netbsd*): Use ns32k-nbsd as bfd_name.
	* Makefile.in (ALL_MACHINES): Add cpu-ns32k.o.
	(BFD32_BACKENDS): Add aout-ns32k.o, netbsd532.o, m88kmach3.o,
	pc532-mach.o.
	* targets.c (pc532machaout_vec): Use instead of pc532mach_vec.
	* config/pc532-mach.mt (DEFAULT_VECTOR): Ditto.
	(SELECT_VECS): Remove.
	* config/ns32k-nbsd.mt: New file, was ns32k-netbsd.mt.
	* config/ns32k-netbsd.mt: Remove, name too long.
1994-07-25 20:00:10 +00:00
Ian Lance Taylor f2c2e75ce0 Forgot to save my buffer before last check in. 1994-07-22 23:50:35 +00:00
Ian Lance Taylor 2aaaab7ceb * aoutx.h (NAME(aout,some_aout_object_p)): Just check
STAT_FOR_EXEC, don't check MACH.
	* m88kmach3.c (MACH): Don't define.
	* config/i386-mach3.mt (TDEFINES): Define STAT_FOR_EXEC.
	* config/m88k-mach3.mt (TDEFINES): Likewise.
	* config/mips-mach3.mt (TDEFINES): Likewise.
1994-07-22 15:13:33 +00:00
Stan Shebs bb99a7328c * i386mach3.c: Reverted to version from before Jul 5 1994 changes.
Un-break gas/binutils/ld for FSF.
1994-07-22 00:28:17 +00:00
Ian Lance Taylor f42fe1599a * reloc.c (struct reloc_howto_struct): Remove special_function1.
It's the wrong way to do things.
	(HOWTO): Change accordingly.
	(HOWTO2): Remove.
	(_bfd_final_link_relocate): Remove references to
	special_function1.
	* bfd-in2.h: Rebuilt.
	* aoutx.h (aout_link_input_section_std): Remove references to
	special_function1.
	(aout_link_reloc_link_order): Likewise.
1994-07-21 16:34:59 +00:00
Ian Lance Taylor bf73e4f3fe * libelf.h (ELF_LINK_HASH_DEFINED_WEAK): Define.
* elfcode.h (elf_link_add_object_symbols): If symbol is defined as
	weak, set ELF_LINK_HASH_DEFINED_WEAK.
	(elf_link_output_extsym): If symbol is defined as weak, mark it
	STB_WEAK.
1994-07-17 02:15:24 +00:00
Ian Lance Taylor ea61717495 * libelf.h (struct bfd_elf_section_data): Add relocs field.
(shdr_name): Remove; unused.
	* elfcode.h (elf_slurp_reloc_table): Rewrote to handle both REL
	and RELA relocs.  Free up the unswapped relocs.  Permit the relocs
	to be cached in the section_data.  Correct the reloc address.
	(elf_slurp_reloca_table): Remove.
	(elf_canonicalize_reloc): Rewrote.
	(elf_link_input_bfd): Permit the relocs to be cached in the
	section data.
1994-07-17 01:15:42 +00:00
Stan Shebs d9840ab79e * config.bfd (m88*-harris-cxux*): Recognize.
* hosts/harris.h (POSIX_UTIME, HAVE_PROCFS): Define.
1994-07-16 21:08:41 +00:00
Stan Shebs ef8b133d8c * configure.host (m68*-atari-sysv4*): New host.
(m68*-cbm-sysv4*): Use m68kv4 instead of amix.
	* hosts/amix.h: Remove.
	* hosts/m68kv4.h: New file, was amix.h.
1994-07-16 21:02:53 +00:00
Ken Raeburn 1fb83be62b NS32K changes from Ian Dall.
Note: Some of the ns32k-specific files do require gcc to compile at present.
This will be fixed.
1994-07-14 21:35:54 +00:00
Stan Shebs a307efdfac * coff-sparc.c (sparccoff_vec): Have leading underscores. 1994-07-14 18:50:22 +00:00
Peter Schauer 57a814a93e * aix386-core.c, aoutf1.h, cisco-core.c, elfcode.h, hppabsd-core.c,
hpux-core.c, irix-core.c, lynx-core.c, osf-core.c, ptrace-core.c,
	rs6000-core.c, trad-core.c:  Remove SEC_ALLOC flag from .reg
	sections, .reg sections are not allocated and contain debug
	information only.
	* osf-core.c (make_bfd_asection, osf_core_core_file_p):  Use
	bfd_make_section_anyway instead of building unique section names.
1994-07-12 19:14:09 +00:00
Ian Lance Taylor 840846dac5 * libelf.h (bfd_elf32_swap_symbol_in): Declare.
(bfd_elf32_swap_symbol_out): Declare.
	(bfd_elf64_swap_symbol_in, bfd_elf64_swap_symbol_out): Declare.
	* elf32-hppa.c (elf32_hppa_args_hash_table_init): Correct cast.
1994-07-12 16:13:05 +00:00
Ian Lance Taylor 42ec46c361 * aout-encap.c (ARCH): Don't define. Obsolete.
* aout0.c, aoutx.h, gen-aout.c, hp300bsd.c, hp300hpux.c: Likewise.
	* i386aout.c, i386bsd.c, i386dynix.c, i386linux.c: Likewise.
	* i386lynx.c, m68klynx.c, mipsbsd.c, netbsd386.c: Likewise.
	* newsos3.c, sparclynx.c, sunos.c: Likewise.
1994-07-12 15:46:32 +00:00
Ian Lance Taylor 18938e4d3e * section.c (STD_SECTION): Make the sixth argument boolean, not
the seventh.  From gary@tuva.pacsemi.oz.au (gary kopff).
1994-07-12 00:12:19 +00:00
David Henkel-Wallace 4852416e2a Sun Jul 10 09:12:02 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
* aoutx.h (bfd_free_cached_info): Change name of FREE to BFCI_FREE
        in order not to collide with LynxOS's definition of FREE in
        /usr/include/sys/proc.h
1994-07-10 16:15:07 +00:00
Peter Schauer fd4913f196 * aoutx.h (howto_table_std): Add entry for GOT relocations
which are present in sun3 shared libraries, to avoid assertions
	when reading the dynamic relocations.
1994-07-07 17:11:58 +00:00
Jeff Law 48530c25d3 * som.h (R_HPPA_COMPLEX): Fix dumb typo. 1994-07-07 16:22:01 +00:00
Ian Lance Taylor 874a43273c * elfcode.h (elf_link_output_sym): Don't call output_symbol_hook
if it is NULL.
1994-07-06 23:33:02 +00:00
Peter Schauer 5fb54939a9 * coff-alpha.c (alpha_ecoff_mkobject_hook): New hook to
additionally copy object type information from the alpha file
	header to the BFD flags.
	(alpha_ecoff_backend_data):  Use it.
	(ecoffalpha_little_vec):  Add DYNAMIC to object_flags.
	* aout64.c:  Fix typo in conditional QMAGIC definition.
1994-07-06 07:53:31 +00:00
Jeff Law 2c0f3abc50 * hppabsd-core.c (hppabsd_core_core_file_p): Sanity check the
value of clicksz to help weed out non HPPA BSD core files.
1994-07-06 06:17:06 +00:00
Stan Shebs 11676adc14 Mach 3 support.
* config.bfd (m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*):
	New targets.
	* configure.host (i[34]86-*-mach3*, ns32k-*-mach3*): Recognize
	"mach3" instead of "mach".
	(m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*): New hosts.
	* targets.c (m88kmach3_vec): New target vector.
	(bfd_target_vector): Add i386mach3_vec and m88kmach3_vec, but
	inside #if 0.
	* aoutx.h (some_aout_object_p) [MACH]: Recognize executables by
	checking for execute permission, instead of looking at entry
	point.
	* i386mach3.c: Update, define MACH, N_TXTOFF, N_TXTADDR,
	N_SHARED_LIB, don't include aout/*.h files, etc.
	* m88kmach3.c: New file, m88k Mach 3 target.
	* config/m88k-mach3.mt,	config/mips-mach3.mt: New files, target
	makefile fragments.
	* config/i386mach3.mh, config/m88kmach3.mh, config/mipsmach3.mh:
	New files, host	makefile fragments.
	* hosts/m88kmach3.h, hosts/mipsmach3.h: New files, host definitions.
1994-07-05 21:50:43 +00:00
Ian Lance Taylor 71edd06df7 * elfcode.h (swap_out_syms): Get alignment of common symbol from
st_value field of saved ELF symbol information, if there is any.
1994-07-05 18:05:03 +00:00
Jeff Law edf7c1e4fe * som.h (R_HPPA_COMPLEX): Define.
* elf32-hppa.h (R_HPPA_COMPLEX): Define.
	(elf32_hppa_reloc_type): Delete R_PARISC_STUB_CALL_17.
1994-07-05 01:19:31 +00:00
Steve Chamberlain eeaed1957a * section.c (bfd_get_section_contents): Put in parens to get
precedence right.
1994-06-28 01:09:50 +00:00
Peter Schauer 5e16521ab7 Add Solaris BCP (the part of Solaris which allows it to run
SunOS4 a.out files) core file handling.
	* aoutf1.h (external_solaris_bcp_core, swapcore_solaris_bcp):
	New structure and its swap in function.
	(internal_sunos_core):  New member c_data_addr, to receive the
	start address of the data section in the core file.
	(swapcore_sun3, swapcore_sparc, sunos4_core_file_p):  Use it.
	(sunos4_core_file_p):  Recognize Solaris BCP core file.
	(sunos4_core_file_matches_executable_p):  Always indicate match
	for Solaris BCP core files.
1994-06-24 16:18:35 +00:00
Ian Lance Taylor 8af74670df Preliminary support for generating shared libraries, from Eric
Youngdale <ericy@cais.cais.com>.
	* elfcode.h (prep_headers): If DYNAMIC, set e_type to ET_DYN.
	(elf_link_add_object_symbols): If generating a shared library,
	create dynamic sections for first input BFD with the right format.
	(elf_link_create_dynamic_sections): Don't create .interp section
	if creating a shared library.
	(elf_link_input_bfd): Skip dynamic sections in input file.
	(elf_bfd_final_link): If creating a shared library, it's OK for
	dynobj to have sections which are not SEC_IN_MEMORY.
	* elf32-i386.c (elf_i386_size_dynamic_sections): Only set .interp
	section if not creating a shared library.
	* elf32-sparc.c (elf_sparc_size_dynamic_sections): Likewise.
1994-06-23 21:36:03 +00:00
Ian Lance Taylor 51fc377bab * elfcode.h (elf_object_p): Don't set DYNAMIC just because there
is an SHT_DYNAMIC section.
1994-06-23 20:14:58 +00:00
David MacKenzie 1f8b3b5746 Change --with-targets to --enable-targets, per GNU coding standards. 1994-06-23 20:08:57 +00:00
Ian Lance Taylor 135a68152c * linker.c (_bfd_generic_link_add_archive_symbols): Initialize
pass from abfd->archive_pass, and save it there as well.
1994-06-23 00:36:38 +00:00
Ken Raeburn 2e66a62730 linker.c (FAIL): Undefine macro before defining as enum. 1994-06-23 00:10:06 +00:00
Ken Raeburn 3bf36e67e2 config.bfd (powerpc-*-elf*): New target, like powerpc-*-sysv4*. 1994-06-22 23:40:17 +00:00
Ian Lance Taylor a537cb21bb * hash.c (bfd_hash_allocate): Don't call bfd_set_error if
obstack_alloc returns NULL unless the size is non-zero.

	* linker.c (archive_hash_allocate): Define.
	(_bfd_generic_link_add_archive_symbols): Use archive_hash_allocate
	rather than obstack_alloc, for clarity.
1994-06-22 22:37:54 +00:00
Ian Lance Taylor 66f2c66f93 * elfcode.h (elf_get_reloc_upper_bound): Correct. 1994-06-22 20:00:05 +00:00
Ian Lance Taylor d81843e864 * aout64.c (BMAGIC, QMAGIC): Define if not already defined. From
Peter Schauer <pes@regent.e-technik.tu-muenchen.de>.
1994-06-22 19:38:57 +00:00
Ian Lance Taylor 0630aba528 Linux ZMAGIC support from Eric Youngdale <ericy@cais.cais.com>.
* libaout.h (struct aoutdata): Add field zmagic_disk_block_size.
	* aout-target.h (MY(callback)): Only set alignment according to
	architecture if the section sizes are aligned to that alignment,
	for backward compatibility.
	(MY(set_sizes)): Initialize zmagic_disk_block_size field.
	* aoutx.h (adjust_z_magic): Set ztih if using q_magic_format.  Set
	text section filepos to zmagic_disk_block_size if not ztih.  Use a
	different padding algorithm if not ztih.
	* i386linux.c (MY_text_includes_header): Don't define.
1994-06-22 19:13:55 +00:00
Ian Lance Taylor 4587b57831 * aoutx.h (aout_link_check_ar_symbols): Just skip N_STAB and N_FN
symbols; don't look them up in the hash table.  From
        ralphc@pyramid.com (Ralph Campbell).
1994-06-22 14:55:58 +00:00
Ian Lance Taylor badd23e323 * section.c (bfd_abs_section): Make const.
(bfd_abs_section_ptr, bfd_is_abs_section): Define.
	(bfd_und_section): Make const.
	(bfd_und_section_ptr, bfd_is_und_section): Define.
	(bfd_com_section): Make const.
	(bfd_com_section_ptr): Define.
	(bfd_ind_section): Make const.
	(bfd_ind_section_ptr, bfd_is_ind_section): Define.
	(bfd_abs_symbol, bfd_com_symbol): Make const.
	(bfd_und_symbol, bfd_ind_symbol): Likewise.
	(global_syms): Cast initialization of section field.
	(STD_SECTION): Define as const, and cast initializations.
	* bfd-in2.h: Rebuilt.
	* Many files: Change uses of bfd_abs_section, etc., to use
	bfd_abs_section_ptr or bfd_is_abs_section, etc.
1994-06-21 16:47:07 +00:00
Ian Lance Taylor 2f3508ad05 * Many files: change all bfd_target vectors to be const. Change
all uses of bfd_target * to be const bfd_target *.  Change
	bfd_target_vector and bfd_default_vector arrays to be const
	bfd_target * const *.
1994-06-20 21:55:45 +00:00
Ian Lance Taylor 75f3ef7a63 * ecoff.c, libecoff.h, ecoffswap.h, coff-alpha.c, coff-mips.c,
elf32-mips.c: Renamed all externally visible ECOFF routines which
	are local to BFD to start with _bfd_ecoff instead of just ecoff.
1994-06-20 19:39:15 +00:00
Ian Lance Taylor aac6b32f31 * ecoff.c (ecoff_swap_tir_in): Change input argument to const.
(ecoff_swap_tir_out): Likewise.
	(ecoff_swap_rndx_in, ecoff_swap_rndx_out): Likewise.
	(ecoff_slurp_symbolic_info): Add new arguments to correspond to
	read_debug_info entry point in ecoff_debug_swap structure.
	Change all calls.
	* libecoff.h (ecoff_slurp_symbolic_info): Change declaration.
	* ecoffswap.h (ecoff_swap_tir_in, ecoff_swap_tir_out): Declare.
	(ecoff_swap_rndx_in, ecoff_swap_rndx_out): Declare.
	* coff-alpha.c (alpha_ecoff_backend_data): Initialize new
	ecoff_debug_swap fields.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.
	* elf32-mips.c (mips_elf_read_ecoff_info): Undefine READ.
	(mips_elf_ecoff_debug_swap): Initialize new ecoff_debug_swap
	fields.
	* configure.in (bfd_elf32_bigmips_vec): Use ecoff.o and
	ecofflink.o.
	(bfd_elf32_littlemips_vec): Likewise.
	(ecoff_big_vec, ecoff_little_vec): Likewise.
	(ecoffalpha_little_vec): Likewise.
	* Makefile.in (BFD_LIBS): Remove ecoff.o and ecofflink.o.
	(BFD32_BACKENDS): Add ecoff.o and ecofflink.o.
1994-06-20 18:26:55 +00:00
Ian Lance Taylor 6c8fa8e62c * aoutx.h (NAME(aout,final_link)): Check flavour of sub, not abfd,
when computing reloc sizes.  From Eric Youngdale
	<ericy@cais.cais.com>.
	* elfcode.h (elf_bfd_final_link): Don't try to compute maximum
	reloc count or size for a non-ELF file.
1994-06-20 15:51:28 +00:00
Ian Lance Taylor 6fea065949 * mipsbsd.c (MY_final_link_callback): Define to avoid warning. 1994-06-20 15:25:58 +00:00
Ian Lance Taylor 263a3f176a * hp300hpux.c (MY_final_link_callback): Define to avoid warning.
(BMAGIC, QMAGIC): Define; used by aoutx.h.
	(MY(slurp_symbol_table)): Change translate_from_native_sym_flags
	calls to use new parameters.
1994-06-20 15:11:34 +00:00
Ian Lance Taylor 785e2b52bc * aout-target.h (MY(callback)): Set the alignments of the text,
data and bss sections after determining the architecture.
1994-06-17 18:49:39 +00:00
Jeff Law 9fefc1befc * libhppa.h (bfd_hppa_insn2fmt, hppa_rebuild_insn): Make INLINE. 1994-06-17 18:11:17 +00:00
Jeff Law 83b69190b3 * elf32-hppa.h (elf_hppa_final_processing): Delete decl. 1994-06-17 17:18:25 +00:00
Jeff Law c46b8ed7e6 * elfcode.h (elf_link_input_bfd): Don't try to read local symbols
if there aren't any in the input file.
1994-06-17 05:39:55 +00:00
Ian Lance Taylor e3400040fa * config.bfd: If second argument is ``_'', then, instead of
echoing config file name, echo whether target uses leading
	underscores on symbol names.  Add appropriate settings to
	different cases.  Used by binutils/configure.in to set default for
	c++filt.
1994-06-16 21:58:48 +00:00
Ian Lance Taylor 0ff5d3a69a * elfcode.h (elf_bfd_final_link): If trying to generate a shared
object, warn and return false.
1994-06-16 19:30:49 +00:00
Ian Lance Taylor 04003b573d Thu Jun 16 14:25:22 1994 Eric Youngdale (ericy@cais.cais.com)
* i386linux.c: Many new functions and definitions for linker
	support for Linux shared libraries.
	* bfd-in.h (bfd_linux_size_dynamic_sections): Declare.
	* bfd-in2.h: Rebuild.
1994-06-16 18:29:21 +00:00
Ian Lance Taylor c1f84521bf * libelf.h (struct elf_obj_tdata): New field dt_needed_name.
(elf_dt_needed_name): New accessor macro.
	* elfcode.h (elf_link_add_object_symbols): If elf_dt_needed_name
	is set, use that instead of the filename for the DT_NEEDED dynamic
	entry.
	* elf.c (bfd_elf_set_dt_needed_name): New function.
	* bfd-in.h (bfd_elf_set_dt_needed_name): Declare.
	* bfd-in2.h: Rebuilt.
1994-06-16 00:01:32 +00:00
Ken Raeburn 485dc654e2 comment on v9 stuff 1994-06-15 23:27:54 +00:00
Ian Lance Taylor 7c726b6625 * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add sinterpptr
argument, and set it to the .interp section.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuilt.
1994-06-15 19:58:59 +00:00
Ian Lance Taylor f1d42c0476 * coff-sparc.c (SWAP_OUT_RELOC_EXTRA): Define to clear the r_spare
field of the reloc rather than letting it be garbage.
1994-06-15 19:54:15 +00:00
Ian Lance Taylor aeef32f01c * archive.c (bfd_slurp_armap): Recognize __.SYMDEF/ as well as
__.SYMDEF; the former was used in old Linux archives.  From
	jrs@world.std.com (Rick Sladkey).
1994-06-15 17:22:41 +00:00
Ian Lance Taylor f7d2fa4455 * i386linux.c (i386linux_write_object_contents): Define; like
MY(write_object_contents) in aout-target.h, but set MACHTYPE to
	M_386.  From jrs@world.std.com (Rick Sladkey).
	(MY_write_object_contents): Define.
1994-06-15 17:15:03 +00:00
Ian Lance Taylor 2cd086e387 * aoutx.h (translate_from_native_sym_flags): Treat N_SETV symbols
as N_DATA symbols.
	(aout_link_add_symbols): Likewise.
1994-06-15 15:29:44 +00:00
Ian Lance Taylor d17fc4c990 * aoutx.h: Rewrite symbol duplicate elimination to use BFD hash
tables.
	(struct stringtab_entry, struct stringtab_data): Remove.
	(HASHMAXLEN, HASH_CHAR, hash, compare, log2, emit_strtab): Remove.
	(struct strtab_hash_entry, struct strtab_hash): Define.
	(strtab_hash_newfunc, strtab_hash_lookup): Define.
	(stringtab_free, emit_stringtab): Define.
	(stringtab_init, add_to_stringtab): Rewrite.
	(NAME(aout,write_syms)): Use new stringtab code.
	(struct aout_final_link_info, NAME(aout,final_link)): Likewise.
	(aout_link_write_symbols, aout_link_write_other_symbol): Likewise.
1994-06-15 05:48:14 +00:00
Ian Lance Taylor f5419a5908 * libaout.h (struct aoutdata): Add q_magic_format to subformat
enum.
	* aout-target.h (MY_bfd_copy_private_bfd_data): Define as function
	if not already defined.  Copy subformat information.
	(MY_text_includes_header): Define as 0 if not already defined.
	(MY(backend_data)): Use MY_text_includes_header rather than 0.
	(MY_final_link_callback): Rename from final_link_callback, and
	define only if MY_final_link_callback is not already defined.
	(MY_bfd_final_link): Rename use of final_link_callback to
	MY_final_link_callback.
	* aoutx.h (NAME(aout,some_aout_object_p)): Handle QMAGIC like
	ZMAGIC, but set the subformat to q_magic_format.  Abort if the
	magic number if not recognized.
	(adjust_z_magic): Use QMAGIC if q_magic_format.
	* i386linux.c (MY_text_includes_header): Define as 1.
	(i386linux_bfd_final_link): New static function.
	(MY_bfd_final_link): Define as i386linux_bfd_final_link.

	* aoutx.h (translate_to_native_sym_flags): Check both section and
	output_section against sections of abfd.
1994-06-14 22:04:54 +00:00
Ian Lance Taylor ac9ed09667 For PR 4865.
* libecoff.h (struct ecoff_link_hash_entry): Change type of
	written from boolean to char.  Add new field small.
	* ecoff.c (ecoff_link_hash_newfunc): Initialize written to 0
	rather than false.  Initialize small to 0.
	(ecoff_link_add_externals): If ECOFF type is scSUndefined, set
	small.  If small is set, and hash table type is common, force the
	symbol into a section named SCOMMON and change the ECOFF type from
	scCommon to scSCommon.
	(ecoff_link_write_external): Set written to 1 rather than true.
	* coff-mips.c (mips_relocate_section): Correct JMPADDR reloc
	overflow check to consider section VMA of input file.
1994-06-14 17:06:08 +00:00
Ian Lance Taylor 9ae74960a8 * aoutf1.h (aout_32_sunos4_write_object_contents): Handle a
machine type of 68000.
	* aoutx.h (NAME(aout,machine_type)): Add new argument unknown.
	Set *unknown to true if machine type is really unknown, as opposed
	to M_UNKNOWN for the 68000.
	(NAME(aout,set_arch_mach)): Change NAME(aout,machine_type) call
	accordingly.
	* libaout.h (NAME(aout,machine_type)): Add new argument to
	prototype.
1994-06-13 18:25:12 +00:00
Jeff Law 8117e1ea9a * som.c (EXEC_AUX_ID): Define based on availablity of HPUX_AUX_ID
or HIUX_AUX_ID.
	(som_begin_writing): Use EXEC_AUX_ID instead of HPUX_AUX_ID.
	(som_write_armap): Use CPU_PA_RISC1_0 as the magic number.  Note
	som.c is careful to always define CPU_PA_RISC1_0.
1994-06-13 02:31:43 +00:00
Ian Lance Taylor 4298e311fe Add weak symbols as an extension to a.out.
* aoutx.h (sym_in_text_section): Don't define.
	(sym_in_data_section, sym_in_bss_section): Likewise.
	(sym_is_undefined, sym_is_global_defn): Likewise.
	(sym_is_debugger_info, sym_is_fortrancommon): Likewise.
	(sym_is_absolute, sym_is_indirect): Likewise.
	(translate_from_native_sym_flags): Rewrite for clarity.  Rearrange
	arguments and change caller.  Handle weak symbols.
	(translate_to_native_sym_flags): Likewise.
	(aout_link_check_ar_symbols): Don't ignore weak symbols.  Pull
	object in from archive if a weak defintion is found for an
	existing undefined symbol.
	(aout_link_add_symbols): Put all cases in switch.  Set flags of an
	undefined symbol to 0.  Handle weak symbols.
	(aout_link_write_symbols): Handle weak symbols.
	(aout_link_write_other_symbol): Likewise.
	(aout_link_input_section_std): Likewise.
	(aout_link_input_section_ext): Likewise.
	* sunos.c (sunos_write_dynamic_symbol): Likewise.
1994-06-11 20:40:59 +00:00
Ian Lance Taylor 4f019d0445 * aoutx.h (NAME(aout,canonicalize_reloc)): Handle .bss section.
(NAME(aout,get_reloc_upper_bound)): Likewise.
1994-06-10 19:00:28 +00:00
Ian Lance Taylor 22aabad533 * coff-i960.c (coff_i960_reloc_type_lookup): Add BFD_RELOC_CTOR.
* linker.c (_bfd_generic_link_write_global_symbol): Don't assume
	the section of a common symbol is not NULL.
1994-06-10 17:27:22 +00:00
Ian Lance Taylor 1b88cd182c * aoutx.h (aout_get_external_symbols): Don't try to read the
strings if there are no symbols.
	(aout_link_write_other_symbol): Use the output section when
	working out the type.
1994-06-09 03:59:22 +00:00
Ian Lance Taylor b9ac0a53fd * elfcode.h (assign_section_numbers): Put shstrtab, symtab and
strtab sections at end of file.  Avoids bug in some versions of
	SVR4 strip.  From Eric Youngdale <eric@tantalus.nrl.navy.mil>.
1994-06-07 20:20:05 +00:00
Ian Lance Taylor d38eee518f * coffcode.h (styp_to_sec_flags): If COFF_PAGE_SIZE is defined,
set SEC_DEBUGGING for STYP_INFO sections.
	(coff_compute_section_file_positions): If COFF_PAGE_SIZE is
	defined, and D_PAGED is set, set the file position equal to the
	section VMA modulo COFF_PAGE_SIZE.
	* coffgen.c (coff_real_object_p): If F_EXEC is set, set D_PAGED.
	* coff-i386.c: Set D_PAGED in BFD target.
	(COFF_PAGE_SIZE): Define.
	* coff-m68k.c, coff-sparc.c: Likewise.
1994-06-07 17:48:00 +00:00
Ian Lance Taylor e6667b2bc3 * elfcode.h (bfd_section_from_shdr): Don't turn a reloc section
into a BFD section just because SHF_ALLOC is set; require that it
	not use the normal symbol table.
	(elf_section_from_bfd_section): Corresponding change.
1994-06-06 23:59:27 +00:00
Ian Lance Taylor 118e8d1c7d Better indirect and warning symbol handling inspired by Stuart
Quick <stuck@cs.man.ac.uk>.
	* linker.c (enum link_action): Add REF, MIND, CWARN, REFC.
	(link_action): Change UNDEF_ROW/def and UNDEFW_ROW/def from NOACT
	to REF.  Change UNDEF_ROW/indr and UNDEFW_ROW/indr from CYCLE to
	REFC.  Change DEF_ROW/indr and COMMON_ROW/indr from CYCLE to MDEF.
	Change DEFW_ROW/indr from CYCLE to NOACT.  Change INDR_ROW/indr
	from MDEF to MIND.  Change INDR_ROW/warn from WARNC to CYCLE.
	Change WARN_ROW/def and WARN_ROW/indr from MWARN to CWARN.  Change
	WARN_ROW/com from MWARN to WARN.  Change WARN_ROW/warn from NOACT
	to CYCLE.  Change SET_ROW/warn from WARNC to CYCLE>
	(_bfd_generic_link_add_one_symbol): Handle REF, MIND, CWARN and
	REFC.  If a new indirect symbol has been referenced, push the
	reference down to the symbol it points to.  FIx handling of WARN.
	* aoutx.h (translate_from_native_sym_flags): If N_WARNING, don't
	clobber e_type of next symbol.
	(translate_to_native_sym_flags): Likewise.
	(aout_link_write_symbols): Loop on bfd_link_hash_warning as well
	as bfd_link_hash_indirect.
1994-06-06 21:54:54 +00:00
Ian Lance Taylor 35fee729f2 * libaout.h (struct aout_link_hash_entry): New field written.
* aoutx.h (NAME(aout,link_hash_newfunc)): Initialize written.
	(aout_link_write_symbols): Use written, not root.written.
	(aout_link_write_other_symbol): Likewise.
	* sunos.c (sunos_scan_dynamic_symbol): Likewise.
	* libecoff.h (struct ecoff_link_hash_entry): New field written.
	* ecoff.c (ecoff_link_hash_newfunc): Initialize written.
	(ecoff_link_write_external): use written, not root.written.
	* genlink.h (struct generic_link_hash_entry): New field written.
	* linker.c (_bfd_link_hash_newfunc): Don't initialize written.
	(generic_link_hash_newfunc): Initialize written.
	(_bfd_generic_link_output_symbols): Use written, not root.written.
	(_bfd_generic_link_write_global_symbol): Likewise.
	(_bfd_generic_reloc_link_order): Likewise.
1994-06-06 18:42:38 +00:00
Ian Lance Taylor 469984d1f6 * libecoff.h (ecoff_data_type): Add linker field.
* ecoff.c (ecoff_write_object_contents): Check new tdata linker
	field, rather than outsymbols being non-NULL, to decide whether to
	output the symbols and relocs.
	(ecoff_bfd_final_link): Set new tdata linker field to true.
1994-06-06 17:44:34 +00:00
Ian Lance Taylor 30f34d07c7 * ecoff.c (ecoff_bfd_copy_private_bfd_data): Don't try to copy
data to a non-ECOFF file.
1994-06-06 16:49:09 +00:00
Ian Lance Taylor d8d67d6624 * libbfd-in.h: Add warning that libbfd.h is a generated file.
* libbfd.h: Rebuilt.
1994-06-06 14:59:20 +00:00
Ian Lance Taylor fa15568ac1 Changes to support ELF strip and objcopy on dynamically linked
files.
	* elfcode.h (elf_fake_sections): Add prototype.
	(bfd_section_from_shdr): Make a BFD section from an SHT_HASH
	section, and from an SHT_DYNSYM section, and from the dynamic
	string table section.
	(elf_object_p): Set D_PAGED if there is a program header.
	(elf_make_sections): Remove.
	(fix_up_strtabs): Remove.
	(elf_fake_sections): Rewrite.  Now sets sh_entsize.
	(assign_section_numbers): Rewrite.  Now sets sh_link and sh_info
	for all sections.
	(elf_compute_section_file_positions):  Don't call obsolete
	functions elf_make_sections or fix_up_strtabs.
	(swap_out_syms): Set sh_addralign to FILE_ALIGN rather than 4.
	(NAME(bfd_elf,write_object_contents)): Permit writing DYNAMIC
	objects.
	(elf_section_from_bfd_section): Treat SHT_DYNSYM like other normal
	sections.  If an SHT_REL or SHT_RELA section is allocated or uses
	an unusual symbol table, permit a BFD section to map to it.
	Permit most SHT_STRTAB sections to have a BFD section mapped to
	them.
	(elf_bfd_final_link): Don't set sh_link, sh_info or sh_entsize
	fields of dynamic sections here; do it in assign_section_numbers.
	* elf32-target.h, elf64-target.h: Add D_PAGED to permitted object
	flags.
1994-06-05 20:00:42 +00:00
Ian Lance Taylor a04e14b672 * elf.c (_bfd_elf_make_section_from_shdr): Only set SEC_DATA if
SEC_LOAD is set, rather than checking SEC_ALLOC.
1994-06-05 19:04:50 +00:00
Ian Lance Taylor 8a7aea07b2 Remove a couple of myteriously duplicated entries. 1994-06-05 18:43:42 +00:00
Jeff Law 99fa551078 * som.c (som_write_object_contents): Don't compute the file header's
checksum here.
	(som_write_headers): Instead do it here.
1994-06-03 18:14:59 +00:00
Jeff Law 4ee3b9beb1 * libbfd.h (bfd_realloc): Change last arg to "size_t size". 1994-06-03 17:01:17 +00:00
Ian Lance Taylor 2855b89fe2 * hosts/sun3.h: Include <stdlib.h>. Don't declare free, exit or
getenv.
1994-06-02 22:39:31 +00:00
Ian Lance Taylor e85e8bfe62 Add linker support for SunOS shared libraries.
* sunos.c: Include bfdlink.h.  Add many new functions and
	definitions for SunOS shared library support.
	* bfd-in.h (bfd_sunos_record_link_assignment): Declare.
	(bfd_sunos_size_dynamic_sections): Declare.
	* bfd-in2.h: Rebuilt.
	* aoutx.h (struct aout_link_hash_entry): Move to libaout.h.
	(struct aout_link_hash_table): Likewise.
	(aout_link_hash_lookup, aout_link_hash_traverse): Likewise.
	(aout_hash_table): Likewise.
	(NAME(aout,link_hash_newfunc)): Rename from aout_link_hash_newfunc
	and make externally visible.
	(NAME(aout,link_hash_table_init)): New function.
	(NAME(aout,link_hash_table_create)): Call
	NAME(aout,link_hash_table_init), not _bfd_link_hash_table_init.
	(aout_link_add_symbols): Don't fail if no symbols.  If it exists,
	call add_dynamic_symbols backend entry point for dynamic objects.
	Use add_one_symbol backend entry point if it exists.
	(NAME(aout,final_link)): Call finish_dynamic_link backend entry
	point, if it exists.
	(aout_link_input_bfd): For a dynamic object, call
	link_dynamic_object backend entry point, if it exists.
	(aout_link_write_other_symbol): Call write_dynamic_symbol backend
	entry point, if it exists.
	(aout_link_input_section): Don't read the relocs if they have
	already been read.
	(aout_link_input_section_std): When doing a final link, for a
	reloc against an external symbol, call check_dynamic_reloc backend
	entry point, if it exists.
	(aout_link_input_section_ext): Likewise.
	* libaout.h: Protect against multiple inclusion.  Include
	bfdlink.h.
	(struct aout_link_hash_entry): Move in from aoutx.h.
	(struct aout_link_hash_table): Likewise.
	(aout_link_hash_lookup, aout_link_hash_traverse): Likewise.
	(aout_hash_table): Likewise.
	(struct aout_backend_data): Add fields add_dynamic_symbols,
	add_one_symbol, link_dynamic_object, write_dynamic_symbol,
	check_dynamic_reloc, and finish_dynamic_link.
	(struct aout_section_data_struct): Define new structure.
	(aout_section_data): Define new accessor macro.
	(NAME(aout,link_hash_newfunc)): Declare.
	(NAME(aout,link_hash_table_init)): Declare.
	* aoutf1.h (sunos4_aout_backend): Initialize new aout_backend_data
	fields.
	* aout-target.h (MY(backend_data)): Likewise.
	* i386aout.c (MY(backend_data)): Likewise.
	* i386mach3.c (MY(backend_data)): Likewise.
	* mipsbsd.c (MY(backend_data)): Likewise.
	* sparclynx.c (sparclynx_aout_backend): Likewise.
1994-06-02 22:07:27 +00:00
Ian Lance Taylor 220642fd47 * hosts/sun3.h: Don't declare qsort, malloc or realloc. 1994-06-01 18:39:43 +00:00
Ken Raeburn c06e55d99a changes from gas-2.3/binutils-2.4 dist (details in branch log msgs, changelogs) 1994-05-27 16:58:05 +00:00
Jeff Law ada45a2a82 * som.c (som_prep_headers): Do not set the system_id here, private
bfd data has not been copied yet.
	(som_write_headers): Instead do it here.
1994-05-26 16:13:47 +00:00
Ian Lance Taylor 5315c42827 Make MIPS ELF use new ELF backend linker. No shared library
support yet.
	* elf32-mips.c (bfd_mips_elf32_swap_gptab_in): New function.
	(bfd_mips_elf32_swap_gptab_out): New function.
	(mips_elf_object_p): If last symbol is LOCAL, set elf_bad_symtab.
	(mips_elf_final_write_processing): Set sh_info field for .gptab.*
	sections.
	(mips_elf_fake_sections): Set sh_entsize for .gptab.* sections.
	(mips_elf_read_ecoff_info): Read and free external symbols last,
	not first, for clarity.
	(struct mips_elf_link_hash_entry): Define new structure.
	(struct mips_elf_link_hash_table): Define new structure.
	(mips_elf_link_hash_lookup): Define new macro.
	(mips_elf_link_hash_traverse): Define new macro.
	(mips_elf_hash_table): Define new macro.
	(mips_elf_link_hash_newfunc): New static function.
	(mips_elf_link_hash_table_create): New static function.
	(mips_elf_add_symbol_hook): New static function.
	(struct extsym_info): Define new structure.
	(mips_elf_get_extr, mips_elf_set_index): Remove.
	(mips_elf_output_extsym): New static function.
	(gptab_compare): New static function.
	(mips_elf_final_link): Rewrite to use ELF backend linker, and to
	merge gptab information in input files.
	(mips_elf_relocate_hi16): New static function.
	(mips_elf_relocate_section): New static function.
	(bfd_elf32_bfd_link_hash_table_create): Define as macro before
	including elf32-target.h.
	(elf_backend_relocate_section): Likewise.
	(elf_backend_add_symbol_hook): Likewise.
	* elf.c (_bfd_elf_link_hash_newfunc): Rename from
	elf_link_hash_newfunc and make globally visible.  Change caller.
	(_bfd_elf_link_hash_table_init): New function, broken out of
	_bfd_elf_link_hash_table_create.
	(_bfd_elf_link_hash_table_create): Use
	_bfd_elf_link_hash_table_init.
	* libelf.h (struct elf_obj_tdata): Add new field bad_symtab.
	(elf_bad_symtab): Define new accessor macro.
	(_bfd_elf_link_hash_newfunc): Declare.
	(_bew_elf_link_hash_table_init): Declare.
	* elfcode.h (elf_object_p): Call backend object_p hook after
	swapping in all the section headers.
	(map_program_segments): Correct typo: Internal for External.
	(elf_link_add_object_symbols): If elf_bad_symtab is set, read all
	the symbols.  Skip STB_LOCAL symbols rather than giving an error.
	(elf_bfd_final_link): If elf_bad_symtab is set, allocate space for
	all symbols, not just locals.
	(elf_link_output_extsym): Only skip a symbol not mentioned by a
	regular file if it is mentioned by a dynamic object.
	(elf_link_input_bfd): If elf_bad_symtab is set, read all the
	symbols.
1994-05-24 20:44:50 +00:00
Ian Lance Taylor c8588f2f74 * coff-mips.c (mips_relocate_section): Add MIPS_R_JMPADDR overflow
checking.
1994-05-20 20:17:50 +00:00
Jeff Law 88bbe402bb * som.c (som_set_reloc_info): Do not set any relocation info
for SOM fixups which are never passed to BFD.
1994-05-20 19:43:18 +00:00
Ian Lance Taylor 7ce8b9d18d Removed sanitization of PowerPC NetWare. Also rebuilt Makefile
dependencies.
1994-05-20 18:22:45 +00:00
Ian Lance Taylor 95b77361ab * elf32-i386.c (elf_i386_size_dynamic_sections): Add DT_DEBUG to
the dynamic linking information for the benefit of the debugger.
	From Peter Schauer.
	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
1994-05-20 16:14:35 +00:00
Ian Lance Taylor 497c543457 * elf.c (_bfd_elf_make_section_from_shdr): New function, based on
code repeated three times in bfd_section_from_shdr in elfcode.h.
	* libelf.h (_bfd_elf_make_section_from_shdr): Declare.
	* elfcode.h (bfd_section_from_shdr): Use new function
	_bfd_elf_make_section_from_shdr to create BFD sections.  If a
	reloc section does not use the main symbol table, or it is part of
	the process image, treat it as a normal section, not relocs.
	* elf32-mips.c (mips_elf_section_from_shdr): Use new function
	_bfd_elf_make_section_from_shdr.
1994-05-20 16:04:59 +00:00
Ian Lance Taylor 7a0c782d39 * elf32-target.h, elf64-target.h: Change ar_max_namelen value from
15 to 14 to match SVR4 ar.
1994-05-19 21:39:15 +00:00
Ian Lance Taylor 013dec1ad9 Add support for ELF shared libraries. Loosely based on work by
Eric Youngdale <ericy@cais.com>.
	* libelf.h (struct elf_backend_data): Add new fields for dynamic
	linking: elf_backend_create_dynamic_sections,
	elf_backend_adjust_dynamic_symbol,
	elf_backend_size_dynamic_sections,
	elf_backend_finish_dynamic_symbol,
	elf_backend_finish_dynamic_sections.
	(struct elf_link_hash_entry): Change type of align field to
	bfd_size_type.  Add fields dynindx, dynstr_index, weakdef,
	elf_link_hash_flags.
	(struct elf_link_hash_table): Add fields dynobj, dynsymcount,
	dynstr, bucketcount.
	(bfd_elf32_swap_reloc_in, bfd_elf32_swap_reloc_out): Declare.
	(bfd_elf32_swap_reloca_in, bfd_elf32_swap_reloca_out): Declare.
	(bfd_elf32_swap_dyn_in, bfd_elf32_swap_dyn_out): Declare.
	(bfd_elf32_add_dynamic_entry): Declare.
	(bfd_elf64_swap_reloc_in, bfd_elf64_swap_reloc_out): Declare.
	(bfd_elf64_swap_reloca_in, bfd_elf64_swap_reloca_out): Declare.
	(bfd_elf64_swap_dyn_in, bfd_elf64_swap_dyn_out): Declare.
	(bfd_elf64_add_dynamic_entry): Declare.
	* elfcode.h (Elf_External_Dyn): Define.
	(elf_swap_reloc_in): Define as macro using NAME.  Make externally
	visible.
	(elf_swap_reloc_out): Likewise.
	(elf_swap_reloca_in, elf_swap_reloca_out): Likewise.
	(elf_swap_dyn_in, elf_swap_dyn_out): Define as macro using NAME
	and as new externally visible function.
	(elf_fake_sections): Set section type of dynamic sections based on
	section names.
	(elf_write_phdrs): Remove.
	(assign_file_position_for_section): Add new align argument.
	Change all callers.
	(get_program_header_size): New static function.
	(struct seg_info): Remove.
	(map_program_segments): Completely rewrite.
	(assign_file_positions_except_relocs): Completely rewrite.
	(assign_file_positions_for_relocs): Don't set a file position for
	sections which already have one.  Don't bother to align the file
	position here.
	(section_from_elf_index): Handle SHT_HASH and SHT_DYNAMIC
	section types.
	(elf_section_from_bfd_section): Likewise.
	(elf_slurp_symbol_table): If section_from_elf_index fails, just
	use bfd_abs_section rather than returning an error.
	(elf_sizeof_headers): Make useful.
	(elf_link_record_dynamic_symbol): New static function.
	(elf_link_add_object_symbols): Handle dynamic objects.
	(elf_link_create_dynamic_sections): New static function.
	(elf_add_dynamic_entry): Define as macro using NAME and as new
	externally visible function.
	(NAME(bfd_elf,record_link_assignment)): New function.
	(elf_buckets): New static variable.
	(NAME(bfd_elf,size_dynamic_sections)): New function.
	(struct elf_final_link_info): Add dynsym_sec and hash_sec fields.
	(elf_bfd_final_link): Handle dynamic linking.  Create a section
	symbol for all ELF sections, not all BFD sections.  Store section
	symbol index in target_index field, not index field.  Traverse
	over global symbols even if stripping.
	(elf_link_output_extsym): Output dynamic symbols.  Mark symbols
	defined by dynamic objects as undefined.
	(elf_link_input_bfd): Ignore dynamic objects.  Use target_index
	field for section relocs, and make sure it is set.
	(elf_reloc_link_order): Use target_index field for section relocs,
	and make sure it is set.
	* elf.c (elf_link_hash_newfunc): Initialize dynindx, dynstr_index,
	weakdef and elf_link_hash_flags fields.
	(_bfd_elf_link_hash_table_create): Initialize dynobj, dynsymcount,
	dynstr and bucketcount fields.
	* elf32-target.h: Initialize new dynamic linking fields.
	* elf64-target.h: Likewise.
	* elf32-i386.c: New functions for dynamic linking support.
	* elf32-sparc.c: Likewise.
	* bfd-in.h (bfd_elf32_record_link_assignment): Declare.
	(bfd_elf64_record_link_assignment): Declare.
	(bfd_elf32_size_dynamic_sections): Declare.
	(bfd_elf64_size_dynamic_sections): Declare.
	* bfd-in2.h: Rebuilt.
1994-05-19 18:23:40 +00:00
Ian Lance Taylor 82492ca110 * som.c: Don't include <sys/dir.h> or <sys/user.h>.
(som_reloc_queue_find): Call memcmp instead of bcmp.
	(som_bfd_reloc_type_lookup): Change first argument to bfd *.
	(compare_syms): Change types of arguments to const void *.
	(bfd_section_from_som_symbol): Removed unused local found.
	(som_write_armap): Add elength, map, orl_count and int arguments.
	(som_write_armap): Use %ld and cast to long for getuid result.
1994-05-18 15:32:15 +00:00
Jeff Law 673acecaa5 * elf32-hppa.h (R_HPPA_ABS_CALL): Define.
* elf32-hppa.c (hppa_elf_gen_reloc_type): Handle absolute calls.

	* som.h (R_HPPA_ABS_CALL): Define.
	* som.c (hppa_som_gen_reloc_type): Delete complex relocation types.
1994-05-18 15:13:27 +00:00
Ken Raeburn 0f62bdc03b * coff-i960.c (icoff_little_vec, icoff_big_vec): Indicate leading underscore,
for compatibility with Intel tool chain (gnu960v2).
1994-05-17 23:43:48 +00:00
Jeff Law 459ae909b9 * bfd-in2.h: Rebuilt.
* elf32-hppa.c: Change .hppa_linker_stubs to .PARISC.stubs,
	likewise for other PA specific sections.
	(hppa_elf_relocate_unwind_table): Delete unused
	function.
	(elf_hppa_howto_table): Completely new table based on 94-02-02
	draft PA ELF spec.  Change relocation tags appropriately
	throughout elf32-hppa.c
	(hppa_elf_gen_reloc_type): Rewrite and simplify based on 94-02-02
	spec.
	(hppa_elf_reloc): Likewise.
	(hppa_look_for_stubs_in_section): Likewise
	(ELF_MACHINE_CODE): Change to EM_PARISC.
	* elf32-hppa.h: Include "elf/hppa.h".  Change relocation tags
	appropriately throughout elf32-hppa.h.
	(elf32_hppa_reloc_type): New table based on 94-02-02 draft PA ELF
	spec.
	(R_HPPA_ABS_CALL, R_HPPA_COMPLEX*, R_HPPA_UNWIND): Delete definitions.
	* elfcode.h (prep_headers): Use EM_PARISC instead of EM_HPPA.
	* reloc.c (bfd_reloc_code_real): Delete unused HPPA relocations.
	* som.h (R_HPPA_ABS_CALL, R_HPPA_COMPLEX): Delete definitions.

	* libhppa.h (hppa_field_adjust): Avoid adding constant_value into
	the final value twice for LR and RR field selectors.
1994-05-16 19:34:13 +00:00
Jeff Law c3cb04b440 * libhppa.h (hppa_field_adjust): Avoid adding constant_value into
the final value twice for LR and RR field selectors.
1994-05-16 16:13:34 +00:00
Jim Kingdon cb9461ffc2 * aoutx.h (add_to_stringtab): Use BFD_ASSERT not assert. This
avoids __eprintf troubles.
1994-05-14 16:19:58 +00:00
Ian Lance Taylor 0d898d0338 * bout.c (b_out_bfd_reloc_type_lookup): Handle BFD_RELOC_CTOR. 1994-05-14 03:16:13 +00:00
Ian Lance Taylor 55a90acef6 Rewrite history. 1994-05-13 18:51:52 +00:00
Jim Kingdon 1bbf43eec5 Fix typo in last entry 1994-05-13 18:47:34 +00:00
Bill Cox f3e72e3771 * Makefile.in (sysdep.h): Copy Ian's version of this from
progressive/bfd/Makefile.in.
1994-05-13 18:15:46 +00:00
Bill Cox f666bb79ca * Makefile.in (stmp-bfd.h): Add an 'if' to mask a harmless
grep error.  Already in progressive/bfd/Makefile.in.
1994-05-13 17:52:46 +00:00
Ian Lance Taylor 8db528c845 * config/mipsbelf.mt (SELECT_VECS): Add ecoff_big_vec and
ecoff_little_vec since Irix 5 supports ECOFF executables.
1994-05-13 14:53:07 +00:00
Jim Kingdon 291c622da4 Remove CVS conflict markers from file 1994-05-12 18:13:17 +00:00
Ian Lance Taylor 4fa4476bf8 * ecoff.c (ecoff_find_nearest_line): Handle fdr.adr != pdr.adr
correctly.
1994-05-11 16:46:04 +00:00
Ian Lance Taylor 666f5925d2 * Makefile.in (stmp-bfd.h): Use || instead of ; to force SunOS
make to invoke the shell.
1994-05-11 04:32:52 +00:00
Ian Lance Taylor c16313f06c * section.c (SEC_COFF_SHARED_LIBRARY): Renamed from
SEC_SHARED_LIBRARY for clarity.  Changed all uses.
	* bfd-in2.h: Rebuilt.
	* coffcode.h (sec_to_styp_flags): If SEC_COFF_SHARED_LIBRARY is
	set, set STYP_NOLOAD.
	* coffgen.c (coff_section_from_bfd_index): Don't get an assertion
	failure because of a bad shared library.
1994-05-10 18:29:19 +00:00
Bill Cox eeb8c1873a * linker.c: Add missing comment terminator. 1994-05-10 01:58:35 +00:00
Ian Lance Taylor 8e5090ce3a * linker.c (_bfd_generic_link_add_one_symbol): If hashp and *hashp
are not NULL, assume the caller has already looked up the symbol
	in the hash table and has stored the entry in *hashp.
	(generic_link_add_symbol_list): Set h to NULL before calling
	_bfd_generic_link_add_one_symbol.
	* ecoff.c (ecoff_link_add_externals): Likewise.
1994-05-09 23:22:00 +00:00
Ian Lance Taylor 6ec3bb6a75 * elfcode.h: Include bfdlink.h. Added several new functions to do
linking.
	(ELF_R_TYPE): Define.
	(bfd_add_to_strtab): Return unsigned long.  Change check for
	realloc failure.
	(elf_fake_sections): Check return value of bfd_add_to_strtab.
	(elf_compute_section_file_positions): Add link_info argument.
	Call elf_backend_begin_write_processing hook and prep_headers
	here.  Only call swap_out_syms if link_info is NULL.  Set up
	.shstrtab section here.  Pass dosyms argument to
	assign_file_positions_except_relocs.  Set output_has_begun flag.
	(assign_file_positions_for_symtab_and_strtabs): Add dosyms
	argument, and use it to control setting .symtab and .strtab file
	positions.
	(assign_file_positions_except_relocs): Add dosyms argument, and
	pass it on.
	(prep_headers): Check return value of bfd_add_to_strtab.
	(swap_out_syms): Likewise.  Also, don't set up .shstrtab here.
	(NAME(bfd_elf,write_object_contents)): Some calls moved into
	elf_compute_section_file_positions.
	(elf_set_section_contents): Likewise.
	(elf_slurp_symbol_table): SHN_LORESERV corrected to SHN_LORESERVE.
	* libelf.h: Include bfdlink.h.
	(struct elf_backend_data): Add fields collect,
	elf_add_symbol_hook, elf_backend_relocate_section.
	(struct bfd_elf_section_data): Add field rel_hashes.
	(struct elf_obj_tdata): Remove fields internal_syms and symbols.
	Add field sym_hashes.
	(obj_symbols, obj_internal_syms): Remove definitions.
	(elf_sym_hashes): Define.
	(struct elf_link_hash_entry): Define.
	(struct elf_link_hash_table): Define.
	(elf_link_hash_lookup): Define.
	(elf_link_hash_traverse): Define.
	(elf_hash_table): Define.
	(_bfd_elf_link_hash_table_create): Declare.
	(bfd_elf32_bfd_link_add_symbols): Declare.
	(bfd_elf32_bfd_final_link): Declare.
	(bfd_elf64_bfd_link_add_symbols): Declare.
	(bfd_elf64_bfd_final_link): Declare.
	* elf.c: Include bfdlink.h.
	(elf_link_hash_newfunc): New function.
	(_bfd_elf_link_hash_table_create): New function.
	* elf32-target.h (elf_backend_relocate_section): If not defined,
	define as 0 and use generic linker.  Otherwise, use ELF backend
	linker.
	(elf_backend_collect): If not defined, define as false.
	(elf_backend_add_symbol_hook): If not defined, define as 0.
	(elf32_bed): Initialize new fields.
	* elf64-target.h: Same changes as elf32-target.h.
	* elf32-i386.c: Include bfdlink.h.
	(elf_i386_relocate_section): New function.
	(elf_backend_relocate_section): Define.
	* elf32-sparc.c: Include bfdlink.h.
	(elf_info_to_howto): Change type of dst from Elf32_Internal_Rela
	to Elf_Internal_Rela (they're the same type anyhow).
	(elf_sparc_relocate_section): New function.
	(elf_backend_relocate_section): Define.
	* elf32-mips.c (elf_backend_collect): Define.
1994-05-09 16:58:36 +00:00
Steve Chamberlain d66da74230 * config/go32.mh: XX support.
From bill
	* Makefile.in: Build sysdep.h without causing worrying but
	harmless error message.
1994-05-06 18:53:44 +00:00
Ian Lance Taylor 973bfc476b * nlmcode.h (nlm_swap_auxiliary_headers_in): Rework custom header
handling for latest suggested format.
	(nlm_swap_auxiliary_headers_out): Likewise.
	(nlm_compute_section_file_positions): Likewise.
1994-05-06 17:37:39 +00:00
Ian Lance Taylor 77d1128466 For PR 1927.
Changed m68k-aout to set flags to 0; m68k-sunos still uses 1.
	* aout0.c: New file.
	* targets.c (aout0_big_vec): Declare.
	(bfd_target_vector): Add aout0_big_vec.
	* config.bfd (m68*-*-aout*): Use m68k-0aout, not m68k-aout.
	* config/m68k-aout.mt (SELECT_VECS): Removed.
	* config/m68k-0aout.mt: New file.
	* configure.in (aout0_big_vec): New target vector: use aout0.o,
	aout32.o and stab-syms.o.
	* Makefile.in: Rebuilt dependencies.
	(BFD32_BACKENDS): Add aout0.o.
	(CFILES): Add aout0.c.

	* libaout.h (struct aout_backend_data): Add field exec_hdr_flags.
	* aout-target.h (MY_exec_hdr_flags): If not defined, define as 0.
	MY(backend_data): Initialize exec_hdr_flags field.
	* aoutf1.h (sunos_32_set_arch_mach): Make static.
	(aout32_sunos4_write_object_contents): Set flags from backend
	info.
	(MY_exec_hdr_flags): If not defined, define as 1.
	(sunos4_aout_backend): Initialize exec_hdr_flags field.
	* aout-encap.c (encap_write_object_contents): Set flags from
	backend info.
	(MY_exec_hdr_flags): Define as N_FLAGS_COFF_ENCAPSULATE.
	* hp300hpux.c (MY_exec_hdr_flags): Define as 0x2.
	(MY(write_object_contents)): Set flags from backend info.
	* i386aout.c (MY(backend_data)): Initialize exec_hdr_flags field.
	* i386mach3.c (MY(backend_data)): Likewise.
	* mipsbsd.c (MY(backend_data)): Likewise.
	* sparclynx.c (NAME(aout,sparclynx_write_object_contents)): Set
	flags from backend info.
	(sparclynx_aout_backend): Initialize exec_hdr_flags field.
1994-05-04 19:37:36 +00:00
Ken Raeburn 127f8e91ee * config.bfd (i386-*-gnu*): Treat like i386-*-mach*.
(m68*-apollo-*): Treat all Apollo configs the same, don't handle BSD specially.
1994-05-04 17:31:36 +00:00
Ian Lance Taylor 92400edbcd * cache.c: Rewrote to work correctly.
* libbfd.h: Rebuilt.
	* opncls.c (bfd_cache_init, bfd_open_file): Don't declare.
	(bfd_fdopenr): Check return value of bfd_cache_init.
1994-05-03 23:58:06 +00:00
Ian Lance Taylor e3361fc35c * cf-m68klynx.c (CALC_ADDEND): Check for PC relative relocs by
enumerating them, since the reloc type can not serve as an index
	into the m68k COFF howto_table.
1994-04-29 19:09:51 +00:00
Steve Chamberlain dbf13547b7 * config.bfd (*-go32): Changed to coff.
* coff-h8300.c (JMPL1): Get HOWTO right for 24bit branches.
	* srec.c (srec_write_symbols): Write out the correct number of
	symbols and don't stick in extra nulls.
1994-04-29 16:48:25 +00:00
Steve Chamberlain 7c6ba20141 * coff-h8300.c (JMPL1): Get HOWTO right for 24bit branches. 1994-04-29 16:44:48 +00:00
Stan Shebs 380c60b19a Tue Apr 26 15:07:24 1994 Stan Shebs (shebs@andros.cygnus.com)
* cf-sparclynx.c (LYNXOS, COFF_LONG_FILENAMES): Define.
	* coff-sparc.c (BADMAG): Recognize LYNXCOFFMAGIC.
	(COFF_SPARC): Define.
	* coffcode.h (coff_new_section_hook): If COFF_SPARC, set alignment
	power of data and bss sections to 3.
	* hosts/lynx.h (__LYNXOS): Define.

Brought over from 94Q1.
1994-04-26 22:10:10 +00:00
Jeff Law 6c101bcf78 * elf32-hppa.c (hppa_elf_reloc): Adjust the addend of relocations
against section symbols to avoid losing during ld -r.
1994-04-26 22:06:13 +00:00
Ian Lance Taylor ba436e33cd * elfcode.h (write_relocs): Undo patch of Apr 10; breaks Solaris. 1994-04-25 19:52:15 +00:00
Ian Lance Taylor 2e03ce1861 * elfcode.h (bfd_section_from_shdr): Use bfd_make_section_anyway
to create sections.  Check return value of recursive calls.
	(bfd_section_from_phdr): Check return value of bfd_make_section.
	(elf_symbol_from_bfd_symbol): Likewise.
	(elf_object_p): Check return value of bfd_section_from_shdr.
	(section_from_elf_index): Likewise.
	(elf_slurp_symbol_table): Check return value of
	section_from_elf_index.
	(bfd_prstatus): Return boolean value.  Check return value of
	bfd_make_section.
	(bfd_fpregset): Likewise.
	(bfd_prpsinfo): Return boolean value.
	(elf_corefile_note): Check return values of bfd_prstatus,
	bfd_fpregset, and bfd_prpsinfo.
	(elf_core_file_p): Check return value of elf_corefile_note.
1994-04-25 19:36:51 +00:00
Ian Lance Taylor cc71e155b6 Get rid of the ECOFF .reginfo section hack.
* ecoff.c (ecoff_mkobject_hook): Don't create a .reginfo section.
	(ecoff_new_section_hook): Don't handle the .reginfo section.
	(ecoff_sizeof_headers): Likewise.
	(ecoff_get_section_contents): Likewise.
	(ecoff_compute_section_file_positions): Likewise.
	(ecoff_compute_reloc_file_positions): Likewise.
	(ecoff_set_section_contents): Likewise.
	(ecoff_write_object_contents): Likewise.
	(ecoff_bfd_final_link): Likewise.
	(ecoff_bfd_copy_private_bfd_data): Copy the GP value and the
	register masks.
	(bfd_ecoff_get_gp_value): New function.
	(bfd_ecoff_set_gp_value): New function.
	(bfd_ecoff_set_regmasks): New function.
	* bfd-in.h (bfd_ecoff_get_gp_value): Declare.
	(bfd_ecoff_set_gp_value): Declare.
	(bfd_ecoff_set_regmasks): Declare.
	* bfd-in2.h: Rebuilt.
1994-04-22 22:09:25 +00:00
Ian Lance Taylor 1bb42b1f2b Fix ECOFF objcopy to actually copy debugging information.
* ecoff.c (ecoff_bfd_copy_private_bfd_data): New function.
	(ecoff_get_extr): Assume that any ECOFF symbol with local clear is
	an external symbol, rather than checking the symbol flags.  Only
	check the flags for non-ECOFF symbols.
	* ecofflink.c (bfd_ecoff_debug_externals): Don't crash if the
	output_section field of the symbol section is NULL.
	* libecoff.h (ecoff_bfd_copy_private_bfd_data): Declare as
	function rather than defining as macro.
1994-04-22 20:32:51 +00:00