diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2000-09-12 22:26:45 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2000-09-12 22:26:45 +0000 |
commit | 79a1aac7578f95bec1c4ccb42d72b2fe8bb5c979 (patch) | |
tree | a3bcda56100c9436b8d9aff17f03db870aa49da2 /gnu/usr.bin/binutils/bfd | |
parent | 6f0dcc44234ecb5ec5f57dd9ff28e3d5c40f9e77 (diff) |
Resolve other problems that dumb cvs can't find out by itself.
(trivial part done, `interesting' patches remain)
Diffstat (limited to 'gnu/usr.bin/binutils/bfd')
46 files changed, 78 insertions, 28933 deletions
diff --git a/gnu/usr.bin/binutils/bfd/COPYING b/gnu/usr.bin/binutils/bfd/COPYING index a43ea2126fb..60549be514a 100644 --- a/gnu/usr.bin/binutils/bfd/COPYING +++ b/gnu/usr.bin/binutils/bfd/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -279,7 +279,7 @@ POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - Appendix: How to Apply These Terms to Your New Programs + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -305,7 +305,8 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Also add information on how to contact you by electronic and paper mail. diff --git a/gnu/usr.bin/binutils/bfd/ChangeLog.1 b/gnu/usr.bin/binutils/bfd/ChangeLog.1 deleted file mode 100644 index f36ed3cd01c..00000000000 --- a/gnu/usr.bin/binutils/bfd/ChangeLog.1 +++ /dev/null @@ -1,6951 +0,0 @@ -Sun Oct 31 09:35:49 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * targets.c: Move enum target_flavour outside of struct and change - the name to enum bfd_flavour. This means bfd clients can use it. - * bfd-in.h: Add macro bfd_get_flavour. - * bfd-in2.h: Rebuilt. - - * som.c: Add comment about how abort() on corrupt executable is evil. - -Sat Oct 30 12:27:09 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (aout,slurp_reloc_table): Avoid a goto. - -Fri Oct 29 16:04:33 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * gen-aout.c, libbfd.c: exit(1) instead of exit(-1). - -Fri Oct 29 13:17:21 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd-in.h: Added commands for object file flag values. - * bfd-in2.h: Rebuilt. - * elfcode.h (elf_object_p): If type is ET_DYN, set DYNAMIC flag, - not EXEC_P. - * bout.c, coff-h8300.c, coff-sh.c: Add BFD_IS_RELAXABLE to - object_flags field for target vector. - * aix386-core.c, aout-adobe.c, aout-target.h, bout.c, coff-a29k.c, - coff-alpha.c, coff-apollo.c, coff-h8300.c, coff-h8500.c, - coff-i386.c, coff-i960.c, coff-m68k.c, coff-m88k.c, coff-mips.c, - coff-rs6000.c, coff-sh.c, coff-we32k.c, coff-z8k.c, hpux-core.c, - ieee.c, mipsbsd.c, nlm-target.h, oasys.c, osf-core.c, som.c, - srec.c, tekhex.c, trad-core.c: Remove DYNAMIC from object_flags - field for target vector. - -Thu Oct 28 20:02:31 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * hosts/std-host.h: Don't declare time; causes error on mach3. - * configure.in (i386mach3_vec): Require aout32.o stab-syms.o. - -Thu Oct 28 16:33:26 1993 Stan Shebs (shebs@rtl.cygnus.com) - - LynxOS and Sparc LynxOS changes: - * config.bfd: Recognize sparc-*-lynxos*. - * configure.host: Recognize sparc-*-lynxos*. - * configure.in: Recognize Sparc Lynx vectors. - * targets.c (sparclynx_aout_vec): Declare. - (sparclynx_coff_vec): Declare. - (target_vector): Add them. - * cf-i386lynx.c: New file, renamed from i386lynx-cf.c. - * cf-m68klynx.c: New file, renamed from m68klynx-cf.c. - * cf-sparclynx.c: New file, support for coff in Sparc LynxOS. - * coff-sparc.c: New file, basic Sparc coff support. - * sparclynx.c: New file, support for a.out in Sparc LynxOS. - * Makefile.in: Change filenames appropriately, add Sparc rules. - * coffcode.h (coff_set_arch_mach_hook): Recognize Sparc magic - number. - (coff_set_flags): Use LynxOS magic number for i386, m68k, and - Sparc LynxOS, set Sparc magic number for Sparcs. - * config/m68k-lynx.mt (SELECT_VECS): Remove redundant vector. - * config/sparc-lynx.mt: New file. - * hosts/i386lynx.h: Cosmetic improvements. - * hosts/m68klynx.h: Add ifdefs, #define of cfree. - * hosts/sparclynx.h: New file. - -Thu Oct 28 16:23:40 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - gcc -Wall lint: - * coff-h8300.c (h8300_reloc16_estimate): Declare return type. - Remove useless statement probably left by code copy. - * cpu-i960.c (compatible): Fully bracket matrix initializer. - * elf32-hppa.c (hppa_elf_build_arg_reloc_stub): Use bfd_xmalloc - rather than xmalloc. Use realloc and check the return value - rather than xrealloc. - (hppa_elf_get_section_contents): Add some casts. - * elf32-i386.c (elf_i386_reloc_type_lookup): Remove unused - variable. Add default case to switch. - * hp300hpux.c: Declare aout_32_write_syms. - * i386bsd.c, i386linux.c, netbsd386.c (N_SHARED_LIB): Define as 0 - (definition from aout/aout64.h is always 0 anyhow). - * i386lynx.c (swap_std_reloc_in): Remove unused variable. - * ieee.c (ieee_write_id): length can never be negative. - (read_id): Likewise. - (ieee_archive_p): Remove unused variable. - * libcoff-in.h (bfd_perform_slip): Declare. - * libcoff.h: Rebuilt. - * oasys.c (oasys_write_sections): Remove zero initialization of - static structure. - * reloc16.c: Indentation change. - -Wed Oct 27 16:51:29 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * configure.in, config/i386-mach3.mt: Update for new configuration - (--with-targets and so on). - * hosts/i386mach3.h: Declare errno. - * targets.c: Declare i386mach3_vec. - -Wed Oct 27 12:18:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlmcode.h (nlm_swap_auxiliary_headers_in, - nlm_swap_auxiliary_headers_out): Handle sharedDebugRecordOffset - and sharedDebugRecordCount fields. - -Tue Oct 26 16:21:12 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * targets.c (target_vector): Remove SCO_CORE. On Sep 11 1993, - we started using trad-core.c for SCO instead. - - * targets.c (target_vector): Re-enable generic ELF and NLM targets. - -Tue Oct 26 16:53:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (assign_file_position_for_section): Align sh_offset to - sh_addralign (this is what UnixWare does, and it shouldn't hurt). - -Tue Oct 26 10:16:54 1993 Ken Raeburn (raeburn@cygnus.com) - - From Jeff Law and Pete Hoogenboom at Utah: - - * elf32-hppa.h (hppa_elf_stub_finish): Add prototype. - (ELF32_HPPA_R_ARG_RELOC): Renamed without the ELF32 prefix - and moved into libhppa.h. All references changed. - (ELF32_HPPA_R_CONSTANT, ELF32_HPPA_R_ADDEND): Likewise. - (get_opcode and opcode defines): Move into libhppa.h - * elf32-hppa.c (hppa_elf_insn2fmt): Rename and move info - libhppa.h. - * libhppa.h (HPPA_R_*): Moved here. Reformatted slightly to make - for easier reading. - (get_opcode): Moved here. FIXME! this really should be a C function - inside the opcode library! - (bfd_hppa_insn2fmt): Likewise. - - * targets.c (target_vector): Enable elf32-hppa vector. - - * elf32-hppa.c (hppa_elf_get_section_contents): Add new comments - and clarify existing comments. Do not use DEFUN to declare this - function. Fix numerous indention problems. Correctly handle cases - where symbol extension section may need to be read from disk, - read from memory, or built then read from memory. - - * elf32-hppa.h: Reformat with gnu-indent and hand fix numerous - formatting and indention problems gnu-indent can not handle. - Clarify some comments about relocation types. Comment basic - relocation "classes". Group PARAM declarations together. - (HPPA_SXT_{NULL, SYMNDX, RG_RELOC}): Make members of a new - enumerated type rather than #defines. - -Tue Oct 26 02:40:46 1993 Stu Grossman (grossman at cygnus.com) - - * som.c (hppa_object_setup): Set SEC_CODE for .text section so - that GDB can figure out text_start and text_end. - -Mon Oct 25 16:05:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Fix up warnings from gcc -Wall: - * coffgen.c (coff_print_symbol): Use %lx and cast n_value to - unsigned long. Use %ld for tagndx. Use %lx for offset + vma and - cast it to unsigned long. - * ecoff.c (ecoff_emit_aggregate): Use %ld. - (ecoff_print_symbol): Use %ld, and cast indx and sym_base to long. - * coffcode.h (dummy_reloc16_estimate): Specify return type. - - * libbfd.c (bfd_write): If not everything is written out, set - bfd_error to system_call_error. If the return value is - non-negative, set errno to ENOSPC (if ENOSPC is defined). - (bfd_seek): If the seek fails, set bfd_error to system_call_error. - (bfd_generic_set_section_contents): For a bad offset + count, set - bfd_error to bad_value. - * seclet.c (rel): Don't abort. Instead, return false. - -Mon Oct 25 09:59:37 1993 Ken Raeburn (raeburn@cygnus.com) - - * aoutx.h (reloc_type_lookup): Handle BFD_RELOC_SPARC_WDISP22. - -Fri Oct 22 20:35:54 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config.bfd: handle mips*-* instead of mips-*, use mips*el - instead of mips-*-*l - -Fri Oct 22 14:03:33 1993 Mark Eichin (eichin@cygnus.com) - - * m68k-lynx.mt, i386-lynx.mt (TDEFINES): set - FPRINTF_ALREADY_DECLARED because the objdump.c declaration of - fprintf collides with the native one. - -Fri Oct 22 11:50:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * targets.c (target_vector): Enable MIPS ELF vectors. - -Fri Oct 22 07:51:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Use bigmips for mips-sony-bsd*. - - * configure.host, config.bfd: Add * to end of all OS names. - -Thu Oct 21 12:16:26 1993 Ken Raeburn (raeburn@cygnus.com) - - * elfcode.h (FILE_ALIGN): Renamed from EALIGN, to avoid conflict - with Ultrix header files. - - * som.h (struct som_section_data_struct): Renamed from - som_section_data to avoid conflict with macro by that name. - - Changes from Jeff Law and Peter Hoogenboom at Utah: - - * elf32-hppa.c (hppa_elf_reloc): Target register for a 'jump - in delay slot' optimization in combination with a long call - stub should always be r31. - - * elf32-hppa.c: (hppa_elf_relocate_insn): To be consistent - across all relocation types, retrieve instruction addends from - the relocation entry rather than from the instruction itself. - - * elf32-hppa.c: (hppa_elf_relocate_insn): Fix a relocation - error that only occurred when the addend of an 'addil' or - 'ldil' was larger than 21 bits and very close to a 2K byte - boundary. - - * elf32-hppa.c: (hppa_elf_reloc): Handle the optimization in - which a jump is placed in the delay slot of a function call. - The jump was being accomplished via an adjustment to the - return pointer. This optimization would break the long call - stub code, if there was any. - - * elf32-hppa.c: (hppa_elf_build_long_branch_stub): Corrections - to long branch stubs to avoid use of general register 2. - - * hppa_stubs.h: New stub instructions. - - * elfcode.h: Declare bfd_elf_find_section. - - * som.h (som_section_data): Add new "subspace_index" field. - - * som.c (setup_sections): Save the original SOM subspace index - in the BFD section associated with that subspace. - (som_get_symtab_upper_bound): Implement. - (som_get_symtab): Implement. - (som_print_symbol): Implement. - (som_slurp_string_table): New function to read a string table - from a SOM object file. - (som_section_from_subspace_index): New function to return the - section which corresponds to a SOM subspace index. - (som_slurp_symbol_table): New function to read the symbol - table from a SOM object file. - (som_make_empty_symbol): Check for errors from bfd_zalloc. - (som_new_section_hook): Initialize subspace_index field to - -1 instead of 0. - - * som.c (som_object_setup): Fix polarity of test to set HAS_RELOC. - Set EXEC_P for executables. - (setup_sections): Correctly identify when a section has - relocations. - (log2): New function. - (setup_sections): Correctly convert between SOM alignments and BFD - alignments. - - * som.c (setup_sections): Do not set SEC_ALLOC or SEC_LOAD - for sections which correspond to SOM spaces, doing so confuses - many utilities. Set assorted SEC_* flags for SOM subspaces - which correspond to BFD sections. - - * elf32-hppa.c: (elf32_hppa_backend_fake_sections): The stab - string table should have sh_type == SHT_STRTAB. Add - processing to make it so. - - * elfcode.h: (bfd_section_from_shdr): String tables (other - than .strtab) were not getting the file offsets recorded, so - they could not be read from disk. - - * elfcode.h: (elf_make_sections): Leave the sh_addr field of - the section header and the vma field of a section at 0 if the - section is not part of the program execution image. (e.g., - .stab) - - * som.[hc]: Change target vector prefix from "hppa" to "som". - Consistently use obj_som prefix to access fields in backend data - structures. Fix all callers/references. - - * som.h: Do not include files only needed for core file reading here. - Include a.out for both HOST_HPPAHPUX and HOST_HPPABSD. Delete - forward structure declarations, they are unnecessary. - (struct somdata): Delete aux_hdr, and hp_symbol_entry_size fields. - Change "symbols" to "symtab". Add "stringtab" and "reloc_filepos" - fields for future use. Change obj_som_* macros as appropriate. - (som_section_data): New structure to keep SOM specific information - about BFD sections (for future use). - - * som.c: Provide PARAMS declarations for all functions currently - in this file. - (struct container): Delete unwanted structure definition. - (som_object_setup): Add comments. Use som_mkobject to allocate - SOM specific information in the BFD; use information from the - file and (possibly empty) auxiliary headers to initialize this - information. Delete redundant bfd_get_symcount (abfd) "calls". - (setup_sections): Return type is now boolean, fix return statements. - "Fix" handling of BSS like subspaces in the computation of the - containing space's size. If the subspace has relocations, set the - appropriate BFD section flags and record the index into and the - size of the fixup stream. Always return a value. - (som_object_p): Set bfd_error appropriately if errors are detected - from bfd_{read,seek} functions. Handle EXECLIBMAGIC type files. - Do not try to read a non-existant auxiliary header. - (som_mkobject): Flesh out. - (som_section_hook): Allocate space to hold SOM specific information - about sections. - -Thu Oct 21 12:41:34 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - gcc -Wall lint: - * coff-h8300.c, coffcode.h: Change shrink parameter - in *_reloc16_estimate to unsigned to match prototype. - * archive.c: Avoid "/*" in comment. - -Thu Oct 21 13:05:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * dep-in.sed: Create our own line breaks for a more aesthetic - Makefile. - * Makefile.in: Rebuilt dependencies. - - * elf32-mips.c: Include "seclet.h". - (mips_elf_fake_sections): Force size of .reginfo section to sizeof - Elf32_External_RegInfo. - (mips_elf_seclet_link): New function. Link the .reginfo section - specially, and pass everything else to the generic routine. - (bfd_elf32_bfd_seclet_link): Define macro. - * elf32-target.h: If bfd_elf32_bfd_seclet_link is already defined, - don't override it. - -Wed Oct 20 12:22:37 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libnlm.h (nlm_backend_data): Added signature field. - (nlm_signature): New macro. - * nlmcode.h (nlm_object_p, nlm_write_object_contents): Use the NLM - signature from the backend rather than the constant NLM_SIGNATURE. - * nlm32-i386.c (nlm32_i386_backend): Initialize signature field. - - * aoutf1.h (MACHTYPE_OK): Accept M_UNKNOWN. - (NAME(sunos,set_arch_mach)): Treat M_UNKNOWN as 68000, not 68020. - -Wed Oct 20 10:28:27 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/i386bsd.h [__bsdi__]: Define HOST_DATA_START_ADDR. - -Wed Oct 20 10:10:07 1993 Ken Raeburn (raeburn@cygnus.com) - - * Makefile.in (HFILES): New variable, for use in "make dep". - (.dep): Depend on $(CFILES) and $(HFILES). Delete .dep1 and - remake it, so that "$?" is complete. - (.dep1): Don't need to remove .dep1 first. - (dep.sed): Depend on config.status, not Makefile. - (CFILES): Add nlm.c. - -Tue Oct 19 15:26:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-alpha.c: Implemented reloc handling for the linker, made - various other related changes. - * libecoff.h (ecoff_backend_data): Added rdata_in_text field. - Renamed finish_reloc to adjust_reloc_in. Added adjust_reloc_out - field. - (ecoff_bfd_get_relocated_section_contents): Don't define. - * ecoff.c (ecoff_sec_to_styp_flags, ecoff_styp_to_sec_flags): - Handle .lita section. - (ecoff_slurp_reloc_table): Handle RELOC_SECTION_FINI. - finish_reloc backend field renamed to adjust_reloc_in. - (ecoff_bfd_seclet_link): Adjust number of aux entries to - debug_align boundary. - (ecoff_compute_section_file_positions): If rdata_in_text put - .rdata section in text segment, not data segment. Put .pdata - section in text segment. - (ecoff_write_object_contents): Likewise. Also, call - adjust_reloc_out, and handle .lita, .xdata, .pdata, .fini and - absolute sections when writing out relocs. - * coffswap.h (coff_swap_aouthdr_out): For ALPHAECOFF, output 2 for - bldrev field, as on Alpha OSF/1. Padding field is now 2 bytes. - * coff-mips.c (mips_ecoff_swap_reloc_out): Added assertion. - (mips_adjust_reloc_in): Renamed from mips_finish_reloc. - (mips_adjust_reloc_out): New function (does nothing). - (mips_ecoff_backend_data): Initialize new fields. - (ecoff_bfd_get_relocation_section_contents): Define to be - bfd_generic_get_relocated_section_contents. - - * reloc.c (bfd_perform_relocation): Added casts to avoid Alpha - OSF/1 cc bug. - -Thu Oct 14 01:10:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * reloc.c (bfd_perform_relocation): Add comments attempting to - explain PC relative relocations. - - * coffcode.h (styp_to_sec_flags): Don't set SEC_DEBUGGING until it - is made to work. - (coff_compute_section_file_positions): Remove check for - USE_DISCARDED_SECTIONS_COUNT. - * coff-i386.c: Don't define USE_DISCARDED_SECTIONS_COUNT. Basing - it on host defines is wrong. - - * ecoff.c (ecoff_bfd_seclet_link): Don't link a .reginfo section. - (ecoff_write_object_contents): Don't require the .reginfo section - to be a particular size. - -Wed Oct 13 18:39:03 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (dep-in): New rule, for editing dependencies into - Makefile.in in $(srcdir). Use move-if-change. - (.dep1, dep): Use move-if-change. - (CFILES): Add coff-apollo.c. - - Sun Oct 10 18:02:56 1993 Troy Rollo (troy@cbme.unsw.EDU.AU) - - * Makefile.in: Recognise new file, coff-apollo.o - - * coff-apollo.c: New file - - * coffcode.h: Recognise apollo magic numbers and writable text - - * coffswap.h: Swap Apollo optional header entries - - * config.bfd: Add line for Apollo - - * configure.host: Replace apollo68b and apollo68v with Apollo - - * configure.in: Recognise apollocoff_vec - - * targets.c: Likewise - - * config/apollo.mh, config/apollo.mt: New files - - * hosts/apollo68.h: Remove inclusion of strings.h - -Wed Oct 13 14:28:17 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * coff-i386.c (i3coff_object_p): Now static. - - * Makefile.in: Updated dependencies. - (.dep, .dep1, dep.sed): New targets, to make "make dep" work - better. - * dep-in.sed: New file. - - * m68klynx-cf.c (ONLY_DECLARE_RELOCS): Define, to avoid name - conflicts when "--with-targets=all". - * coff-m68k.c (m68kcoff_howto_table, m68k_rtype2howto, - m68k_howto2rtype): Rename via macros to keep namespace clean. - * configure.in: For m68klynx_coff_vec, include coff-m68k.o for - now. - -Tue Oct 12 17:03:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-mips.c: Extensive additions to do relocations and to - handle MIPS specific sections. - * libelf.h (elf_backend_data): Pass fourth argument to - elf_backend_section_from_bfd_section to permit it to control the - section index to use. - (elf_obj_tdata): Add gp and gp_size fields. - (elf_gp, elf_gp_size): New accessor macros. - * elfcode.h: Removed a number of unused local variables. - (elf_fake_sections): Clear section header before calling - elf_backend_fake_sections, not after. - (prep_headers): Return true at end. - (elf_section_from_bfd_section): Pass retval argument to - elf_backend_section_from_bfd_section. - * elf32-hppa.c (elf32_hppa_backend_section_from_bfd_section): - Accept and ignore new retval argument. - * bfd.c: Include libelf.h. - (bfd_set_gp_size): Handle ELF targets. - * Makefile.in (bfd.o): Depends upon libelf.h. - (elf32-mips.o): Depends upon $(INCDIR)/elf/mips.h. - -Mon Oct 11 17:25:18 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_mkobject): Check bfd_make_section return value. - (ecoff_mkobject_hook): New function. - (ecoff_new_section_hook, ecoff_sizeof_headers, - ecoff_compute_section_file_positions, ecoff_set_section_contents, - ecoff_write_object_contents): Handle dummy REGINFO section. - (ecoff_get_section_contents): New function to handle reading - REGINFO section. - * libecoff.h (ecoff_get_section_contents): Change from macro - definition to function prototype. - (ecoff_mkobject_hook): New prototype. - * coff-alpha.c (alpha_ecoff_mkobject_hook): Removed. - (alpha_ecoff_backend_data): Use ecoff_mkobject_hook. - * coff-mips.c (mips_ecoff_mkobject_hook): Removed. - (mips_ecoff_backend_data): Use ecoff_mkobject_hook. - -Fri Oct 8 15:25:33 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * libbfd.c (bfd_get*32, bfd_get*64): Prevent ANSI sign extension - by casting the most significant byte to bfd_vma. - -Fri Oct 8 02:34:21 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * configure.in: Do not define SELECT_VECS, SELECT_ARCHITECTURES - if configuring --with-targets=all. - -Thu Oct 7 17:34:07 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * aoutx.h (howto_table_std): Correct the "size" field in some - entries. - - * reloc.c (reloc_howto_type): Change documentation to dispel any - notion that the "size" field is a power-of-two indicator. - -Thu Oct 7 10:50:38 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * coffswap.h: (bfd_swap_reloc_in): a symndx is signed. - - Make support for relaxing more generic. - * reloc16.c: Add new target entry - bfd_coff_reloc16_estimate, - fix bit rot. - * libcoff.h, libcoff-in.h: declarations. Prototypes - * coffcode.h (bfd_coff_std_swap_table): Add calls to - coff_reloc_16_extra_cases and coff_reloc16_estimate. - (dummy_reloc16_estimate): New function. - * coff-h8300.c (h8300_reloc16_estimate): New function - -Thu Oct 7 14:24:13 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elfcode.h (EALIGN): Define, dependent on ARCH_SIZE. - (align_file_position): New function. - (elf_locate_sh): Disabled function deleted. - (assign_file_positions_for_symtab_and_strtabs): Align position, - then place symtab, then do other sections. - (map_program_segments): Align program header. - (assign_file_positions_except_relocs): Align section headers. - (assign_file_positions_for_relocs): Align relocation sections. - -Tue Oct 5 10:44:32 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * configure.host: Recognize hppa*-*-hiux* (currently synonym for hpux). - Change other hppa entries to use -*- not -hp-. - * config.bfd: Recognize hppa*-*-hiux* (currently synonym for hpux). - - * coff-rs6000.c, cpu-rs6000.c, rs6000-core.c: Change non-ASCII - characters in comment to octal escapes. - -Sun Oct 3 12:35:15 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * coff-i386lynx.c: Removed, name too long. - * i386lynx-cf.c: New file, was coff-i386lynx.c. - * configure.in: Reflect file name changes. - * Makefile.in: Mention Lynx-related files. - - * i386lynx.c (lynx_32_swap_ext_reloc_in): get reloc bits in i386 - Lynx-specific way. - - * m68klynx-cf.c: New file, defines coff format for M68K LynxOS. - * m68klynx.c: Remove coff vector definition, now in m68klynx-cf.c. - - * coffcode.h (sec_to_styp_flags): Set section flag to STYP_INFO - for .stab, .stabstr and .debug sections, and set SEC_DEBUGGING for - sections of type STYP_INFO. (from Minh Tran-Le) - (coff_compute_section_file_positions): Add discarded_sections_count - to abfd->section_count, which helps `strip' keep the size - of the executable header constant. - * coff-i386.c (discarded_sections_count): New variable, initialized - to zero. For use by `strip'. Currently being used only in aix386 - coff, but may be useful for other coff systems. (from Minh Tran-Le) - - * coffswap.h (coff_swap_filehdr_out): Added a missing cast. - - * archive.c: Cosmetic improvements. - * opncls.c: Cosmetic improvements. - (new_bfd): Removed redundant structure slot init. - -Sat Oct 2 18:48:17 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config/news-mips.mh, hosts/news-mips.h: New files. - * configure.host: Use news-mips for mips-sony-bsd*. - -Fri Oct 1 13:14:17 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * configure.in: i386lynx_coff_vec requires coff-i386lynx.o. - * coff-i386lynx.c: New file, defines Lynx target vector and name, - includes coff-i386.c. - * coff-i386.c (i386coff_vec): Allow redefinition of target vector - symbol and name, if TARGET_SYM and/or TARGET_NAME are defined. - * i386lynx.c: Remove coff vector definition entirely. - (lynx_32_swap_ext_reloc_in): Define. - (lynx_32_swap_std_reloc_in): Define, get reloc bits in i386 - Lynx-specific way. - (lynx_32_swap_ext_reloc_out): Define. - (lynx_32_swap_std_reloc_out): Define. - (lynx_32_slurp_reloc_table): Define, call Lynx swapping fns. - (lynx_32_squirt_out_relocs): Define, call Lynx swapping fns. - (lynx_32_canonicalize_reloc): Define, call Lynx swapping fns. - (WRITE_HEADERS): Define, call Lynx swapping fns. - - * config/i386-lynx.mt (SELECT_VECS): Remove redundant vector. - -Thu Sep 30 17:50:52 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * reloc.c (bfd_reloc_code_type): Add linkage-table relative - relocations of size 8, 16, 32. Sort generic relocs by type rather - than size. Added a little documentation too. - - * aoutx.h (howto_table_std): Add BASE16 and BASE32 relocs. - (TABLE_SIZE): New macro. - (reloc_type_lookup): Handle BFD_RELOC_{16,32}_BASEREL for std - relocs. - (swap_std_reloc_out): Write baserel relocs correctly. - (swap_std_reloc_in): Handle r_baserel field. Assert that - r_jmptable and r_relative fields are clear, and that the computed - index does refer to a defined entry of the howto table. - -Tue Sep 28 14:47:46 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * section.c (bfd_make_section_anyway): New function. - * section.c: Change comments to say several sections can have - the same name. - * bfd-in2.h: Re-generate to reflect above change. - * coffgen.c (make_a_section_from_file): Call bfd_make_section_anyway - if still no section after the bfd_coff_make_section_hook. - * coffcode.h: Add comment about TWO_DATA_SECS. - -Tue Sep 28 03:22:24 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * ecoff.c (ecoff_slurp_symbolic_info): Always determine raw_size - explicitly. - * ecoff.c (ecoff_sec_to_styp_flags, ecoff_styp_to_sec_flags): Handle - .fini section. - -Mon Sep 27 18:29:18 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * config.bfd configure.host: Match on *-lynxos* for LynxOS, - add m68*-*-lynxos*. - * configure.in : Replaced i386lynx_vec with i386lynx_aout_vec - and i386lynx_coff_vec. - Added m68klynx_aout_vec and m68klynx_coff_vec. - * targets.c (target_vector): Removed i386lynx_vec, added - {i386,m68k}lynx_{aout,coff}_vec. - * i386lynx.c: Added copy of i386coff.c, renamed bfd target to - i386lynx_coff_vec. - * m68klynx.c: New file. - * config/i386-lynx.mt: Replaced i386lynx_vec with i386lynx_aout_vec - and i386lynx_coff_vec. - * config/m68k-lynx.mt: New file. - * hosts/i386lynx.h: Added definition of cfree as free (from Eichin). - * hosts/m68klynx.h: New file. - -Mon Sep 27 18:00:41 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * archive.c: Define offsetof here. - * hosts/*.h: Don't define it here. - -Mon Sep 27 19:09:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (bfd_section_from_shdr): Set filepos for SHT_STRTAB - section. - -Fri Sep 24 15:47:40 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hpux-core.c: Add comment about hpux version 7. - -Fri Sep 24 16:50:26 1993 Stu Grossman (grossman at cygnus.com) - - * lynx-core.c (lynx_core_file_p): Change per-thread register - section names from .regXXX to .reg/XXX to avoid parsing ambiguity - in gdb/corelow.c. Create alias .reg section for the currently - running thread. - -Fri Sep 24 13:22:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libecoff.h (ecoff_backend_data): Removed big_magic and - little_magic fields. - * coff-alpha.c (alpha_ecoff_backend_data): Removed initialization - of big_magic and little_magic. - * coff-mips.c (mips_ecoff_bad_format_hook): Make sure magic number - matches endianess of bfd. - (mips_ecoff_backend_data): Removed initialization of big_magic and - little_magic. - * ecoff.c (ecoff_set_arch_mach_hook): Set MIPS machine number - based on magic number. Support r4000 magic numbers. - (ecoff_get_magic): New function. - (ecoff_write_object_contents): Use ecoff_get_magic, not fields in - the backend structure. - * cpu-mips.c (arch_info_struct): Added case for r6000. - - For MIPS configurations put both big and little endian versions in - the list of targets; the code is getting compiled in anyhow. - * bigmips.mt (SELECT_VECS): Define to be ecoff_little_vec. - * decstation.mt (SELECT_VECS): Define to be ecoff_big_vec. - * mipsbelf.mt (SELECT_VECS): Define to be bfd_elf32_littlemips_vec. - * mipslelf.mt (SELECT_VECS): Define to be bfd_elf32_bitmips_vec. - * riscos.mt (SELECT_VECS): Define to be ecoff_little_vec. - -Fri Sep 24 00:42:23 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * osf-core.c: New file for OSF/1 core file support. - * config/alphaosf.mh (HDEFINES): Add -DOSF_CORE. - (HDEPFILES): Set to osf-core.o. - * bfd-in2.h (union tdata): Add osf_core_data member. - * targets.c: If OSF_CORE is defined, add osf_core_vec to target list. - * Makefile.in (OPTIONAL_BACKENDS): Add osf-core.o. - (osf-core.o): New dependency. - -Thu Sep 23 21:04:53 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * TODO: Remove note about making --with-bfd-targets use canonical - target configuration name (already done); reword item about - separating reading and writing stuff to not refer to a - non-existent item. - - * ecoff.h (ecoff_set_arch_mach_hook): Accept MIPS_MAGIC_LITTLE2 - and MIPS_MAGIC_BIG2. - -Thu Sep 23 11:06:34 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * gen-aout.c (main): Output newline after end of comment, not - before. (Reported by Jonathan Stone, - jonathan@oscar.stanford.edu). - -Thu Sep 23 10:48:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * archive.c (compute_and_write_armap): Put weak symbols in the - armap. - - * elfcode.h (fix_up_strtabs): Set sh_entsize for the .stab - section, not the .stabstr section. Set the type of the .stabstr - section to SHT_STRTAB. - (elf_section_from_bfd_section): Handle SHT_STRTAB sections. - - * section.c (SEC_DEBUGGING): New section flag. - * elfcode.h (bfd_section_from_shdr): If section is SHT_PROGBITS, - and the name starts with .debug, .line or .stab, set - SEC_DEBUGGING. If SHT_STRTAB, check for .debug and .stab. - * elf32-target.h (TARGET_BIG_SYM, TARGET_LITTLE_SYM): Added - SEC_DEBUGGING to section_flags. - * elf64-target.h (TARGET_BIG_SYM, TARGET_LITTLE_SYM): Added - SEC_DEBUGGING and SEC_CODE to section_flags. - * bfd-in2.h: Updated. - -Wed Sep 22 16:34:14 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.c (tdata): Add lynx_core_data. - - * ecoff.c (ecoff_compute_section_file_positions): Set filepos for - sections with SEC_LOAD set, even if SEC_HAS_CONTENTS is clear. - (ecoff_write_object_contents): Don't set scnptr to zero just - because size of section is zero. Needed for Irix 4.0.5F. - -Wed Sep 22 09:49:32 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Use i960-bout, not i960-coff for i960-*-nindy*. - -Wed Sep 22 07:34:09 1993 Stu Grossman (grossman at cygnus.com) - - * Makefile.in (OPTIONAL_BACKENDS): Add lynx-core.o. - * bfd-in2.h (tdata): Add lynx_core_data; - * config.bfd configure.host: Get rid of superfluous netbsd and - lynxos entries. - * configure.in: Add lynx-core.o to Lynx config. - * i386lynx.c: Add defs for core file support. - * lynx-core.c: New file with Lynx core file support. - * hosts/i386lynx.h: Move lots of host specific includes to here. - Add def of HOST_LYNX. Remove unnecessary defs. - -Mon Sep 20 19:18:10 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (bfd_section_from_shdr): Only set SEC_DATA for a - SHF_PROGBITS or SHT_STRTAB section if SEC_ALLOC is set. Never set - SEC_DATA for a SHF_NOBITS section. - - * nlm32-i386.c (nlm_i386_mangle_relocs): Check SEC_LOAD rather - than SEC_CODE | SEC_DATA. Add some casts to avoid warnings. - * nlmcode.h: Add some casts to avoid warnings. - (nlm_write_object_contents): Ignore relocs for sections that are - neither code nor data. Just use the symbol value for debugging - symbols; don't offset by the section vma. - -Fri Sep 17 18:08:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * reloc.c (bfd_perform_relocation): Don't return an error when - performing a reloc against an undefined weak symbol. - * syms.c (bfd_print_symbol_vandf): Show value of BSF_WEAK rather - than obsolete BSF_EXPORT. - -Fri Sep 17 02:04:31 1993 John Gilmore (gnu@cygnus.com) - - * hosts/{alphaosf.h, amix.h, apollo68.h, apollov68.h, - decstation.h, delta88.h, dgux.h, dose.h, go32.h, harris.h, - hp300.h, hp300bsd.h, hppabsd.h, hppahpux.h, i386aix.h, i386bsd.h, - i386linux.h, i386lynx.h, i386v.h, i386v4.h, irix3.h, irix4.h, - mipsbsd.h, ncr3000.h, rs6000.h, rtbsd.h, solaris2.h, sparc-ll.h, - std-host.h, stratus.h, sun3.h, sysv4.h, tahoe.h, ultra3.h, - vaxult.h, vaxult2.h, we32k.h}: Make sure that "offsetof" is - defined on all hosts, now that archive.c uses it. - -Thu Sep 16 18:20:30 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_map_symbols): Create section symbols for all - sections, not just allocated sections; debugging sections can have - relocs. - (elf_symbol_from_bfd_symbol): If there is an output section, use - the section index from that rather than the input section. - -Thu Sep 16 12:20:50 1993 Ken Raeburn (raeburn@cygnus.com) - - * libbfd-in.h (bfd_flush, bfd_stat): Reflect John's changes to - libbfd.h, which is regenerated from this file. - - * bfd-in.h (symtype): Deleted typedef. - -Wed Sep 15 11:48:37 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libbfd.c (COERCExx): Cast x to bfd_signed_vma before doing the - xor and subtract. Otherwise it will not sign extend if the type - of bfd_vma is larger than int. - - * ecoffswap.h (ecoff_swap_pdr_in): Get regoffset, iopt, fregoffset - and frameoffset as signed numbers. From Peter Schauer. - -Tue Sep 14 18:20:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-i386.c (elf_howto_table): Add bfd_elf_generic_reloc - special function for all reloc entries. - * elf32-target.h (TARGET_LITTLE_SYM): Add SEC_CODE to - section_flags. - * libelf.h (elf_symbol_type): Remove desc, type and other fields. - * Makefile.in (elf32-*.o): These depend upon elf32-target.h. - -Tue Sep 14 14:34:45 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * libbfd-in.h (struct artdata): Add armap_timestamp and - armap_datepos here too. - -Mon Sep 13 21:03:18 1993 John Gilmore (gnu@cacophony.cygnus.com) - - Improve timestamp support in BSD archive files to avoid linker - warnings. - - * libbfd.h (struct artdata): Add armap_timestamp and armap_datepos. - (bfd_flush, bfd_stat): Add prototypes. - * libbfd.c (bfd_flush): Add, does fflush on a BFD. - (bfd_stat): Add, does fstat on a BFD. - - * archive.c (_bfd_write_archive_contents): At end of file writing, - verify and possibly update the timestamp in the armap, if a BSD - archive. FIXME! Kludge recognizes BSD archive, rather than - vectoring properly. Should add to xvec. - (compute_and_write_armap): Move prototype to top, avoid PROTO. - (bsd_write_armap): Save timestamp and file location thereof, when - writing the armap in a BSD file. - (bsd_update_armap_timestamp): New function to check and - rewrite the timestamp. - - * hosts/std-host.h (offsetof): Define, if not already, for archive.c. - -Sat Sep 11 18:13:42 1993 Jim Kingdon (kingdon@poseidon.cygnus.com) - - * hosts/i386sco.h: Define a bunch of stuff for core files. - * sco-core.c: Remove, replace by trad-core.c. - * trad-core.c: If HOST_STACK_START_ADDR is defined, use it. - * config/i386sco.mh: Use trad-core not sco-core. - * hosts/i386isc.h, config/i386isc.mh: Remove. - * configure.host: Use i386sco for isc. - * config/i386-sco.mt: Remove, identical to i386-coff.mt. - * config.bfd: Use i386-coff not i386-sco. - - * config.bfd: Recognize i[34]86-*-solaris2* specifically rather - than using *-*-solaris2* (i486-unknown-solaris2 is i386-elf, not - i486-elf which doesn't exist). - -Fri Sep 10 12:56:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffswap.h (coff_swap_aouthdr_out): For ALPHAECOFF, force - padding field to zero. - - * config.bfd (i[34]86-*-netbsd*): New target; use i386-netbsd. - * configure.in: Remove bogus netbsd386 handling. - - * coff-mips.c: Don't warn about overflow for MIPS_R_JMPADDR reloc. - Correct overflow detection requires matching the upper four bits - of the destination against the PC. - -Thu Sep 9 16:57:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in: Make 64-bit stuff work with "--with-targets=all". - -Tue Sep 7 14:17:02 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libbfd-in.h: Removed swapping routines declarations. - * bfd-in.h: Added swapping routine declarations, and renamed them - from _do_* to bfd_*. - * libbfd.c: Renamed swapping routines from _do_* to _bfd_*. - * Changed all callers. - * libbfd.h, bfd-in2.h: Rebuilt. - -Mon Sep 6 15:28:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-i386.c (elf_howto_table): Set pcrel_offset to true for - R_386_PC32. - -Fri Sep 3 13:06:12 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in: Reorganized setting of makefile variables so - 64-bit stuff works again. - - * libbfd-in.h (_do_get*, _do_put*): Renamed via macros to clean up - namespace. - - * libelf.h (elf32_symbol_type, elf64_symbol_type): Deleted - "native_elf_sym" field, merged to make new type "elf_symbol_type". - (struct elf_obj_tdata): Field symbols is now elf_symbol_type*. - Deleted field raw_syms. - (obj_symbols): Remove cast. - (obj_raw_syms): Deleted. - * elfcode.h (elf_slurp_symbol_table): Don't set raw_syms or - native_elf_sym fields. - * elf32-hppa.c: Changed uses of elf32_symbol_type to - elf_symbol_type. - - From Pete Hoogenboom and Jeff Law: - - * elf32-hppa.c (ELF_MAXPAGESIZE): Define. - - * elf32-hppa.c (elf_hppa_tc_symbol): If the argument relocation - bits are zero (e.g., they specify no relocations), then do not - even bother adding their entries to the symextn section. - - * elf32-hppa.c (elf_hppa_tc_symbol): Any function, regardless - of scope can have an argument relocation stub. - - * elf32-hppa.c: (Elf32_hppa_Stub_description): Rename this - structure and type to elf32_hppa_stub_description. This makes - it consistent with the GNU coding conventions. - (elf32_hppa_stub_description): Added a 'next' field to allow - linking of stub description structures. - (elf32_hppa_stub_description): Added a 'stub_listP' field to - keep track of individual stubs. - (Elf32_hppa_Stub_list, Elf32_hppa_Stub_list_struct): Removed. - Combined with the elf32_hppa_stub_description structure. - (elf32_hppa_stub_name_list): New type to keep track of - individual stubs. - (add_stub): Removed. - (add_stub_by_name): New function. - (find_stub_by_name): New function. - (hppa_elf_build_arg_reloc_stub): Allow reusing stubs that - already exist. - (hppa_elf_build_long_branch_stub): Allow reusing stubs that - already exist. - - * elf32-hppa.c: (retval_mismatches): The direction of argument - relocation was reversed. - (hppa_elf_build_arg_reloc_stub): Return address was not being - restored. - (hppa_elf_arg_reloc_needed_p): Add argument containing caller - argument relocation bits so this function can be used in the check - for plabel stubs. - (hppa_elf_stub_check): Pass caller argument relocation bits into - hppa_elf_arg_reloc_needed_p(). - (hppa_look_for_stubs_in_section): Add check for plabel stubs and - pass caller argument relocation bits into - hppa_elf_arg_reloc_needed_p(). - -Thu Sep 2 00:59:55 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * libhppa.h (hppa_field_adjust): Remove unused `init_value' variable. - - * hosts/delta88v4.h: New for SVR4. - * configure.hosts: Use it. - -Wed Sep 1 14:23:32 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * libaout.h, netbsd386.c: Change M_I386 to M_386_NETBSD. M_I386 - is an SCO pre-define. - -Tue Aug 31 12:50:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlmcode.h (nlm_object_p): Set HAS_SYMS if there are external - references. - (nlm_swap_auxiliary_headers_{in,out}): The copyright length is - only one byte. - (nlm_get_symtab_upper_bound): Include debugging symbols in symbol - count. - (nlm_slurp_symbol_table): Make symlength unsigned. Read debugging - symbols as BFD local symbols. - (nlm_write_object_contents): Don't bother writing out exported - symbols more than once; they now appear in the symbol table more - than once (with and without a prefix) if necessary. Set offset - values to be non-zero as NLMLINK does. - -Tue Aug 31 12:07:43 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * libhppa.h: Restore #undefs of e_fsel and other e_* symbols. - -Fri Aug 27 16:43:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * section.c (struct sec): Move position of user_set_vma, and - document it. - (SEC_BALIGN): Disable for now. I don't think it's currently used. - - * elf32-hppa.c (elf_hppa_howto_table): Now static. - (symext_rootP, symext_lastP, global_value, GOT_value, - global_symbol, global_sym_defined, symextn_contents, - symextn_contents_real_size, elf_hppa_stub_rootP, - elf32_hppa_symextn_map, elf32_hppa_symextn_map_size): Rely on - default initialization. - (hppa_elf_gen_reloc_type): Macro "UNDEFINED" doesn't need a - trailing semicolon. - (hppa_look_for_stubs_in_section): Introduce temporaries to make - code more readable in 80 columns. - - * libhppa.h (all functions): Now inline under GNU C. - - More patches from Jeff Law: - - * elf32-hppa.c (AR_WARN): Give argument which caused the - invalid argument relocation. - (AR_UNIMP): Delete unused macro. - (hppa_elf_set_section_contents): Always return a value. - (elf32_hppa_backend_table_processing): Likewise. - (elf32_hppa_backend_section_processing: Likewise. - - * som.c: New file containing SOM specific code extracted - from hppa.c - - * som.h: New file containing SOM specific code extracted - from libhppa.h - - * hppa.c: Deleted. - - * libhppa.h: Delete SOM specific code. Add generic PA - code which can be shared by both SOM and ELF backends. - - * Makefile.in: Replace hppa.c with som.c. elf32-hppa.o - depends on libhppa.h now. - - * configure.in (hppa_vec): Needs som.o module instead of - hppa.o. - - * elf32-hppa.c: Include libhppa.h. Do not define - BYTES_IN_WORD. - - * elf32-hppa.h (hppa_reloc_field_selector_type): Delete - now lives in libhppa.h. - (hppa_reloc_field_selector_type_alt): Likewise. - - * hosts/hppabsd.h: Include <stdlib.h> and <unistd.h>. Do not - define malloc or free. - - * config/hppa-elf.mt (SELECT_ARCHITECTURES): Don't define - SELECT_VECS. - - * elf32-hppa.c (hppa_elf_relocate_unwind_table): Delete unused - variables. - (elf_hppa_reloc_type_lookup): Likewise. - (elf_hppa_tc_make_sections): Likewise. - (hppa_elf_arg_reloc_needed_p): Likewise. - (hppa_elf_build_long_branch_stub): Likewise. - (elf_reloc_map): Delete, no longer used. - (elf_hppa_reloc_map): Likewise. - (elf32_hppa_symextn_map_max_size): Likewise. - (elf32_hppa_get_sym_extn): Abort if type is bogus. - - * elf32-hppa.c (elf32_hppa_backend_fake_sections): Add processing - of the .hppa_unwind section. - -Wed Aug 25 16:13:49 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config.bfd: recognize m88110. - -Tue Aug 24 16:32:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - Merged changes from Jeff Law and Pete Hoogenboom at Utah: - - * elfcode.h (elf_section_from_bfd_section): Add detection of - SHT_NOTE sections. - - * elf32-hppa.c: - (hppa_elf_build_long_branch_stub,hppa_elf_long_branch_needed_p): - New functions for support of long branch stubs. - (hppa_elf_stub_check,hppa_look_for_stubs_in_section): Add - check for long branch stubs. - (hppa_look_for_stubs): Unused function. Removed. - (hppa_elf_set_section_contents): Implement a PA/ELF-specific - version of bfd_set_section_contents. - (hppa_elf_long_branch_needed_p): Only output debugging diagnostics - when BFD is configured for debugging. - - * elf32-hppa.c: (elf32_hppa_get_symextn_chain): New function - to return a list of symbols that have non-zero argument - relocation bits. - (hppa_elf_stub_finish): Make sure stub generation is done only - once. - - * elf32-hppa.c: (hppa_elf_stub_reloc): New function for - generation relocation entries within a stub. - (hppa_elf_build_arg_reloc_stub): Corrections to argument - relocation stubs. - - * elf32-hppa.c: New #define's for argument relocation types. - (mismatches, retval_mismatches): Updated to reflect new - argument relocation types. - (CURRENT_STUB_OFFSET): New macro. - - * elfcode.h (map_program_segments): Set the PF_X bit for data - segments. - - * elf32-hppa.c: (elf_hppa_howto_table): Add - R_HPPA_STUB_CALL_17 for support of linker stub generation. - (hppa_elf_reloc): Add support of R_HPPA_STUB_CALL_17 - relocation type. - - * elf32-hppa.h: (elf32_hppa_reloc_type): Add - R_HPPA_STUB_CALL_17 for support of linker stub generation. - - * hppa_stubs.h: Add new instructions that are used in linker - stub generation. - - * elf32-hppa.c (hppa_elf_relocate_unwind_table): The offsets in an - unwind descriptor were incorrect. - - * libelf.h (bfd_elf_find_section): Declare. - - * elf32-hppa.c: (elf32_hppa_backend_symbol_processing): New - function in place of global_sym field in elf_backend_data - structure. - (elf32_hppa_backend_symbol_table_processing, - elf32_hppa_backend_section_processing, - elf32_hppa_backend_fake_sections, - elf32_hppa_backend_section_from_shdr, - elf32_hppa_backend_section_from_bfd_section): New functions to - provide support of symbol extension sections and argument - relocation stubs. - (elf_info_to_howto): Remove call to abort(). - - * elf32-target.h: Support for special processing by the backend. - (struct elf_backend_data): Added elf_backend_symbol_processing, - elf_backend_symbol_table_processing, - elf_backend_section_processing, elf_backend_section_from_shdr, - elf_backend_fake_sections, and - elf_backend_section_from_bfd_section fields. - * elfcode.h: (bfd_section_from_shdr): Add a check for - processor-specific section types. - (elf_fake_sections): Add a check for processor-specific - section types. - (bfd_elf32_write_object_contents): Add a check to see if - there is any final section processing to be done by the - backend. - (elf_section_from_bfd_section): Add a check for - processor-specific section types. - (elf_slurp_symbol_table): Remove reference to global_sym in the - elf_backend_data structure. Replace it with a call to - elf_backend_symbol_processing. - * libelf.h: Remove global_sym field in the elf_backend_data - structure. Replace it with a series of backend-specific - functions. - - * elf32-hppa.c (hppa_elf_stub_branch_reloc): The formal argument - stub_sym should be called target_sym. - (hppa_elf_build_arg_reloc_stub): Refer to the stub bfd (abfd) - rather than the output bfd (output_bfd). - (hppa_elf_reloc): Get rid of references to the global_sym field in - the elf_backend_data structure. - - * elfcode.h (elf_fake_sections): Check the correct condition for - .bss. Also, detect the existence of a .note section. - - * elf32-hppa.c (hppa_elf_relocate_insn): r_format argument should - have been r_field. - - * hosts/hppabsd.h (HOST_MACHINE_ARCH): Reference to bfd_arch_m68k - should be a reference to bfd_arch_hppa. - - * hppa.c (hppa_vec): Replace bfd_false with _bfd_dummy_target in - the bfd_check_format structure to avoid a type mismatch. - -Mon Aug 23 1993 Sean Fagan (sef@cygnus.com) - and Jim Kingdon (kingdon@cygnus.com) - - Add NetBSD support: - * netbsd386.c: New file. - * aoutx.h: Make sym_is_debugger_info true for N_FN. - * Makefile.in, aout-target.h, config.bfd, configure.host, configure.in, - libaout.h, targets.c: Other changes. - -Fri Aug 20 17:04:59 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config/m88k-elf.mt: New file. - * config.bfd: Use it for m88*-*-sysv4*. - -Fri Aug 20 15:16:58 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elfcode.h (elf_build_phdrs): Unused function deleted. - (bfd_shdr_from_section): Ditto. - (write_relocs): Don't change section contents for addend. - (elf_locate_sh): Return type is now always elf_internal_shdr, - since the other types were really aliases for this type anyways. - Don't compile this function, since it is static and doesn't appear - to be used in this file. - (sym_is_global): Return non-zero for weak symbols. Abort if - section pointer is null. - (swap_out_syms): Reorder tests so function symbols can be weak. - (elf_slurp_symbol_table): Don't use BSF_EXPORT. - (elf_slurp_reloca_table): Make RELOC_PROCESSING section smaller by - extracting out some common code. Abort if BFD section symbol has - null name. - (elf_slurp_reloc_table): Translate ELF section symbols into BFD - section symbols. Don't read section contents to fill in addend - field. - - * elf32-i386.c (elf_howto_table): All partial_inplace fields - should be "true". - - * Merged from OSF: - - Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org) - - * libelf.h (struct Elf_Sym_Extra): New structure to contain ELF - specific information for a symbol. Put in elf_sym_num, which - gives the external symbol number in the elf object file, since - local symbols must come before global symbols. - (elf_sym_extra): New macro. - (elf_symtab_map): Delete, in favor of using Elf_Sym_Extra. - * elfcode.h (elf_map_symbols): Use Elf_Sym_Extra to map internal - symbol number to external number. Store the address of the - Elf_Sym_Extra field for the symbol in the udata field. - (elf_write_object_contents): Use Elf_Sym_Extra to map out symbols. - - Sun Jun 20 16:30:11 1993 Michael Meissner (meissner@osf.org) - - * elfcode.h (elf_obj_tdata): Add field to count the size of the - array of pointers to section symbols. - (elf_map_symbols): Bump the max index of the section symbols so - that we don't overwrite memory. Store the max index into the - elf_obj_tdata field. - - Sat Jun 19 10:12:27 1993 Michael Meissner (meissner@osf.org) - - * elfcode.h (elf_obj_tdata): Add pointer to an array of pointers - to the section symbols we created. Remove unused field - internal_syms. - (elf_map_symbols): Fill in array of pointers to section symbols. - Only create section symbols for sections that have SEC_ALLOC set, - and have non-zero size. - (elf_symbol_from_bfd_symbol): If udata is NULL, and this is a - section symbol, look up the section in the list of section - symbols, and set the udata pointer appropriately. Otherwise, if - udata is still NULL, fail an assertion, and use 0, instead of - dropping core. - -Fri Aug 20 12:18:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config.bfd (mips-*-elfl*, mips-*-elf*): New targets, using - mipslelf and mipsbelf respectively. - * config/mipslelf.mt, config/mipsbelf.mt: New files. - * elf32-mips.c: Added some reloc information. - * configure.in: Fixed error message. - - * ecoff.c (ECOFF_LONG_SIZE): Removed. Just use constants. - -Thu Aug 19 09:45:51 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * Makefile.in (BFD_LIBS, ALL_MACHINES, BFD32_BACKENDS, BFD64_BACKENDS, - OPTIONAL_BACKENDS): Alphabetize entries and add a few missing ones. - * archures.c: Alphabetize decls. - - * configure.in, targets.c: Add missing vectors to the tables. - * targets.c (target_vector) [!SELECT_VECS]: Add DEFAULT_VECTOR. - Remove hp300bsd_vec due to clash with sunos_big_vec. - -Tue Aug 17 18:12:32 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/i386{mach3,osf1mk}.h: New files, for Mach hosting. - * hosts/i386mach.h: removed, replaced by i386osf1mk.h. - * config/i386mach3.mt, i386mach3.c: New files, for Mach a.out format. - * Makefile.in, configure.host, config.bfd: Corresponding changes. - * hosts/decstation.h: Include <sys/param.h> not <machine/param.h>. - -Tue Aug 17 15:19:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffgen.c (coff_section_symbol): If section's output_section is - not yet set, point to itself. This is needed because this is - called on the output file, not the input file. - - * coff-rs6000.c (dummy_reloc, RTYPE2HOWTO): Set howto field to a - dummy value, rather than leaving it NULL. - - * archures.c (bfd_default_set_arch_mach): Set bfd_error on - failure. - * aoutx.h (NAME(aout,set_arch_mach)): Check return value of - bfd_default_set_arch_mach. - -Tue Aug 17 09:42:16 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * config.bfd (cpu): Extract from canonical name with sed. - * configure.in: Don't pass it. - -Sun Aug 15 20:45:45 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * bfd-in.h: Remove {BYTE,WORD,LONG}_SIZE; they are pointless and - BYTE_SIZE conflicts with a Mach header. - * ecoff.c: Change LONG_SIZE to ECOFF_LONG_SIZE and define it. - - * configure.host: Make sure all OS fields end in *. - -Fri Aug 13 16:33:33 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_slurp_reloc_table): Use bfd_abs_section for - RELOC_SECTION_NONE and RELOC_SECTION_ABS. If a reloc section - doesn't exist, don't try to create it. - - * nlmcode.h (nlm_write_object_contents): procedure offsets are - from start of code segment, not start of file. - * config/i386-nlm.mt (DEFAULT_VECTOR): It's nlm32_i386_vec, not - bfd_nlm32_i386_vec. - * configure.in (SELECT_VECS switch): Likewise. - -Thu Aug 12 10:32:47 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * format.c (bfd_check_format): If the target matches the default - target, set match_count to 1, to ignore any previous matches. - - * Makefile.in (BFD32_BACKENDS): Remove srec.o, add reloc16.o. - - * configure.in: Add reloc16.o when we add - coff-h8300.o, coff-h8500.o, coff-sh.o, coff-z8k.o. - Makefile.in (BFD_LIBS): Remove reloc16.o. - - * config/u68k-coff.mt: Fix typo, DEFAULT_TARGET for - DEFAULT_VECTOR. - - * config/h8300-coff.mt, h8500-coff.mt, sh-coff.mt, st2000.mt, - z8k-coff.mt (DEFAULT_VECTOR): Define. Don't explicitly add - S-records via SELECT_VECS. - - * targets.c (target_vector), Makefile.in (BFD_LIBS): Always - support S-records, for convenience. - -Thu Aug 12 08:30:05 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-alpha.c (alpha_howto_table, alpha_finish_reloc, - alpha_ecoff_swap_reloc_{in,out}, alpha_bfd_reloc_type_lookup): - Read and write Alpha relocs. Can't process them yet. - * ecoff.c (ecoff_slurp_reloc_table): Recognize new reloc sections. - If the section does not already exist, create it. - - * ecoffswap.h (ecoff_swap_pdr_{in,out}): Handle new fields defined - on the Alpha. - - * libecoff.h (ecoff_backend_data): Added constructor_reloc and - finish_reloc fields. - * ecoff.c: Move MIPS reloc support from here... - * coff-mips.c: to here. - * ecoff.c (ecoff_set_symbol_info): Get constructor reloc howto - from backend. - (ecoff_slurp_reloc_table): Removed MIPS specific stuff. Call - finish_reloc backend function. - (ecoff_write_object_contents): Removed MIPS specific assertions. - * coff-mips.c (mips_finish_reloc): New function. - (mips_ecoff_backend_data): Fill in new fields. - * coff-alpha.c (alpha_ecoff_backend_data): Use NULL for new - fields. - * targets.c: Added extern for ecoffalpha_little_vec. - - * bfd.c (_bfd_host_big_endian): Removed. - * bfd-in.h (HOST_BYTE_ORDER_BIG_P, bfd_header_twiddle_required): - Removed. - * bfd-in2.h: Regenerated. - -Wed Aug 11 12:11:23 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * config.bfd: New file, broken out of configure.in. - * configure.in: Use it, and use standard target names for - --with-targets, replacing --with-bfd-targets. - - * archures.c (archures_init_table): Add bfd_sh_arch. - - * configure.in: Include coff-m68k.o for m68kcoffun_vec. - Include nlm32.o and nlm.o for bfd_nlm32_i386_vec. - Fix error in error message. - - * oasys.c: Make bfd_error_vector extern. - - * configure.in: Include stab-syms.o for a.out/b.out targets - and hp300{bsd,hpux}. - -Wed Aug 11 06:40:51 1993 Ian Lance Taylor (ian@cygnus.com) - - * nlmcode.h (nlm_compute_section_file_positions): Add the .bss - section before setting output_has_begun. - (nlm_set_section_contents): Remove argument names from - mangle_relocs_func prototype. - (nlm_write_object_contents): Remove shadowing local variable. - Don't write out debugging symbols if debugInfoOffset is -1. Add - the codeImageOffset to the start, exit, and check procedure - offsets. - * nlm32-i386.c (nlm_i386_write_reloc, nlm_i386_mangle_relocs): - Don't check partial_inplace field; its value is irrelevant. - - * Base use of sco-core on host, not target. - * configure.host (i[34]86-*-sco*): Use i386sco rather than i386v. - * config/i386-sco.mt (TDEFINES): Removed. - * config/i386sco.mh: New file to use sco-core. - * hosts/i386sco.h: New file; just includes hosts/i386v.h. - - * ecoffswap.h (ecoff_swap_{hdr,ext}_{in,out}): Use signed - conversions for some fields. - -Tue Aug 10 13:32:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_gprel_reloc): If _gp is not defined, give an - error rather than aborting. - - * libnlm.h (struct nlm_backend_data): Added mach field. - (nlm_machine): New accessor macro. - * nlm.c (nlm_mkobject): Set architecture and machine from backend - information. - * nlm32-i386.c (nlm32_i386_backend): Initialize new mach field. - -Tue Aug 10 09:31:18 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * configure.in: Replace calls to sort with shell code - to uniq the lists. - -Tue Aug 10 06:23:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in: Include aout32.o for any a.out/b.out formats. - -Mon Aug 9 09:37:18 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * config/i386-linux.mt (SELECT_VECS): Support bfd_elf32_i386_vec. - * config/m68k-elf.mt (SELECT_VECS): Support m68kcoff_vec. - * config/i386-elf.mt (SELECT_VECS): Support i386coff_vec. - * config/hppa-elf.mt (SELECT_VECS): Support hppa_vec. - * config/sparc-elf.mt (SELECT_VECS): Support sunos_big_vec. - * config/i386-sco.mt (SELECT_VECS): Don't define; Ian says it was - just a hack. - -Mon Aug 9 13:15:00 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config/m88k-coff.mt (DEFAULT_VEC -> DEFAULT_VECTOR): renamed. - -Mon Aug 9 14:26:45 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * syms.c (BSF_EXPORT): Now same as BSF_GLOBAL. - - * bfd.c (bfd_scan_vma): New function. - -Mon Aug 9 11:29:53 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd-in.h (bfd_get_architecture, bfd_get_machine): Removed - obsolete macros. - * bfd-in2.h: Updated. - - * ecoff.c (ecoff_slurp_armap): Correct bug in initialization of - stringbase. - -Sun Aug 8 12:21:13 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * configure.in: Remove unneeded test. - -Sun Aug 8 12:41:22 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * Makefile.in ({dist,real}clean): Use $(MAKE), not make. - -Sat Aug 7 09:14:21 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * config/st2000.mt (TDEFINES): Don't define MRI; not used. - - * PORTING, TODO, config/README: Update to reflect below changes. - - * configure.in: Replace MINIMIZE and --with-minimal-bfd with - --with-bfd-targets="target1,target2,..." and the special target - "all" to get the previous default behavior. - Figure out which architecture and backend .o files are needed from - DEFAULT_VECTOR, SELECT_VECS, and SELECT_ARCHITECTURES as set in - the .mt files. Define TDEFAULTS based on them, also. - - * Makefile.in: Remove references to MINIMIZE. - * archures.c, targets.c: Ditto. - - * config/*.mt: Define DEFAULT_VECTOR, SELECT_VECS, and - SELECT_ARCHITECTURES as variables rather than as -D arguments to - TDEFAULTS. - - * config/a29k-coff.mt,alphaosf.mt, i386-sco.mt, i960-bout.mt, - i960-coff.mt (TDEFAULTS): Don't put the default vector in - SELECT_VECS manually; it's automatic now. - - * config/i386-sco.mt (TDEFAULTS): Don't put &sco_core_vec in - SELECT_VECS manually; -DSCO_CORE does it automatically now. - - * config/h8300-coff.mt,h8500-coff.mt,sh-coff.mt,st2000.mt,z8k-coff.mt - (TDEFAULTS): Don't define BFD; not used. - - * config/hppaosf.mh (HDEFINES): Don't define SELECT_ARCHITECTURES; - this is a host, not a target. - -Sat Aug 7 05:28:03 1993 Fred Fish (fnf@deneb.cygnus.com) - - * elfcode.h (elf_object_p): Add comment about what this function - does and to watch out for side effects. Add FIXME for memory leaks. - Fix comment about checking for matching byte order. Preserve - pointer to old tdata (if any), and restore it if we don't match - file with target vector. If we are going to use goto's, use them - consistently and maintainably. - * nlmcode.h (nlm_object_p): Expand comments about leaked memory - to note that the problem is even more serious than just leaked - memory. Replace goto with more traditional return. - -Fri Aug 6 12:00:03 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - Fix incorrect or useless makefile variable definitions: - * config/news.mt, config/u68k-coff.mt (TDEFAULTS): Use this to - define DEFAULT_VECTOR, instead of TDEFINES. - * config/i386aix.mh (MINIMIZE): Don't define. - * config/hppaosf.mh (MINIMIZE): Don't conditionalize. - * config/rs6000.mh (ALLOCA), - * config/i386v.mh (ALLOCA), - * config/i386linux.mh (ALLOCA), - * config/i386isc.mh (ALLOCA), - * config/go32.mh (EXTRALIBS): Don't define; not used. - * config/solaris2.mh (HDEFINES): Renamed from H_DEFINES. - * config/alphaosf.mt (TDEFINES): Set it, not HDEFINES. - * config/z8k-coff.mt (CC): Don't define. It's a target, not a host. - - * config/README: New file, explaining the variables. - - * targets.c (target_vector): Add hp300_bsd_vec. - * Makefile.in (BFD32_BACKENDS, CFILES): Add hp300bsd. - (hp300bsd.o): New rule. - -Fri Aug 6 15:13:22 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * libelf.h (NAME): Provide a default definition, that's neither - for 32 bits nor for 64. - - Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org) - - * libelf.h (elf_hash): Change declaration to bfd_elf_hash, since - that is what is in elf.c. - -Fri Aug 6 12:28:38 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_set_symbol_info): Removed special handling for - scBss and scSBss symbols, since it was wrong. - - * Makefile.in (coff-mips.o, coff-alpha.o): Don't depend on - coffcode.h. - - * coffcode.h (sec_to_styp_flags): Inspired by mb@tti.COM (Michael - Bloom): Only set STYP_BSS for SEC_ALLOC sections. - - * ecoff.c (ecoff_slurp_armap): From Arne Henrik Juul - <arnej@kari.fm.unit.no>: Handle a COFF style armap. - -Fri Aug 6 09:59:45 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hpux-core.c: Cast return value from bfd_zalloc. - -Thu Aug 5 13:22:44 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * aoutx.h (log2): Delete i387-specific code. - - * Makefile.in (BFD_LIBS): Always include elf.o. - (BFD32_BACKENDS): Don't include elf.o here. - (ofiles): Delete references to ofiles2 and ofiles3. - (do_clean): Delete ofiles. - (BFDIN_H): Changed references to $(srcdir)/bfd-in2.h. - (stmp-bfd.h): Use bfd.h-new as temporary name, not bfd.h2. - (headers): Use bfd-in2.h-new as temporary name, not bfd.h-new. - - * bfd-in.h: Reworded comment to make it clear that bfd-in2.h is a - generated file. - - * reloc.c (enum bfd_reloc_code_real): Added i386-elf reloc types - (from Meissner's additions to bfd-in2.h). - - * elf32-i386.c (ELF_MAXPAGESIZE): Define. - - Merged: - - Wed Jun 23 06:05:58 1993 Michael Meissner (meissner@osf.org) - - * elfcode.h (elf_write_object_contents): Don't drop core if - elf_symbol_from returns a NULL pointer when processing a non-elf - symbol, use a 0 size instead. - - Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org) - - * elfcode.h (elf_hash): Delete macro mapping elf_hash to - bfd_elf32_hash, since the hash table is independent of the 32/64 - bit system. - - * libelf.h (elf_hash): Change declaration to bfd_elf_hash, since - that is what is in elf.c. - - Sat Jun 19 10:12:27 1993 Michael Meissner (meissner@osf.org) - - * elf32-i386.h (reloc_type): Reformat spacing. - (elf_howto_table): Add the rest of the 386/ELF relocations. - (elf_i386_reloc_type_lookup): Ditto. - (elf_i386_info_to_howto): Ditto. - (elf_i386_info_to_howto_rel): Ditto. - -Thu Aug 5 10:07:43 1993 Fred Fish (fnf@cygnus.com) - - * nlmcode.h (nlm_get_reloc_upper_bound): Test return value - of nlm_slurp_symbol_table as boolean, not pointer. - * nlmcode.h (nlm_canonicalize_reloc): Test return value - of nlm_slurp_reloc_fixups as boolean, not pointer. - -Wed Aug 4 16:22:55 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config/go32.mh: remove HDEFINES; since __MSDOS__ and __GO32__ - are now predefined by GCC - -Wed Aug 4 16:06:29 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * coffgen.c (coff_print_symbol): Add the section offset to the - line number address, so it's printed the same way as the function - address. Only showed up for line numbers that aren't in the first - section (.text). - -Wed Aug 4 08:33:55 1993 Ian Lance Taylor (ian@cygnus.com) - - * libnlm.h (nlm_backend_data): Added nlm_mangle_relocs. - (nlm_mangle_relocs_func): New macro. - * nlm32-i386.c (nlm_i386_write_reloc): Rewrote correctly. - (nlm_i386_mangle_relocs): New function. - * nlmcode.h (nlm_compute_section_file_positions): Move all common - symbols into the .bss section. - (nlm_set_section_contents): Call the mangle_relocs function. - (nlm_write_object_contents): Treat a reloc against any defined - symbol as an internal reloc. Fix bug in external reloc counting. - Get the offset and debugging type right for .bss symbols. Only - output debugging symbols for defined symbols. - - * coff-h8500.c (rtype2howto): Do an fprintf to stderr rather than - using printf. - * coff-z8k.c (rtype2howto): Likewise. - * coffcode.h (dummy_reloc16_extra_cases): Likewise. - * elf32-i386.c (TRACE): Likewise. - * hp300hpux.c (convert_sym_type, swap_std_reloc_in): Likewise. - * rs6000-core.c (rs6000coff_get_section_contents): Likewise. - * coffgen.c (coff_print_symbol): Do an fprintf to the file - argument rather than using printf. - -Tue Aug 3 18:17:25 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffswap.h: Added macros used when accessing several fields; - default is the same as before. - (coff_swap_aouthdr_{in,out}): Handle the Alpha ECOFF fields. - * coff-alpha.c: Defined macros to use the right sizes in - coffswap.h. - * libecoff.h: Backend information is now in target vector, not - BFD. Start of backend information is COFF backend information. - * coff-alpha.c, coff-mips.c: Changed accordingly. - * ecoff.c (ecoff_mkobject): New function. - (ARMAP_START): Changed into backend information, since Alpha uses - a different name. - (ecoff_slurp_armap): Don't overlay archive header. - * bfd.c: Include libcoff.h. - -Tue Aug 3 16:33:11 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * Makefile.in (install): Fix sh syntax error. - - * aoutf1.h: Make bfd_error_trap extern; it's defined in bfd.c. - -Tue Aug 3 15:19:09 1993 Fred Fish (fnf@deneb.cygnus.com) - - * nlm_slurp_symbol_table: Don't use '&' on arrays. - -Tue Aug 3 11:06:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.c: New file for generic ECOFF functions. - * ecoffswap.h: New file for ECOFF swapping functions which differ - only slightly for different targets. - * libecoff.h: Added prototypes for ecoff.c functions. - (ecoff_backend_data): New structure. - (ecoff_tdata): Added backend_data field. Changed external data - pointers to be PTR rather than to a particular struct. - (ecoff_symbol_struct): Moved in from coff-mips.c. - * coff-alpha.c, coff-mips.c: Moved common functions into ecoff.c. - Added ECOFF backend structures. Include ecoffswap.h. - * coff-msym.c: Removed; superseded by ecoffswap.h. - * bfd.c: Include coff/internal.h. - * Makefile.in (BFD_LIBS): Removed coff-mips.o and coff-msym.o. - Added ecoff.o. - (BFD64_BACKENDS): Added coff-alpha.o. - (CFILES): Removed coff-msym.c. Added ecoff.c. - (bfd.o): Added dependency on $(INCDIR)/coff/sym.h. - (coff-mips.o): Added dependency on ecoffswap.h and coff/ecoff.h. - (ecoff.o, coff-alpha.o): New targets. - (coff-msym.o): Removed target. - -Mon Aug 2 23:33:38 1993 John Gilmore (gnu@cygnus.com) - - * elf32-hppa.h, hosts/*: Remove (one more time) all occurrances - of EXFUN in the BFD sources. Heave ho! - -Mon Aug 2 16:45:57 1993 Stu Grossman (grossman at cygnus.com) - - * coffcode.h (coff_set_arch_mach_hook): Add check for I386LYNXMAGIC. - -Mon Aug 2 12:18:03 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * hosts/sun3.h: remove some more conflicting decls - -Mon Aug 2 11:48:23 1993 Stu Grossman (grossman at cygnus.com) - - * i386lynx.c: Remove unnecessary def of N_HEADER_IN_TEXT, - redefine TEXT_START_ADDR to be 0. - -Sun Aug 1 22:54:08 1993 Stu Grossman (grossman at cygnus.com) - - * configure.host, configure.in, hosts/i386lynx.h: Lynx/386 - host and target info. - -Fri Jul 30 18:08:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlm32-i386.c: New file. First cut at i386 NLM code. - * libnlm.h: Added some more prototypes. - (struct nlm_relent): New structure. - (nlmNAME(symbol_type)): Added rcnt and relocs fields. - (struct nlm_obj_tdata): Added new fields: nlm_symbols, - nlm_text_low, nlm_data_low, nlm_reloc_fixups, - nlm_reloc_fixup_secs. - (struct nlm_backend_data): New structure, with accessor macros. - * nlmcode.h: Use NLM_HIBIT rather than MSB. - (nlm_object_p): Set SEC_RELOC for .text and .data. Don't set - SEC_DATA for .bss. Set HAS_RELOC and HAS_SYMS for abfd. Set the - architecture. - (nlm_swap_fixed_header_out, nlm_swap_variable_header_out, - find_nonzero, nlm_swap_auxiliary_headers_out): New outbound - swapping functions. - (nlm_get_symtab_upper_bound, nlm_slurp_symbol_table): Include - external references in symbol table as undefined symbols. - (nlm_get_symtab, nlm_slurp_symbol_table): Fill in alocation - argument in get_symtab rather than in slurp_symbol_table. - (nlm_slurp_symbol_table): Save symbol information in tdata. - (nlm_print_symbol): New function. - (nlm_slurp_reloc_fixups, nlm_get_reloc_upper_bound, - nlm_canonicalize_reloc): New functions to read relocs. - (nlm_compute_section_file_positions, nlm_set_section_contents, - nlm_external_reloc_compare, nlm_write_object_contents): New - functions to create NLM files. - * nlm-target.h: Define all the nlm functions here either as - default values or in terms of nlmNAME. Use JUMP_TABLE(nlm). Set - the backend_data field to TARGET_BACKEND_DATA. - * nlm32-gen.c, nlm64-gen.c: Don't define function macros here; - they are now in nlm-target.h. - (TARGET_BACKEND_DATA): Define as NULL. - * nlm.c (nlm_mkobject): Do allocate the tdata field. - (nlm_set_arch_mach): New function. - * targets.c: Added nlm32_i386_vec. - * Makefile.in (BFD32_BACKENDS): Added nlm32-i386.o. - (CFILES): Added nlm32-i386.c. - (nlm32-gen.o, nlm64-gen.o): Depend on nlm-target.h. - (nlm32-i386.o): New target. - -Thu Jul 29 20:20:39 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * hosts/sun3.h: remove some function decls that conflict w/ ANSI - C, and aren't needed anyway (return int) - -Wed Jul 28 15:46:38 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elfcode.h: Use casts with bfd_alloc and alloca. - -Tue Jul 27 12:51:43 1993 Fred Fish (fnf@deneb.cygnus.com) - - * nlm{32,64}-gen.c (JUMP_TABLE_PREFIX): Delete. - * nlm{32,64}-gen.c (JUMP_TABLE_INIT): New macro that works with - older cpp's, that don't do additional replacement on the JUMP_TABLE - macro's argument. - * nlm-target.h (JUMP_TABLE_INIT): Use new macro in place of - JUMP_TABLE macro. - -Mon Jul 26 17:39:01 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - Yet another trad-core variant: - * config/esix.mh, hosts/esix.h: New files. - * configure.hosts: Use them. - -Mon Jul 26 13:22:15 1993 Ian Lance Taylor (ian@cygnus.com) - - * reloc.c (bfd_perform_relocation): Handle the case of - complain_overflow_bitfield, rightshift > bitpos, and a negative - number. - -Mon Jul 26 14:40:10 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elfcode.h: Reimplement segment writing. - (elf_write_phdrs): Use precomputed e_phoff rather than making - assumptions. - (elf_build_phdrs): Disabled, for now. - (assign_file_position_for_section): Don't change file offset for - SHT_NOBITS. - (assign_file_positions_for_symtab_and_strtabs): New function. - (struct seg_info): New type. - (map_program_segments): New function. - (assign_file_positions_except_relocs): For executables, leave - section headers &c for last, and properly align all sections with - flag SHF_ALLOC set. - (prep_headers): No longer abort when EXEC_P is set. - (write_shdrs_and_ehdr): Deleted all code relating to program - segments. - - * elfcode.h (various): Deleted some unused code, and debugging - "malloc(0)" calls. - (write_relocs): Cache value of last symbol looked up, to save - time if the symbol is referred to repeatedly. - (elf_fake_sections): Check only SEC_RELOC flag, not number of - relocs. - (assign_section_numbers): Likewise. - - * Makefile.in (ofiles): Stars in wildcards belong outside quotes. - - * libelf.h (struct elf_backend_data): New field, maxpagesize. - (struct elf_obj_tdata): New field, phdr. - * elf32-target.h (elf32_bed): Initialize maxpagesize from - ELF_MAXPAGESIZE. - (ELF_MAXPAGESIZE): Default to 1. - * elf64-target.h (elf64_bed, ELF_MAXPAGESIZE): Likewise. - * elf32-sparc.c (ELF_MAXPAGESIZE): Define. - (elf_sparc_howto_table): All relocs should have pcrel_offset=true. - Most should have length field of `2'. - - * reloc.c (bfd_perform_relocation): Handle 64-bit relocs. - - * config/sparc-aout.mt (TARGET_BACKENDS): Define. - -Mon Jul 26 08:56:16 1993 Ian Lance Taylor (ian@cygnus.com) - - * configure.in: Don't look in ${srcdir} for ${target_makefile_frag}; - the top level script has already adjusted for it. - -Mon Jul 26 08:09:19 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * srec.c (srec_write_symbols): Get CR LF in the right order. - -Mon Jul 26 02:08:41 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/vaxbsd.h: Include std-host.h. Don't include <machine/param.h>. - -Sat Jul 24 16:13:01 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * reloc.c (bfd_perform_relocation): Handle case of rightshift != - bitpos when overflow checking. - -Fri Jul 23 10:20:27 1993 Doug Evans (dje@canuck.cygnus.com) - - * bfd.c (bfd_nonrepresentable_section, bfd_undefined_symbol, - bfd_reloc_value_truncated, bfd_reloc_is_dangerous, bfd_assert): - Send error messages to stderr. - -Thu Jul 22 15:57:29 1993 Fred Fish (fnf@deneb.cygnus.com) - - * nlm{32,64}-target.h: Remove. - * nlm-target.h: New file, merged from nlm{32,64}-target.h - * libnlm.h (NLM_ARCH_SIZE): Define to ARCH_SIZE. - * nlm.c (ARCH_SIZE): Remove define to zero. - * nlm32-gen.c (ARCH_SIZE): Define to 32. - * nlm32-gen.c (JUMP_TABLE_PREFIX): Define to nlm32. - * nlm{32,64}-gen.c (nlm-target.h): Include. - * targets.c, libnlm.h, nlm.c, nlm{32,64}-gen.c, nlm{32,64}.c, - nlmcode.h: Convert prefixes from bfd_nlm<size> to just - nlm<size>, and use macros select size. - -Thu Jul 22 15:40:14 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * Makefile.in (Makefile): add configure.in, drop redundant - $(srcdir), drop redundant ./ - -Thu Jul 22 13:34:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * hpux-core.c: New file; backend for HP/UX style core files. - * bfd.c (struct _bfd): Renamed hppa_core_data field to - hpux_core_data. - * bfd-in2.h: Updated. - * hppa.c (make_bfd_asection, hppa_core_file_p, - hppa_core_file_failing_command, hppa_core_file_failing_signal, - hppa_core_file_matches_executable_p): Moved into hpux-core.c. - Removed from target vector. - * libhppa.h (struct hppa_core_struct and accessor macros): Moved - into hpux-core.c. - * targets.c: If HPUX_CORE is defined, add hpux_core_vec to - target list. - * config/hp300.mh (HDEFINES): Set to -DHPUX_CORE. - (HDEPFILES): Set to hpux-core.o. - * config/hppabsd.mh, config/hppahpux.mh: Likewise. - * hosts/hp300.h (HOST_HP300HPUX): Define. - * Makefile.in (OPTIONAL_BACKENDS): Added sco-core.o, - aix386-core.o, hpux-core.o. - (sco-core.o, aix386-core.o, hpux-core.o): New dependencies. - - * reloc.c (enum complain_overflow): New enumeration with the - various flavours of overflow checking. - (srtuct reloc_howto_struct): Changed complain_on_overflow field - from boolean to emum complain_overflow. Removed obsolete absolute - field. - (HOWTO): Removed absolute argument. - (bfd_perform_relocation): Do overflow checking on all types of - fields. - * bfd-in2.h: Updated accordingly. - * all targets: Updated initialization of reloc howto tables. - -Wed Jul 21 20:34:34 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * opncls.c (bfd_create): Don't use C++ keyword "template" as a C - variable name. - -Tue Jul 20 15:02:23 1993 Fred Fish (fnf@deneb.cygnus.com) - - * coff-m68k.c (m68k_howto2rtype): Make arg CONST to match callers. - - * elfcode.h: Fix several illegal pointer combination warnings for - usages of bfd_alloc and alloca. - - * libnlm.h (nlm_obj_tdata): Rename hidden struct members to avoid - apparent Sun C preprocessor recursion. Fix access macros. - * nlmcode.h: Remove spurious '&' before several array references. - -Tue Jul 20 14:36:27 1993 Jim Kingdon (kingdon@deneb.cygnus.com) - - * Rename for DOS uniqueness: coff-m68k-un.c -> coff-u68k.c - config/m68k-coffun.mt -> u68k-coff.mt. - * Makefile.in, configure.in: Corresponding changes. - -Tue Jul 20 16:21:52 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf32-sparc.c (elf_sparc_howto_table): Don't use "&" before - function name; it's valid without, and some compilers give - warnings with it there. - -Tue Jul 20 08:21:15 1993 Fred Fish (fnf@deneb.cygnus.com) - - * bfd-in.h: Apply some of the changes that were made to bfd-in2.h. - * bfd.c (union tdata): Add nlm_obj_data; - * targets.c (enum target_flavour): Add bfd_target_nlm_flavour. - -Mon Jul 19 20:46:18 1993 Fred Fish (fnf@deneb.cygnus.com) - - * configure.in (*-*-netware, i[34]86-*-netware): New configs. - * Makefile.in (BFD32_BACKENDS): Add nlm.o, nlm32.o, nlm32-gen.o. - * Makefile.in (BFD64_BACKENDS): Add nlm64.o, nlm64-gen.o. - * Makefile.in (CFILES): Add nlm{32,64}.c, nlm{32,64}-gen.c. - * Makefile.in (nlm.o, nlm{32,64}.o, nlm{32,64}-gen.o: New targets. - * bfd-in2.h (INLINE): Defines moved here. - * {aoutx.h, elf.c, elfcode.h}: Move INLINE defines to bfd-in2.h. - * libelf.h (CAT4): Move define to bfd-in2.h. - * bfd-in2.h (CAT4): Merge CAT4 macro with other CAT macros. - * bfd-in2.h (union tdata): Add nlm_obj_data. - * bfd-in2.h (enum target_flavour): Add bfd_target_nlm_flavour. - * targets.c (bfd_nlm{32,64}_{big,little}_vec): Add prototypes. - * targets.c (target_vector): Add bfd_nlm{32,64}_{big,little}_vec. - * (libnlm.h, nlm.c, nlmcode.h, nlm{32,64}-gen.c, - nlm{32,64}-target.h, nlm{32,64}.c, config/i386-nlm.mt): New files - for NLM support. - -Mon Jul 19 15:09:01 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * configure.{hosts,in}: add i[34]86-*-lynxos* support - -Mon Jul 19 14:53:30 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * elf.c, elfcode.h, libelf.h: Serious reorganization. - Deleted `thunk' structure, merged into tdata, duplicate data - eliminated. - Rearranged functions, grouping by functionality. - Broke up many functions in elfcode.h, re-ordered many parts of - file writing to handle unpredictable state of section relocation - table as provided by various applications. - Still needs cleanup: Merge functions back together, split out - data structure with only data that is used only when writing out - object file. - - * elf.c (bfd_elf_generic_reloc): New function, taken from - coff-mips.c. - * elf32-sparc.c (elf_sparc_howto_table): Use it, to work around - bfd_perform_relocation lossage. - - * Makefile.in (BFD_LIBS): Include coff-mips.o and coff-msym.o, so - that gdb will link. - (ofiles): Don't use sort or uniq; do it with sh constructs. - -Sun Jul 18 19:42:14 1993 Jim Kingdon (kingdon@rtl.cygnus.com) - - * coffcode.h: Recognize I386PTXMAGIC. - * aoutf1.h, libaout.h: Add M_386_DYNIX. - * trad-core.c (TRAD_CORE_USER_OFFSET, TRAD_CORE_STACK_FILEPOS): - New macros; use it if defined. - * config/symmetry.mh, hosts/symmetry.h: New files. - -Fri Jul 16 14:56:31 1993 Jim Kingdon (kingdon@rtl.cygnus.com) - - * Rename elf{32,64}-generic.c to *-gen.c for 14 char filenames. - * Makefile.in: Change accordingly. - (CFILES): Add elf64-gen.c. - -Fri Jul 16 09:53:23 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c: Use MIPS_AOUT_{OZ}MAGIC rather than {OZ}MAGIC. - -Thu Jul 15 16:02:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-m88k.c (howto_table): Corrected bitsize for R_PCR26L from - 16 to 26. - -Wed Jul 14 15:29:56 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hppa.c [HOST_HPPABSD]: Use hpux-style core files. - * libhppa.h [HOST_HPPABSD]: Include hpux version of core.h - -Wed Jul 14 09:30:48 1993 Doug Evans (dje@canuck.cygnus.com) - - * configure.in: Recognize h8300h-*-*. - -Tue Jul 13 12:03:00 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * coff-h8500.c (reloc_processing, rtype2howto): New relocation - type R_H8500_HIGH_16. - * coff-sh.c (r_imm32): Get the width of the reloc right. - -Tue Jul 13 16:48:56 1993 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr) - - * configure.in: Add new target m68k-coffun to the dpx/2. - * config/m68k-coffun.mt: New file, renamed from config/dpx2.mt. - -Mon Jul 12 10:42:49 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * reloc.c (enum bfd_reloc_code_real): Move SPARC_BASE13 reloc into - sparc-aout-specific list. - - * libelf.h (struct elf_obj_tdata): Add field `thunk'. - - * config/sparc-elf.mt (TARGET_BACKENDS): New make variable. - -Thu Jul 1 14:52:47 1993 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr) - and Jim Kingdon (kingdon@cygnus.com) - - * elfcode.h: Use memset not bzero. - * trad-core.c: Don't include <sys/file.h>. - * i386linux.h: Include <sys/file.h>. - * coff-m68k-un.c: new file to handle names with underscores on - svr3 machines. - * coff-m68k.c (m68k_rtype2howto): added #ifdef ONLY_DECLARE_RELOCS - to not duplicate the function in the executable. - (TARGET_SYM, TARGET_NAME, NAMES_HAVE_UNDERSCORE): new macros needed - by coff-m68k-un.c. - * coffcode.h (MC68KBCSMAGIC): case added. - * targets.c: Add m68kcoffun_vec. - * configure.host: added support for Bull dpx/2. - * config/dpx2.mh, hosts/dpx2.h: new files. - * Makefile.in: added target coff-m68k-un. - -Fri Jul 9 00:43:06 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aoutf1.h: Add definition of MACHTYPE_OK. - -Thu Jul 8 14:37:44 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * reloc.c (bfd_perform_relocation): Don't subtract the addend - again for coff. - - * syms.c, bfd-in2.h: Doc fix. - - * coffcode.h (CALC_ADDEND): Check for common section using the - section flag as well as the symbol flag. - -Thu Jul 8 13:43:52 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/i386bsd.h: Conditionalize HOST_STACK_END_ADDR on __bsdi__. - i386bsd.c: Remove defines of N_TXT*; the versions in aout64.h should - be sufficient. Define TEXT_START_ADDR. - -Wed Jul 7 10:56:21 1993 Ian Lance Taylor (ian@cygnus.com) - - * aoutx.h (translate_from_native_sym_flags): Removed statep - argument. Just let an indirect symbol point to the next symbol - without forcing the next symbol to be undefined. Changed all - callers. - * hp300hpux.c (slurp_symbol_table): Changed call to - translate_from_native_sym_flags. - * targets.c: Added hp300hpux_vec. - * Makefile.in (hp300hpux.o): Added dependencies. - -Tue Jul 6 13:24:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * reloc.c (enum bfd_reloc_code_real): Put simple power-of-two - relocs together, and add 64-bit versions. - (bfd_generic_get_relocated_section_contents): Argument to alloca - is size_t. - - * libbfd.c (bfd_xmalloc_by_size_t): New function. - * opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to - declarations. - (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t. - (new_bfd): Prototype-style definition, using DEFUN. - (bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size - argument is type size_t, not bfd_size_type. - * ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t. - * bfd.c (bfd_default_error_trap, bfd_error_trap, - bfd_error_nonrepresentabltrap): Prototypes. - * libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, - bfd_alloc_grow): Adjusted prototypes for arg type change. - * archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize, - do_slurp_coff_armap, bfd_construct_extended_name_table): - Prototypes. - * elfcode.h (elf_string_from_elf_strtab): Prototypes. - * libelf.h (elf_string_from_elf_section, elf_get_str_section): - Prototypes. - - * Makefile.in (ALL_MACHINES): Renamed from BFD_MACHINES. - (ofiles): New target. Build a list of unique file names, in case - any got duplicated. - (TARGETLIB): Use list of files from ofiles. - * configure.in: Set BFD_MACHINES and BFD_BACKENDS depending on - minimal-bfd flag and target makefile frag contents. - - * elfcode.h (elf_read): Delete static declaration, since function - has moved. - (elf_map_symbols): Write out section symbols for all sections, for - now. - (elf_symbol_from_bfd_symbol): Allow match if both symbols are - section symbols for the same section. - (elf_find_nearest_line): Don't print message, just return false. - - * libelf.h (bfd_elf_locate_sh): Declaration deleted. - -Mon Jul 5 16:48:11 1993 Doug Evans (dje@canuck.cygnus.com) - - * cpu-h8300.c (h8300_scan): Fix parsing of architecture string. - -Fri Jul 2 18:27:00 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * Makefile.in (clean): Remove bfd.h and stmp-bfd.h. - (realclean): Remove generated headers. - -Fri Jul 2 14:51:51 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * section.c (bfd_set_section_content): Deny if file is not opened with - the proper mode, set output_has_begun if file is openened for update. - * aoutx.h (aout_*_set_section_content): Remove checks that are now - done in bfd_set_section_content. - -Fri Jul 2 09:25:20 1993 Ian Lance Taylor (ian@cygnus.com) - - * hosts/std-host.h: Removed declarations of printf, fprintf, - fcntl, fread and fwrite. They are all error prone for one reason - or another. Changed declaration of memchr from char * to PTR. - - * configure.in (mips-*-riscos*): New target; use riscos. - * configure.host (mips-*-riscos*): New host; use riscos. - * config/riscos.mh (HDEFINES): Add -G 4. - - * libaout.h (GET_SWORD): Use the bfd_h_get_signed entry points - rather than casting the result of bfd_h_get. - -Fri Jul 2 10:13:48 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * configure.in, hosts/delta68.h, config/delta68.mh: Add stuff for - Motorola Delta 68. - -Wed Jun 30 06:02:43 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * targets.c (bfd_elf64_{big,little}_generic_vec): Declare, and - include in search list if BFD64 is defined. - - * libelf.h (CAT4): Added a version for Saber-C, ANSI mode. - (bfd_elf64_*): Declarations for 64-bit versions of many routines. - -Tue Jun 29 22:50:59 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf64-target.h, elf64-generic.c: New files. - * Makefile.in (BFD64_BACKENDS): Include elf64-generic.o. - (elf64-generic.o): List dependencies. - - * Makefile.in: List target `all' explicitly before host/target - makefile fragments are included, in case they define any new - targets. - - * elfcode.h (ELF_R_INFO, ELF_R_SYM): Define as 32- or 64-bit - versions as appropriate. Uses updated. - (elf_debug_section): Declare before use. - (elf_debug_file): New function. - (bfd_section_from_shdr, bfd_shdr_from_section, elf_fake_sections): - Alignment value in section header is n_bytes, not log2. - (new_section_hook): Do nothing for now. - (bfd_section_from_shdr): Use Elf_External_Rel[a], not 32-bit - version explicitly. - (elf_core_file_p): Simplify check for correct class (word size). - (elf_make_sections, elf_fake_sections, elf_write_object_contents): - Initialize all fields when creating data structures. - (elf_locate_sh): Renamed from bfd_elfXX_locate_sh, made static. - (elf_compute_section_file_positions): Set correct class in output - file. - (elf_write_object_contents): Section symbols have empty names in - output file. - - * libbfd.c (bfd_xmalloc, zalloc): Be sure to cast malloc, memset - args to size_t before call. - (bfd_add_to_string_table): Cast zalloc arg to bfd_size_type. - -Tue Jun 29 10:49:42 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_find_nearest_line): If procedure has no line - number information, return 0 for line number. - -Mon Jun 28 10:45:02 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aoutx.h (some_aout_object_p): If *oldrawptr is non-NULL, copy it - into *rawptr. - -Sun Jun 27 09:05:19 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/riscos.h: Define NBPG and UPAGES. - -Sun Jun 27 16:28:26 1993 Ken Raeburn (raeburn@cygnus.com) - - * elfcode.h (elf_slurp_symbol_table): Don't use obj_raw_syms as - lvalue; it contains a cast. - -Fri Jun 25 17:09:55 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (hash, compare, struct stringtab_entry, add_to_stringtab): - Use unsigned hash values for better hashing. - (hash): Hash in the string length for long strings. - -Thu Jun 24 15:47:51 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (compare): Replace 3 if's with a subtraction. - (translate_to_native_sym_flags, add_to_stringtab): Reorder tests - in decreasing order of success, as an optimization. - (hash): Take a length arg; ignore chars after #25, for speed. - (add_to_stringtab): Pass length to hash. - -Thu Jun 24 17:25:51 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * elf32-sparc.c (sparc_reloc_map): Add SPARC_WDISP22 reloc. - - * elfcode.h (elf_new_section_hook): Do nothing for now. - (elf_write_object_contents): Output common symbols the way ELF - wants them. - -Wed Jun 23 16:20:07 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * libelf.h (struct elf_obj_tdata and associated macros): Moved - here from elfcode.h. A couple of size-specific structure pointers - were changed to PTR; uses fixed appropriately. - (elf32_symbol_type, elf64_symbol_type): Separated definitions. - (bfd_elf_mkobject): Renamed from bfd_elf32_mkobject. - (bfd_elf32_mkobject, bfd_elf64_mkobject, elf_mkobject): New - temporary macros to ease name change. - * elf.c (elf_read, elf_mkobject, elf_get_str_section, - elf_string_from_elf_section, bfd_elf_find_section): Moved here - from elfcode.h. - * doc/Makefile.in (libbfd.h): Process elf.c too. - * Makefile.in (elf.o): Note new dependencies. - - * elfcode.h: Lots of stuff moved elsewhere. Deleted some unused - code, tweaked some debug hooks. - (elf_slurp_reloca_table): Translate ELF section symbols into BFD - section symbols. - -Wed Jun 23 11:34:21 1993 Jim Kingdon (kingdon@cygnus.com) - - * hosts/riscos.h: New file. - -Tue Jun 22 14:35:20 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * elfcode.h (bfd_section_from_shdr, case SHT_PROGBITS): Even if - section already exists, use its pointer to fill in rawdata slot. - -Tue Jun 22 16:36:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/std-host.h: Return value of puts and fputs is int not void. - -Tue Jun 22 14:25:58 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (howto_table_ext): Comment the field names. - * reloc.c (bfd_perform_relocation): Fix max and min values. - -Mon Jun 21 18:19:14 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * elf32-target.h, elf32-hppa.c, elfcode.h: Use new - size-independent elf internal data structures. - * elfcode.h (put_word, get_word): Define as appropriate for - architecture word size. Structure swapping functions changed to - use them as appropriate. - - * configure.in: If compiling 64-bit back ends, do them before - 32-bit ones. - - * libelf.h: Use new size-independent versions of elf internal data - structures. - (symbol_type): Reordered to put any fields dependent on target - size at the end. - (elf_backend_data): Renamed from elf##_backend_data and made - size-independent. - (elf_sect_thunk): Now size-independent. - - * libbfd.c (bfd_log2): Now returns unsigned int. - -Mon Jun 21 12:30:47 1993 Jim Kingdon (kingdon@cygnus.com) - - * Rename config/m88k-aout.mt to config/noop.mt. - configure.in: Use it for mips-*-bsd*. - -Sun Jun 20 20:32:19 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * cpu-m68k.c (arch_info_struct): Eliminate "partially bracketed - initializer" warning from gcc. - * cpu-h8500.c (arch_info_struct): Likewise. - * cpu-sh.c (arch_info_struct): Likewise. - - * cpu-h8300.c (local_bfd_reloc_type_lookup, howto*_callback, - howto_*): Unused functions and variables commented out. - * cpu-z8k.c (local_bfd_reloc_type_lookup, howto*_callback, - howto_*): Likewise. - * cpu-h8500.c (compatible): Likewise. - * cpu-sh.c (compatible): Likewise. - - * hp300hpux.c (swap_std_reloc_in): Delete unused variables. - Always set a valid length value, even for invalid input. - - * srec.c (srec_write_symbols): Use sprintf_vma. - - * bfd-in.h (uint64_typeLOW, uint64_typeHIGH, int64_type, - uint64_type): Provide default definitions. - * hosts/std-host.h (int64 stuff): Remove them from here. - - * bfd-in.h (sprintf_vma): Define parallel to fprintf_vma. - - * elf32-i386.c (elf_i386_reloc_type_lookup): Delete unused - variable. Added default case to switch. - - * aoutx.h (translate_from_native_sym_flags): Before casting - pointers to integers, make sure the integer type is wide enough. - * coff-mips.c (ecoff_set_symbol_info): Ditto. - - * section.c (bfd_get_section_contents): Since `count' is unsigned, - don't bother comparing for less-than-zero. - (bfd_set_section_contents): Ditto. - - * elfcode.h (bfd_add_to_strtab): Now static. - (sym_is_global): New function. - (elf_map_symbols): Call it. Now returns void. Removed unused - local variable. - (bfd_section_from_shdr): Mark string tables other than for section - and symbol names as normal sections having contents. - (fix_up_strtabs): New function; fixes up ELF header fields for - stab sections with string tables associated. - (elf_write_object_contents): Map fix_up_strtabs over all BFD - sections. Reordered condition tests for symbol flags; default to - local-object value instead of global-object. - (elf_symbol_from_bfd_symbol): Hid conditionally-used variable - inside condition test. - (elf_print_symbol): Use fprintf_vma. - (elf_idx_of_sym, bfd_shdr_from_section): Unused functions - commented out. - - * bfd-in.h (int64_type, uint64_type): Define these if we fall - back to "long long" for HOST_64_BIT. - - * libelf.h (elfNAME, ElfNAME): New versions to get desired results - without using invalid ANSI C preprocessing tokens. - - * elf32-target.h (bfd_elf32_new_section_hook): Delete macro. - * libelf.h (bfd_elf32_new_section_hook): Declare. - * elfcode.h (new_section_hook): Define here. - - * hosts/sparc.h, hosts/std-host.h, hosts/i386bsd.h: Protect - against multiple inclusions. - - * hosts/news.h: Include hosts/std-host.h, not plain std-host.h. - - * Makefile.in (bfd.h): Generate into current directory by grabbing - 64-bit definition (if any) from sysdep.h. - * bfd-in.h: Put in marker for sysdep.h inclusion. - -Fri Jun 18 19:57:23 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * reloc.c (bfd_perform_relocation): Check for overflow on - pc-relative relocations if the howto asked for it. - -Fri Jun 18 16:00:20 1993 Jim Kingdon (kingdon@cygnus.com) - - * Makefile.in (stmp-bfd.h): Ignore nonzero exit status from grep. - -Fri Jun 18 16:54:29 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config/riscos.m{h,t}: New files. - * configure.{host,in}: Use them. - -Fri Jun 18 12:55:10 1993 K. Richard Pixley (rich@cygnus.com) - - * elf32-mips.c: comment change. This is a mips file, not 88k. - -Mon Jun 14 14:02:41 1993 Jim Kingdon (kingdon@cygnus.com) - - * cache.c (bfd_cache_init): Increment open_files and call close_one - if necessary. - (bfd_open_file): Don't increment open_files here. - -Fri Jun 18 10:00:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config/delta88.mh: Don't set CC. - - * Makefile.in: Add elf32-{mips,m88k,generic}. - elf32-{mips,m88k,generic}.c: New files. - targets.c (target_vector): Include bfd_elf32_{mips,m88k,generic}_vec. - elfcode.h (elf_object_p): Match elf32-generic for all machines which - don't match a different target. - -Fri Jun 18 03:12:12 1993 John Gilmore (gnu@cygnus.com) - - Eliminate "int8_type", "int16_type", "int32_type", and their - variants from the BFD universe. Leave the 64-bit types for now, - since they are in flux. - - * aoutx.h, hp300hpux.c: Eliminate needless (int32_type) casts. - * libaout.h (GET_SWORD): Convert (int32_type) to (int). - * ieee.c: Convert uint8e_type => unsigned char. - * oasys.c: Extensive changes to eliminate obsolete types. - These depend on changes in ../include/oasys.h as well. - * hosts/*.h: Remove declarations of all these types. - -Mon Jun 14 14:02:41 1993 Jim Kingdon (kingdon@cygnus.com) - - * hosts/delta88.h: #if 0 out some declarations which conflict with - system headers. - -Mon Jun 14 17:08:18 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com) - - * Makefile.in (install): remove parentdir cruft - -Mon Jun 14 19:04:09 1993 Stu Grossman (grossman@cygnus.com) - - * hppa.c (hppa_get_symbol_info): Remove redundant copy. - * Expurgate random DEFUNs that have crept in. - -Mon Jun 14 10:23:53 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_set_symbol_info): Constructor sections should - only be aligned to a 4 byte boundary. - -Sat Jun 12 16:13:17 1993 Jim Kingdon (kingdon@cygnus.com) - - * hosts/std-host.h (struct int64e_struct): Remove needless typedef - keyword. - -Fri Jun 11 14:25:34 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * aoutf1.h (sunos4_write_object_contents): set flags to 1, breaking - 1927 but fixing some other important things. - -Thu Jun 10 20:36:22 1993 Doug Evans (dje@canuck.cygnus.com) - - * hosts/std-host.h (int64e_type): Fix definition. - -Thu Jun 10 11:48:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_sec_to_styp_flags): Use STYP_MIPS_INIT for - section named _INIT. Don't set STYP_TEXT unless SEC_CODE is set. - (ecoff_styp_to_sec_flags): Treat a STYP_MIPS_INIT section like - a STYP_TEXT section. - -Wed Jun 9 16:48:13 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in (install, headers): don't put comments after a tab - in the actions section of a rule - -Wed Jun 9 15:00:01 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_mkobject_hook): Mark ZMAGIC files as D_PAGED. - (ecoff_write_object_contents): If not D_PAGED, don't add the - section headers to text_size. If not D_PAGED, set the magic - number to OMAGIC rather than ZMAGIC. If creating a D_PAGED - executable, the executable must fully occupy an even number of - pages. - (ecoff_set_symbol_info, make_bfd_asection, ecoff_little_vec, - ecoff_big_vec): Consistently set section alignment power to 4, - since ECOFF sections should be multiples of 16 bytes. - (ecoff_little_vec, ecoff_big_vec): Added D_PAGED to object_flags. - Made ar_pad_char and ar_max_namelen agree for both. - -Tue Jun 8 20:28:02 1993 Mark Eichin (eichin at tweedledumber) - - * elfcode.h (elf_slurp_symbol_table): subtract section vma from - symbol value, since bfd symbols are section relative, but ELF - symbols aren't. - -Tue Jun 8 12:08:27 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * cpu-i960.c, cpu-h8300.c (compatible): Make static. - -Tue Jun 8 14:27:56 1993 Jim Kingdon (kingdon@rtl.cygnus.com) - - * hosts/news.h, config/news.mh: New files. - -Tue Jun 8 12:08:27 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * bfd-in2.h, archures.c (bfd_mach_h8300[h]): new defines. - * coff-h8300.c: More addressing modes. - * coffcode.h (coff_set_arch_mach_hook): Cope with H8300 magic - number. - * cpu-h8300.c: Removed disassemble stuff. (h8300_scan): Recognise - H8/300H name. (compatible): New function. - * reloc16.c (bfd_coff_reloc16_get_relocated_sec): Cope with more - addressing modes. - -Tue Jun 8 10:30:13 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_compute_section_file_positions, - ecoff_write_object_contents): Only round to page boundaries if - D_PAGED flag is set for the output BFD. - -Fri Jun 4 15:47:52 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * coffcode.h (get_index, coff_slurp_symbol_table): Fix pointer - casts to work on machine where sizeof(long) != sizeof(int) != - sizeof(char *). - * coffgen.c (coff_get_normalized_symtab): Ditto. - * cpu-h8300.c coff-h8300.c: Support for H8/300-H. - -Fri Jun 4 15:24:27 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * coffgen.c (coff_write_symbols): For empty string table, write - out 4 in correct byte order. (from minyard@bnr.ca) - - * elf32-hppa.c: Don't include libhppa.h for now; define - BYTES_IN_WORD instead, until Utah sends a better fix. - (hppa_elf_build_arg_reloc_stub): Use xmalloc and xrealloc instead - of malloc and realloc. - -Fri Jun 4 07:49:01 1993 Ian Lance Taylor (ian@cygnus.com) - - * configure.in (mips-*-ecoffl*): New target; use decstation. - (mips-*-ecoff*): Added trailing '*'. - - * coff-mips.c (ecoff_get_debug): Get the offset from the first PDR - for the FDR, not from the first PDR in the file. - -Thu Jun 3 16:41:10 1993 Stu Grossman (grossman@cygnus.com) - - * hppa.c (hppa_get_symbol_info): New func needed for JUMP_TABLE. - -Thu Jun 3 15:33:57 1993 David J. Mackenzie (djm@rtl.cygnus.com) - - * hppa.c (hppa_get_symbol_info): New function. - -Thu Jun 3 13:07:42 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elfcode.h (elf_map_symbols): Don't crash if no symbols have been - allocated yet. - - From Peter Hoogenboom (hoogen@schafer.cs.utah.edu): - * libhppa.h (MAXCOMLEN): Define unconditionally. - (_PA_RISC_ID): Only define if not already defined. - * elf32-hppa.c: Include libhppa.h. - - From Ralph Campbell: - * hosts/mipsbsd.h (HOST_DATA_START_ADDR): Delete definition. - - * elf32-hppa.h (symext_rootP, symext_lastP): Delete decls. - -Thu Jun 3 00:23:53 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * config/go32.mh: define EXTRALIBES to -lm (for binutils), also - remove defines of __MSDOS__ and __GO32__ (these are in the - compiler now). - -Wed Jun 2 17:57:13 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - From Utah: - * hosts/hppabsd.h: Eliminate use of obsolete EXFUN. - * config/hppabsd.mh: Don't use ranlib. - -Tue Jun 1 04:15:57 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * elf.c: New file, for word-size independent code. - * elfcode.h (elf_hash): Moved to there, renamed bfd_elf_hash. - * Makefile.in: Include elf.o in standard objects. - - * bfd-in.h (CAT3): Define here. - * libaout.h, libelf.h: Not here. - - * libelf.h (struct strtab): Define here. - (bfd_elf_locate_sh): Declare here. - * elfcode.h (struct strtab): Definition deleted. - - * reloc.c (enum bfd_reloc_code_real): Added HPPA_PCREL_CALL_12. - - * Makefile.in: Make "all", not "bfd.h", be the default target. - (stmp-bfd.h): New target; prevents rebuilding world if bfd.h - hasn't really changed. - - Tue May 25 12:15:15 1993 Michael Meissner (meissner@osf.org) - - * elfcode.h (elf_hash): Provide elf standard hash function. - (various): Key off of the machines use_rela_p field to determine - whether to use REL or RELA relocations. - (elf_swap_reloc_out, elf_swap_reloc_in): New functions. - (elf_make_sections): Allocate a pointer to hold all data for a - given section, and copy each fragment into the data region. - Update the section's pointer with the REL implicit addends if the - machine uses REL relocation. - - * elf32-i386.c (elf_bfd_reloc_type_lookup): Rename to - elf_i386_bfd_reloc_type_lookup, and use cpp to map the name back - into was elf32-target.h expects. - (elf_info_to_howto): Rename to elf_i386_info_to_howto. - (elf_i386_bfd_reloc_type_lookup): Add relocation support. - (elf_i386_info_to_howto): Add minimal relocation support. - - * libelf.h (elf_backend_data): Add use_rela_p, elf_64_p, - elf_info_to_howto_rel fields. - - * elf32-target.h (elf_bed): Add support for new fields in - elf_backend_data. - - Sun May 30 16:38:24 1993 Peter Hoogenboom (hoogen@fast.cs.utah.edu) - - * elf32-hppa.c: Add symbol extension section support, fix - relocation howto table, add stub generation support. - - * elf32-hppa.h: Add symbol extension section support, fix - relocation howto table, add stub generation support. - - * elfcode.h (bfd_elf_locate_sh): New function to locate ELF - section header. - - * elfcode.h (bfd_add_to_strtab): Made non-static due to a call - from elf32-hppa.c. - - * elfcode.h (elf_idx_of_sym): Return STN_UNDEF instead of 0 when - the symbol is not found. - - * elfcode.h (elf_compute_section_file_positions): Not all section - file positions were computed. - - * elfcode.h (elf_get_sect_thunk): New function. - - * hppa.c (sign_ext): Reimplement. - - * hppa.c (round_down,round,round_up,L,R,LS,RS,LD,RD,LR,RR): Make - these functions static. - -Tue Jun 1 14:40:41 1993 Per Bothner (bothner@rtl.cygnus.com) - - * Makefile.in (bfd.h): Move closer to headers - and after 'all'! - - * aoutx.h (translate_from_native_sym_flags): Don't set - BSF_DEBUGGING for constructor symbols, only BSF_CONSTRUCTOR. - * aoutx.h (translate_to_native_sym_flags): Translate - constructor symbols properly. - -Thu May 27 16:09:04 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * archures.c (bfd_default_arch_struct): use 4 byte alignment as a - minimum. - * aout-target.h (minimum_alignment): 8 byte alignment is right. - (fix ld/2680) - -Thu May 27 13:38:47 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in, Makefile.in: Build bfd-in2.h in source directory, - from bfd-in.h and .c files. Build bfd.h in build directory, - substituting in requested target word size. Insert word size into - makefile, and maybe enable 64-bit targets. - - * bfd-in.h, libbfd.c, demo64.c, targets.c: Define BFD64 if 64 bits - are available. Conditionalize on this. Assume HOST_64_BIT - will be defined if needed, so 64-bit targets are conditionalized - only in the Makefile. - -Tue May 25 14:03:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * libbfd.c (COERCE64): Rewrite to avoid out-of-range values. - - * coff-sh.c (rtype2howto): Put error message on stderr. - (extra_case): Delete unused variable. - - * coff-mips.c (ecoff_print_symbol): Cast bfd_vma values to long - before calling printf. - - * elfcode.h: New file, almost completely derived from old elf32.c. - * elf32.c: Now just define ARCH_SIZE and include elfcode.h. - * Makefile.in (elf64.o): List dependencies, don't build by - default. - (elf64.c): Add to list of sources. - (elf32.o): Update dependencies. - * elf32-*.c: Updated type/macro/structure names. Cleaned up - namespace pollution; rename vectors. - * targets.c, config/*-elf.mt: Updated. - * All uses of 32-bit versions of structures, routines, and macros - renamed. - - * Makefile.in (archures.o, targets.o): Depend on Makefile. - -Mon May 24 15:53:13 1993 Ken Raeburn (raeburn@cygnus.com) - - * elf32-i386.c (enum reloc_type): No comma after last enumerator. - - * elf32.c (elf_string_from_elf_section): Handle index of zero - specially. - (bfd_section_from_shdr, elf_slurp_symbol_table): Don't need to do - so here. - (elf_write_object_contents): Deleted one unused variable and - initialized another to avoid gcc warnings. - (elf_set_section_contents): Delete unused variable. - -Fri May 21 19:04:21 1993 Stu Grossman (grossman@cygnus.com) - - * i386lynx.c: New module for Lynx variant of a.out. - * Makefile.in (BFD_BACKENDS CFILES depends): Add i386lynx.c. - * gen-aout.c: Get rid of defunct endian stuff, print out true - pagesize. - * targets.c (target_vector): Add i386lynx_vec. - -Fri May 21 17:02:22 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * configure.in: Use i386-sco.mt for i[36]86-*-isc*. - -Fri May 21 13:44:18 1993 David J. Mackenzie (djm@rtl.cygnus.com) - - * aix386-core.c, aout-target.h, aoutx.h, coff-alpha.c, - coff-mips.c, coffgen.c, elf32.c, ieee.c, libaout.h, libcoff-in.h, - libelf.h, mipsbsd.c, oasys.c, sco-core.c, srec.c, tekhex.c, - trad-core.c: Define a TARGET_get_symbol_info function or macro. - Remove the bfd_print_symbol_nm case from TARGET_print_symbol. - - * bfd-in.h: Don't define bfd_print_symbol_nm. - Define symbol_info type. - (JUMP_TABLE): Set _get_symbol_info element. - - * syms.c (coff_section_type, bfd_symbol_info): New functions. - (bfd_decode_symclass): Use coff_section_type. - - * targets.c: Add bfd_get_symbol_info call. - -Wed May 19 15:30:52 1993 Stu Grossman (grossman@cygnus.com) - - * coff-i386.c (coff_i386_reloc): Use unsigned char to avoid - complaints from ancient gcc's. - -Wed May 19 15:51:19 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * trad-core.c: Check macro TRAD_CORE_EXTRA_SIZE_ALLOWED. - hosts/i386linux.h: Define it. - -Mon May 17 15:00:33 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * VERSION, bfd-in.h: Bump version number to 2.2. - - * hppa.c (assemble_3, dis_assemble_3, assemble_12, - dis_assemble_12, assemble_17, dis_assemble_17, assemble_21, - dis_assemble_21, sign_ext, ones, sign_unext, low_sign_ext, - low_sign_unext, round_down, round, round_up, L, R, LS, RS, LD, RD, - LR, RR, hppa_field_adjust): New functions. - -Mon May 17 10:04:16 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_set_symbol_info): Added support for indirect - stabs symbols, including new indirect_ptr_ptr argument. - (ecoff_slurp_symbol_table): Pass new argument in calls to - ecoff_set_symbol_info. - -Fri May 14 00:05:06 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in: For m68k sysv systems, use m68k-coff. - - * config/hppa-elf.mt (TDEFINES): Don't define DEFAULT_VECTOR here. - (TDEFAULTS): Define it here. Use the new name. - - * elf32-hppa.c (elf_hppa_backend_data): Delete; rely on default - values instead. - - * reloc.c (bfd_reloc_code_real_type): Add some HPPA reloc types. - - * aix386-core.c (NO_GETS): Fix PROTO invocation to have correct - number of arguments. - (aix386_core_file_p): Initialize core_size to correct value. - -Wed May 12 14:39:59 1993 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (CC_FOR_BUILD): New variable, set to $(CC). - (FLAGS_TO_PASS): Pass down CC_FOR_BUILD. - - * bout.c (aout32_slurp_extended_name_table): Define to be - _bfd_slurp_extended_name_table rather than bfd_true. - - * coff-mips.c: Include libaout.h and aout/aout64.h to get - definitions for N_SET[ATDB]. - (ecoff_howto_table): Moved near top of file. - (ecoff_set_symbol_info): If a STABS symbol of type N_SET[ATDB] is - seen, cook up a constructor section of the same name and put in a - reloc pointing to the symbol. This lets the GNU linker build - global constructors and destructors without using collect. - -Tue May 11 00:33:31 1993 John Gilmore (gnu@cygnus.com) - - * coff-m88k.c (m88kbcs_vec): Symbols have underbars. - -Mon May 10 05:55:45 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * hosts/miniframe.h: New file. - * configure.host: Use it. - -Sun May 9 16:36:59 1993 Fred Fish (fnf@cygnus.com) - - * configure.in (hppa*-*-bsd): Change to hppa*-*-bsd* - * configure.in (hppa*-*-hpux): Change to hppa*-*-hpux* - * configure.in (m68*-hp-bsd): Change to m68*-hp-bsd* - * configure.in (m68*-*-hpux): Change to m68*-*-hpux* - * configure.in (*-*-bsd): Change to *-*-bsd* - -Wed May 5 16:08:32 1993 Per Bothner (bothner@cygnus.com) - - * elf32-hppa.c (elf_hppa_reloc_type_lookup): Cast enums to - int, for the sake of the old Portable C Compiler. - -Mon May 3 14:37:01 1993 Stu Grossman (grossman@cygnus.com) - - * Makefile.in (CFILES): Add cpu-sh.c and coff-sh.c. - -Mon May 3 14:03:21 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * configure.in: Get target name right for m68*-*-hpux. - -Sun May 2 11:39:44 1993 Fred Fish (fnf@cygnus.com) - - * trad-core.c (NO_SIGNED_GET): New macro. - * trad-core.c (trad_core_vec): Use new NO_SIGNED_GET instead of - signed NO_GET, where appropriate. - - * configure.in (i[34]86-*-linux*): Add; bfd_target = i386-linux. - * configure.in (*-*-linux*): Remove until linux port for a - non-i386/i486 system is actually available. - -Fri Apr 30 20:04:10 1993 Stu Grossman (grossman@cygnus.com) - - * libhppa.h: #undef e_* symbols which come from <machine/som.h> - when compiling under HPUX. - -Fri Apr 30 17:25:23 1993 Stu Grossman (grossman@cygnus.com) - - * The following patches are from Jeffrey Law <law@cs.utah.edu>. - * hppa.c (hppa_core_file_p): Provide a temporary dummy routine - for HOST_HPPABSD. - * bfd/hosts/hppabsd.h: Fix declarations of malloc and free. - * bfd/libhppa.h: Include sysdep here. Conditionalize - includes based on HOST_HPPAHPUX or HOST_HPPABSD. - Provide definitions for MAXCOMLEN and _PA_RISC_ID suitable - for BSD. - -Fri Apr 30 17:34:11 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf32-hppa.c: Don't include a.out.h. Apparently not even the - GNU version is needed. - -Fri Apr 30 09:38:59 1993 Jim Kingdon (kingdon@cygnus.com) - - * coffcode.h: use dummy_reloc16_extra_cases rather than casting abort. - -Thu Apr 29 11:30:32 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * Makefile.in: Build elf32-hppa.o. - - * syms.c (BSF_FUNCTION): New symbol flag. - - * elf32-hppa.c: Fixed to work with elf32-target.h. - - * hp300hpux.c (NAME, NAME_swap_exec_header_in): Fix for - traditional C. - * libaout.h (NAME): Don't define if already defined. - - * libelf.h: Protect against multiple inclusions. - (elf_symbol_type): Moved here, added new fields. - (struct elf_backend_data): New field `global_sym'; I suspect this - may be misplaced. - * elf32.c (elf_symbol_type): Deleted from here. - (struct elf_obj_tdata): New fields raw_syms and internal_syms, to - point to backend versions of symbols. - (obj_symbols, obj_raw_syms, obj_internal_syms): New macros. - (elf_swap_phdr_out, elf_build_phdrs, elf_write_phdrs): New - functions. - (elf_write_object_contents): Write program headers if appropriate. - (bfd_section_from_shdr): Unnamed sections get empty string for - name, not "unnamed". Handle SHT_NOBITS separately from - SHT_PROGBITS, and set some different flags. - (elf_file_p): New routine. - (elf_object_p, elf_core_file_p): Call it. - (elf_object_p): Handle EM_HPPA. - (elf_symbol_from, elf_idx_of_sym): New functions. - (elf_make_sections): Get symbol number right for relocations. Set - SHF_ALLOC, SHF_WRITE, SHF_EXECINSTR when appropriate. - (elf_fake_sections): BSS section should be SHT_NOBITS, not - SHT_PROGBITS. Always generate symtab and strtab, not only if - relocations are needed. Set SHF_* flags as appropriate. - (elf_compute_section_file_positions): Handle bfd_arch_hppa. - (elf_write_object_contents): Fix off-by-one error in symbol count. - Store a correct value for the symbol; write the size field - properly; make some guesses about the type field. Set section - type correctly for string tables. - (section_from_elf_index): Check for absolute and common sections - first. - (elf_section_from_bfd_section): Ditto. - (elf_slurp_symbol_table): Use elf_symbol_type instead of asymbol. - Use empty string instead of "unnamed" for nameless symbols. - Handle STTY_FUNC type, and weirdness with "$global$" symbol for - HPPA (only?). Don't free raw symbols; keep the pointer around for - later. - (elf_set_arch_mach): Handle bfd_arch_hppa. - (elf_find_nearest_line): Just return false. - (elf_write_object_contents, elf_set_section_contents): Set - output_has_begun field after computing file positions. - (elf_set_section_contents): Write section contents immediately, - rather than caching the whole file and writing it at close time. - - * libhppa.h (enum hppa_reloc_field_selector_type, enum - hppa_reloc_field_selector_typ_alt, enum hppa_reloc_expr_type, enum - hppa_reloc_expr_type_alt): New enumerator types. - - * config/hppa-elf.mt,. config/hppaosf.mh: HP PA/OSF support. - * configure.in, configure.host: Use them. - -Wed Apr 28 23:21:01 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf32-target.h: Allow overrides of armap defaults. - - * elf32-hppa.c, elf32-hppa.h: New files. - - * config/hp300hpux.mt: New file. - -Tue Apr 27 05:39:40 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * aix386-core.c (NO_GETS): New macro; NO_GET for signed values. - (aix386_core_vec): Update for new fields. - - * archive.c (bfd_generic_archive_p): Call target-specific - slurp_armap code, instead of bfd_slurp_armap. - (bfd_slurp_bsd_armap_f2): New function. - * libbfd-in.h (bfd_slurp_bsd_armap_f2): Declare it. - * aout-target.h (AR_PAD_CHAR): Define it if not already defined. - (vec): Use it. - * libaout.h (struct aoutdata): New field for subformat, for - differentiating between highly similar a.out formats. - * aoutx.h (NAME_swap_exec_header_in): New macro, defaults to local - version of function. - (swap_exec_header_in): Don't define if NAME_swap_exec_header_in is - already defined. - * hp300hpux.c: New file. - * Makefile.in: Include it. - -Mon Apr 26 13:24:43 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * Makefile.in, archures.c, coffcode.h, targets.c: Support for - Hitachi SH. - -Mon Apr 26 13:55:42 1993 Jim Kingdon (kingdon@cygnus.com) - - * trad-core.c (trad_unix_core_file_p): Check the file size. - -Mon Apr 26 13:24:43 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-alpha.c: Remove duplicate function and add warnings. - -Mon Apr 26 11:25:58 1993 Ian Lance Taylor (ian@cygnus.com) - - * sco-core.c (sco_core_vec): Add initializers for new target - fields. - -Sat Apr 24 21:33:45 1993 Jim Kingdon (kingdon@cygnus.com) - - * coffcode.h [_LIT]: Recognize .lit section. - -Fri Apr 23 19:00:36 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-alpha.c, cpu-alpha.c, config/alphaosf.mt, - config/alphaosf.mt, hosts/alphaosf.h: New files. - -Fri Apr 23 16:48:46 1993 Stu Grossman (grossman@cygnus.com) - - * Merge in HPPA/BSD changes from Utah. - * hppa.c: Use this for both HPUX & BSD. - * targets.c: Enable hppa_vec for both HPUX & BSD. - * config/hppabsd.mt: TDEFINES => TDEFAULTS. - * hosts/hppabsd.h: #define HOST_HPPABSD. - -Wed Apr 21 01:50:10 1993 John Gilmore (gnu@cygnus.com) - - * libbfd.c: Whitespace changes around byteswap macros. - * libbfd-in.h: Whitespace changes around byteswap declarations. - -Tue Apr 20 15:59:07 1993 Stu Grossman (grossman@cygnus.com) - - * aoutf1.h (sunos4_core_file_p): Don't default bfd_error to - system_error anymore. It confuses bfd_check_format(). - -Mon Apr 19 23:03:08 1993 Stu Grossman (grossman@cygnus.com) - - * bfd.c: Add sgi_core_data to tdata union. - * coff-mips.c: Add Irix 4.x core file support. - * hosts/irix4.h: #define HOST_IRIX4. - -Mon Apr 19 18:52:52 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * aoutx.h (translate_from_native_sym_flags): Check that the - symbol's section does get set. - (slurp_symbol_table): Zero index means null-string name. - - * aoutx.h (struct stringtab_entry, struct stringtab_data): New - data structures. - (hash, stringtab_init, add_to_stringtab, emit_strtab, compare): - New functions. - (write_syms): Use them, to reduce string table size. - -Mon Apr 19 16:45:12 1993 Fred Fish (fnf@cygnus.com) - - * trad-core.c (trad_core_vec): Add 6 new initializers to match - new signed get/put fields. Minor reformatting to label - some fields. - -Mon Apr 19 06:09:41 1993 Jim Kingdon (kingdon@cygnus.com) - - * bfd-in.h: Insert comment about SVR3 compiler warnings. - - * hosts/{hp300,i386isc,i386v}.h: Remove unused #defines of {r,}index - (bfd uses strchr and the broken SVR3.2 cpp loses with the defines). - - * libbfd.c: bfd_put*: Remove casts to bfd_vma. - -Fri Apr 16 17:49:27 1993 Jim Kingdon (kingdon@cygnus.com) - - * aoutf1.h (internal_sunos_core): Make c_stacktop a bfd_vma. - (swapcore_sparc): Make sp a bfd_vma. - -Thu Apr 15 09:09:18 1993 Jim Kingdon (kingdon@cygnus.com) - - * libbfd.c: Add signed versions of bfd_{h_,}{get,put}_signed_<size>. - libbfd.c, libbfd-in.h: Add _do*signed*. - targets.c, all targets: Add bfd*signed*. - bfd-in.h: Add bfd_signed_vma. Add comments. - - * bfd-in.h (bfd_error), bfd.c (bfd_errmsgs): Add file_truncated. - - * format.c (bfd_check_error): Check error return from - _bfd_check_format routines. - -Wed Apr 14 23:48:25 1993 Jim Kingdon (kingdon@cygnus.com) - - * rs6000-core.c (rs6000coff_core_p): Improve error checking and - recognize .data section if present. - -Thu Apr 15 01:00:29 1993 John Gilmore (gnu@cygnus.com) - - * aoutx.h (aout_*_adjust_sizes_and_vmas): Avoid `sanity' - check for the case where the user sets the address of the BSS - section (and the file header can't specify this). Let the user - set it wherever they want, regardless of what goes in the header. - - * ieee.c (ieee_slurp_sections): Pass all ieee section names - straight through into BFD sections. Add comments. - -Wed Apr 14 20:34:54 1993 John Gilmore (gnu@cygnus.com) - - Cleanup in preparation for better 64-bit host support. - - * bfd-in.h (bfd_64_type): Remove. - * libbfd.c (_do_getb64, _do_putb64): Use bfd_vma, not bfd_64_type. - - * bfd-in.h (bfd_size): Remove. - - * bfd-in.h (bfd_offset): Remove, after fixing ld/ldlang.[ch]. - - * bfd-in.h (bfd_word): Remove. - * reloc.c (reloc_howto_type): Replace bfd_word with bfd_vma. - - * bfd-in.h (rawdata_offset): Remove. - * reloc.c (arelent): Replace rawdata_offset with bfd_size_type. - (bfd_perform_relocation): Lint. - (enum bfd_reloc_status): Comment cleanup. - - * aout-adobe.c, cpu-h8300.c, mipsbsd.c, srec.c: lint -Wall. - -Tue Apr 13 11:19:52 1993 Jim Kingdon (kingdon@cygnus.com) - - * aoutf1.h (swapcore_sparc): Guess the right value of USRSTACK. - -Mon Apr 12 14:18:00 1993 John Gilmore (gnu@cygnus.com) - - * elf32.c: Clean up old comments. - -Fri Apr 9 10:43:20 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/sun3.h: String argument to fprintf is const. - - * coff-mips.c: Renamed PAGE_SIZE to ROUND_SIZE, to avoid confusion - on systems which define PAGE_SIZE in <limits.h>. - -Thu Apr 8 10:28:00 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * trad-core.c (trad_unix_core_file_failing_signal): Use new macro - TRAD_UNIX_CORE_FILE_FAILING_SIGNAL to allow host files to specify - the core file failing signal. - * hosts/decstation.h (TRAD_UNIX_CORE_FILE_FAILING_SIGNAL): Define - to supply the core file failing signal. - -Thu Apr 8 09:17:35 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (styp_to_sec_flags): Only set SEC_SHARED_LIBRARY for - a STYP_NOLOAD | STYP_BSS section if BSS_NOLOAD_IS_SHARED_LIBRARY - is defined. On many COFF targets STYP_BSS is always STYP_NOLOAD. - * coff-i386.h (BSS_NOLOAD_IS_SHARED_LIBRARY): Define. - -Wed Apr 7 11:33:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (PAGESIZE): Correct value. - -Tue Apr 6 12:05:44 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_find_nearest_line): Address of first PDR is - an offset (patch from Jean-Daniel Fekete <jdf@lri.lri.fr>). - -Mon Apr 5 12:07:12 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (styp_to_sec_flags): Set SEC_SHARED_LIBRARY for a - STYP_NOLOAD | STYP_BSS section. Don't set SEC_NEVER_LOAD for a - STYP_INFO section. - (coff_compute_section_file_positions): Force vma and lma of _LIB - section to be zero. - (coff_set_section_contents): Count number of entries in new lma - field, not in vma. - * coffgen.c (make_a_section_from_file): Force lineno_count of - SEC_SHARED_LIBRARY section to be zero, since it is non-zero on the - SCO 3.2v4 shared library. - * seclet.c (rel): Copy over any section with contents, not just - loadable sections. - - * coff-mips.c (ecoff_make_empty_symbol): Zero out newly allocated - symbol. - - * coff-i386.c (coff_i386_reloc): New function, to generate - relocateable output correctly. - (howto_table): Use coff_i386_reloc for all reloc types. - (CALC_ADDEND): Use a more efficient hack to get the correct addend - for a common symbol. - (i386comm_value): Removed; no longer needed. - -Sun Apr 4 15:08:48 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * coffcode.h (coff_set_section_contents): Don't write out - sections without a filepos. - -Fri Apr 2 14:35:05 1993 Ian Lance Taylor (ian@cygnus.com) - - * seclet.c (seclet_dump_seclet): Correct SEC_HAS_CONTENTS test. - -Wed Mar 31 17:41:05 1993 Ian Lance Taylor (ian@cygnus.com) - - * reloc.c (bfd_reloc_code_real_type): Added BFD_RELOC_MIPS_GPREL. - * libecoff.h (ecoff_data_type): Added gp_size field. - * coff-mips.c (ecoff_mkobject_hook): Initialize gp_size to 8. - (ecoff_set_symbol_info): Compare against gp_size, not hardcoded 8. - Set flags to 0 for large common symbols. - (ecoff_gprel_reloc): Handle non-zero addend for external symbols, - which can occur for gas-generated relocs. - (ecoff_bfd_reloc_type_lookup): Added BFD_RELOC_MIPS_GPREL case. - * bfd.c (bfd_get_gp_size, bfd_set_gp_size): New functions. - * Makefile.in (bfd.o): Now depends on coff/sym.h and libecoff.h. - -Tue Mar 30 09:33:16 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * srec.c (srec_set_section_contents): Use lma field for load - address. - * section.c: Add declaration of lma field to section structure. - * coffcode.h (coff_write_object_contents): Use lma field for load - address. - * bfd-in.h (bfd_set_section_vma): Set lma along with vma. - - * aoutx.h (translate_from_native_sym_flags): Now handles indirect - symbols in a better way. (translate_to_native_sym_flag): Set the - N_INDR bit when necessary. (aout<>slurp_symbol_table): Maintain - indirect state. - * section.c: Added BFD_IND_SECTION_NAME and bfd_ind_section. - (bfd_make_section): Cope with new builtin section. - * syms.c (bfd_decode_symclass): Can now print indirect section - info. - -Wed Mar 24 13:36:33 1993 Per Bothner (bothner@rtl.cygnus.com) - - * aout-target.h (MY(object_p)): Fail if MACHTYPE_OK is - defined, and yields false. - * aout-mipsbsd.c, i386bsd.c: Define MACHTYPE_OK appropriately. - - * archive.c (snarf_ar_hdr): Add support for reading (only, - so far) BSD-4.4-style extended headers. - * archive.c: Some more comments. - -Wed Mar 24 02:05:10 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) - - * Makefile.in: fix rule for dvi and info, so that the recursive - makes does the right thing, instead of always info - -Wed Mar 24 02:56:44 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * libbfd.c (bfd_seek): Disable optimized handling for archives and - archive members; they need more special reatment. For now, verify - that computed and actual file positions correspond. - -Tue Mar 23 08:45:33 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * mipsbsd.c: Renamed from aout-mipsbsd.c. - (set_arch_mach): Delete non-MIPS code. - (reloc_howto_type_lookup): Ditto. - * Makefile.in: Adjusted. - - * libbfd.c (bfd_tell): Update `where' field. - (bfd_seek): Don't do anything if we're not changing the file - position. If FILE_OFFSET_IS_CHAR_INDEX is defined, check `where' - field against a SEEK_SET request. Call bfd_tell to re-update - `where' field when done. - (bfd_read, bfd_write) [FILE_OFFSET_IS_CHAR_INDEX]: Maintain - `where' field. - * hosts/sparc.h: Define FILE_OFFSET_IS_CHAR_INDEX. - -Mon Mar 22 23:18:10 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: added installcheck target - -Mon Mar 22 14:57:18 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_set_symbol_info): Relocate encapsulated stabs - if the type is not stNil. - -Tue Mar 16 10:35:27 1993 Ken Raeburn (raeburn@cygnus.com) - - * elf32.c (elf_little_vec, elf_big_vec): Delete now-invalid - forward declarations. - - * elf32-sparc.c (elf_sparc_howto_table): Don't use CONST here, - it's implied by the type. - -Fri Mar 12 18:58:08 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.host: recognize sparc-sun-solaris2* instead of sparc-sun-solaris* - -Tue Mar 9 09:23:12 1993 Jim Kingdon (kingdon@cygnus.com) - - * rs6000-core.c: Add .ldinfo section. - -Fri Mar 12 11:57:52 1993 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (MAKEOVERRIDES): Define to be empty. - -Fri Mar 12 08:32:11 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * section.c (bfd_set_section_contents): whitespace - * seclet.c (seclet_dump_seclet): Don't try and fill sections with - no contents. - -Thu Mar 11 19:26:15 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * hosts/go32.h: don't define POSIX_UTIME - -Tue Mar 9 10:52:01 1993 Fred Fish (fnf@cygnus.com) - - * elf32.c (elf_object_p): Use ELF_ARCH stored in xvec to match - against machine architecture stored in the ELF header, to resolve - ambiguities. - * elf32.c (bfd_section_from_shdr): Bfd_make_section can return - NULL, so only use results when non-NULL. - * targets.c (elf32_m68k_vec, elf32_i860_vec): Add extern decls - and add to vector of targets. - -Mon Mar 8 15:13:44 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_set_symbol_info): Encapsulated STABS symbols - are always just debugging symbols. - - * coff-mips.c (ecoff_[gs]et_sym_index): Moved macros from here... - libecoff.h (ecoff_[gs]et_sym_index): ...to here. - -Mon Mar 8 14:55:13 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * hppa.c (_PA_RISC_ID): Defined if not already defined (e.g., for - hpux 7). Patch from friedman@gnu.ai.mit.edu. - (hppa_object_p): Only check for DL_MAGIC and SHL_MAGIC if they're - defined, which they aren't in hpux 7.0. - - * aix386-core.c: Include uinfo.h and coredump.h. Patch from Minh - Tran-Le, tranle@intellicorp.com. - -Fri Mar 5 14:54:21 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_generic_reloc): If the addend is non-zero, go - ahead and do the relocation. - (ecoff_refhi_reloc): Don't to the relocation here, just remember - what needs to be done. - (ecoff_reflo_reloc): Do the REFHI relocation here. - -Thu Mar 4 14:44:01 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_bfd_reloc_type_lookup): New function. - (ecoff_write_object_contents): Added BFD_ASSERT calls to ensure - relocs are reasonable. - * coff-msym.c: Eliminated uses of DEFUN. - (ecoff_swap_tir_out): New function. - -Tue Mar 2 17:52:58 1993 Fred Fish (fnf@cygnus.com) - - (Ultrix 2.2 support from Michael Rendell <michael@mercury.cs.mun.ca>) - * configure.host (vax-*-ultrix2*): Add triplet. - * hosts/vaxult2.h: New file. - * config/vaxult2.mh: New file. - - * aoutx.h (string.h): Include for strchr and friends. - * archive.c (string.h): Include for memchr and friends. - * elf32.c (string.h): Include for strrchr and friends. - -Sat Feb 27 00:44:24 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * aoutf1.c (sunos4_reloc_type_lookup): Unused; deleted. - (MY_set_sizes): Use sunos4_set_sizes. - - * elf32.c: Renamed from elf.c. Several CPU-specific functions - deleted, as well as elf-big and elf-little targets. - * libelf.h: New file. - * elf32-sparc.c, elf32-i386.c, elf32-i860.c, elf32-m68k.c: New - files, new targets. - * Makefile.in, config/*-elf.mt, targets.c: Adjusted. - - * i386linux.c (TARGETNAME): Use hyphens instead of parentheses. - - * coffcode.h (coff_compute_section_file_positions): Don't need - variable "old_sofar" if compiling for i960. - - * reloc.c (bfd_default_reloc_type_lookup): First argument is now a - bfd pointer. - * libbfd.h: Updated. - - * ieee.c (exten, envi): "static" belongs first in declaration. - -Fri Feb 26 17:37:34 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * srec.c: add support for symbolsrec, srecords with symbols in - them. - -Thu Feb 25 11:43:30 1993 John Gilmore (gnu@cacophony.cygnus.com) - - * ieee.c: cast all arguments of ieee_write_byte to bfd_byte - to avoid lint complaints. - -Thu Feb 25 02:15:52 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf.c (elf_write_object_contents): Section ".shstrtab" should be - type SHT_STRTAB. Don't alter file offset for section 0. - (reloc_type_names): Now an array instead of a macro. Still inside - "#if 0", since it's used only in debugging code also in "#if 0". - (struct elf_reloc_map_elt, struct elf_reloc_map): New types. - (sort_reloc_map): New function. - (sparc_reloc_map): New variable. - (elf_bfd_reloc_type_lookup): New function. - -Tue Feb 23 12:17:16 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd-in.h (JUMP_TABLE): Added bfd_reloc_type_lookup and - bfd_make_debug_symbol; they were already in the target structure. - * Adjusted all uses of JUMP_TABLE. - * coffgen.c, libcoff-in.h (coff_bfd_make_debug_symbol): Renamed - from coff_make_debug_symbol. - * libcoff.h: Updated accordingly. - - * Minor cleanups provoked by gcc warnings: - * aoutx.h (NAME(aout, reloc_type_lookup)), - cpu-h8300.c (local_bfd_reloc_type_lookup), - cpu-z8k.c (local_bfd_reloc_type_lookup): Added default case to - switches. - * archive.c (do_slurp_bsd_armap, do_slurp_coff_armap), - ieee.c (ieee_slurp_section_data), - elf.c (elf_make_sections, elf_fake_sections, - elf_compute_section_file_positions, elf_write_object_contents): - Removed unused variables. - * archures.c: Removed /* from within comment. - * bout.c (b_out_squirt_out_relocs): Initialize r_extern. - * oasys.c (oasys_write_data): Initialize i. - -Mon Feb 22 18:40:06 1993 Per Bothner (bothner@rtl.cygnus.com) - - * libcoff.h (obj_raw_syment_coun): New macro. - * coffgen.c (coff_get_normalized_symtab): Initialize - raw_syment_count. - * coffgen.c (coff_find_nearest_line): Numerous little fixes. - -Mon Feb 22 15:03:07 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (ecoff_set_symbol_info): stBlock symbols are always - debugging symbols. - (ecoff_get_debug): Offset the fdr adr by the adr of the first pdr, - for compatibility with tools from MIPS. - - * config/bigmips.mt: New file; default vector is ecoff_big_vec. - * config/irix3.mt, config/irix4.mt: Removed. - * configure.in (mips-*-ecoff): New target; uses bigmips.mt. - (mips-sgi-*, mips-big-*): Use bigmips rather than irix3. - -Wed Feb 17 23:40:41 1993 John Gilmore (gnu@cygnus.com) - - * hosts/hp300bsd.h: Add gross hack to determine whether we - are running on BSD 4.3 or BSD 4.4, and use appropriate include - files (and set other parameters) to match. - -Wed Feb 17 12:28:13 1993 K. Richard Pixley (rich@cygnus.com) - - * trad-core.c (trad_unix_make_empty_symbol): wrap PARAMS around an - ansi definition which otherwise confuses non-ansi compilers. - - * aout-adobe.c (aout_adobe_object_p): eliminate a warning from vax - ultrix cc by forward declaring getenv as is done in - bfd_find_target. - -Tue Feb 16 17:56:58 1993 K. Richard Pixley (rich@cygnus.com) - - * elf.c (elf_info_to_howto): cast an enum into unsigned char - avoiding a fatal error in vax ultrix 4.2 cc. - -Tue Feb 16 00:44:54 1993 John Gilmore (gnu@cygnus.com) - - * bfd-in.h, VERSION: Roll to version 2.1. - -Mon Feb 15 20:43:51 1993 John Gilmore (gnu@cygnus.com) - - * oasys.c (oasys_write_object_contents): Lint. - * srec.c: Whitespace cleanup. - -Fri Feb 12 14:23:07 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffgen.c (coff_print_symbol): Print correct tagndx value; - cleaned up output formatting a bit. - -Fri Feb 12 08:28:56 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * coffcode.h (coff_set_arch_mach_hook): *FIXME* the H8/300 is always - relaxable. Should be moved somewhere else. - -Thu Feb 11 14:09:42 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * aout-mipsbsd.c: Eliminated uses of DEFUN. - (aout_mips_*_vec): Added seclet_link element. - - * Makefile.in (BFD_BACKENDS, CFILES, aout-mipsbsd.o): Added - support for aout-mipsbsd target. - - * bout.c (get_value): Don't truncate 32-bit addend to 16 bits. - -Fri Feb 5 08:08:43 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * cpu-h8500.c (scan_mach): return false if it's not an H8/500 - -Thu Feb 4 12:52:40 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - Add support for the H8/500 - - * coff-h8500.c, cpu-h8500.c, archures.c, coffcode.h, targets.c - -Thu Feb 4 12:35:02 1993 Ian Lance Taylor (ian@cygnus.com) - - * libecoff.h: New file. Defines ECOFF backend data for gdb. - * coff-mips.c: Now includes libecoff.h. - (ecoff_data_type): Moved to libecoff.h. - (ecoff_slurp_symbolic_info): Made globally visible so that gdb can - call it. If there is ever another ECOFF target, this and the - swapping functions should be accessed via an ECOFF specific target - vector. - * Makefile.in (coff-mips.o): Depends on libecoff.h. - -Wed Feb 3 09:14:36 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h: Removed MIPS specific information, since coff-mips.c - no longer includes this file. - - * coff-msym.c (ecoff_swap_fdr_in, ecoff_swap_ext_in): Set reserved - bits to 0 to make comparison test useful. - - * config/irix3.mh, config/irix4.mh (HDEFINES): Set to -G 4 to - avoid overflowing GP accessible sections in binutils/objdump. - -Tue Feb 2 15:36:55 1993 Per Bothner (bothner@cygnus.com) - - * aoutx.h (NAME(aout,slurp_symbol_table)): Made symbol - reading more robust: Fail if string index is out of string - table range. - -Tue Feb 2 11:43:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bout.c (b_out_get_relocated_section_contents, cases PCREL24 and - PCREL13): Don't take dst_address into account; the input file has - already taken care of that. - -Tue Feb 2 11:41:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c: Completed support for linker and binutils. - -Mon Feb 1 14:45:38 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bout.c (b_out_get_relocated_section_contents, case ABS32): Keep - original addend from section contents. - -Thu Jan 28 21:01:37 1993 John Gilmore (gnu@cygnus.com) - - Fix minor bugs reported by Carl Greco, <cgreco@parrot.creighton.edu>: - * hosts/delta88.h (strtol): Fix prototype. - * config/m88k-coff.mt (SELECT_ARCHITECTURES): Fix name. - -Wed Jan 27 17:16:51 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf.c: Get rid of "#ifdef sparc". - (RELOC_TYPE_NAMES): Never used (currently), so don't include it. - (elf_sparc_howto_table): Renamed from elf_howto_table, and always - used. - (elf_info_to_howto): Use runtime conditionals on CPU type, not - compile type conditionals on host CPU. - (elf_little_vec, elf_big_vec): Use bfd_default_reloc_type_lookup, - not null pointer. - (reloc_type, RELOC_TYPE_NAMES): Include i386 values. - -Tue Jan 26 11:43:14 1993 Ian Lance Taylor (ian@cygnus.com) - - * section.c (SEC_IS_COMMON): New section flag, needed for MIPS - ECOFF which has two common sections. - (bfd_com_section): Set SEC_IS_COMMON flag. - * bfd-in.h (bfd_is_com_section): New macro to test SEC_IS_COMMON. - * aoutx.h, archive.c, bout.c, coff-a29k.c, coff-m88k.c, - coff-mips.c, coffgen.c, ieee.c, oasys.c, reloc.c, syms.: Use - bfd_is_com_section macro rather than checking for equality to - bfd_com_section. - -Mon Jan 25 15:27:36 1993 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (_bfd_coff_mkobject_hook): Pass aouthdr argument. - (coff_mkobject_hook): Accept aouthdr argument. - * coffgen.c (coff_real_object_p): Pass aouthdr to mkobject_hook. - Handle NULL aouthdr argument. - (coff_object_p): If there is no aouthdr, pass it as NULL to - coff_real_object_p. - * libcoff.h: Rebuilt for mkobject_hook changes. - - * coffswap.h (coff_swap_aouthdr_in, coff_swap_aouthdr_in): Swap - additional MIPS ECOFF fields. - -Sat Jan 23 18:36:20 PST 1993 Ralph Campbell (ralphc@pyramid.com) - - * configure.host: added mips-dec-bsd* - * configure.in: added mips-dec-bsd* - * aout-mipsbsd.c: new file for mips-dec-bsd* - * aout-target.h: don't define '' if 'MY_BFD_TARGET' is defined. - * aoutx.h: added mips support. - * archures.c: added mips support to bfd_default_scan(). - * cpu-mips.c: added support for R4000 (untested). - * libaout.h: added MIPS1 & MIPS2 magic numbers. - * reloc.c: fix typo's in comments. Added BFD_RELOC entries which I - hope will make it into include/bfd.h. - * targets.c: added aout_mips_*_vec. - -Wed Jan 20 17:15:52 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/decstation.mt: Set DEFAULT_VECTOR to ecoff_little_vec. - -Tue Jan 19 09:06:14 1993 Ian Lance Taylor (ian@cygnus.com) - - * bfd-in.h (bfd_asymbol_value): Add needed parentheses. - - * libcoff-in.h: Update prototype for coff_count_linenumbers. - -Fri Jan 15 18:13:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-msym.c (ecoff_swap_hdr_out, ecoff_swap_fdr_out, - ecoff_swap_pdr_out, ecoff_swap_sym_out, ecoff_swap_ext_out, - ecoff_swap_rndx_out, ecoff_swap_rfd_out, ecoff_swap_opt_in, - ecoff_swap_opt_out, ecoff_swap_dnr_in, ecoff_swap_dnr_out): New - functions. - * coffswap.h: If NO_COFF_RELOCS is defined, don't define - bfd_swap_reloc_in or coff_swap_reloc_out. - * coff-mips.c: Added code to link and write out symbolic debugging - information, and to swap relocs in and out. - -Thu Jan 14 15:51:58 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * libcoff.h, coffgen.c (coff_count_linenumbers), coffcode.h - (coff_write_object_contents): coff_count_linenumbers returns the - number of line number records it found. - - * coffgen.c (coff_write_linenumbers): only write out line numbers - in the section they belong to. - -Mon Jan 11 18:32:22 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * targets.c (bfd_target): Added relocateable argument to - _bfd_get_relocated_section_contents. Added _bfd_seclet_link - target vector for linker use. - * bfd.c (bfd_seclet_link): New macro. - * bfd-in.h (JUMP_TABLE): Added _bfd_seclet_link. - * seclet.c (rel, seclet_dump_seclet): Added relocateable argument - and boolean return value. Made static. - (bfd_generic_seclet_link): Renamed from seclet_dump. Added - relocateable argument. - * reloc.c (bfd_generic_get_relocated_section_contents): Added - relocateable argument (if relocateable, saves relocs). - * bout.c (b_out_get_relocated_section_contents), - reloc16.c (bfd_coff_reloc16_get_relocated_section_contents): Added - relocateable argument (if relocateable, just calls - bfd_generic_get_relocated_section_contents). - * libcoff-in.h (bfd_coff_reloc16_get_value): Added relocateable - argument to prototype. - * All targets: Set new _bfd_seclet_link vector to - bfd_generic_seclet_link. - -Sat Jan 9 21:29:32 1993 Stu Grossman (grossman at cygnus.com) - - * coffgen.c: #include seclet.h. - -Sat Jan 9 19:48:14 1993 Stu Grossman (grossman at cygnus.com) - - * hppa.c (hppa_object_setup): Get rid of all knowledge of stabs - debug info. Setup info about linker symbols only, and use - standard bfd fields to hold the info. - * (hppa_object_p): Remove unneeded decls. - * (hppa_new_section_hook): Get rid of most of this. - * libhppa.h (struct hppadata): Remove ten pounds of useless ugly - fat. Remove all knowledge of stabs, remove redundant knowledge of - linker symbols. - * Remove macros for accessing fields which are now gone. - -Fri Jan 8 15:20:00 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * coffcode.h (sec_to_styp_flags): allow SEC_NEVER_LOAD to turn on - STYP_NOLOAD bit. - * coff-z8k.c: delete unused reloc functions - -Fri Jan 8 15:47:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.c (struct _bfd): Added ecoff_tdata to tdata union. - * targets.c (enum target_flavour): Added bfd_target_ecoff_flavour. - * coff-msym.c: Use DEFUN for function definitons. - * coff-mips.c: Added code to read and print symbols, and to find - line numbers. - - * coffcode.h: Moved many generic functions into coffgen.c. Moved - swapping functions into coffswap.h for ECOFF use. Moved - relocation functions, only used by h8300 and z8k, into reloc16.c. - Added hooks for coffgen.c functions to backend data structure, and - added hook functions. Still more could be done. - * coffswap.h: New file to hold COFF swapping routines. - * coffgen.c: New file to hold generic COFF functions. - * reloc16.c: New file to hold h8300 and z8k specific relocation - functions. - * libcoff-in.h: Added declarations for functions in coffgen.c. - * libcoff.h: Rebuilt to incorporate changes. - * coff-h8300.c: Function name changes. - * coff-z8k.c: Function name changes. Use coff_reloc16_extra_cases - hook rather than defining EXTRA_CASES. - * Makefile.in: Build new files coffgen and reloc16. Added - dependencies of coff-*.o on coffswap.h and seclet.h. - -Thu Jan 7 16:16:26 1993 Per Bothner (bothner@cygnus.com) - - * ieee.c (ieee_slurp_sections): Add cast to avoid warning - about discarding const. - -Wed Jan 6 00:16:49 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * archive.c, seclet.c, elf.c use bfd_xmalloc instead of malloc - -Tue Jan 5 09:35:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in (post-target): If --with-minimal-bfd is specified, - set MINIMIZE=1. - -Mon Jan 4 07:20:01 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * srec.c (srec_write_records): one of my boards wants a CR between - records. - -Wed Dec 30 12:46:30 1992 Ian Lance Taylor (ian@cygnus.com) - - * archive.c (do_slurp_coff_armap): set symdef_count correctly - (it broke a couple of weeks ago). - -Tue Dec 29 21:41:05 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * elf.c (bfd_elf_find_section): Switch back to "struct ..." for - return type, so libbfd.h doesn't reference undefined typedefnames. - -Tue Dec 29 13:54:35 1992 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (coff_real_object_p): use name I386AIXMAGIC rather - than I386SVMAGIC. - (coff_pointerize_aux): don't pointerize a negative tagndx - (sometimes generated by SCO 3.2v4 cc). - - * bout.c (calljx_callback, callj_callback, - b_out_get_relocated_section_contents): warn if relocating against - an undefined symbol. - -Mon Dec 28 14:30:55 1992 Stu Grossman (grossman at cygnus.com) - - * hppa.c: Get rid of DEFUN, use more conventional prolog stuff. - Make a bunch more routines be static. - * hppa.c (fill_spaces): Get rid of this, replace with much better - written setup_sections(). - * (setup_sections): New routine to create BFD sections for each - space and subspace in SOM files. - * (hppa_object_setup): Use BFD sections created by - setup_sections() to locate GDB symbol table info. - * (make_unique_section): New routine to create a BFD section. It - ensures that the given name is unique, and will generate a unique - one if necessary. - * (hppa_object_p): Become much more paranoid about file header. - * (make_bfd_asection): Call bfd_make_section to do the dirty - work. Simplify code somewhat. - * (hppa_core_file_p): Use proper name for stack section. - * libhppa.h: Remove millicode_start, millicode_end decls. - -Mon Dec 28 11:03:22 1992 Ken Raeburn (raeburn@cygnus.com) - - * Makefile.in (coff-we32k.o, coff-z8k.o): Note dependencies. - - * reloc.c (bfd_perform_relocation): For normal 2- or 4-byte - relocs, don't bother doing the adjustment if the value to add is - zero. - -Sun Dec 27 17:45:05 1992 Fred Fish (fnf@cygnus.com) - - * bfd.c (bfd_get_size): New function that gets an upper bound - on the possible size of any object in a bfd. - * elf.c (bfd_elf_find_section, elf_get_str_section, - elf_get_symtab_upper_bound): Rewrite to avoid NULL pointer - dereferences. - * elf.c (elf_big_vec, elf_little_vec): Document last three - members initialized to NULL. - -Thu Dec 24 17:49:09 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * hppa.c: change a 'const' to 'CONST', or else HP C compiler dies - -Mon Dec 21 16:33:34 1992 Per Bothner (bothner@rtl.cygnus.com) - - * hosts/std-host.h: New file. Attempt at a generic/default - set of definitions, to discourage porting to new hosts by copying. - * hosts/news.h: Removed. - * hosts/sparc.h: Use std-host.h. - * bfd-in.h: New macros bfd_asymbol_bfd and bfd_asymbol_flavour; - perhaps we can later remove the the_bfd field from each symbol. - * syms.c (struct symbol_cache_entry): Remove unused field - app_data. Add comment noting that the_bfd is almost redundant, - but not quite. - * aoutx.h, coff-a29k.c, coff-i386.c, coff-i960.c, coffcode.h: - Use new macros bfd_asymbol_bfd and bfd_asymbol_flavour. - * hppa.c (fill_spaces): Make slightly more rebust. - * configure.in: Allow std-host as the "default" host. - -Mon Dec 21 17:24:13 1992 Stu Grossman (grossman at cygnus.com) - - * bfd.c: Add struct hppa_core_data to tdata union. - * hppa.c: Conditionalize on HOST_HPPAHPUX instead of hp9000s800. - Get rid of HPPA/BSD specific code. That will go somewhere else - someday. - * (fill_spaces): Don't spin forever and die if you don't find - $MILLICODE$ subspace. - * (hppa_object_p): Make sure that we have a real honest-to-cthulu - exec file! - * (hppa_core_file_failing_signal, hppa_core_file_failing_command): - Make these work for HPUX. - * (make_bfd_asection): New routine to make section creation a - little easier. - * (hppa_core_file_p): Completely rewrite, leave out bugs. - * libhppa.h: #include the right system files. Redefine all of - the structs/macros for hacking core files to use more sensible - HPUX core file structures. - * targets.c (target_vector): Conditionalize hppa_vec on - HOST_HPPAHPUX, not hp9000s800. - * hosts/hppahpux.h: #include stdlib.h to get correct decls for - malloc and realloc. #define HOST_HPPAHPUX. - -Mon Dec 21 12:40:10 1992 Ian Lance Taylor (ian@cygnus.com) - - * Patches from Minh Tran-le <mtranle@paris.intellicorp.com>. - * configure.in (i386-*-isc*, i386-*-aix*): New targets. - * configure.host (i386-*-isc*, i386-*-aix*): New hosts. - * hosts/i386isc.h, config/i386isc.mh: New files for Interactive - Unix. - * hosts/i386aix.h, config/i386aix.mh: New files for AIX on PS/2. - * aix386-core.c: New file for handling core files on AIX on PS/2. - * targets.c: if AIX386_CORE, use aix386_core_vec. - * coffcode.h (coff_real_object_p): check for I386SVMAGIC as well - as I386MAGIC. - -Fri Dec 18 10:20:27 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * aoutf1.h (sunos4_write_object_contents): set flags to 0, fixing - 1927. - -Thu Dec 17 19:35:32 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: added dvi target - -Thu Dec 17 00:36:24 1992 John Gilmore (gnu@cygnus.com) - - * bfd.c: Use right name for tekhex tdata struct. - * tekhex.c: Insert leading_char (0) into bfd_target struct. Style. - * libcoff.h: Updated to get spacing change from coffcode.h. - * trad-core.c: leading_char is 0 (no symbols!), not '_'. - -Tue Dec 15 15:40:30 1992 Per Bothner (bothner@cygnus.com) - - * archive.c (do_slurp_bsd_armap, do_slurp_coff_armap): New - functions, with the "guts" of the old bfd_slurp_bsd_armap - and bfd_slurp_coff_armap, but assuming we've already checked - if the armap is present or not. - Also, rewrite a bit to avoid keeping around obstack data - that we don't need. - * archive.c (snarf_ar_header, _bfd_slurp_extended_name_table): - Various fixes to correctly handle COFF_style archives names. - (Note that because these have a trailing '/', the names can - have embedded spaces.) - * archive.c (bfd_slurp_armap): New function, replaces old - bfd_slurp_bsd_armap and bfd_slurp_coff_armap. Recognizes - _either_ format, and calls do_slurp_bsd_armap or - do_slurp_coff_armap if either form of map is seen. - * libbfd-in.h: Changed bfd_slurp_bsd_armap and - bfd_slurp_coff_armap into macro synonyms for bfd_slurp_armap. - * elf.c (elf_slurp_armap, elf_write_armap): Fix. - * Makefile.in (AR_FLAGS): Use rc instead of non-standard qc. - -Mon Dec 14 17:08:08 1992 Stu Grossman (grossman at cygnus.com) - - * hppa.c: #include "sysdep.h", not <sysdep.h>. - * libhppa.h: Make millicode_start and millicode_end be unsigned - int to be same type as CORE_ADDR in GDB. Why are these here? - -Sat Dec 12 15:54:36 1992 Ian Lance Taylor (ian@cygnus.com) - - * coff-i386.c (CALC_ADDEND): if reloc is PC relative, add the - vaddr of the section to the addend. - * targets.c: if MINIMIZE is 1, and SCO_CORE is defined, add - SCO_CORE to SELECT_VECS. - (target_vector): add sco_core_vec. - * sco-core.c (sco_core_vec): add leading underscore initializer. - * configure.in (i[34]86-*-sco*): use target i386-sco. - * config/i386-sco.mt: new file; define SCO_CORE. - -Thu Dec 10 02:13:15 1992 John Gilmore (gnu@cygnus.com) - - * aout-adobe.c (aout_adobe_object_p): Fix !strcmp thinko. - -Fri Dec 4 14:02:49 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * coffcode.h (bfd_coff_std_swap_table): Now static and const. - -Thu Dec 3 16:54:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * hosts/i386linux.h: Include unistd.h. - - * aoutx.h (print_symbol): aout_stab_name returns a constant - string. - * libaout.h (aout_stab_name): Fix prototype. - * stab-syms.c (aout_stab_names): Array is now const. - (aout_stab_name): Return value is now pointer to const. - - * aoutx.h, archive.c, archures.c, coffcode.h, ctor.c, reloc.c, - syms.c: Doc fixes. - - * syms.c (asymbol): Added new field "app_data", for data - particular to the application. Some of the linker flags ought to - get moved to this field someday. - - * archures.c (bfd_default_scan): Recognize a few more numbers: - 80486, 80960, and 960. - - * bfd-in.h (COFF_SWAP_TABLE): New is just address of - bfd_coff_std_swap_table, cast to PTR. - * bfd.c (bfd_coff_swap_*): Deleted macros. - * targets.c (struct bfd_target): Deleted COFF-specific swapping - routine pointers. - * coffcode.h (type bfd_coff_backend_data): New structure type, - contains pointers to the COFF-specific swapping routines. - (bfd_coff_std_swap_table): New data structure, to be used when - NO_COFF_SYMBOLS and NO_COFF_LINENOS are not defined. - (bfd_coff_swap_*): New macros. - * coff-mips.c (mips_coff_swap_table): New data structure. - (ecoff_big_vec): Use it. - * All COFF targets: Moved COFF_SWAP_TABLE to target-specific data. - * All other targets: Deleted coff-specific vector entries. - - * trad-core.c: Fixed some `PARAMS' uses that were missing - parentheses. - -Sun Nov 29 08:37:13 1992 Fred Fish (fnf@cygnus.com) - - * aoutx.h (some_aout_object_p): Protect arg prototype in - callback_to_real_object_p with PARAMS macro for non-ANSI compilers. - -Sat Nov 28 04:01:21 1992 John Gilmore (gnu@cygnus.com) - - * aout-target.h, aoutf1.h, trad-core.c, coffcode.h, libaout.h, - libbfd-in.h, bfd-in.h: Eliminate all PROTO calls, replace with - PARAMS for readability. - - * aoutx.h: Add type to callback parameter. - * coff-mips.c: Don't call trad-core.h, not needed. - * trad-core.c: Incorporate trad-core.h declarations. Fix comments. - * trad-core.h: Eliminate, unused. - -Wed Nov 18 13:16:17 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * format.c (bfd_check_format): if default target isn't found - then look through the entire list rather than return early. - -Mon Nov 16 14:33:03 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * config/i960-coff.mt: reorder vec to match bfd_check_format (from Per) - -Thu Nov 12 17:01:41 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: pass down prefix and exec_prefix in FLAGS_TO_PASS - -Thu Nov 12 09:46:47 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-z8k.c: checkpoint, more addressing modes handled - * coffcode.h (get_value): don't truncate reloc->addend field, it's - a long now. - -Wed Nov 11 23:57:55 1992 Brendan Kehoe (brendan@cygnus.com) - - * we32k.mt (TDEFAULTS): Use we32kcoff_vec, not i386coff_vec. - -Tue Nov 10 14:04:38 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: minor tweaks to make $(CC) command lines more consistent - -Mon Nov 9 23:58:17 1992 John Gilmore (gnu@cygnus.com) - - * opncls.c (bfd_fdopenr, bfd_close): Add doc about cacheing - and about when file descriptors are closed. - -Sat Nov 7 00:42:20 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bout.c (b_out_squirt_out_relocs): Make sure alignment relocs get - written out correctly. - -Thu Nov 5 15:34:19 1992 Ian Lance Taylor (ian@cygnus.com) - - * section.c: New section bit SEC_SHARED_LIBRARY. - coffcode.h (styp_to_sec_flags): if STYP_NOLOAD && (STYP_TEXT || - STYP_DATA), set SEC_SHARED_LIBRARY. This seems to be correct for - i386-sysv. - -Thu Nov 5 04:43:09 1992 John Gilmore (gnu@cygnus.com) - - * target.c (struct bfd_target): Eliminate the SDEF and SDEF_FMT - macros; use PARAMS to declare the function pointers involved. - - * bfd-in.h, bfd.c, libbfd.h, reloc.c, seclet.h, section.c, - targets.c: Rename struct bfd_seclet_struct to struct bfd_seclet. - -Thu Nov 5 02:59:09 1992 John Gilmore (gnu@cygnus.com) - - Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS. - - * archures.c, reloc.c, section.c, tekhex.c: Use PARAMS in - declaring pointers to functions. - * cache.c, elf.c: Move static function decls to top, use PARAMS. - * seclet.h: Declare external function with PARAMS. - - * doc/chew.c (exfunstuff): Eliminate. - (paramstuff): Replace exfunstuff with function to generate PARAMS. - * doc/proto.str: Use paramstuff rather than exfunstuff. - - * libbfd.h: Update, based on changes in source code and chew. - -Wed Nov 4 22:47:29 1992 John Gilmore (gnu@cygnus.com) - - * libieee.h: Add FIXME about removing limit on number of sections. - * bfd-in.h: Improve comments to make it clear that bfd.h is - the wrong place to edit this file. - * Makefile.in (install): Install ansidecl.h and obstack.h in the - same places where we install bfd.h. - -Wed Nov 4 13:40:23 1992 Sean Eric Fagan (sef@cygnus.com) - - * coffcode.h (coff_swap_aux_out, coff_swap_aux_in): check for - symbol type before blindly modifying the auxent. Specifically, - only modify the endndx fields for types that need it, and don't - set the array information for non-arrays. - -Wed Nov 4 09:30:50 1992 Ken Raeburn (raeburn@cygnus.com) - - * aoutx.h (some_aout_object_p): Section list should be set up - correctly anyways; don't have to set up "next" pointers manually. - -Mon Nov 2 12:36:14 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/delta88.mh, config/hp300.mh, config/hppahpux.mh, - config/i386v.mh: removed -DUSG from HDEFINES. - hosts/delta88.h, hosts/hp300.h, hosts/hppahpux.h, hosts/i386v.h: - defined USE_UTIME. - hosts/i386v.h: don't define POSIX_UTIME. - -Fri Oct 30 16:13:52 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * ieee.c (ieee_slurp_sections): make a private copy of the - section's name before truncating it. - -Thu Oct 29 08:30:50 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * hppa.c: add symbol_leading_char entry in transfer vec - -,Wed Oct 28 16:11:57 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * ieee.c (get_symbol): can now cope when two symbols of a - different class, but the same index number occur consecutively. - (get_section_entry): nicer name for sections being forward - referenced. (ieee_archive_p): don't free the filename string, - since it was never malloced. - -Wed Oct 28 13:42:09 1992 John Gilmore (gnu@cygnus.com) - - * coffcode.h (coff_write_object_contents): Zero timestamp field. - -Tue Oct 27 12:24:34 1992 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (coff_swap_aux_out): set the fcnary info before - optionally setting the dimen info, since they are in the same - memory locations. Also zero out external auxent. - (coff_write_symbol): don't zero external auxent; now done in - coff_swap_aux_out. - -Fri Oct 23 13:55:35 1992 Ian Lance Taylor (ian@cygnus.com) - - * Check fclose return value for errors. - libbfd.h: bfd_cache_close now returns a boolean. - cache.c (bfd_cache_delete): return fclose success value. - (bfd_cache_close): return bfd_cache_delete return value. - opncls.c (bfd_close, bfd_close_all_done): return result of - bfd_cache_close. - -Fri Oct 23 10:32:36 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * seclet.c (rel): don't load sections without the SEC_LOAD bit. - -Thu Oct 15 10:16:35 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-m68k.c (m68k_howto2type, SELECT_RELOC): new function to - work out a coff relocation type from a howto's attributes rather - than using the input r_type field. This fixes PR1677 and allows - conversion of a.out relocs to coff relocs. - - * coffcode.h (coff_write_relocs): if supplied a relocation - relative to an absolute symbol, use the right symbol index. - - * reloc.c (bfd_perform_relocation): do a partial link for coff - relocs right. - -Fri Oct 23 08:15:56 1992 Ian Lance Taylor (ian@cygnus.com) - - * changes to support i386-sysv with shared libraries: - * coffcode.h (sec_to_styp_flags): if TWO_DATA_SECS is defined, - check for .data2; if _LIB is defined, check for it; map - SEC_NEVER_LOAD to STYP_NOLOAD. - (styp_to_sec_flags): map STYP_NOLOAD to SEC_NEVER_LOAD. - (make_a_section_from_file): if TWO_DATA_SECS, accept .data2. - (coff_write_object_contents): force vaddr of .lib to 0; set scnptr - if section has contents, not just if it is loadable; if - TWO_DATA_SECS, check for .data2 - (coff_set_section_contents): set vma of .lib section to number of - .lib sections. - * coff-i386.c: define TWO_DATA_SECS; use a special CALC_ADDEND; - don't define coff_write_armap to bsd_write_armap. - * hosts/i386v.h: don't include <utime.h>, since it is not provided - by SVR3.2. - -Thu Oct 22 22:40:20 1992 Brendan Kehoe (brendan@lisa.cygnus.com) - - * solaris2.h: Get the definition of alloca from alloca.h if we - aren't using gcc. - -Thu Oct 22 03:07:28 1992 John Gilmore (gnu@cygnus.com) - - * configure.in (i960-*-{aout,bout}): Support these. - -Wed Oct 21 03:46:34 1992 John Gilmore (gnu@cygnus.com) - - * config/a29k-aout.mt (DEFAULT_TARGET): Set to one that exists. - -Thu Oct 15 15:05:39 1992 Per Bothner (bothner@cygnus.com) - - * apollo68.h, apollov68.h, hp300.h, i386v.h, irix3.h: Remove - no-longer-used definitions of L_SET and L_INCR. - * i386linux.h: Tweaks to smooth Linux build. - -Thu Oct 15 01:32:22 1992 John Gilmore (gnu@cygnus.com) - - * seclet.h: Add enum tag to bfd_seclet_enum_type. - - * bfd-in.h (file_ptr): Update comments, make FIXME re off_t. - - * aout-adobe.c, aoutf1.h, archive.c, bout.c, coff-rs6000.c, - coffcode.h, elf.c, ieee.c, libaout.h, libbfd.c, oasys.c, - sco-core.c: Lint: Second argument of bfd_seek is always file_ptr. - Third argument is SEEK_SET or SEEK_CUR. Result is always 0 or -1. - - * aout-adobe.c, aoutf1.h, aoutx.h, bout.c coff-m68k.c, coff-z8k.c, - coffcode.h, elf.c, libaout.h, libbfd-in.h, srec.c: Lint. - -Fri Oct 9 03:46:37 1992 John Gilmore (gnu@cygnus.com) - - * configure.host: New file, contains mapping of host configs - to host support file names for bfd, binutils, opcodes. - * configure.in: Use it. - * i386aout.c: Cleanup, dump TARGET_IS_LITTLE_ENDIAN_P. - * i386bsd.c: Cleanup, reformat. - * config/i386-bsd.mt: Comment changes. - * config/i386bsd.mh: New file for core file support. - * hosts/i386bsd.h: Merge changes from Peter Schauer. - * bout.c (ALIGN): Rename to ALIGNER, since system header files - on BSD 4.4 define ALIGN (sigh!). - -Thu Oct 8 22:18:10 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) - - * libaout.h (aout_backend_data): added exec_header_not_counted - field. For ZMAGIC files only, when text_includes_header is set, by - default the length of the exec header is counted in the text - section size. For go32, exec header is mapped in but does *not* - contribute to the size of section. - * aoutx.h (aout_adjust_sizes_and_vmas): if exec_header_not_counted - is not set, but ztih is, add the size of the exec header to the - recorded size of the text section. - * aoutf1.h (sunos4_aout_backend): clear exec_header_not_counted. - * i386aout.c (i386aout_backend_data): set exec_header_not_counted. - Also set text_includes_header. - * aout-target.h (*_backend_data): cleare exec_header_not_counted - by default in MY(backend_data). - -Thu Oct 8 18:12:49 1992 Ken Raeburn (raeburn@cygnus.com) - - * aout-target.h (callback): Don't define this function if it won't be - used. - - * aoutx.h (some_aout_object_p): Restore old aout_data value if this - type doesn't match. Don't lose if file sections have already been - created. - (set_arch_mach): Set reloc_entry_size. - (slurp_symbol_table): Use bfd_h_get_{16,8} for reaeding symbol data. - - * hosts/i386bsd.h: New file. - * configure.in: Recognize i[34]86-*-bsd host. - - * aout-target.h (callback, write_object_contents): Delete unused - variables. - - * aoutx.h (reloc_type_lookup): New function. - * aout-target.h (MY_reloc_howto_type_lookup): Use it as default. - * aoutf1.h (sunos4_reloc_type_lookup): Deleted. - (MY_reloc_howto_type_lookup): Don't define it. - - * aoutx.h (adjust_sizes_and_vmas): Don't bother with padding for - OMAGIC files. - (slurp_symbol_table): Use header byte order, not target byte - order, for reading symbol data. - -Thu Oct 8 17:33:39 1992 John Gilmore (gnu@cygnus.com) - - * configure.in: Undo some brain damage in the host section. - * configure.in: Reformat the target section, test many configs. - * Makefile.in (make): Remove obsolete `make make'. - * aoutx.h (some_aout_object_p): Make defines line up. - -Thu Oct 8 08:52:48 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - Now a bfd knows whether underscores are normally prepended - to symbols in its file format. - - * aout-adobe.c, aout-target.h, bout.c, coff-a29k.c, coff-h8300.c, - coff-z8k.c: targets set so they have leading underscore - * coff-i386.c, coff-i960.c, coff-m68k.c, coff-mips.c, coff-m88k.c, - coff-rs6000.c, coff-we32k.c, elf.c, ieee.c, srec.c: targets set - without leading underscore flag - * targets.c: add symbol leading char to xvec description - * bfd-in.h (bfd_get_symbol_leading_char): new macro. - -Mon Oct 5 14:32:55 1992 Per Bothner (bothner@cygnus.com) - - * archive.c: Make errno global. - * archive.c (_bfd_write_archive_contents): If read fails (and - errno!=0) set bfd_error to malformed_archive (since this probably - indicates a truncated archive), rather than system_call_error. - -Mon Oct 5 03:33:39 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) - - * Makefile.in: added rules for i386bsd.c - * i386bsd.c: new file, supporting 386bsd. - * configure.in: recognize i386-*-bsd target. - * config/i386-bsd.mt: new file - 386bsd target configuration. - -Thu Oct 1 17:51:07 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: re-arrange host section to use *-*-* notation, - clean up some of the target section as well - - * seclet.c: cast result of bfd_get_relocated_section_contents to - avoid compiler warnings - -Tue Sep 29 13:24:09 1992 Ken Raeburn (raeburn@cygnus.com) - - * coffcode.h (coff_section_symbol): Create section if it doesn't - already exist. - - * bout.c: Removed some unused variables. - -Tue Sep 29 08:30:21 1992 Ian Lance Taylor (ian@cygnus.com) - - * Portability fixes from p3: - coffcode.h (coff_write_relocs): removed sanity check until it - works on all targets (per advice from sac). - config/hp9000.mh: new file to define USG. - hppa.c: #undef hppa before the JUMP_TABLE. - hosts/hppahpux.h: #define NATIVE_HPPAHPUX_COMPILER if not - __STDC__. - targets.c (bfd_target_list): if NATIVE_HPPAHPUX_COMPILER, make - local variable target volatile to avoid mysterious bug in - HP9000/700 cc. - -Sat Sep 26 03:58:49 1992 John Gilmore (gnu@cygnus.com) - - * config/hppabsd.mh, config.hppahpux.mh: Remove various bogosity. - * hosts/hppahpux.h: Remove bcopy and index circumventions. - -Fri Sep 25 22:36:52 1992 John Gilmore (gnu@cygnus.com) - - * coff-z8k.c (func_da, func_jr): Lint. - * coffcode.h: Use memset rather than bzero. - * elf.c: Use memcpy rather than bcopy. - * tekhex.c: Use memset rather than bzero. - -Fri Sep 25 19:14:48 1992 John Gilmore (gnu@cygnus.com) - - Add Adobe a.out support. - - * aout-adobe.c: New file. So far, only reads a.out.adobe. FIXME. - * config/adobe.mt: Add. - * configure.in (*-adobe-* target): Add. - * targets.c (a_out_adobe_vec): Add. - * Makefile.in: add aout-adobe.c. - - * configure.in: Put two dashes in all entries to be matched. - Add comments to remind people to do this. - Reorder all entries that match manufacturer names, to occur - last, so they will only be matched if no more specific match - occurs. Remove manufacturers `aout', `bout', `coff', and `elf'. - -Fri Sep 25 15:03:22 1992 Brendan Kehoe (brendan@rtl.cygnus.com) - - * elf.c (section_from_elf_index): Return bfd_abs_section, not 0, - since we should never have a NULL section. - (elf_slurp_symbol_table): If st_shndx doesn't match any of our - tests, set the section to bfd_abs_section. - -Fri Sep 25 11:11:57 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-z8k.c: getting closer - * coffcode.h (coff_get_relocated_section_contents): allow - EXTRA_CASES hooks for different arches to provide different reloc - types. - * seclet.h: #ifndef around it to allow multiple inclusion - * srec.c: minor doc fix - -Mon Sep 21 14:33:58 1992 Ian Lance Taylor (ian@cygnus.com) - - * hosts/hp9000.h, hosts/irix3.h: changes from WRS. - -Sun Sep 20 08:48:25 1992 Fred Fish (fnf@cygnus.com) - - * configure.in: Use i386-elf for all i386/i486 sysv4 hosts, not - just ncr. - -Thu Sep 17 06:40:46 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bout.c (b_out_slurp_reloc_table): Clear howto field before - filling in reloc, in case immediately following code doesn't set - it. - -Fri Sep 11 15:37:06 1992 Ian Lance Taylor (ian@cygnus.com) - - * coffcode.h (coff_renumber_symbols): set the last renumbered - symbol pointer to NULL, as expected by coff_write_linenumbers. - (coff_write_relocs): apparently a non-zero addend is OK for reloc - type R_IHCONST used on the 29k. - -Thu Sep 10 13:28:24 1992 John Gilmore (gnu@cygnus.com) - - * opncls.c (bfd_fdopenr): Determine whether to fdopen for - update, based on how the underlying file was opened. Obsoletes - FASCIST_FDOPEN. - * hosts/rs6000.h, hosts/tahoe.h, hosts/vaxbsd.h: Remove - all FASCIST_FDOPEN config defines. - -Tue Sep 8 21:37:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * sparc-opc.c: Moved to opcodes library, now that we have one. - * Makefile: Don't compile it. - -Tue Sep 8 10:10:34 1992 Ian Lance Taylor (ian@cygnus.com) - - * aoutx.h: adjust_sizes_and_vmas did not return anything. - -Thu Sep 3 19:29:04 1992 Per Bothner (bothner@rtl.cygnus.com) - - * section.c (bfd_set_section_flags): Remove a sanity check. - It is unfortunately broken, and prevents strip from working. - -Thu Sep 3 16:14:40 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * sparc-opc.c (condr): Remove extraneous, but harmless, backlash - created by last change. - -Thu Sep 3 13:52:38 1992 Per Bothner (bothner@rtl.cygnus.com) - - * reloc.c (reloc_howto_struct): Make size field be unsigned. - * bfd-in.h: Bump to version 2.0. - -Thu Sep 3 09:05:37 1992 Stu Grossman (grossman at cygnus.com) - - * bout.c, cpu-z8k.c: Use enums when initializing structs to keep - braindamaged HP/Apollo compiler happy. - -Wed Sep 2 02:53:29 1992 John Gilmore (gnu@cygnus.com) - - * format.c: Fix description of search for matching target. - * aoutx.h (some_aout_object_p): Set SEC_CODE and SEC_DATA. - * targets.c: Update description of search for matching target. - * Makefile.in (do_clean, clean): Fix infant mortality typo. - (docdir): Set to ./doc, not ${srcdir}/doc, which has no makefile. - (z8k and we32k files): `*.o: *.c': avoid Sun Make bug. - -Wed Sep 2 00:26:32 1992 Per Bothner (bothner@rtl.cygnus.com) - - * Makefile.in: Added mostlyclean/clean/distclean rules. - -Tue Sep 1 13:38:40 1992 Per Bothner (bothner@cygnus.com) - - * targets.c (target_vector): Take out oasys (unless that is - the default): Because there is no magic number in archives, - there can be annoying target mis-matches. - -Mon Aug 31 10:11:37 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * sparc-opc.c: Rigorously updated to match architecture manual. - -Mon Aug 31 08:07:58 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * aoutx.h (aout<n>swap_ext_reloc_out), bout.c - (b_out_squirt_out_relocs): fix bug 1506 where abs symbols attached - to the built-in abs_section were not written out correctly. - -Fri Aug 28 16:29:15 1992 Ian Lance Taylor (ian@cygnus.com) - - * archive.c (bfd_slurp_bsd_armap): if the symdef_count is too - large, assume we're using a swapped byte order and fail with - wrong_format rather than dumping core. - -Fri Aug 28 15:38:03 1992 Ken Raeburn (raeburn@cygnus.com) - - * Renamed opc-sparc.c to sparc-opc.c for systems with short - filename constraints. - * Makefile.in: Updated to reflect change. - -Thu Aug 27 13:05:28 1992 Brendan Kehoe (brendan@cygnus.com) - - Add preliminary support for the we32k: - - * Makefile.in, archures.c, coffocode.h, configure.in, targets.c: - Minor edits. - * coff-we32k.c, cpu-we32k.c, config/we32k.mt, hosts/we32k.h: New files. - -Wed Aug 26 14:20:16 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bout.c: added support for relaxable alignment relocs. - - * seclet.c (rel, seclet_dump_seclet, seclet_dump): get the app to - pass down pointer to play area rather than use alloca - - * cpu-z8k.c (compatible): made static to reduce name space - polution. - -Tue Aug 25 08:39:10 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - Add basic support for the z8k: - - * Makefile.in, archures.c, coffcode.h, configure.in, reloc.c, - section.c, targets.c, - - * syms.c: move mis-inserted patch. - -Fri Aug 14 15:39:29 PDT 1992 Howard Chu (hyc@hanauma.jpl.nasa.gov) - - Documentation fixes: - * ctors.c, format.c, section.c, reloc.c: append " -" to item tags. - * reloc.c, section.c, syms.c, targets.c: add DOCDD before @node - comments. - * reloc.c: break out addend item from surrounding text. - - * doc.str (DOCDD): Defined. Adds text to output. - (bodytext): Put bulletize before kill_bogus_lines. - * chew.c (bulletize): End itemization after a blank line, to - prevent following text from being swallowed up in an item. - -Mon Aug 24 20:50:22 1992 Stu Grossman (grossman at cygnus.com) - - * configure.in: Add sparclite as a target. - -Mon Aug 24 12:06:31 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * ieee.c (ieee_get_symtab): always null terminate the symbol list, - lint. - - * coffcode.h (coff_add_missing_symbols): if symbols don't come - from a coff file (csym is null), dont deref them - - * ieee.c (parse_expression): get the answer right when adding an - abs+(sec+off), (ieee_generic_stat_arch_elt): call ieee_object_p - on elts so that filename is filled in. - -Thu Aug 20 19:05:48 1992 Ken Raeburn (raeburn@cygnus.com) - - * bout.c (howto_align_table): New set of relocs, with enough - data for "objdump -r" to work. - (b_out_reloc_type_lookup): Recognize alignment relocs. - -Tue Aug 18 12:57:45 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: added FLAGS_TO_PASS, and used it for all recursive - invocations of make. Also, always create installation - directories. - - * config/apollov68.mh: removed -g from CC definition. - -Mon Aug 17 13:40:08 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/decstation.mh (HDEFINES): Specify "-G 4" to avoid - overflowing gp-offset range. - -Mon Aug 17 11:44:28 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * srec.c (srec_set_section_contents): don't write out sections - without the LOAD and ALLOC attributes - -Mon Aug 17 11:55:07 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * archures.c, cpu-m68k.c, cpu-sparc.c: Undo 16 June changes. - * libaout.h (struct aout_backend_data): New callback "set_sizes". - * aout-target.h (callback): Don't set page/seg sizes. - (mkobject): Ditto. - (set_sizes): New routine. - (backend_data): Point to it. - * aoutf1.h (sunos4_set_sizes): Heed architecture when setting sizes. - (sunos4_aout_backend): Point to it. - * aoutx.h (set_arch_mach): Call set_sizes callback. - -Fri Aug 14 19:22:18 1992 Per Bothner (bothner@cygnus.com) - - * aout-target.h: Make _bfd_slurp_extended_name_table be - the default. Given that we *write* the suckers (for long - archive member names), we really ought to be able to read them! - * trad-core.c: Don't include <machine/reg.h>. It doesn't - seem to be needed, and many machines don't have it. - -Thu Aug 13 09:53:39 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-m68k.c (vector): read and write archives in coff format. - -Tue Aug 11 12:19:42 1992 Ken Raeburn (raeburn@cygnus.com) - - * opc-sparc.c: New file. - -Sat Aug 8 23:15:35 1992 Fred Fish (fnf@cygnus.com) - - * bout.c (bfd_reloc_status_type, callj_callback): Cast void* - pointers to bfd_byte* before performing arithmetic on them. Such - use with bare void* pointers is a gcc extension. - * cache.c (bfd_cache_delete): Forward decl with prototype form. - * archive (normalize): Add to CONST to match actual usages with - CONST. - -Mon Aug 3 00:35:29 1992 Fred Fish (fnf@cygnus.com) - - * configure.in: Recognize i486 host cpu, and use i386-elf - for i486-ncr-sysv4. - -Sat Aug 1 13:49:59 1992 Fred Fish (fnf@cygnus.com) - - * config/stratus.mt (CC): Remove definition. - * elf.c (bfd_section_from_shdr): Test for the possibility that - section_from_elf_index returns NULL and don't dereference it. - -Mon Jul 20 02:46:09 1992 D. V. Henkel-Wallace (gumby@cygnus.com) - - * add hppa_data to bfd tdata (indirectly via sef). - - * config/hppahpux.mh: hpux is -DUSG (patch by sef) - -Sat Jul 18 15:50:11 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: error messages to stderr, not stdout - -Fri Jul 17 18:32:46 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * bfd.c, cache.c, coff-a29k.c, coff-i386.c, coff-i960.c, - coff-m68k.c, coff-m88k.c, demo64.c, libaout.h, libbfd.c, - oasys.c, opncls.c, sunos.c, targets.c: removed rcsid's. - -Fri Jul 17 17:06:56 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: recognize hppa* instead of hppa - -Thu Jul 16 16:39:25 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-m68k.c: added R_RELLONG_NEG reloc type, and changed - RTYPE2HOWTO to cope with same. - * reloc.c (bfd_perform_relocation): added support for size of -2 - (subtract a word reloc type). Updated doc. - -Thu Jul 16 16:28:09 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: merged changes from progressive, removed rcsid. - - * archures.c, archive.c, Makefile.dos: removed rcsid. - -Thu Jul 16 08:08:25 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd-in.h : add BFD_IS_RELAXABLE flag - * bout.c (bout_swap_exec_header_[in_out]): new field in exec - header e_relaxable, major hackery in callbacks - * libaout.h : add space for a_relaxable. - * seclet.c (rel): don't relax empty sections - - -Wed Jul 15 07:57:46 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * section.c (STD_SECTION): add some casts to the initializers for - dumb compilers - -Tue Jul 14 14:06:28 1992 Stu Grossman (grossman at cygnus.com) - - * rs6000-core.c (rs6000coff_core_p): Greatly simplify expression, - and add appropriate casts to keep (picayune) aix-cc happy. - -Mon Jul 13 05:06:51 1992 John Gilmore (gnu at cygnus.com) - - * elf.c (elf_slurp_symbol_table): Now 2nd arg is where to write - symbol pointers. Punt expensive & useless bfd_realloc. Use - malloc for raw symbols, and free it before returning. - (bfd_section_from_shdr): Do not slurp symbol table until politely - asked. Do not even slurp string tables. - (elf_get_symtab_upper_bound): Count 'em without reading them. - (elf_get_symtab): This is how to politely ask. Schlurp! - This should probably just *become* elf_slurp_symbol_table, FIXME. - -Wed Jul 8 16:24:33 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * archive.c (bsd_write_armap): write the timestamp of the - archive header to be just a little bit later than the timestamp of - the file, otherwise the linker will complain that the index is - out of date. - -Tue Jul 7 00:23:23 1992 Fred Fish (fnf@cygnus.com) - - * configure.in: Add m68k-ericsson-*. - -Sat Jul 4 03:29:41 1992 John Gilmore (gnu at cygnus.com) - - * syms.h: Define BSF_FILE, update BSF_SECTION_SYM desc. - * elf.c: Remove unconditional debug printf's. - (elf_write_object_contents, elf_slurp_symbol_table): Handle - BSF_SECTION_SYM <=> STT_SECTION, BSF_FILE <=> STT_FILE. - (elf_slurp_symbol_table): Hand out symbols in forward, not - reverse order. Simplify duplicate code. - -Fri Jul 3 20:23:34 1992 Fred Fish (fnf@cygnus.com) - - * elf.c: Remove "(void)" casts from function calls where the - return value is ignored, in accordance with GNU coding standards. - -Tue Jun 30 16:49:12 1992 Fred Fish (fnf@cygnus.com) - - * hppa.c: Apply John's standard fix to avoid "empty translation - unit" warnings from some ANSI-C compilers. - -Thu Jun 25 04:39:25 1992 John Gilmore (gnu at cygnus.com) - - * hosts/solaris2.h: Configure same as sysv4. - -Tue Jun 23 21:54:44 1992 Fred Fish (fnf@cygnus.com) - - * libbfd.h, libbfd-in.h (bfd_seek): Make prototype match definition. - * reloc.c (bfd_default_reloc_type_lookup): Make cast on return - type match actual return type. - * elf_print_symbol (section_name): Make CONST. - -Mon Jun 22 17:35:24 1992 Per Bothner (bothner@cygnus.com) - - * i386linux.c, hosts/i386linux.h, config/i386-linux.mt: - New files, for Linux (a free Unix clone for 386 machines). - * Makefile.in, configure.in, targets.c: Update accordingly. - -Fri Jun 19 20:23:21 1992 Steve Chamberlain (sac@thepub.cygnus.com) - Lints for bfd_reloc_code_type->bfd_reloc_code_real_type, and - correct calling of howto special functions and fixes from Raeburn - for gas<>bfdness - * archures.c: nuke bfd_reloc_code_type - * bout.c, cpu-h8300.c, coff-i960.c, coff-m88k.c: special function lint - * coffcode.h (styp_to_sec_flags): STYP_INFO is marked as - SEC_NEVER_LOAD, various other bfdgas newness - * reloc.c->libbfd.h: change protype of bfd_default_reloc_type_lookup - * targets.c: change jump table vector to above - - -Fri Jun 19 19:00:45 1992 John Gilmore (gnu at cygnus.com) - - * elf.c (bfd_elf_find_section): Mark as INTERNAL_FUNCTION so - its prototype will be included in libbfd.h. Change result type - to struct * (rather than equivalent typedef) so it can be used in - the prototype, where they typedef won't be known. - * libbfd.h: Updated version. - -Fri Jun 19 15:21:56 1992 Stu Grossman (grossman at cygnus.com) - - * Makefile.in, archures.c, configure.in, cpu-hppa.c, hppa.c, libhppa.h, - targets.c: HPPA merge. - -Fri Jun 19 12:21:38 1992 John Gilmore (gnu at cygnus.com) - - * configure.in: Separate Solaris2 from SYSV4 on SPARC. - * config/solaris2.mh: Kludge around Sun compiler bug. - -Wed Jun 17 14:02:46 1992 Stu Grossman (grossman at cygnus.com) - - * libaout.h (aout_backend_data): Change defs of two bitfields to - be unsigned chars instead to get around rs6000 compiler problem. - -Wed Jun 17 13:55:31 1992 Fred Fish (fnf@cygnus.com) - - * elf.c (bfd_section_from_shdr, elf_slurp_symbol_table): - Correct misconception that there can be only one symbol table. - Only call elf_slurp_symbol_table on the full symbol table, not - the dynamic one which is only a subset of the full one. - -Wed Jun 17 15:54:57 1992 Ken Raeburn (Raeburn@Cygnus.COM) - - * coffcode.h (coff_compute_section_file_positions): For I960, - don't align sections in file. - -Tue Jun 16 06:28:21 1992 Ken Raeburn (Raeburn@Cygnus.COM) - - * targets.c (struct bfd_target): Added field for target-specific - (but not file-specific) data, for distinguishing minor - characteristics between (e.g.) a.out formats. - - * section.c (struct sec): New field user_set_vma indicates vma - field should be heeded, not assumed to be unset. - (STD_SECTION): Initialize that field of standard sections to zero. - * bfd-in.h (bfd_set_section_vma): Set user_set_vma to true. - - * coffcode.h (coff_write_relocs): Write out swapped reloc, not - pre-swapped version. - - * archures.c (struct bfd_arch_info): Fixed order of comment and - field decl. New fields indicate size of page and segment for - architecture. - * cpu-m68k.c (N): Fill in values. - * cpu-sparc.c (arch_info_struct): Ditto. - - * libaout.h (struct aout_backend_data): Various bits of data (not - all used currently) with characteristics of a.out implementation. - Important field for now is text_includes_header, indicating that - the text section starts immediately after the file header, which - gets mapped in with it. - (struct aout_data): New fields indicate whether vma has been - adjusted yet (not yet used), and what magic number will be used in - the output file (should go away in favor of vma_adjusted). - (WRITE_HEADERS): Code for dealing with section sizes and related - header fields replaced with call to adjust_sizes_and_vmas. - * aoutx.h (some_aout_object_p): Fill in magic number field. - Set WP_TEXT flag for ZMAGIC as well as NMAGIC files. - (set_arch_mach): Set page size and segment size once CPU - type is known. - (adjust_sizes_and_vmas): New function; has much code moved - from set_section_contents and WRITE_HEADERS. Sets or adjusts vma - and size parameters, as well as many header fields, after deciding - on magic number for output file. Checks to ensure that this - adjustment has only been done once. - (set_section_contents): Call adjust_sizes_and_vmas instead of - doing much of the work here. - - * aout-target.h (MY_make_debug_symbol, MY_backend_data): Provide - default (null) values of these fields. - * aoutf1.h (sunos4_write_object_contents): Don't override a_text - value in exec header. - (sunos4_aout_backend, MY_backend_data): Define backend data - indicating file header is included in text section. - - * aoutf1.h (MY_reloc_howto_type_lookup): Fix typo. - - * hosts/sparc.h (abort, exit): Hide these names if compiling with - gcc version 2, to avoid warnings. - -Mon Jun 15 12:26:56 1992 Fred Fish (fnf@cygnus.com) - - * config/ncr3000.mh (INSTALL, RANLIB): Don't use /usr/ucb/install, - it's broken on ncr 3000's. Use simple "true" for RANLIB. - -Sat Jun 13 09:16:43 1992 Michael Tiemann (tiemann@rtl.cygnus.com) - - * configure.in (m680[01234]0-wrs-*): Fix typo in match pattern. - -Fri Jun 12 19:48:34 1992 John Gilmore (gnu at cygnus.com) - - * section.c (STD_SECTION): Remove extra semicolon in declarations. - * configure.in: Rewrite target parsing to use simple format. - Handle sparc-sun-solaris2 configuration. - * aout64.h: Avoid ANSI C brain death warning. - * elf.c: Avoid trigraph (???) or /* in comments. - -Fri Jun 12 14:51:14 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * config/sysv4.mh: new file, RANLIB=echo - - * configure.in: handle Solaris2 as -sysv4 or -solaris2 - -Thu Jun 11 00:52:03 1992 John Gilmore (gnu at cygnus.com) - - * elf.c (elf_obj_tdata): Merge elf_obj_tdata_struct and - elf_core_tdata_struct into a single common struct. Core files - wouldn't have worked at all without this. - (bfd_elf_find_section): New function for GDB's undercover use - to find string sections that BFD hides from it. - (elf_get_str_section): Avoid multiple alloc&reads for same data; - lint. - (elf_object_p, elf_core_file_p): Allocate internal file header - storage dynamically. - * bfd.c (union {...} tdata): Remove elf_core_tdata_struct. - * demo64.c: Prevent "empty translation unit" warnings from idiots. - -Tue Jun 9 17:15:26 1992 Fred Fish (fnf at cygnus.com) - - * config/{i386v4.mh, ncr3000.mh}: Update RANLIB, add INSTALL. - -Sat Jun 6 17:02:51 1992 John Gilmore (gnu at cygnus.com) - - * configure.in: Handle Solaris2 as *-sun-sysv4 or as *-sun-sunos5. - -Sun May 31 05:45:00 1992 david d `zoo' zuhn (zoo@cygnus.com) - - * configure.in: handle m680[01234]0 as aliases for m68k - -Tue May 26 16:50:59 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-a29k.c: do byte relocs correctly - * coffcode.h (styp_to_sec_flags): never load INFO sections - * seclet.c (rel): don't relocate INFO sections - -Wed May 20 08:18:18 1992 Ken Raeburn (Raeburn@Cygnus.COM) - - * section.c (bfd_*_symbol, bfd_*_section): Initialize statically. - Make the symbols unmodifiable. - (bfd_section_init): Deleted. - * init.c (bfd_init): Don't call bfd_section_init. - - * section.c (bfd_set_section_contents): Ensure that range to be - written is within section boundaries. - (bfd_get_section_contents): Likewise. Don't bother dispatching if - size is zero. - - * libbfd.c (bfd_xmalloc): Text of error message should be const. - - * coff-i960.c (howto_table): Deleted. - (howto_rellong, howto_iprmed, howto_optcall): New vars; - interesting entries from old howto_table. - (RTYPE2HOWTO): Adjusted to use switch. - (coff_i960_reloc_type_lookup): New function. - - * coffcode.h (coff_new_section_hook): Allocate storage for aux - records for section symbol. - (make_abs_section): Unused; deleted. - (renumber_symbols): Re-order symbols so undefined symbols come - last, as COFF format desires. - (coff_write_symbol): Put C_FILE symbols in debug section always. - (coff_section_symbol): New function; creates a symbol with the - same name as a section, and sets up aux records for it. - (coff_add_missing_symbols): New function; adds section symbols to - symbol table if they aren't there already. Should someday also - add a dummy C_FILE symbol if none is present. - (coff_write_object_contents): Add missing symbols before preparing - symbol table to be written. - (coff_slurp_reloc_table): Verify that symbol indices read in are - in a reasonable range. - * libcoff-in.h (struct coff_tdata): New field conv_table_size. - (obj_conv_table_size): Accessor macro. - - * bout.c (b_out_reloc_type_lookup): New function. Handles three - reloc types on i960. - - * bfd-in.h (bfd_get_section_name): New macro. Like - bfd_section_name, but returns rvalue, not lvalue. - (bfd_get_section_vma, bfd_get_section_alignment): Similar. - (bfd_get_section_flags): Now returns rvalue. - - * reloc.c (enum bfd_reloc_code_real): Add several new values, some - general, some specific to sparc or i960. - - * aoutx.h (set_section_contents): Set VMA for each section based - on previous section. If text section VMA doesn't appear to have - been set, make a best guess from the type of file. - - * aout-target.h (MY_reloc_howto_type_lookup): Define as zero if - not defined. - (MY(vec)): Initialize reloc_type_lookup field. - - * aoutx.h (howto_table_*): Export as aout_#_*_howto_table. - (bfd_error_trap, bfd_error_vector): Extern, not common. - - * aoutf1.h (sunos4_reloc_type_lookup): New function. Handles a - few types of relocs for sparc; will need enhancement. - - * bout.c (callj_callback): Use DEFUN macro in definition. - * coff-i960.c (optcall_callback): Likewise. - - * targets.c (bfd_target): Added fields reloc_type_lookup and - _bfd_make_debug_symbol. Also minor comment changes. - * syms.c (bfd_make_debug_symbol): New dispatching macro. - * reloc.c (bfd_reloc_type_lookup): Take a BFD ptr as arg rather - than arch info, and dispatch with BFD_SEND. Callers changed. - * archures.c (struct bfd_arch_info): Deleted field - reloc_type_lookup. - * cpu-*.c: Don't initialize that field. - - * bfd-in.h (enum bfd_error): Add new value "bad_value". - * bfd.c (bfd_errmsgs): Now const; added entry for bad_value. - (bfd_errmsg): Now returns ptr to const. - * bfd-in.h (bfd_errmsg): Fix prototype. - - * cache.c (BFD_CACHE_MAX_OPEN): Fix typo in doc. - * reloc.c (bfd_generic_relax_section): Ditto. - - * section.c (Section Output doc): Improve description of use of - output_section and output_offset. - -Tue May 19 23:42:10 1992 D. V. Henkel-Wallace (gumby@cygnus.com) - - * sco-core.c: new file from net. - * aoutx.h (translate_to_native_sym_flags): bugfix from net: - Now we have the hairy linker, it's possible to move symbols from - one section into another. Actually make that work! - -Sat May 16 17:57:59 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * hosts/sun3.h: fix declaration of free. - -Tue May 12 14:08:59 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-a29k.c (perform_reloc): fix bug in jmp/call evaluation - * coff-h8300.c (reloc_processing): all relocs are relative to - section start. - * opncls.c: don't use fdopen on DOS systems - - short patches from Glenn Kasten (glenn@ready.com) - * target.c: enabled oasys support - * oasys.c: Insert . when UNDERSCORE_HACK is enabled, - fix problem where a relocation which crossed a modification byte - boundary did not work. Fix problem where a relocation near the end - of a data record did not work. - - -Tue May 5 18:11:25 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * archive.c (bfd_slurp_coff_armap): old versions of BFD wrote - archvie header string counts the endian way, this heuristic sees - how big an archive string to read by trying it one way and if the - string table is unreasonably big, trying it the other. *FIXME*. - * opncls.c (bfd_fdopenr): can't do fdopens on VMS - -Tue May 5 14:18:24 1992 Per Bothner (bothner@rtl.cygnus.com) - - * bfd-in.h: Increase version number to 1.97, for consistency - with ../binutils. - * Makefile.in: docdir is ./doc, not ${srcdir}/doc. - -Mon May 4 11:49:15 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd-in.h: bump version to 1.96 - Major change; changed calling convention for - bfd_get_relocated_section_contents so that caller allocates - memory for section data. - * coffcode.h (bfd_coff_get_relocated_section_contents), reloc.c, - seclet.c, targets.c, bfd.c: reflect new convention. - * coffcode.h (styp_to_sec_flags): if styp_flags is not a special - case, then use reasonable default values for SEC_* flags. - -Fri May 1 12:58:34 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coffcode.h (coff_write_object_contents): use RELSZ to work out - size of output reloc struct. - * targets.c, Makefile.in: comment out tekhex for the moment. - * ieee.c: if some places where null pointers were used instead of &bfd_abs_section. - * configure.in: tandem target is st2000 - * coff-m68k.c: rename static howto_table to global - m68kcoff_howto_table. - * bout.c: remove unnecessary abort - * coff-a29k.c: various changes to the way relocations work to cope - with the "new order" and latent bugs. - * coffcode.h: lint - -Wed Apr 29 12:37:07 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * aoutx.h (aout_swap_ext_reloc_out, aout_swap_std_reloc_out) - bout.c (b_out_squirt_out_relocs): treat abs sumbols the right way. - * reloc.c (bfd_perform-relocation): don't relocate refs to - absolute symbols if doing a partial link. - -Fri Apr 24 07:35:26 1992 Stu Grossman (grossman at cygnus.com) - - * configure.in: Add a29k-amd-udi. - -Thu Apr 23 18:37:55 1992 Fred Fish (fnf@cygnus.com) - - * aoutx.h (aout_<bits>_swap_exec_header_in): Zero out the - internal_exec structure before initializing the fields that - are used, so that the unused fields are in a known state. - -Wed Apr 22 09:36:08 1992 Fred Fish (fnf@cygnus.com) - - * tekhex.c (struct data_struct): Convert from typedef that - typedefs nothing to a normal structure declaration. - * tekhex.c (pass_over): Prototype args for function that - second arg points to. - -Mon Apr 20 22:22:51 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: remove old style staging. Do not print recursion - lines. - - * Makefile.in: rework CFLAGS so that CFLAGS can be passed from the - Makefile command line. Remove MINUS_G. Default CFLAGS to -g. - Pass CFLAGS. - -Fri Apr 17 09:15:31 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * bfd.c, Makefile.in: added tekhex - * aoutx.h (set_section_contents): pages should be padded to the - size of a page, not the size of a segment. - * configure.in: added go32 host and i386-aout target. - * i386aout.c, libaout.h: now works for go32 target - * ieee.c: fix bit rot. - * seclet.c: support for padding seclet type. - -Wed Apr 15 18:11:58 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: added .NOEXPORT: - -Tue Apr 14 14:34:42 1992 Fred Fish (fnf@cygnus.com) - - * elf.c (bfd_add_strtab, bfd_add_2_to_strtab): CONST spreads - like ooze. - * elf.c (elf_compute_section_file_positions, - elf_write_object_contents): Return boolean, not NULL (which - can be void *). - * elf.c (bfd_section_from_shdr): Ifdef-out debugging code. - Also ifdef-out code that aborts on unhandled section types. - -Fri Apr 10 22:29:18 1992 Fred Fish (fnf@cygnus.com) - - * configure.in: Recognize ncr3000 config - * Makefile.in (MINUS_G): Pass on to recursive makes. - * hosts/ncr3000.h, config/ncr3000.mh: Add host config files. - -Thu Apr 2 17:42:45 1992 John Gilmore (gnu at cygnus.com) - - * Makefile.in: Now that we have sym.h and symconst.h, compile - coff-msym.c on all systems. - * config/{decstation.mh, irix3.mh, irix4.mh}: Remove coff-msym.o dep. - * coff-msym.c: Update include files and comments; add weakext bit. - -Wed Apr 1 23:16:38 1992 John Gilmore (gnu at cygnus.com) - - * archive.c, bfd.c, bout.c, coffcode.h, init.c, reloc.c, - section.c, srec.c, syms.c, coff-h8300.c: Lint. - -Sun Mar 29 09:37:59 1992 John Gilmore (gnu at cygnus.com) - - * bout.c, coff-a29k.c, coff-i960.c: Lint. - * configure.in: Add new host and target configs. - * elf.c (bfd_prstatus, bfd_fpregset): Avoid typename of register - structs, which vary; just use member name. - (elf_object_p, elf_core_file_p): Lint, fix comments. - * config/sparc-elf.mt, hosts/sysv4.h: New config files. - -Sat Mar 28 13:07:02 1992 Fred Fish (fnf@cygnus.com) - - * elf.c (elf_object_p, elf_core_file_p): Fix to use only a single - local, disposable, copy of the external form of section header - table and program header table entries. - -Thu Mar 26 16:59:58 1992 John Gilmore (gnu at cygnus.com) - - * Makefile.in: Set MINIMIZE back to 0 for a real release. - -Tue Mar 24 15:57:03 1992 K. Richard Pixley (rich@cygnus.com) - - * configure.in: config/irix4.m[ht], hosts/irix4.h: add support for - irix4. - -Mon Mar 23 22:37:34 1992 Stu Grossman (grossman at cygnus.com) - - * coff-msym.c (ecoff_swap_rfd_in): remove & for array ref. - -Tue Mar 17 14:12:25 1992 Per Bothner (bothner@rtl.cygnus.com) - - * bout.c (b_out_slurp_reloc_table): Use BFD_ASSERT macro, - not internal bfd_assert function (twice). - -Tue Mar 17 10:45:12 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * aout-target.h: change ar_max_namelen to 15 (the right value) - * coff-a29k, coffcode.h: more hangovers from the bfd_abs_section - change - -Mon Mar 16 14:57:22 1992 Steve Chamberlain (sac@rtl.cygnus.com) - - * archive.c (bfd_generic_archive_p): check for bout archives too. - * bout.c: make it work again. - -Sat Mar 14 17:30:40 1992 Fred Fish (fnf@cygnus.com) - - * elf.c (elf_corefile_note): Call bfd_xmalloc() instead of bare - malloc(). - * reloc.c (bfd_generic_get_relocated_section_contents): Call - bfd_xmalloc() instead of bare malloc(). - -Fri Mar 13 15:44:37 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: pass down MAKEINFO on info. - -Fri Mar 13 07:41:13 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/mt-<foo> now <foo>.mt, config/mh-<foo> now <foo>.mh. - host/h-<foo> now just <foo>. - * configure.in: reflect changes - -Thu Mar 12 11:15:02 1992 Per Bothner (bothner@cygnus.com) - - * libbfd-in.h (set_tdata): Make change of Feb 27 in the - actual source file, not just the generated libbfd.h. - -Sat Mar 7 10:33:41 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * coff-i960.c (icoff_little_vec): add COFF_SWAP_TABLE so we can run - gdb on little-endian 960 code. - * archive.c (compute_and_write_armap): indirect symbols should go - into the archive header too. - -Fri Mar 6 21:55:16 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: added check target. - -Thu Mar 5 23:51:42 1992 John Gilmore (gnu at cygnus.com) - - * coff-msym.c: Move this file from gdb/ecoff.c. It - handles byte-swapping for ECOFF (MIPS symbol) files. - * config/mh-decstation, config/mh-irix3: Add coff-msym.o - to the files built on MIPS-based hosts. - * Makefile.in: Add rule for coff-msym. - -Thu Mar 5 21:36:05 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: added clean-info target. MINIMIZE=1. - -Sun Mar 1 22:32:58 1992 Per Bothner (bothner@cygnus.com) - - * coff-rs6000.c: Move core file functions into separate - new file rs6000-core.c. This is needed because reading - core files depends on native include files that conflict - with ../include/coff/rs6000.h. - * config/mh-rs6000: Add rs6000-core.o to HDEPFILES. - -Thu Feb 27 22:19:55 1992 Per Bothner (bothner@cygnus.com) - - * aoutx.h (NAME(aout,print_symbol)): Don't print - symbol addresss for undefined symbols. - * coff-rs6000.c: Various updates (due to target- - independent changes). - * libbfd.h: Ditto (tdata field is now a union). - * hosts/h-sparc.h: Removed prototype for bogus function - 'emset' (presumably should have been 'memset' - which is there). - -Thu Feb 27 11:46:33 1992 John Gilmore (gnu at cygnus.com) - - * configure.in (mips-big-* target): Same is Iris. - -Thu Feb 27 09:24:56 1992 Steve Chamberlain (sac at thepub.cygnus.com) - - * aoutx.h (translate_from_native_sym_flags): when creating an - alias symbol, fill in the section as undefined, rather than - leaving it blank. If an output section can't be found for a - symbol, then don't core dump. - -Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -Wed Feb 26 19:40:59 1992 Steve Chamberlain (sac at thepub.cygnus.com) - - * bfd.c: lint - * coff-h8300.c: fix stupid reloc subtraction bug - * coffcode.h (coff_swap_aux_out): only swap a tvndx by 2 bytes, - since that's how wide it is. (coff_slurp_symbol_table): always zero out - the symbol.flags and done_lineno fields. - -Tue Feb 25 14:29:24 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * coffcode.h (coff_write_symbol): write out the correct number of - auxents. - * cpu-h8300.c: fix disassembly bug - -Fri Feb 21 21:39:56 1992 John Gilmore (gnu at cygnus.com) - - * bfd-in.h (bfd_errmsg), coffcode.h (coff_swap_aux_in, - section_from_bfd_index), cpu-h8300.c (howto*_callback), - reloc.c, section.c (bfd_map_over_sections), targets.c - (bfd_target_list): Protolint. - * libbfd.h: Update to match a libbfd-in.h from a month ago. - -Fri Feb 21 10:57:54 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * coffcode.h (coff_swap_aux_in): lint, (coff_print_symbol): prints - out tagndx too. - * aoutx.h (swap_std_reloc_out, swap_ext_reloc_out): use the output - section of a symbol rather than the section of a reffed symbol to - determine the r_index of an emmitted reloc. - -Thu Feb 20 18:10:34 1992 Per Bothner (bothner at cygnus.com) - - * PORTING: New (preliminary) porting guide. - -Wed Feb 19 21:39:37 1992 John Gilmore (gnu at cygnus.com) - - * bout.c (callj_callback), coff-a29k.c (a29k_reloc), coff-m88k.c - (howto_hvrt16): lint. - -Mon Feb 17 12:02:17 1992 Per Bothner (bothner at cygnus.com) - - * hp300bsd.c (new), config/mt-hp300bsd: Make hp300bsd - a full configuration (with possible cross-development), - instead of using host-aout.c. - -Sun Feb 16 13:01:49 1992 Per Bothner (bothner at cygnus.com) - - * aout-target.h (MY(write_object_contents): - Set obj_reloc_entry_size (abfd). - * gen-aout.c: Change to emit a .c files, not a .h file. - -Thu Feb 13 20:11:47 1992 Fred Fish (fnf at cygnus.com) - - * elf.c (elf_slurp_symbol_table): Remove obsolete use of - BSF_ABSOLUTE and replace with bfd_abs_section reference. - -Thu Feb 13 17:22:44 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * coffcode.h (get_normalized_symtab): fixed bug where symbols - with more than one auxent can cause nasty core dumps. - - * coffcode.h, libcoff.c: added new fielded to coff_symbol_struct - "done_lineno" so that a symbol which appears twice in the symbol - table only gets it's linenumbers relocated once. Modifed - (coff_write_native_symbol) and (coff_make_empty_symbol) to make - use of it. - -Tue Feb 4 15:39:55 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * aoutx.h: (translate_from_native_sym_flags): fix constructor - stuff to use the New Order. - -Fri Jan 31 01:34:45 1992 Stu Grossman (grossman at cygnus.com) - - * ieee.c: Change type of envi[] to unsigned char. - - * configure.in: fix vax ultrix configuration. - - * elf.c (bfd_section_from_shdr): Deal with null return from - bfd_make_section(). (elf_object_p): Select endianess properly. - -Fri Jan 31 01:19:55 1992 John Gilmore (gnu at cygnus.com) - - * hosts/h-tahoe.h, h-vaxbsd.h: Fix stack in core files. - -Thu Jan 30 23:51:07 1992 John Gilmore (gnu at cygnus.com) - - * Makefile.in: host-aout.c doesn't depend on aout-params.h. - * aout-target.h: Use TARGET_BIG_ENDIAN_P to set up vector. - * host-aout.c: Don't use aout-params.h; configure these systems - in their xm files, not in a randomly generated file. - * hosts/h-hp300bsd.h, h-tahoe.h, h-vaxbsd.h, h-vaxult.h: - Specify byte order. - * hosts/h-vaxbsd.h: Define the form of exec and core files. - -Thu Jan 30 13:02:41 1992 Per Bothner (bothner at cygnus.com) - - * config/mt-tahoe, config/mt-vax: Change DEFAULT_VECTOR to - host_aout_vec here as well. - -Thu Jan 30 11:41:45 1992 Stu Grossman (grossman at cygnus.com) - - * host-aout.c: Change TARGETNAME to "a.out" to be compatible with - gdb. config/mt-hp300bsd: Change DEFAULT_VECTOR to host_aout_vec - to prevent undefined symbol. - -Thu Jan 30 07:26:53 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - Various lints found on PersSony - * aoutx.h: cast an enum - * coff-a29k.c: many ints in reloc structure turned to enum - * coffcode.h: more enums - * cpu-h8300.c: more enums - * opncls.c: more enums - -Thu Jan 30 01:19:56 1992 John Gilmore (gnu at cygnus.com) - - * configure.in: Make Tahoe configuration work again. - * bfd-in.h: Remove trailing comma from enum declaration. - * ieee.c: Can't put byte values >0x7F into a signed char. - -Tue Jan 28 21:10:51 1992 Fred Fish (fnf at cygnus.com) - - * Makefile.in: Add dependencies for various coff-*.o files. - - * elf.c: Remove extraneous paren from core_prpsinfo and - core_prpstatus macros, rename core_prpstatus to core_prstatus. - Replace references to old section "size" member with new - "_raw_size" member. Implement elf_make_empty_symbol, which - is now used. - -Tue Jan 28 14:51:40 1992 Stu Grossman (grossman at cygnus.com) - - * trad-core.c, bfd.c, ../include/bfd.h: Various fixes for PMAX - core reading. - -Tue Jan 28 10:46:32 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * coffcode.h (bfd_coff_relax_section): now static. - (bfd_coff_get_relocated_section_contents): various type lints. - -Mon Jan 27 19:44:08 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - New entry point in the transfer vector - bfd_relax_section. - - * aout-target.h: add to vector, call generic_relax - * bfd-in.h: add to vector - * bfd.c: add #define for vector - * bout.c: add to vector, call generic_relax - * coffcode.h: add to vector, also now has coff specific relax code - for the relaxable H8/300 relocs. Also clean up abs section cruft. - * elf.c: call generic_relax - * ieee.c: call new vector, clean up some bugs due to the creation - of bfd_abs_section - * libbfd.h: add bfd_generic_relax_section EXFUN - * oasys.c: call generic_relax - * reloc.c: implement generic_relax - * seclet.c: moved much of this into coffcode.h - * srec.c: call generic_relax - * targets.c: define new transfer vector - -Fri Jan 24 14:40:17 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * everything: now modified to use smaller reloc type. Self hosts - on sun3 & sun4. - -Sat Jan 18 17:00:16 1992 Fred Fish (fnf at cygnus.com) - - * config/mh-stratus, config/mt-i860-elf, hosts/h-stratus: - New files for stratus. - - * configure.in: Add configuration fragments for stratus. - -Wed Jan 15 10:02:43 1992 Fred Fish (fnf at cygnus.com) - - * aoutx.h (NAME(aout,find_nearest_line)): Declare various filename - variables as CONST since they are set to point to a const char - string. Fixes compiler complaints. - -Fri Jan 10 17:44:53 1992 Fred Fish (fnf at cygnus.com) - - * hosts/h-amix.h hosts/h-i386v4.h: Change abort() to a function - returning void. - -Fri Jan 10 14:33:32 1992 Per Bothner (bothner at cygnus.com) - - * aoutx.h (NAME(aout,find_nearest_line)): Recognize N_SOL - symbols, so that we can emit the correct file name even - if it's an include file. - -Thu Jan 2 16:43:34 1992 John Gilmore (gnu at cygnus.com) - - * coff-i960.c: Add COFF_SWAP_TABLE to little_vec as well as big_vec. - (Reported by john@labtam.labtam.oz.au (John Carey)). - -Wed Jan 1 04:23:06 1992 Fred Fish (fnf at cygnus.com) - - * elf.c: Change all '#if HAVE_PROCFS' to '#ifdef HAVE_PROCFS'. - - * config/mh-amix, config/mh-i386v4: Remove HDEFINES that was - being used to -DHAVE_PROCFS. - - * hosts/h-amix, hosts/h-i386v4: Add '#define HAVE_PROCFS'. Move - '#include "fopen-same.h"' to end of file to match other h-* files. - -Fri Dec 20 12:06:17 1991 Fred Fish (fnf at cygnus.com) - - * configure.in: Change svr4 references to sysv4. Add case - "unknown" for target vendor and infer some targets based - on the specified operating system. - -Wed Dec 18 17:17:59 1991 Stu Grossman (grossman at cygnus.com) - - * bfd-in.h, libaout.h: ANSIfy enums. - -Wed Dec 18 16:12:25 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * archive.c (normalize): created version for VMS which removes the - VMS directory crap from the front and end of a filename, eg turn - [-.foo]bar.obj;123 into bar.obj - (bfd_construct_extended_name_table): now writes index into an - extended name table in decimal - the same base used to read an - extended name table. - -Wed Dec 18 14:40:39 1991 Per Bothner (bothner at cygnus.com) - - * aout-encap.c: Fix to use aout-target.h. - * aoutf1.h: Use standard MY_object_p and MY_callback - in aout-target.h. Remove target-specific versions. - * host-aout.c: Re-write to use aout-target.h. - * gen-aout.c: New files use with host-aout.c to generate - host-specific a.out-related parameters. - * Makefile.in: host-aout.o depends on aout-params.h, which is - generated by gen-aout. - * aout-target.h: Make a little more flexible. - * libaout.h, aout-target.h: Removed WORK_OUT_FILE_POSTIONS - macro. Instead, inline it in aout-target.h. - * newsos3.c: Define N_SHARED_LIB(x) as 0 to avoid - a gcc -Wall warning. - * archive.c: Add missing commas in DEFUN macro (2 places). - * elf.c, coffcode.h, aoutf1.h: Use ANSI functions instead of - Berkeley ones, now that libiberty has them: - bcopy->memcpy, bzero->memset, bcmp->memcmp. - * aoutx.h: Various touch-ups: Re-formatting, fix a cast, - remove unused variable. - -Tue Dec 17 19:48:59 1991 Fred Fish (fnf at cygnus.com) - - * elf.c (elf_core_file_matches_executable_p): Enclose corename - and execname inside HAVE_PROCFS ifdef since they are unused - when it is not defined. - -Mon Dec 16 12:00:10 1991 Fred Fish (fnf at cygnus.com) - - * elf.c: Flag all sections as either code or data. We can't - be sure what they are anyway, since ELF doesn't fit the - traditional model of text+data+bss very well. Add new local - function elf_read() to simplify code. Record entry point in - the bfd structure. - -Thu Dec 12 21:01:22 1991 John Gilmore (gnu at cygnus.com) - - * hosts/h-*.h: Configure fopen using ../include/fopen-*.h - rather than N copies of the same lines. - -Wed Dec 11 16:39:45 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * cpu-h8300.c: disassemble branch displacements correctly - * coff-h8300.c: put reloc offsets out in 32bits - - * makefile.dos, configdj.bat: New files from DJ - * cache.c: fopen with new macros is needed for DOS. - * ieee.c: environ renamed to envi to stop an include file - conflict. - * opncls.c, coff-rs6000.c: more fopens with macros. - -Tue Dec 10 04:07:24 1991 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: infodir belongs in datadir. - -Sat Dec 7 16:39:23 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * Makefile.in: fix where docdir lives - - * aoutx.h, archive.c, archures.c, bfd.c, cache.c, coff-m88k.c, - coffcode.h, core.c, ctor.c, elf.c, format.c, ieee.c, init.c, - libbfd.c, libbfd.h, libcoff.h, opncls.c, reloc.c, section.c, - srec.c, syms.c, targets.c : all new documentation and lint - removal. - - -Sat Dec 7 07:22:09 1991 John Gilmore (gnu at cygnus.com) - - * coffcode.h, srec.c: Lint. - -Fri Dec 6 22:58:48 1991 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: install using INSTALL_DATA, added standards.text - support. - - * configure.in: mark directory as target dependent. configure - nows works in objdir always so make file existence checks - against ${srcdir}. - -Thu Dec 5 22:46:19 1991 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: idestdir and ddestdir go away. Added copyrights - and shift gpl to v2. Added ChangeLog if it didn't exist. docdir - and mandir now keyed off datadir by default. - -Wed Dec 4 10:14:17 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * aoutf1.h (sunos_<size>_object_p, sunos4_callback): moved the - computation of arch and machine type so it's worked out before - some_aout_object_p is called. - * aoutx.h: (some_aout_object_p): don't set arch and mach to - unknown. - * archures.c: add extra field 'section_align_power' to hold - default section alignment in object files. - * cpu-a29k.c, cpu-h8300.c, cpu-i386.c, cpu-i960.c, cpu-m68k.c, - cpu-m88k.c, cpu-mips.c, cpu-rs6000.c, cpu-sparc.c, cpu-vax.c: - initialize the new field. - * bout.c (b_out_callback): replace the text size, since aout - fries them. - * aoutx.h: Documentation in the new style - -Wed Dec 4 02:00:30 1991 John Gilmore (gnu at cygnus.com) - - * bfd.c (bfd_get_mtime): Don't cache mtime any more; only - use the saved value if mtime_set is already set (intended - for archive files, though apparently not used yet). - -Tue Dec 3 22:54:50 1991 John Gilmore (gnu at cygnus.com) - - * targets.c: Revise comments about how to configure the target - vector, to match reality. Remove mention of obsolete methods. - Remove long lists of capitalized macros that turn into the same - thing in lowercase. Normal vector simply lists all known - lowercase xvec names; all other cases are handled by SELECT_VECS. - - * config/mt-i386-coff: Set DEFAULT_VECTOR to real identifier, - not macro name. - - * config/mt-i960-{coff,bout}: Use SELECT_VECS to make a short - list of supported targets. - -Tue Dec 3 14:06:15 1991 Per Bothner (bothner at cygnus.com) - - * archive.c (bsd_write_armap): The pad byte sometimes added to - the string table in a __.SYMDEF member is now - counted as part of the size of the string table. - This is compatible with the old ranlib, as well as Sun's. - -Tue Dec 3 10:53:30 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * srec.c: Rewrote to fix many bugs; now gets the record type - right, doesn't choke on input, sets the start address in an S9 and - fills in the filename on an S0. - -Sat Nov 30 21:19:15 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * cpu-h8300.c: Add support for MEMIND addressing mode - - * coff-a29k.c: defined RELOC_PROCESSING to take the #ifdef out of - coffcode.h - * coffcode.h: use the new macro if available - - * elf.c (elf_corefile_note): cast malloc to avoid warning. - * Makefile.in: Fixed dependencies due to file rename - - * aout-encap.c, aoutf1.h, aoutx.h, archive.c, bout.c, coff-a29k.c, - coff-h8300.c, coff-i386.c, coff-i960.c, coff-m68k.c, coff-m88k.c, - coff-mips.c, coff-rs6000.c, cpu-h300.c, elf.c, i386aout.c, - newos3.c, stab-syms.c, syms.c: All these files have had their - #includes altered to point to the new places. - -Fri Nov 29 20:04:49 1991 Fred Fish (fnf at cygnus.com) - - * config/mh-i386v4, config/mh-i386-elf, hosts/h-i386v4.h: New files. - - * configure.in: Add vendor "ncr" as supported per-target vendor. - Add svr4 case for i386 per-host case. - - * elf.c (elf_object_p, elf_core_file_p): Add missing "break" to - ELFDATA2LSB cases. - -Fri Nov 29 12:16:51 1991 Per Bothner (bothner at cygnus.com) - - * syms.c (bfd_decode_symclass): Return 'A' - for symbols that are both absolute and global. - * archive.c (bfd_special_undocumented_glue): Return NULL - if bfd_ar_hdr_from_filesystem returns NULL. - -Tue Nov 26 09:10:55 1991 Steve Chamberlain (sac at cygnus.com) - - * Makefile.in: added coff-h8300 - * configure.in: now h8 is a coff target - * cpu-h8300.c: fix various disassembly problems - * libcoff.h: took out some code which has been #0ed for a long - time. - * targets.c: added h8 coff - * coff-a29k.c, coff-i386.c, coff-i960.c, coff-m68k.c, coff-m88k.c - added new macro RTYPE2HOWTO to take a load of #ifdefs out of - coffcode.h - * coffcode.h: Started to change the way machine dependencies are - handled, from the nest of #ifdefs to macros defined in the - including coff-<foo>.c - -Fri Nov 22 08:11:42 1991 John Gilmore (gnu at cygnus.com) - - * aoutx.h (some_aout_object_p): Set the `executable' bit - if the entry point is contained in the text segment, even if the - text segment is at location 0. - - * coff-mips.c, coffcode.h: Peter Schauer's patch to kludge in - nonstandard MIPS sections (.rdata, .sdata, etc). - - * aoutx.h, bfd.c, coffcode.h, ieee.c, oasys.c, targets.c: CONST lint. - * libbfd-in.h, libbfd.h, aoutx.h, coffcode.h, elf.c, libaout.h: - Rename ALIGN to BFD_ALIGN to avoid conflict with BSD <sys/param.h>. - * libbfd.c: Lint. - * host-aout.c, trad-core.c: Fix write_armap prototypes. Lint. - -Thu Nov 21 19:56:40 1991 Per Bothner (bothner at cygnus.com) - - * stab-syms.c, syms.c: Moved bfd_stab_name() and bfd_stab_names[] - from syms.c to new file stab-syms.c. Also, since GNU extended - type codes such as N_SETT are no longer in ../include/stab.def, - include them manually. - * stab-syms.c, aoutx.h: Renamed bfd_stab_name() and - bfd_stab_names[] to aout_stab_name() and aout_stab_names[]. - * libaout.h: Added prototype for aout_stab_name(). - * Makefile.in: Update Makefile for new stab-syms.[co]. - -Thu Nov 21 11:50:49 1991 John Gilmore (gnu at cygnus.com) - - * libaout.h (WORK_OUT_FILE_POSITIONS): One more try at this - rather complicated seeming problem. Eliminate LOGICAL_ versions, - just make N_XXX work by excluding the header from the text segment. - * aoutx.h: Fix comments to match. - -Tue Nov 19 18:49:01 1991 Per Bothner (bothner at cygnus.com) - - * libaout.h (WORK_OUT_FILE_POSITIONS): Use new LOGICAL_TXTADDR, - LOGICAL_TXTOFF, LOGICAL_TXTSIZE macros to figure out numbers - for the "logical" text segment (i.e. never consider the exec - header to be part of the text segment). This change is - needed for consistency with various other parts of bfd and ld. - * aoutx.h (NAME(aout,soe_aout_object_p)): Fix comment, - and move calculation of obj_textsec(abfd)->size to libaout.h. - * bfd-in.h: Removed bogus ';'. - - * Makefile.in: Add MINIMIZE flag to select lean - or bloated target_vector. - * targets.c: Use new MINIMIZE macro, and add trad_core if needed. - * newsos3.c: Fixes to ../include/aout64.h remove need - for special N_TXTOFF macro, but require N_HEADER_IN_TEXT. - -Mon Nov 18 12:00:59 1991 Per Bothner (bothner at cygnus.com) - - * aout-target.h, aoutf1.h, newsos3.c: Make aout-target.h - handle both little and big-endian targets, with little - the default unless TARGET_IS_BIG_ENDIAN_P is defined. - * host-aout.c: Add FIXME note. - -Sun Nov 17 13:29:39 1991 Per Bothner (bothner at cygnus.com) - - * targets.c: Make the default target_vector contain - just &DEFAULT_VECTOR. This makes executables a lot smaller. - Old behavior can be gotten by defining ALL_TARGETS. - * aoutf1.h, demo64.c, i386aout.c, newsos3.c, sunos.c: - Factored out common code into new file aout-target.h. - Saves a lot of duplicate code for a.out variants. - -Fri Nov 15 13:00:43 1991 Per Bothner (bothner at cygnus.com) - - Get 'make headers' to work when configured with +subdirs. - * Makefile.in: Add $(subdir) to docdir path. - * doc/Makefile.in (protos): Add $(srcdir) prefix - to name of sed scripts. - -Thu Nov 14 19:49:10 1991 Per Bothner (bothner at cygnus.com) - - * aoutx.h (NAME(aout,print_symbol)): Fix thinko. - * syms.c (bfd_stab_names): Turn on new GNU_EXTRA_STABS macro - to include names of N_SETT etc. - -Thu Nov 14 19:11:13 1991 Fred Fish (fnf at cygnus.com) - - * elf.c: Add minimal support for ELF symbol tables. Generates - canonical bfd symbol tables from ELF symbol tables. Change the - name of some functions from bfd_<name> to elf_<name>. - - * syms.c: Trivial fix to comment to remove a redundant "to". - -Wed Nov 13 17:02:01 1991 John Gilmore (gnu at cygnus.com) - - * coff-{i386,m68k,m88k}.c: Change name of file format to standard - form that GDB recognizes as COFF. - -Wed Nov 13 09:09:41 1991 Steve Chamberlain (sac at cygnus.com) - - * ieee.c (ieee_object_p): cast NULL correctly. - * configure.in: added harris host - - * coff-a29k.c: Lots of changes, most from David Wood. - -Tue Nov 12 07:21:41 1991 John Gilmore (gnu at cygnus.com) - - * coff-m88k.c (coff_write_armap): Just #undef it. - -Mon Nov 11 20:30:18 1991 Steve Chamberlain (sac at cygnus.com) - - * Makefile.in: standardize on MINUS_G to disable debugging - * coff-m88k.c: create coff armaps instead of bsd ones. - * opncls.c (bfd_close_all_done), (bfd_close): Mask out random bits - when calling chmod. - -Mon Nov 11 19:07:32 1991 Fred Fish (fnf at cygnus.com) - - * elf.c: Additions to support ELF format core files. - * config/mh-amix: Add -DHAVE_PROCFS to HDEFINES, since host - has support for /proc (all the include files in particular). - -Mon Nov 11 18:36:47 1991 Per Bothner (bothner at cygnus.com) - - * aoutx.h (NAME(aout,find_nearest_line)): Handle the case - of two N_SO stabs, one for directory, and one for filename. - - * bfd-in.h (print_vma): Factor out duplicate definition. - - Exit a little more gracefully when malloc returns NULL. - * libbfd.c: New function bfd_xmalloc (malloc wrapper). - * opncls.c, syms.c, bout.c, aoutx.h: Replace malloc by bfd_xmalloc. - * libbfd.h: Rre-generated due to libbfd.c update. - -Sat Nov 9 13:45:01 1991 Fred Fish (fnf at cygnus.com) - - * config/mt-m68k-elf: Define DEFAULT_VECTOR as elf_big_vec. - - * elf.c (elf_object_p): Don't try to create a bfd section for - the first ELF section header. It is just a placeholder. - -Sat Nov 9 03:04:26 1991 John Gilmore (gnu at cygnus.com) - - * coff-rs6000.c, config/mh-rs6000: Make it work on archive and - core files, when compiling native. - * hosts/h-rs6000.h: Define FASCIST_FDOPEN for bfd_fdopenr. - - FIXME: The aoutf1.h change below needs to be reversed back - to the way it was. - -Thu Nov 7 11:03:55 1991 Steve Chamberlain (sac at rtl.cygnus.com) - - * coffcode.h: Defined new macros [PUT|GET]LINENO_LNNO for - manipulation of lnno fields in lineno structs in a coff-<f>.h - independent way. Override it in coff-<f>.h to your favourite - number if you don't have a 16bit lnno field. (coff_swap_lineno_in) - (coff_swap_lineno_out): modified to use the new macros. - -Mon Nov 4 11:38:33 1991 Steve Chamberlain (sac at cygnus.com) - - * aoutf1.h (sunos4_callback): Now defaults to 68020 rather than - unknown arch when the magic number doesn't specify the - architecture, since some OSs (eg old sun3s) don't set the number, and - 020 is probably the right answer anyway. - -Sun Nov 3 12:07:08 1991 Per Bothner (bothner at cygnus.com) - - * hosts/h-news.h, hosts/h-rtbsd.h: - Get rid of MISSING_VFPRINTF, since libiberty provides one. - * bfd-in.h (bfd_print_symbol_type_hopw enum): Add new option - bfd_print_symbol_nm, for use by nm. - * aoutx.h (NAME(aout,print_symbol)): Add code for new - bfd_print_symbol_nm option, to print in nm format. - * coffcode.h (coff_print_symbol), ieee.c (ieee_print_symbol) - oasys.c (oasys_print_symbol): Provide stub implementations - for bfd_print_symbol_nm. - * syms.c: New function bfd_decode_symclass, used by nm printer. - New function bfd_stab_name to look up string name of stab code. - -Sat Nov 2 14:26:03 1991 Steve Chamberlain (steve at cygnus.com) - - * Makefile.in: Added ctor.c - * archures.c (bfd_default_arch_struct) added - bfd_default_reloc_type_lookup. - * coffcode.h: removed a load of #if 0ed code. - (coff_compute_file_section_positions): now works out the section - alignment and size correctly in all cases. - (coff_get_symtab): looks for constructor symbols and calls the - right function when they're found. (coff_canonicalize_reloc): - knows when a section is full of constructors and does the right - thing. - * cpu-m88k.c: Added default_reloc_type lookup to the architecture - description. - * libbfd-in.h: (bfd_default_reloc_type_lookup) defun added. - * libcoff.h: removed #if 0ed code - * reloc.c: (bfd_reloc_code_real_type) added BFD_RELOC_CTOR for - arch independent constructor relocation type. - (bfd_reloc_type_lookup): removed the comment "this will go away" - since it won't. (bfd_howto_32): stolen from 88k, this is a 32bit - reloc which is used when BFD_RELOC_CTOR falls through to give a - default 32bit reloc for constructors. - (bfd_default_reloc_type_lookup): added. - * aoutf1.h: fixed SEGMENT_SIZE typo. - -Thu Oct 31 18:23:06 1991 John Gilmore (gnu at cygnus.com) - - * coff-rs6000.c: Change name to "aixcoff-rs6000", to avoid - matching prefix "coff". - * coffcode.h (coff_swap_aux_in, coff_swap_aux_out): Handle - rs/6000 csect records. - -Sun Oct 27 16:56:58 1991 Steve Chamberlain (steve at cygnus.com) - - * coff-m88k.c, targets.c: change name of m88k_bcs to m88kbcs - * configure.in: add motorola delta88 cases - * libbfd.h, libbfd-in.h, archive.c, ieee.c, elf.c, srec.c: fix - write_armap prototype - * libbfd.c: add doc on bfd_write_bigendian_4byte_int - -Fri Oct 25 02:48:19 1991 John Gilmore (gnu at cygnus.com) - - * Rename COFF-related files in `coff-ARCH.c' form. - coff-a29k.c, coff-i386.c, coff-i960.c, coff-m68k.c, coff-m88k.c, - coff-mips.c, coff-rs6000.c to be exact. - - * Makefile.in: Only supply TARGET_DEFAULTS to targets.c, reducing - make output clutter. - * config/mt-*: Ditto. - -Thu Oct 24 22:40:07 1991 John Gilmore (gnu at cygnus.com) - - RS/6000 support, by Metin G. Ozisik, Mimi Phûông-Thåo Võ, and - John Gilmore. Archive support from Damon A. Permezel. - - * Makefile.in: Add cpu-rs6000.c and rs6000coff.c. - * configure.in: Add rs6000 case. - * targets.c: Add rs6000 vector. - * archures.c: Add rs6000, fix comment on romp. - * bfd-in.h (enum bfd_error): Add no_debug_section error. - * libcoff-in.h (struct coff_tdata): Remove unused string_table. - * bfd.c (bfd_errmsgs): Add no_debug_section error message. - * section.c (bfd_make_section): Return NULL on attempt to create - a section twice. - * coffcode.h (bfd_swap_reloc_in): Handle r_type and r_size. - (bfd_swap_aouthdr_in): Handle lots more members. - (make_a_section_from_file): If section has already been seen, - just return false rather than overwriting it. - (coff_real_object_p): Understand incoming magic numbers. - (coff_set_flags): Understand outgoing magic numbers. - (coff_compute_section_file_positions): outgoing aouthdr magic #. - (build_debug_section): Add fn for reading debug string section. - (get_normalized_symtab): Handle symbol names in debug string section. - Remove unused obj_string_table. - (coff_slurp_symbol_table): Handle rs6000-specific storage classes. - * aoutx.h (translate_from_native_sym_flags, N_SET*): Check for - existing section before making one. - * cpu-rs6000.c: New file. - * rs6000coff.c: New file. - -Thu Oct 24 02:03:24 1991 Fred Fish (fnf at cygnus.com) - - * elf.c: Add partial support for ELF format corefiles. Still needs - support for extracting registers from corefiles. - - * config/t-m68k-elf: Set DEFAULT_VECTOR to elf_big_vec. - - * config/{h-amix,h-dgux,h-irix3,h-ultra3}: For systems where - RANLIB is defined as echo, send the output to /dev/null to help - reduce clutter in the output from doing a make. - -Mon Oct 21 17:48:48 1991 John Gilmore (gnu at cygnus.com) - - * hosts/h-vaxult.h: Remove malloc/free decls covered in stdlib.h. - Fix HOST_PAGE_SIZE and HOST_SEGMENT_SIZE. From David Taylor. - -Mon Oct 21 09:34:11 1991 Steve Chamberlain (steve at rtl.cygnus.com) - - * coffcode.h (coff_compute_section_file_positions): make it pad - section size out if there are alignment restrictions so that the - image will be ok on a system where section positions are worked - out by accumulating sizes rather than from the section headers. - * targets.c (proto write_armap). Changed orl_count to unsigned. - * opncls.c (bfd_close_all_done). Added so that generative - programs like gas can close a bfd without causing bfd confusion. - * libbfd.h (changed becuase of protos) - * amdcoff.c: messed with the way that jmp displacements are - calcualated. This may not yet be totally correct. - * archive.c (coff_write_armap): rewrote the way that ranlibs are - written out. - * coffcode.h (fixup_symbol_value): now doesn't core dump if a non - abs symbol has no section (like a register symbol). - (coff_write_symbol) now zeros auxent before filling it up to help - with sensitive applications. - * libbfd.c (bfd_write_bigendian_4byte_int): added. - -Wed Oct 16 22:58:45 1991 John Gilmore (gnu at cygnus.com) - - * bfd.c: Make sure we don't get a macro strerror(). - * opncls.c (bfd_fdopenr): If FASCIST_FDOPEN, use "r", not "r+". - * trad-core.c (trad_unix_core_file_failing_command): Suppress - attempt to recover command, ifdef NO_CORE_COMMAND. - * hosts/h-tahoe.h: Add FASCIST_FDOPEN and NO_CORE_COMMAND; - revamp HOST_*, etc. - * hosts/h-i386v.h: Use <utime.h>, not <sys/utime.h>, unlike POSIX. - -Wed Oct 16 12:43:49 1991 Per Bothner (bothner at cygnus.com) - - * archive.c (bsd_write_argmap): The size of the ranlib structures - should not include the size field itself. - * aoutx.h, libaout.h (NAME(aout, sizeof_headers)): Use - adata(abfd)->exec_bytes_size field instead of constant macro, - because aoutx.h compiles to a simple .o file shared by - all 32-bits a.out targets. - -Wed Oct 16 11:11:05 1991 John Gilmore (gnu at cygnus.com) - - * configure.in: Allow i386-sco-sysv. - * bout.c: Remove unused i960_align; lint dummy core file handlers. - * cpu-h8300.c: lint. - - * host-aout.c: New strategy. We use common code, include files, - and data structures to handle the file, but set a few parameters - from the host's config file (page size, text start addr, etc). - * libaout.h: Define HP BSD machine types. - * aoutf1.h: Handle reading a.outs with these types. - - * trad-core.c: Pass the u.u_ar0 value as the negative of the - virtual-memory-address of the .reg section. We can't just make a - section for "all the regs and nothing else" because only GDB knows - exactly where the regs are (scattered around the upage and stack). - Clean up memory allocation. Remove big- and little-endian - vectors, replace with single vector; this only runs on the host, - in host byte order. Replace byteswap routines with aborts in case - anyone calls them. - * targets.c: There's only one trad_core_vec now. - * aoutf1.h (sunos_core_file_p): VMA of .reg* now needs to be 0. - -Tue Oct 15 08:29:03 1991 John Gilmore (gnu at cygnus.com) - - * hosts/h-amix.h (free): Fix prototype. - - * aoutx.h: Don't use NULL as an integer, for braindead systems - that declare it as (void *)0. (From Peter Schauer.) - -Mon Oct 14 17:20:47 1991 Per Bothner (bothner at cygnus.com) - - * opncls.c (bfd_fdopenr): Add parentheses to avoid reported - problem with bad Ultrix system headers. - * aoutx.h (NAME(aout,set_section_contents)): Try to handle the - various kinds of alignments for the various kinds of - magic numbers. - -Mon Oct 14 14:23:10 1991 John Gilmore (gnu at cygnus.com) - - * doc/Makefile: Don't assume . is on the path (from James Clark). - -Fri Oct 11 22:45:14 1991 John Gilmore (gnu at cygnus.com) - - * Makefile.in: Avoid Sun Make VPATH bugs. - * targets.c: Declare trad_core vectors extern. - -Fri Oct 11 13:03:02 1991 Per Bothner (bothner at cygnus.com) - - * coffcode.h: Moved ALIGN macro to libbfd.h. Removed i960_align. - * libbfd.h: Moved ALIGN macro here. - * bout.c (b_out_callback): Replace i960_align by align_power. - - * libaout.h (struct aoutdata): Added fields page_size, - segment_size and exec_bytes_size. These help generic code - (in aoutx.h and libaout.h) to figure out where to align - the various segments in a demand paged file. - * libaout.h (WRITE_HEADER): Use new (struct aoutdata) fields - to decide if the exec header counts in a_text (text segment size). - Also, assume D_PAGED flag is set; don't set it here. - * bout.c (b_out_callback): Add initialization of - adata fields page_size, segment_size, and exec_bytes_size. - * host-aout.c (NAME(host_aout, callback) and - NAME(host_aout,mkobject): Ditto. - * i386aout.c (aout386_callback) and new aout386_mkobject): Ditto. - * newos3.c (newsos3_callback) and new newsos_mkobject): Ditto. - * aoutf1.c (sunos4_callback) and new sunos_mkobject): Ditto. - * aoutx.h (NAME(aout,some_aout_object_p)): Don't subtract - EXEC_BYTES_SIZE from the a_test size; this is only appropriate - for some systems (mainly sunos), so do it in the callback instead. - Same routine: Add stuff to the THIS_IS_ONLY_DOCUMENTATION comment. - * aoutx.h (NAME(aout,set_section_contents): Change the way - filepos and size of sections are carried out to support - older styles of demand paged executables. - - -Fri Oct 11 12:33:36 1991 Steve Chamberlain (steve at cygnus.com) - - * bfd-in.h: Added more macros to COFF_SWAP_TABLE. - * bfd.c: Added macros to enable gas to swap coff records. - * coffcode.h: Make the coff_swap_*_out routines return the number - of bytes swapped, and cleaned up their prototypes. - * configure.in: Added ebmon/coff support - * ecoff.c: Changed null definitions of coff_swap_*_out to conform - to new prototypes - * targets.c: Added new entry points for coff swapping - -Fri Oct 11 03:01:52 1991 John Gilmore (gnu at cygnus.com) - - Restructure configuration scheme for bfd, binutils, ld. - - * include/sys/h-*.h: Move to bfd/hosts/h-*.h. - * configure.in: Revise to symlink sysdep.h to hosts/h-xxx.h. - Change some config names to match other dirs. - * *.c: Include bfd.h before sysdep.h, so ansidecl and PROTO() - get defined first. - * Makefile.in: Use -I. to get sysdep.h. Remove refs to - ../include/sysdep.h. - * cpu-i960.c: Strncmp needed a length arg. - * ecoff.c: Don't ever call trad_unix_core_file_p from here. - * i386aout.c: Remove dead N_TXTOFF override. - * trad-core.c: Don't disable the whole file if SUN4_SYS. - * config/: Rename some config files to match up h-*.h names. - Remove all the HOST_SYS definitions from the config files. - * hosts/h-amix.h, h-i386v.h: Define POSIX_UTIME, not USG. - * hosts/h-hp9000.h: Remove USG comment. - * hosts/h-rs6000.h: Include <stdlib.h> for malloc. - * hosts/h-news.h, h-sparc-64.h: New config files that had - previously been kludged in the <sysdep.h> file. - -Thu Oct 10 17:54:08 1991 John Gilmore (gnu at cygnus.com) - - * config/*: trad-core support is HOST dependent, not target - dependent. Target config files only set DEFAULT_VECTOR and/or - other vector elements. Exception: when host-aout.c is in use, - in which case we're forced to assume we're native (hp, vax, - tahoe). Rename XDEPFILES to HDEPFILES. - * Makefile.in: Rename XDEPFILES. - * config/h-sun*: Don't force static linking. - * trad-core.c: Document how to use it nowadays. - * i386aout.c, newsos3.c: Clean up. - * i386coff.c: Allow 386 coff files to be used as core files too - (for reading core files from embedded systems). - -Tue Oct 8 15:30:39 1991 John Gilmore (gnu at cygnus.com) - - * Add i386aout.c for a.out support on the i386. - -Tue Oct 8 12:18:54 1991 Roland H. Pesch (pesch at cygnus.com) - - * reloc.c, section.c, syms.c, targets.c: correct info-node - structure in *doc* comments. - doc/Makefile: stop hiding complaints from makeinfo. - -Sun Oct 6 19:10:06 1991 John Gilmore (gnu at cygnus.com) - - * aoutx.h (...some_aout_object_p): Take a third parameter, - the internal_exec struct, and avoid ever looking at an - external_exec. All callers changed to read the entire - external_exec struct, swap and check its magic number, - swap in the whole structure, and pass the swapped-in version to - some_aout_object_p. - * bout.c: Bring into modern era. Use single _object_p routine - for big- aand little-endian. Provide internal and external - exec header structs. Use separate swap-in and swap-out routines. - - * libaout.h: Move struct internal_exec from ../include/aout64.h - to here. Add obj_symbol_entry_size to struct aoutdata. - * aoutx.h (...some_aout_object_p): Set obj_symbol_entry_size. - - * ../include/aout64.h: Change EXTERNAL_LIST_SIZE to - EXTERNAL_NLIST_SIZE. Callers changed. - -Fri Oct 4 18:18:46 1991 John Gilmore (gnu at cygnus.com) - - * bfd.c: Remove strerror() to libiberty. - - * elf.c: Remove elf_set_section_contents, use generic one. Lint. - * libbfd-in.h, libbfd.c: Add bfd_generic_set_section_contents. - * libbfd.c (bfd_generic_{get,set}_section_contents): Check that - last byte of transfer, not first byte, is within the section. - - * host-aout.c: Remove `BSD' archive support. Lint. - - * archures.c: Rename `struct bfd_arch_info_struct' to `struct - bfd_arch_info'. Rename `typedef bfd_arch_info_struct_type' to - `bfd_arch_info_type'. All uses changed. - * reloc.c: Rename `bfd_reloc_status_enum_type' to - `bfd_reloc_status_type'. Rename `bfd_reloc_code_enum_real_type' - to `bfd_reloc_code_real_type'. (This seems to be a misnomer, - it needs a better name.) All uses changed. - * targets.c: Rename `enum target_flavour_enum' to `enum - target_flavour', and remove the `_enum' from all of the enum - values themselves. All uses changed. - - * configure.in, config/h-i386mach: i386 mach host. - * config/t-i386-aout: Use host-aout.c. - - * trad-core.c: Give it its own xvec's to make it independent - of other file formats. - * ecoff.c, host-aout.c: Remove refs to trad-core. - * config/t-dec3100, t-hp300bsd, t-tahoe, t-vax: Define TRAD_CORE. - * targets.c: #ifdef TRAD_CORE, include it in the vector. - -Fri Oct 4 17:38:03 1991 Steve Chamberlain (steve at cygnus.com) - - * reloc.c: Extended NEWHOWTO macro - * ieee.c: Changed the way 8bit pcrel is done - * cpu-h8300.c: got the registers in the right order - -Thu Oct 3 19:39:55 1991 John Gilmore (gnu at cygnus.com) - - * bfd-in.h: enum boolean => enum bfd_boolean for SVR4. Gumby's - prediction is vindicated! - - * bfd-in.h, libbfd-in.h, doc/Makefile, doc/tolibbfd, doc/intobfd: - Remove refs to howto.c, since Steve forgot. - -Thu Oct 3 07:49:21 1991 Steve Chamberlain (steve at cygnus.com) - - * elf.c: took the abort out of set_arch_mach so that objdump -i will - still work. Now allows any architecture/machine to be set. - -Wed Oct 2 13:50:35 1991 Steve Chamberlain (steve at cygnus.com) - - * howto.c deleted and moved code to reloc.c - - * libbfd.h, libbfd-in.h removed $id stuff for real - - * cpu-h8300.c Made it match various different spellings of h8300. - - * archures.c: Took out the first char filter which made it only - look for a cpu/arch match when the first chars of supplied and - tested names were the same. - - * targets.c removed oasys stuff, pending someone to fix the bugs - in it. - - -Tue Oct 1 12:29:44 1991 John Gilmore (gnu at cygnus.com) - - * Makefile.in, configure.in, targets.c, elf.c: Add preliminary - ELF support good enough for GDB. - * configure.in, config/h-amix, config/t-m68k-elf: Handle - m68k-cbm-svr4 host and target. - * config/t-m68k-coff, t-m88k-coff, t-m88k-aout: Make files nonempty - so `diff' and `patch' can cope. - -Tue Oct 1 11:24:31 1991 Steve Chamberlain (steve at cygnus.com) - - * archures.c: removed texinfo error - - * init.c: added texinfo hooks, and removed initialization error - message. - - * libcoff-in.h, libbfd-in.h removed $id field so cvs can merge - without complaints. - -Tue Oct 1 05:02:53 1991 John Gilmore (gnu at cygnus.com) - - * cpu-i960.c: Avoid numerical count of initializers. - - Vax Ultrix changes from David Taylor <taylor@think.com>: - * host-aout.c: Make little-endian vector really little-endian. - * configure.in: Separate vax and tahoe cases, handle ultrix. - * config/t-vax: Add trad-core.o. - * config/h-vaxult: New host system. - -Mon Sep 30 15:13:46 1991 Steve Chamberlain (steve at cygnus.com) - - * bfd-in.h VERSION, change version number to 0.18, this makes a - gap, but now is the same as the linker version number. - - * cpu-a29k.c, cpu-i386.c, cpu-m68k.c, cpu-mips.c, cpu-vax.c, - cpu-h8300.c, cpu-i960.c, cpu-m88k.c, cpu-sparc.c: added. These - files will eventually contain processor specific bits for bfd, - like strange relocation information and dis/assembly. So far only - the H8 has been even partially done. This work also ties in with - the change in handling architectures. - - * amdcoff.c: (a29k_reloc) fix error message. - - * aout-f1.h: (choose_reloc_size) now calls bfd_get_arch to - discover the architecture of the bfd. (sunos4_callback) calls the - function bfd_set_arch_mach rather than stuffing stuff directly - into the bfd. (sunos4_write_object_contents), changed names of - accessor functions. - - * aoutx.h: (set_arch_mach) now calls bfd_default_set_arch_mach to - setup the environment. - - * archive.c: (bfd_slurp_coff_armap) coff archives always have the - headers in big endian format, regardless of the endianess of the - host or target. - - * archures.c: totally changed. Now an architecture is represented - with a pointer to an info structure rather than an enumerated type - and a long. The old info is available as two elements in the - structure. Future enhancements to architecure support will - involve pointers to methods being placed into the info structure. - - * bfd.c: changed the definition of the bfd structure for the new - architecture stuff. - - * bout.c: (b_out_set_arch_mach) changed to use the new - architecture mechanism. - - * coffcode.h: (coff_set_arch_mach, coff_set_flags) changed to use - the new architecture mechanism. - - * configure.in: added h8 stuff. - - * ieee.c: too many changes to note. Now ieee files written with - bfd gas and ld can be read by gld and ieee only linkers and - simulators. - - * libbfd.c, libbfd.h: changed prototype of bfd_write. - - * newsos3.c: (newos3_callback) now calls bfd_set_arch_mach rather - than fixing the structure directly. - - * oasys.c: (oasys_object_p) now calls bfd_default_set_arch_mach rather - than fixing the structure directly. - - * opncls.c: (new_bfd) makes sure that bfd_init has been called - before opening a bfd. - - * srec.c: (srec_set_arch_mach) now calls bfd_default_set_arch_mach - rather than fixing the structure directly. - - * targets.c: (target_vector) now by defining SELECT_VECS (perhaps - in the t/hmake file) a user can select which backends they want - linked with bfd without changing the source. - - * init.c: new, looks after initializing modules. - - * howto.c: for future use, will allow an application to work out - what cookie to use as a handle on a relcoatio howto. - -Mon Sep 30 13:31:15 1991 John Gilmore (gnu at cygnus.com) - - * srec.c: Better error checking, partly from Peter Schauer. - (srec_object_p): Avoid assuming any file that starts with 'S' is - an S-record file! (Check for 3 uppercase-hex digits after it.) - (ISHEX): Define new macro for checking supposedly hex characters. - (pass_over): Treat as EOF any S-record line that: - * doesn't have hex in either size character - * produces a size larger than 0x7F - * has an unrecognized type number - -Thu Sep 26 15:27:29 1991 John Gilmore (gnu at cygnus.com) - - * aoutf1.h, aoutx.h, bout.c, coffcode.h, host-aout.c, oasys.c, - opncls.c: Lint (saber actually). - -Thu Sep 26 11:24:24 1991 Per Bothner (bothner at cygnus.com) - - * libaout.h (WRITE_HEADERS): Set header's a_text field always. - * newsos3.c: Fixed two types: newos3 -> newsos3. - * reloc.c (bfd_perform_relocation): Fix pc-relative relocation - to use correct segment. - -Mon Sep 23 18:24:34 1991 Per Bothner (bothner at cygnus.com) - - * aoutx.h (print_symbol): Handle missing symbol->name. - -Fri Sep 20 12:26:01 1991 Stu Grossman (grossman at cygnus.com) - - * aoutf1.h (swapcore_sparc): Change name of USRSTACK, fix comment - at top of routine. - -Tue Sep 17 17:23:49 1991 Stu Grossman (grossman at cygnus.com) - - * oasys.c, configure.in, config/h-irix3, config/t-irix3: - add sgi/irix support. - -Thu Sep 12 14:29:09 1991 John Gilmore (gnu at cygint.cygnus.com) - - Changes for the AMD 29000 Ultracomputer port from David Wood. - (wood@nyu.edu). - - * opncls.c (bfd_fdopenr): Handle NO_FCNTL. - - * Makefile.in: Make subdirs work by using $(INCDIR) in the - crude dependencies. - - * coffcode.h (coff_real_object_p): Pass information about the - current file's coff symbol format to BFD via the coff_data struct. - (coff_find_nearest_line): obj_icof => coff_data. - (coff_swap_sym_{in,out}): Check that SYMNMLEN == E_SYMNMLEN. - (coff_swap_aux_{in,out}): Check that FILNMLEN == E_FILNMLEN - and DIMNUM == E_DIMNUM. - * configure.in: Handle a29k-*-* hosts, and targets - a29k-*-coff, a29k-*-aout, and a29k-*-sym1. - * libcoff-in.h: Add local_n_btmask, local_n_btshft, - local_n_tmask, local_n_tshift, local_symesz, local_auxesz, - local_linesz to `coff_data' (tdata) struct. - (coff_data, coff_data_type, coff_tdata): Rename struct icofdata. - * config/h-ultra3: Handle a29k-*-* hosts as Ultracomputers. - -Thu Sep 12 14:07:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com) - - * Makefile.in: $(MAKE) for make, $(docdir) for doc - * doc/Makefile: redundant dependencies for Sun-make VPATH bug - -Tue Sep 10 20:34:12 1991 John Gilmore (gnu at cygint.cygnus.com) - - * aoutf1.h (sunos4_core_file_p): Release the right storage in - error case. - (sunos4_core_file_matches_executable_p): Fix header comparison. - * aoutx.h: Avoid shifts of 32 bits, undefined in C. Lint. - * bout.c, icoff.c, ieee.c, libbfd.c, oasys.c: gcc -O -W lint. - -Wed Sep 4 00:44:52 1991 John Gilmore (gnu at cygint.cygnus.com) - - Allow GDB to patch object files. - - * aoutf1.h (sunos_core_file_p): Set SEC_HAS_CONTENTS on all sections. - * trad-core.h (trad_unix_core_file_p): Ditto. - * aoutx.h (aout_set_section_contents): On first output, check - abfd->direction and complain if erroneous. - - * Makefile.in: Add crude dependencies. - -Tue Sep 3 13:46:19 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * config/* aoutx.h configure* shortened all the h/tmake-xxxx - to h/t-xxxx files so that everything will work on System V. - -Fri Aug 23 13:51:06 1991 John Gilmore (gnu at cygint.cygnus.com) - - * aoutx.h: Add information on host-aout.c and how to configure - to use it, to the manual. - * configure.in: Tix typo. - * ecoff.c: If compiling for DEC3100, use trad_unix core files, - else dummy out the core file support. - * trad-core.c (trad_unix_core_file_p): If HOST_DATA_START_ADDR is - specified, use it to locate the data section. - * coffcode.h (coff_write_symbols): Declare buffer as bfd_bytes - rather than as chars (lint). - -Thu Aug 22 22:20:19 1991 Stu Grossman (grossman at cygint.cygnus.com) - - * aoutx.h, coffcode.h: saberized. - -Thu Aug 22 11:27:06 1991 Roland H. Pesch (pesch at cygint.cygnus.com) - - * bfd.texinfo: some cleanup, reincorporated more intro matter from - bfd.doc - bfd.c, targets.c: minor rewording of doc segments - - -Wed Aug 21 19:13:22 1991 John Gilmore (gnu at cygint.cygnus.com) - - * trad-core.c (trad_unix_core_file_p): Use HOST_TEXT_START_ADDR, - etc, rather than TEXT_START_ADDR. - * host-aout.c: Remove #if 0 around whole thing. - Update to modern (32/64-bit) a.out naming conventions. - Include a large chunk of ../include/a.out.gnu.h to get macros that - are not defined by the system include files. - (host_aout_{32,64}_write_object_contents): Use the WRITE_HEADERS - macro used by the other a.out implementations. - * Makefile.in: Give dependencies to OPTIONAL_BACKENDS. - -Wed Aug 21 14:33:06 1991 Roland H. Pesch (pesch at cygint.cygnus.com) - - * Makefile.in: use targets "bfd.dvi" and "bfd.ps" instead of - texdoc and psdoc; make these depend on generated .texi's - - * scanit, (new) unPROTO: turn PROTO macros into ANSI declarations in - doc - - * bfd.c, reloc.c, syms.c: minor spelling/wording fixes in doc - portions - - * Makefile.in, awkscan-ip, awkscan-p, intobfd, - libbfd.h, libcoff.h, tolibcoff; new bfd-in.h, libbfd-in.h, - libcoff-in.h: (a) use separate files for invariant parts of bfd.h, - libbfd.h, and libcoff.h; (b) in generated parts of same, use less - obtrusive marks indicating .c origins. - - * bfd.texinfo: generalize most references to linker - -Tue Aug 20 15:18:02 1991 Roland H. Pesch (pesch at cygint.cygnus.com) - - * Makefile.in: include core.p in PROTOS (building better bfd.h) - * archures.c: remove empty foo() definition (crept in at vn1.9) - -Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com) - - * bfd.texinfo: use @setchapternewpage on instead of lots of - @page's; minor rephrasing in Introduction. - - * aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c, - coffcode.h, core.c, format.c, ieee.c, libbfd.c, libbfd.h, libcoff.h, - oasys.c, opncls.c, reloc.c, section.c, syms.c, targets.c (documentation - segments): used BFD (caps) more consistently as a name in - discourse, fixed a few other minor typos and uses of fonts - - -Thu Aug 8 16:47:43 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * coffcode.h: fixed bug where string table size wasn't being swapped. - -Thu Aug 1 16:35:28 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * section.c: added SEC_CONSTRUCTOR_TEXT|DATA|BSS flags - - * syms.c: added BSF_CONSTRUCTOR, BSF_WARNING and BSF_INDIRECT - flags. (bfd_print_symbol_vandf) now knows what to do with the - above flags. - - * aoutx.h: made translate_from_native_sym_flags and - translate_to_native_sym_flags produce the above flags. - - -Wed Jul 31 09:53:52 1991 John Gilmore (gnu at cygint.cygnus.com) - - * all files: update copyright notices for GPL version 2. - Install header comments and attribute most modules to their - authors. BFD's name is now officially "Binary File Descriptor", - so remove any conflicting pejoratives. - archures.h: Consists solely of comments; remove it. - -Fri Jul 26 18:11:34 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * Makefile.in, bfd.c: Made it compile again. - -Fri Jul 19 08:17:09 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * newsos3.c, targets.c, coffcode.h: new patches from David Wood - - -Mon Jul 15 16:27:42 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * aoutf1.h archive.c bfd.c coffcode.h core.c ecoff.c ieee.c - bfd.texinfo oasys.c opncls.c reloc.c srec.c: More documentation on - lint fixes. - - * amdcoff.c bfd.texinfo Makefile.in : Folded in changes for amd - 29k coff by David Wood (wood@lab.ultra.nyu.edu). - -Thu Jul 4 09:53:16 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * Everything: created some new files, core.c format.c, reloc.c, - section.c and syms.c to split the functionality a bit better. - Cleaned up the rest of the files a bit, and added some - documentation. - - -Mon Jul 1 13:29:47 1991 David Wood (wood at david.ultra.nya.edu) - - * opncls.c, ../include/sys/h-sun3.h ../include/sys/h-sun4.h: fcntl - really takes 3 arguments, patched code and ammended prototypes. - -Fri Jun 14 13:19:40 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * ../include/bfd.h (struct bfd_target): Added new field - "align_power_min" which contains the minimum alignment for a - section. This is used in coff_new_section_hook. The field - insertion necessitates an update of all backends.. - - * aoutf1.h jump table field inserted - - * archive.c(snarf_ar_hdr)(bfd_slurp_coff_armap) can now parse dgux style extended - filenames too. - - * bout.c(b_out_squirt_out_relocs) fix to assertion tests. Jump - table field inserted. - - * coffcode.h(just about everything) Now patches up symbol tables - using a different mechanism. The Intel major bug has been fixed, - and the linker can self host on the Aviion and be debugged with - gdb. - - * ecoff.c: new include and jump table patch, i386coff.c: new - include and jump table patch, icoff.c: new include and jump table - patch, ieee.c: can now read archives containing ieee modules., - libcoff.h: added (combined_entry_type), libieee.h: uped max - sections to 20, m68kcoff.c: new include and jump table patch, - m88kbcs.c: new include and jump table patch, oasys.c: various bugs - fixed. opncls.c: added bfd_alloc_grow and bfd_alloc_finish. - srec.c: jump table patch. trad-code.c fixed #IF typeo - -Fri Jun 7 12:35:46 1991 Sean Fagan (sef at cygint.cygnus.com) - - * coffcode.h (coff_swap_aux_in): added else case to deal with - filenames less than 9 characters. - - -Thu Jun 6 18:27:38 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * ../include/oasys.h oasys.c (oasys_archive_p): fixed so it works - - * srec.c: now allows any number of sections to be created in a - file. Outputs addresses of the right length. - -Thu May 30 15:30:10 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * bfd.c (bfd_check_format): Fixed problem where when a defaulted - target didn't match, the format got set to the attempted match, - breaking a future test. - - *../include/i386coff.h : fixed typo in type field with size - - * i386coff.c icoff.c m88k-bcs.c ecoff.c ../include/bfd.h : Added - support in the jump table for the swapping routines exported to - gdb. Now gdb works with the 386. - -Tue May 28 17:21:43 1991 John Gilmore (gnu at cygint.cygnus.com) - - * Merge in changes from gdb-3.95 release. - Makefile.in: Allow hmake and tmake files to add OFILES. - aoutf1.h: - bfd.c: support specific targets as well as searching. When - searching, take default target in preference to others. - bfd.doc: typos - ieee.c, oasys.c: Avoid using the "tdata" macros left of assignment. - liba.out.h: Don't hard-code file offsets; use N_ macros for them. - libbfd.h: Support specific targets as well as searching. - opncls.c: Support specific targets as well as searching. - targets.c: Search is short-circuited if default target matches. - liboasys.c, libieee.c: Undo bothner changes that make macros - work to the left of assignment, but which depend on the - representations of different pointer types being the same. - -Fri May 24 18:56:52 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * i386coff.c: created. - * coffcode.h: added support for 386. - * Makefile.in: added support for 386. - * ../include/i386coff.h: created - -Wed May 22 07:26:38 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * coffcode.h: removed all put_x_<sizes> - * libbfd.c: Changed #ifdef __GNUC__ to #ifdef HOST_64_BIT, Added - DEFUNS - - -Tue May 21 08:58:58 1991 Steve Chamberlain (steve at cygint.cygnus.com) - (bothner) - * opncls.c: Changed obstack_chunk_alloc use xmalloc - -Mon May 20 17:12:17 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * everything: Removed sysdep.h from bfd.h and put back into files - from which it was split out. Now 64 bit version is built with a - -DHOST_64_BIT="long long" on the compile line. - -Fri May 17 19:35:26 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - Changed all the [get|put][name] routines to use [get|put]_[size - in bytes]. - - Put in support for 64 bit work. Now two versions of bfd may be - generated, according to the state of TARGET_64_BIT, one which is - 32 bit only, and one which is 64/32 bits. - Created new back end 'demo64' to test 64 bit functionality. - - Renamed some files to work on DOS. - - * archive.c: lint * bfd.c: prototypes and lint. * ecoff.c: added - 64bit transfer * icoff.c: added 64bit transfer * ieee.c: name - chage, 64 bit transfer. * liba.out.h: Split out common code from - sunos and newsos into liba.out. Name changes and prototype mods. * - libbfd.c: lint and prototypes, extra 64bit swaps. * libbfd.h: - prototypes for new functions. * libcoff.h: lint * libieee.h: make - work on DOS * liboasys.h: make work on DOS * m88k-bcs.c: Name - change and 64bit stuff.* newsos3.c: common code removed, new jump - table. * oasys.c: Name change * opncls.c: Portability fixes * - srec.c: Name changes * sunos.c: Removed comon code. * targets.c: - Added demo * aout32, aout64.c include aoutx.h * bout.c: used to - be called b.out.c * coffcode.h: used to be called coff-code.h, now - 64bit ized. * demo64.c: 64 bit a.out back end - -Thu May 16 16:02:07 1991 Steve Chamberlain (steve at cygint.cygnus.com) - from bothner - * libieee.h: Make ieee_data and ieee_ar_data macros usable - on LHS of assignment, even when using old compilers. - * liboasys.h: Ditto for oasys_data and oasys_ar_data. - * m68kcoff.c: Add enum-to-int casts to accomodate old compilers. - * newsos3.c: Fix definitions of SEGMENT_SIZE and TEXT_START_ADDR. - * opncls.c: Define S_IXUSR, S_IXGRP, S_IXOTH if undefined. - * targets.c: Add declaration of newsos3_vec. - -Mon May 13 10:03:29 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * aout.c: fixxed some of the problems with filepos calculation. - (swap_ext_reloc): fixed problem with creation of relocs. - (aout_set_section_contents): fixed filepos problem - - * coff-code.h: (swap_filehdr_in, swap_filehdr_out) add. - (swap_filehdr) delete. Changed all the usage of bfd_h_put_x. - (swap_aouthdr_in, swap_aouthdr_out) add. (swap_aouthdr) delete. - (coff_real_object_p) cleaned up, added MIPS. (coff_object_p) - cleaned up. (coff_write_object_contents) cleaned up. - - * ecoff.c: Totally different. Now supports ecoff fully. - - * icoff.c: fixed problems in relocation callout. - - * libcoff.h: (struct icofdata) removed hdr structure from tdata. - - * m68kcoff.c: updated target vector. - - * sunos.c: (choose_reloc_size) added: (sunos4_callback) calls - choose_reloc_size. (sunos4_write_object_contents) now calls - choose_reloc_size so outputs relocs correctly, also calculates the - size of the sections correctly. - - - -Fri May 10 16:58:53 1991 John Gilmore (gnu at cygint.cygnus.com) - - Merge Per Bothner's changes to modularize BFD a.out a bit. - - * libbfd.h, libbfd.c (bfd_generic_get_section_contents): Add. - * ieee.c: Cast enums to int before comparing them, for brain- - dead compilers. - * coff-code.h: Remove coff_get_section_contents, and use the - generic one instead. - - * aout.c: Derive new module from sunos.c, containing generic - support code for all kinds of a.out files. - - * sunos.c: Remove all code that goes in aout.c. Split out - machine dependent followup in sunos4_object_p into - sunos4_callback. Use JUMP_TABLE(aout) for the transver vector, - and redefine only the names we CHANGE, not all the names. Drop - the little-endian vector, and rename the vector as sunos4 rather - than generic. - - * b.out.c: Use aout.c routines for most of the work. Slight - changes for the new regime. Remove close_and_cleanup and - get_section_contents in favor of generics. New transfer vector - regime. - - * newsos.c: New support for Sony NEWS, another a.out format. - - * ecoff.c: Remove close_and_cleanup. New tvec regime. - * icoff.c, m88k-bcs.c: Add write_contents to tvec. - * ieee.c, oasys.c: Remove close_and_cleanup, add write_contents - to tvec. - * opncls.c (bfd_close): Call format-dependent write_contents - routine, if writing, before calling target-dependent - close_and_cleanup routine (which is now always generic, I think). - * srec.c: Use bfd_alloc instead of malloc. Remove - close_and_cleanup and move code from it to - srec_write_object_contents. Add write_contents to tvec. - * targets.c: Remove a.out little vector, replace a.out big - vector with SunOS vector. FIXME: Need Vax support again now. - - * libbfd.h: Add write_contents format-dependent-vector to the - bfd_target vector. Supply a generic close_and_cleanup routine. - * liba.out.h: Handle the new aout.c split. Add prototypes for - all routines defined in aout.c. Rename "sunos" things to "aout" - things. Add a few fields where needed for various formats. - * Makefile.in: Add aout.c and newsos.c. - - * archive.c, ieee.c, oasys.c: Lint. - -Fri May 10 12:34:48 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * ../include/bfd.h - changed forward declaration struct stat; to reduce warnings. Changed - comment on bfd_h_<x>_x. - - * ../include/m68kcoff.h, ../include/intel-coff.h, - ../include/m88k-bcs.h - Now there are two incarnations of relocs, linenos and syments. One for - internal digestion, and one full of char arrays for I/O. The original - names have gone to detect errors. - - * Makefile.in, m68kcoff.c, targets.c - Test new structure code with a 68k coff implementaion - - * coff-code.h, icoff.c, coffswap.c, libcoff.h - Fixed all the places where there were problems with the size and - alignments of structures on disk and structures in memory. #ifed out - all the code in coffswap.c, since it should be done using the target - swap routines now. - -Thu May 9 11:00:45 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * ieee.c (do_one, ieee_slurp_section_data): now supports the load - multiple reloc command. - - * sunos.c (sunos4_set_section_contents): Made it so that sections - are always padded to their alignment size. - -Sat May 4 15:49:43 1991 John Gilmore (gnu at cygint.cygnus.com) - - * archive.c, bfd.c, coff-code.h, opncls.c, sunos.c, trad-core.c: - Clean up types and such (saber C problems). - * ecoff.c: Clean up types and such. Remove routines that are - not used. Fix up reading and swapping of shorts from files. - - Notes on bfd-0.5.2-patch1a, from Per Bothner: - - * a.out.vax.c: Remove two bogus "static" from prototypes. - - * ecoff.c: Got rid of lots of non-working junk (that had - been copied directly from coff-code.h). - Updated to be consistent with updates to icoff.c and coff-code.h. - - * libbfd.h: Added definitions for S_IXUSR, S_IXGRP, and S_IXOTH - if they're missing (as they are in (BDS-4.3-based) NewsOS-3). - - * sunos.c (n_txtoff): (Re-)Add support for sony. This is a kludge, - but until the target_vector is automatically generated, - it's as good as any. Note that the text offset is the only - difference between NewsOS and SunOs (including magic numbers). - (Most of the sunos_* routines should to renamed bsd_* - and move to a bsd.c file. Then (and when the target_vector - is automatically generated) it might make sense to create - a separate Sony target.) - - * sysdep.h: Don't declare fread and fwrite. Causes trouble - on some systems, and doesn't help on others. - Similarly, only define X_OK if not already defined. - - * trad-core.c: Don't include sys/stat.h - at least - on NewsOS 3, it has already been included. - -Tue Mar 5 01:47:57 1991 John Gilmore (gnu at cygint.cygnus.com) - - * coff-code.h (bfd_coff_swap_sym, bfd_coff_swap_aux, - bfd_coff_swap_lineno): Export the routines that byte-swap COFF - symbol tables if necessary when reading them in, so gdb can use - them. Add "bfd_coff_" to the names so they won't conflict with - names in calling programs. FIXME-soon: if coff-code.h is - included in two BFD modules, this will cause duplicate - definitions; the routines should be exported to a separate, - common, module (probably along with a mess of other ones). - -Sat Mar 2 12:11:26 1991 John Gilmore (gnu at cygint.cygnus.com) - - Improve modtime support. - - * bfd.h: Add boolean mtime_set, and declare bfd_get_mtime. - Remove #define for bfd_get_mtime. Remove gratuitous comment. - * bfd.c (bfd_get_mtime): New fn, caches mtime, gets if not cached. - BUG: archive members still do not get correct mod times. - - Improve floating point support for core files. - - * sunos.c (struct core): Change void *fpa_dummy to double fp_stuff. - (sunos4_core_file_p): Create a second registers section in the - core file, called ".reg2", for the float registers. - -Thu Feb 14 15:49:06 1991 Gumby Vinayak Wallace (gumby at cygint.cygnus.com) - - * many changes to improve archive handling; found a logic flaw in - bfd_check_format which only just happened to work by cooncidence. - -Thu Feb 14 07:53:16 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * bfd.c (bfd_perform_relocation): fixed to use output_offsets - correctly. - - * bfd.h: changed type of udata in asymbol to void *, like it - should be. Added bfd_reloc_dangerous enum member. - - * coff-code.h: Fixed it so that internally generated symbols get - their values relocated correctly in all cases. Removed calls to - xmalloc. - - * icoff.c: Not understanding the destination symbol of a reloc is - not a failure any more, just 'dangerous'. This allows linking of - b.out and coff images. - - * sunos.c: Cleaned up the way that ZMAGIC section sizes are - calculated. - - -Tue Feb 12 13:25:46 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * sunos.c (translate_to_native_sym_flags): fixed - sym_pointer->n_value so that symbols on the way out get their - section relative values calculated correctly. - - * coff-code.h (mangle_symbols): fixed problem where tags were not - being relocated for structs, enums, unions. Also various lints. - -Mon Feb 11 19:52:26 1991 Gumby Vinayak Wallace (gumby at cygint.cygnus.com) - - * archive.c (get_elt_at_filepos): system_call_error returned - incorrectly. - -Sun Feb 10 23:18:40 1991 Gumby Vinayak Wallace (gumby at cygint.cygnus.com) - - * Resolve the use of no_error and system_call_error. - The bfd library itself now will never set bfd_error to - no_error. - - The code still needs to be combed to make sure all the error - codes are correct. I suspect they are not always set correctly. - - * The names of all the messages have _ prepended because the sun - bundled compiler can't distinguish from a macro which takes an - argument and the same identifier in a non-macro context. - - * The reason for the above being that entry points which used to - be trampoline functions are now just macros which expand to a - direct call through the bfd's xfer vector. - - * (../include/intel-coff.h) F_AR32WR: fix this constant. Why - must gas have its own version of everything (the gas version - had the correct value) - -Tue Feb 5 11:46:53 1991 Steve Chamberlain (steve at cygint.cygnus.com) - - * b.out.c: Added patches supplied by chrisb@mipon2.intel.com to - properly support i960 architecture and output correct reloc stuff. - - * bfd.h: added prototype for bfd_printable_arch_mach, added - BFD_FAIL - - * coff-code.h: Applied patches from chrisb to support i960 - architecture, zero relocs and swap them correcly and conditionally - compiled the timestamp. - - * sunos.c: Made the default section alignment 2^3 so that doubles - are done properly. Fixed the same reloc bug that was in b.out.c - - * sysdep.h: Now compiles on a Posix box - -Wed Jan 30 21:36:26 1991 John Gilmore (gnu at cygint.cygnus.com) - - * icoff.c: Fix comment on big-endian version. - * coff-code.h: Make HAS_RELOC really work (it's backwards from - F_RELFLG). Set F_AR32WR in output files if little endian - architecture. - -Tue Jan 29 20:56:10 PST 1991 steve@cygnus.com - - * archures.c fixed =/== typo - - * sunos.c added architecture stuff for output. Fixed - bug where files where vma(data) != size(text) - were processed wrong. - - * coff-code.h added a lint cast - - * (../include/a.out.sun4.h) fixed it so zmagic - worked - -Mon Jan 28 19:15:29 PST 1991 steve@cygnus.com - - * archive.c removed loads of includes, and fixed bug where string - table didn't have a null at the end. - - * bfd.c fixed includes, added symbols argument to - canonicalize_reloc entry point. - - * libbfd.c fixed includes and added some lint patches. - - * targets.c added both sorts of intel coff. - - * b.out.c fixed included, changed was the canonical - relocs were done. - - * icoff.c added support for callj and big and little - enidian tables. - - * opncls.c added chmod+xing for files with EXEC_P set. - - * sunos.c fixed includes. Changed default section - alignement to words. Fixed relocation stuff to work with - new scheme - - * bfd.h various new types added, prototype for new - reloc calls, changed bfd->iostream to a void * - to including files don't need stdio.h. - - * libcoff.h added conversion table to tie relocs to - canonical symbols - - * sysdep.h created - - * coff-code.h fixed includes. Added code to support - big and little endian formats. Various lints. Better - processing of symbols. Changed reloc stuff to new - order - - * libbfd.h fixed includes - - -Mon Jan 21 11:53:51 PST 1991 steve@cygnus.com - - * bfd.h changed name of alignment entry in sec_struct to - alignment_power, because of conflicting uses within bfd. - Now it should be obvious that it's a 2**n alignment - specifier. Removed start_pad, end_alignment, block, minsize, - output_file_alignment, subsection_alignment and original_vma fields. - Added align_power() macro. Fixed bfd_section_alignment - acessor macros. Added bfd_symbol_same_target macro. - - * b.out.c (b_out_write_object_contents) fixed to use - new alignment member. Fixed (callj_callback) to use section - relative symbols properly. - - * sunos.c (sunos4_object_p) fixed to use new alignment_power. - Fixed (translate_from_native_sym_flags) to correctly make - symbols section relative. - - * bfd.c (bfd_errmsg) fixed various enum cast problems. - (bfd_make_section) took out initialization of obsolete members. - (bfd_print_symbol_vandf) added - - * opncls.c (bfd_create) created. - - * coff-code.h (coff_new_section_hook) took away refs - to obsolete members. (make_a_section_from_file) added - conversion between alignment types. (coff_symbol_from) - added. (coff_count_linenumbers) only counts linenumbers - if symbol is of coff-type. (coff_mangle_symbols) only - heavily mangles symbols if symbol is coff-type. - (coff_write_symbols) various lints. (coff_write_object_contents) - various lints and modification for alignment conversion. - (coff_slurp_relocs) fixed for use with new asection shape. - -Sat Jan 19 16:10:42 PST 1991 steve@cygnus.com - - * archive.c lots of lint - - * b.out.c added callj relocation support, upgrated reloc howto. - Fixed so that asymbol and reloc records are output - correctly. - - * bfd.c lots of lint, support for new bfd entry point - bfd_print_symbol. - - * bfd.h changed definition of asymbol to contain pointer to - owning bfd, removed target dependencies. - - * cache.c took out print statements, put in BFD_ASSERT calls. - - * coff-code.h various lints, corrected linenumber output - functionality. Added support for new style asymbols and - bfd_print_symbol. Fixed so that asymbol and - reloc records are handled correctly. Added timestamp. - - * icoff.c Added support for new howto shape. - - * liba.out.h Added support for new asymbol shape - - * libbfd.c various lints - - * libbfd.h various lints - - * libcoff.h added support for new asymbol shape. - - * sunos.c various lints. Added support for new asymbol shape - and bfd_print_symbol. - -Wed Jan 16 21:38:09 PST 1991 steve@cygnus.com - - * b.out.c removed prototype of sunos4_ennativate_symtab, lots of - pointer lint. Added support for callj relocation. Fixed bug where - the last 32 bytes of the text section were overwritten by data. Fixed bug - where archives of b.out didn't work due bfd_slurp_extended_name_table - returning false. - - * sunos.c added support for n_other field. Braced the howto table so - that it won't be affected by any lengthing of the howto struct typedef. - Various lints - - * bfd.h added support for n_other field, added special_function - reloc type, modified bfd_perform_relocation prototype. Added bfd_h_get_x - macros. - - * bfd.c upgraded bfd_perform_relocation, various lints. - -Wed Jan 16 01:55:53 1991 John Gilmore (gnu at rtl) - - * ChangeLog: Started ChangeLog for BFD. - * ToDo: Create file for suggestions. - - * Makefile: Support easy loading into Saber C. - Add dependencies for icoff.o and bcs88kcoff.o. - Rename coff.c to coff-code.h. Change callers. - - * bfd.c (bfd_check_format): Allow the check_format routines - to return the desired target vector, rather than just a Boolean. - bfd.h (bfd_check_format): Change function pointer return type. - archive.c (bfd_generic_archive_p): change callee. - b.out.c (b_out_little_object_p, b_out_big_object_p, - b_out_real_object_p): change callee. - libbfd.c (_bfd_dummy_target): Dummy routine replacing bfd_false - in check_format transfer vectors that need a filler. - libbfd.h (bfd_generic_archive_p, _bfd_dummy_target): Fix decls. - bcs88kcoff.c: change callee. - coff-code.h (coff_real_object_p, coff_big_object_p): change callee. - icoff.c: change callee. - sunos.c (sunos4_object_p, sunos4_core_file_p): change callee. - - * libbfd.c (zalloc): It should actually zero the storage! - This was commented out for some reason. - - * libbfd.h: Add malloc, xmalloc, memcpy, and fatal decls. - This is so callers can avoid <stdlib.h> which doesn't exist - on older systems. - - * bfd.c (map_over_sections): Add debugging code, since I - noticed the section count for sunos core files was bad, but only - GDB had detected the problem. - (bfd_set_section_lineno_size, bfd_set_section_linenos, - bfd_get_section_linenos): Remove obsolete functions. - (bfd_apply_relocations): Use longs, not ints, for the math. - - * bfd.h: Declare enum boolean and struct bfd_target as well - as typedefs for them. Remove obsolete - bfd_get_section_lineno_size. - - * cache.c: Make the "fdopen" support work. Keep better track - of how many files are open. Centralize the opening of files - and be sure bfd_open[rw] actually try to open the file. Evade - linked list initialization problems. - - * b.out.c, coff-code.h, opncls.c, sunos.c: lint. - - * coff-code.h (coff_slurp_symbol_table): Null-terminate symtab names. - - * cplus-dem.c: Delete file, since it is not part of BFD. - - * opncls.c (bfd_openr): Eliminate misplaced #if 0 code. - (bfd_openr, bfd_openw): Actually open the file, give error now. - - * sunos.c (sunos4_core_file_p): Set section count. - (sunos4_set_section_linenos, stab_names, fprint_name): Eliminiate - obsolete definitions. - (_write_symbol_table): Initialize <idx> counter. - (foop): Eliminate debugging code. - -Local Variables: -mode: indented-text -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gnu/usr.bin/binutils/bfd/ChangeLog.2 b/gnu/usr.bin/binutils/bfd/ChangeLog.2 deleted file mode 100644 index a9ae8b04ded..00000000000 --- a/gnu/usr.bin/binutils/bfd/ChangeLog.2 +++ /dev/null @@ -1,8842 +0,0 @@ -Thu Aug 31 16:00:53 1995 steve chamberlain <sac@slash.cygnus.com> - - * Makefile.in: Update dependencies. - * aout-target.h (MY_bfd_print_private_bfd_data): New. - * bfd-in.h (PE STUFF): Deleted. - * bfd.c (tdata->pe_obj_data): New. - (bfd_print_private_bfd_data): New. - * coff-i386.c, coff-arm.c (coff_*-rtype_to_howto): Get image base from - new place. - * libcoff.h, libbfd.h, bfd-in2.h: Rebuilt. - * coffcode.h (pe_value): Delete - (coff_mkobject, coff_mkobject_hook): Conditionally build. - (coff_compute_section_file_positions): Look in new place. - (add_data_entry, fill_pe_header_info): Deleted. - (coff_write_object_contents): Remove PE stuff. - (coff_bfd_print_private_bfd_data): New. - * coffswap.h: Remove PE stuff. - * elfxx-target.h (bfd_elfNN_bfd_print_private_bfd_data): New. - * libbfd-in.h (_bfd_generic_bfd_print_private_bfd_data): New. - * libcoff-in.h (pe_data_type): New. - * libecoff.h (_bfd_ecoff_bfd_print_private_bfd_data): New. - * targets.c (_bfd_print_private_bfd_data): New. - * peicode.h: New file. - -Thu Aug 31 11:49:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * bfd-in.h: Add extern "C" if __cplusplus. - * bfd-in2.h: Rebuild. - - * coff-mips.c (mips_relocate_section): Don't convert a reloc - against an absolute symbol into a reloc against a section. - -Thu Aug 31 08:00:14 1995 steve chamberlain <sac@slash.cygnus.com> - - * coff-arm.c (coff_arm_reloc): Fix common size problem. - (i3coff_object_p): Delete. - -Wed Aug 30 20:41:27 1995 steve chamberlain <sac@slash.cygnus.com> - - * coff-arm.c (deletemeacoff_arm_reloc): Deleted. - (arm26): Not partial inplace. - * coffcode.h (coff_compute_section_file_positions): Don't - do page aligning if COFF_PAGE_SIZE isn't defined. - * coffswap.h (coff_swap_scnhdr_in): Update image base correctly. - -Tue Aug 29 13:50:21 1995 steve chamberlain <sac@slash.cygnus.com> - - * coffcode.h (coff_compute_section_file_positions): - Compile even if COFF_PAGE_SIZE isn't defined. - * cofflink.c (_bfd_coff_generate_reloc_section): Write - base file info as rvas. - * coff-arm.c (coff_rtype_to_howto): Deal with reloc 11. - * coffcode.h (coff_write_object_contents): Remove #if0ed code - Only remove empty sections in PE inmage files. - * libbfd.h, bfd-in2.h: regenerated. - * coff-arm.c (aoutarm_std_relo): New entry at 11. - (arm_reloc_type_lookup) : Understand type 11. - * coff-i386.c (howto_table): fix name of rva type. - (coff-i386_rtype_to_howto): Understand R_IMAGEBASE type. - * coffcode.h (sec_to_styp_flags): .edata is data. - (coff_compute_section_file_positions): Get page size right for PE. - Pagesize info is only valid in PE image files. - (fill_pe_header_info): Fix fields. - (coff_write_object_contents): Remove end_of_image calc. - (_bfd_coff_generate_reloc_section): Remove orphaned comment. - * coffswap.h (coff_swap_scnhdr_in): Don't always add IMAGE_BASE. - Swap in PE header. - (coff_swap_scnhdr_out): Setup PE flags correctly. - * reloc.c (BFD_RELOC_RVA): New field. - -Thu Aug 24 17:49:59 1995 Ian Lance Taylor (ian@cygnus.com) - - * cofflink.c (coff_link_input_bfd): Don't include line numbers for - a section if its output section has no contents. - -Wed Aug 23 16:48:52 1995 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Add parentheses to FIX - expression to avoid compiler bug on HP-UX 9.01. - -Wed Aug 23 09:49:39 1995 Steve Chamberlain <sac@rtl.cygnus.com> - - * coffcode.h (pe_value): Unansify. - -Mon Aug 21 17:49:28 1995 steve chamberlain <sac@slash.cygnus.com> - - * bfd-in.h (bfd_link_subsystem): Turn enum into #defines. - (bfd_link_pe_info_dval): New - (bfd_link_stack_heap): Renamed and massaged into bfd_link_pe_info. - * bfd-in2.h: rebuilt. - * bfd.c (NT_subsystem, NT_stack_heap): Deleted. - * coffcode.h (pe_value): New function. - (fill_pe_header_info): New function. - (coff_write_object_contents): Use new function. - (coff_write_object_contents): Initialze link_data if not set. - * cofflink.c (coff_final_link_info): Remove pe randomness. - (dores_com): Update info in bfd_link_pe_info_dval. - (process_embedded_commands): Use the bfd_link_pe_info_dval. - (_bfd_coff_final_link): Remove PE stuff, initialize - coff_data->link_info. - * coffswap.h (coff_swap_[aout|filehdr]_out): Use indirect PE pointer. - (coff_swap_scnhdr_out): Use real imagebase. - * libcoff-in.h (coff_data_type.link_info): New field. - -Mon Aug 21 11:10:32 1995 Ian Lance Taylor <ian@cygnus.com> - - * linker.c (link_action): If an undefined reference follows an - undefined weak reference, change the type to undefined. - * elflink.h (elf_link_add_archive_symbols): Don't record an - undefined weak reference as defined, in case it turns into a real - undefined reference later in the same archive. - -Thu Aug 17 16:29:09 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com> - - * coff-sh.c (sh_relax_section): Cast value for used_by_bfd field - to PTR, not coff_section_tdata pointer, since PTR is the real type - of the field. - * cofflink.c (_bfd_coff_read_internal_relocs): Ditto. - -Thu Aug 17 14:44:26 1995 Ian Lance Taylor <ian@cygnus.com> - - Add support for linking SPARC SunOS PIC compiled code. - * sunos.c (SPARC_PLT_PIC_WORD0): Define. - (SPARC_PLT_PIC_WORD1, SPARC_PLT_PIC_WORD2): Define. - (struct sunos_link_hash_entry): Add got_offset and plt_offset - fields. - (struct sunos_link_hash_table): Add dynamic_sections_created and - dynamic_sections_needed fields. - (sunos_link_hash_newfunc): Initialize new fields. - (sunos_link_hash_table_create): Initialize new fields. - (sunos_create_dynamic_sections): New static function, broken out - of sunos_add_dynamic_symbols. - (sunos_add_dynamic_symbols): Call sunos_create_dynamic_sections. - (sunos_add_one_symbol): Call sunos_create_dynamic_sections. - (bfd_sunos_size_dynamic_sections): Call sunos_scan_relocs before - checking whether we need to set up the dynamic link information. - Define __GLOBAL_OFFSET_TABLE if anything referred to it. - (sunos_scan_std_relocs): Call sunos_create_dynamic_sections. Use - plt_offset field; only put symbol in .plt if it is not defined by - a regular object. - (sunos_scan_ext_relocs): Likewise. Handle base relative relocs. - (sunos_scan_dynamic_symbol): Store dynobj in local variable. - (sunos_write_dynamic_symbol): Check plt_offset rather than - checking whether symbol is in .plt section. If symbol is defined - in a regular object file, use SPARC_PLT_PIC_WORD[012], and don't - add a JMP_TBL reloc. - (sunos_check_dynamic_reloc): Add contents and relocationp fields. - If plt_offset is set, redirect relocation to PLT. If this is a - base relative reloc, redirect relocation to GOT. Check - dynamic_sections_needed field rather than whether dynobj is set. - (sunos_finish_dynamic_link): Check dynamic_sections_needed field - rather than whether dynobj is set. Don't die if .need and .rules - sections were not created. - * aoutx.h (howto_table_ext): Mark PC10, PC22, and JMP_TBL entries - PC relative. Mark PC10 complain_overflow_dont. Mark PC22 and - JMP_TBL complain_overflow_signed. - (NAME(aout,final_link)): If info->shared is set, set DYNAMIC. - (aout_link_input_section_std): Call check_dynamic_reloc for all - relocs. Pass contents and &relocation. Don't warn about an - undefined symbol until check_dynamic_reloc has been called. Don't - warn about an undefined symbol for a base relative reloc. - (aout_link_input_section_ext): Likewise. For a base relative - reloc, always treat r_index as an index into the symbol table. - * libaout.h (struct aout_backend_data): Add contents and - relocation argument to check_dynamic_reloc entry point. - (struct aoutdata): Add local_got_offsets field. - -Wed Aug 16 01:03:07 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-i386.c (elf_i386_check_relocs): Fix bug in last change. - -Mon Aug 14 11:39:24 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (NAME(aout,machine_type)): Handle a machine of - bfd_mach_sparc or bfd_mach_sparc64. - - * elflink.h (elf_link_add_object_symbols): If a symbol is a weak - definition, add it to the dynamic symbol table if any dynamic - object mentions it. If we do add it, make sure we add the - corresponding real symbol. - (elf_adjust_dynamic_symbol): Adjust a weak defined symbol which we - put in the dynamic symbol table, even if no regular object refers - to it. - * elf32-i386.c (elf_i386_check_relocs): When creating a shared - library, don't allocate space for a PC relative reloc against a - local symbol. - * elf32-m68k.c (elf_m68k_check_relocs): Likewise. - * elf32-sparc.c (elf32_sparc_check_relocs): Likewise. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Change assertion - to accept symbol with weakdef set. - * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): When creating a shared - libary, don't copy over a PC relative reloc against a local - symbol. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - -Sun Aug 13 00:40:58 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.h (R_HPPA_BEGIN_BRTAB): Define. - (R_HPPA_END_BRTAB): Likewise. - * som.c (som_write_fixups): Handle R_BEGIN_BRTAB and R_END_BRTAB. - -Thu Aug 10 15:53:29 1995 Ian Lance Taylor <ian@cygnus.com> - - * coffswap.h (coff_swap_aux_in): Swap the array dimensions - whenever x_fcnary is not being used for something else, rather - than only for an array. - (coff_swap_aux_out): Likewise. - -Tue Aug 8 16:34:57 1995 steve chamberlain <sac@slash.cygnus.com> - - * cofflink.c (_bfd_coff_generic_relocate_section): Remove most - of special case stuff for PE. Now handled by relocs. - * coff-i386.c (coff_i386_reloc): Special case of PE type 7s. - (howto_table): Type 7 is dir32-rva. - -Tue Aug 8 10:15:43 1995 Jeffrey A. Law <law@rtl.cygnus.com> - - * configure.host: Recognize aix4 explicitly. - * rs6000-core.c (CORE_DATA_SIZE_FIELD): New macro to get a the size - of a core dump's data section. Provide alternate definition for aix4. - (SAVE_FIELD): Similarly for save state field (register info). - (STACK_END_ADDR): Provide definition suitable for aix4. - * config/{aix4.mh,aix4.mt}: New configuration files. - * hosts/aix4.h: Likewise. - -Mon Aug 7 23:03:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * som.c (som_bfd_copy_private_symbol_data): Cast initializations - to avoid warnings. - -Mon Aug 7 14:51:08 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_decode_symclass): Handle absolute symbols by checking - the SOM type (since they will rarely if ever be in the absolute - section). - -Wed Aug 6 09:12:50 1995 Doug Evans <dje@canuck.cygnus.com> - - * archures.c (bfd_mach_sparc, bfd_mach_sparc64): Define. - * bfd-in2.h: Regenerated. - * cpu-sparc.c (sparc_arch_info): Renamed from arch_info_struct. - (sparc64_arch_info): New static variable. - (bfd_sparc_arch): Link in sparc64_arch_info. - * elf64-sparc.c (sparc64_elf_xxx): Renamed from elf64_xxx. - (sparc64_elf_object_p): New static function. - (elf_backend_object_p): Define. - * config/sparc64-elf.mt (SELECT_VECS): Add bfd_elf32_sparc_vec. - -Sat Aug 5 00:04:08 1995 Jeff Law (law@snake.cs.utah.edu) - - * som (som_get_reloc_upper_bound): Return -1 on error. Compute - return value with sizeof (arelent *), not sizeof (arelent). - -Wed Aug 2 12:32:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf.c (bfd_section_from_shdr): If the section pointed to by the - sh_link field of a reloc section is not a symbol table, and the - file contains a single symbol table, clobber the sh_link field of - the reloc section to point to the symbol table. - -Tue Aug 1 10:09:01 1995 Doug Evans <dje@canuck.cygnus.com> - - * coff-arm.c (howto reloc ARM26): Change size from 3 to 2. - (howto reloc ARM26D): Likewise. - -Mon Jul 24 14:17:50 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (NAME(aout,find_nearest_line)): Use the line just before - the offset, not the one just after. Break out of the loop after - finding a function past the offset, not merely when finding a - function with a line defined. - - * ecofflink.c (_bfd_ecoff_locate_line): When handling stabs: - correct setting of sym_ptr_end to consider symbols skipped when - setting sym_ptr; don't leave loop early unless an N_FUN is found - with a larger value. - - * coff-sh.c (sh_coff_howtos): Mark R_SH_PCDISP8BY2 and R_SH_PCDISP - as PC relative. Describe R_SH_IMM16. Add entries for - R_SH_SWITCH16, R_SH_SWITCH32, R_SH_USES, R_SH_COUNT, and - R_SH_ALIGN. - (SWAP_IN_RELOC_OFFSET): Define. - (SWAP_OUT_RELOC_OFFSET): Define. - (CALC_ADDEND): Define. - (sh_reloc): Change sym_value and addr to type bfd_vma. Skip reloc - types other than R_SH_IMM32 and R_SH_PCDISP on an external symbol. - (coff_bfd_relax_section): Define. - (coff_bfd_get_relocated_section_contents): Define. - (sh_relax_section): New static function. - (sh_relax_delete_bytes): New static function. - (sh_relocate_section): Handle R_SH_PCDISP on an external symbol. - (sh_coff_get_relocated_section_contents): New static function. - - * cofflink.c (coff_link_add_object_symbols): Call - _bfd_coff_get_external_symbols, not coff_link_get_symbols. Call - _bfd_coff_free_symbols, not coff_link_free_symbols. Call - _bfd_coff_read_string_table, not coff_read_string_table. - (coff_link_check_archive_element): Likewise. - (coff_link_input_bfd): Likewise. - (coff_link_get_symbols): Move to coffgen.c. - (coff_read_string_table): Likewise. - (coff_link_free_symbols): Likewise. - (_bfd_coff_internal_syment_name): New static function. - (coff_link_check_ar_symbols): Use _bfd_coff_internal_syment_name. - (coff_link_add_symbols): Likewise. - (coff_link_input_bfd): Likewise. - (_bfd_coff_generic_relocate_section): Likewise. - (_bfd_coff_read_internal_relocs): New function. - (coff_link_input_bfd): Use cached section contents if available. - Use _bfd_coff_read_internal_relocs. - * coffcode.h (coff_slurp_symbol_table): Don't call bfd_seek. - (coff_bfd_get_relocated_section_contents): Only define if not - already defined. - (coff_bfd_relax_section): Likewise. - * coffgen.c (build_string_table): Remove. - (_bfd_coff_get_external_symbols): New function, moved in from old - coff_link_get_symbols in cofflink.c. - (_bfd_coff_read_string_table): New function, moved in from old - coff_read_string_table in cofflink.c. - (_bfd_coff_free_symbols): New function, moved in frmo old - coff_link_free_symbols in cofflink.c. - (coff_get_normalized_symtab): Use _bfd_coff_get_external_symbols - rather than reading the symbols directly. To free them, call - _bfd_coff_free_symbols. Use _bfd_coff_read_string_table rather - than build_string_table. - * libcoff-in.h (obj_coff_keep_syms): Define. - (obj_coff_keep_strings): Define. - (coff_data_type): Add fields keep_syms and keep_strings. - (coff_section_tdata): Define new structure. - (coff_section_data): Define. - (_bfd_coff_get_external_symbols): Declare. - (_bfd_coff_read_string_table): Declare. - (_bfd_coff_free_symbols): Declare. - (_bfd_coff_read_internal_relocs): Declare. - * libcoff.h: Rebuild. - -Fri Jul 21 22:32:54 1995 Michael Meissner <meissner@cygnus.com> - - * elf32-ppc.c (ppc_elf_howto_raw): Add support for R_PPC_SDAREL - relocation. - (ppc_elf_reloc_type_lookup): Ditto. - (ppc_elf_got16_inner): Ditto. - (ppc_elf_relocate_section): Ditto. - -Thu Jul 20 19:19:06 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (hppa_elf_gen_reloc_type): Add new (ignored) - argument. - * elf32-hppa.h: Corresponding change. - -Thu Jul 20 19:01:07 1995 Ken Raeburn <raeburn@cygnus.com> - - * libaout.h (set_aout_section_data): New macro. - * sunos.c (sunos_scan_relocs): Use it. - - * aout-ns32k.c (MY_swap_std_reloc_out): Undef KEEPIT before - defining it. - -Thu Jul 20 13:48:00 1995 Fred Fish <fnf@cygnus.com> - - * hosts/i386v4.h (getgid, getuid): Change prototypes to be - compatible with Unixware 1.x and Unixware 2.x, and probably other - i386 svr4 versions as well. - -Thu Jul 20 13:41:21 1995 Ken Raeburn <raeburn@cygnus.com> - - * targets.c (bfd_target_vector): Since armpe and armpei have been - split into big- and little-endian variants, list all of them, - instead of the now-nonexistant armpe[i]_vec. - -Thu Jul 20 00:06:39 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf.c (bfd_section_from_phdr): Set lma based on p_paddr. - (elf_fake_sections): Set sh_addr based on lma, not vma. - -Wed Jul 19 15:52:01 1995 Doug Evans <dje@canuck.cygnus.com> - - * coff-arm.c (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Replaces TARGET_SYM. - * configure.in (armpe_vec, armpei_vec): Add bi-endian support. - * configure: "regenerated". - * pe-arm.c (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Replaces TARGET_SYM. - (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Replaces TARGET_NAME. - * pei-arm.c (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Replaces TARGET_SYM. - (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Replaces TARGET_NAME. - * targets.c (armpe_vec, armpei_vec): Deleted. - (armpe_little_vec, armpe_big_vec, armpei_little_vec, armpei_big_vec): - Added. - * config/arm-pe.mt (DEFAULT_VECTOR): Default is armpe_little_vec. - (SELECT_VECS): Add bi-endian support. - -Wed Jul 19 10:47:25 1995 Ian Lance Taylor <ian@cygnus.com> - - * coff-sh.c: Clean up and comment. - (r_imm32): Remove. - (sh_coff_howtos): New static array. - (SH_COFF_HOWTO_COUNT): Define. - (get_symbol_value): Make relocation bfd_vma rather than long. - (RTYPE2HOWTO): Rewrite to use sh_coff_howtos. - (coff_relocate_section): Define to sh_relocate_section. - (sh_relocate_section): New static function. - -Sat Jul 15 01:02:53 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * configure.host: Add support for generic m68k SVR4 host. - -Fri Jul 14 13:13:55 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (KEEPIT): Change definition to udata.i. - (KEEPITTYPE): Remove. - (NAME(aout,reloc_type_lookup)): Add cases to the - extended reloc type switch: SPARC_GOT10, SPARC_GOT13, SPARC_GOT22, - SPARC_PC10, SPARC_PC22, SPARC_WPLT30. - (NAME(aout,swap_std_reloc_out)): Don't bother to use stoi when - retrieving KEEPIT value. - (NAME(aout,swap_ext_reloc_out)): Likewise. Also, only add in - output section VMA for section symbols, and check BSF_SECTION_SYM - to control whether to set r_extern to 1. - - * syms.c: Fix comments so that `make info' works. - - * elf32-mips.c (mips_elf_find_nearest_line): Set SEC_HAS_CONTENTS - in .mdebug section, in case backend linker has cleared it. - -Fri Jul 14 11:58:34 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * elf32-ppc.c (ppc_elf_addr16_ha_inner): Rewrite to take just one - argument, the final relocated address. - (ppc_elf_addr16_ha_inner): Adjust ppc_elf_addr16_ha_inner caller. - (ppc_elf_relocate_section): Ditto. - -Thu Jul 13 17:22:03 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (hppa_som_gen_reloc_type): Choose a reasonable field - selector relocation for the difference of two symbols. - -Thu Jul 13 10:33:25 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (NAME(aout,slurp_reloc_table)): Cast argument to size_t - for malloc. - * coff-mips.c (mips_relocate_section): Likewise, for memmove. - (mips_relax_section): Likewise, for malloc. - * cofflink.c (process_embedded_commands): Likewise. - (_bfd_coff_final_link): Likewise. - * ecoff.c (_bfd_ecoff_write_object_contents): Likewise. - (ecoff_final_link_debug_accumulate): Likewise. - (ecoff_indirect_link_order): Likewise, for memcpy and malloc. - (ecoff_reloc_link_order): Likewise, for malloc. - * ecofflink.c (ecoff_align_debug): Likewise, for memset. - (ecoff_write_symhdr): Likewise, for malloc. - * elf32-hppa.c (elf32_hppa_read_symext_info): Likewise. - * elf.c (assign_file_positions_except_relocs): Likewise, for - qsort. - * elf32-mips.c (mips_elf_read_ecoff_info): Likewise, for malloc. - * elfcode.h (elf_slurp_reloc_table): Likewise. - * elfcore.h (elf_corefile_note): Likewise. - * elflink.h (elf_link_add_object_symbols): Likewise. - (elf_link_read_relocs): Likewise. - (NAME(bfd_elf,size_dynamic_sections)): Likewise, for memset. - * i386linux.c (bfd_linux_size_dynamic_sections): Likewise. - * ieee.c (do_with_relocs): Likewise. - * linker.c (default_indirect_link_order): Likewise, for malloc. - * nlmcode.h (nlm_object_p): Likewise. - (nlm_write_object_contents): Likewise. - * oasys.c (oasys_set_section_contents): Likewise, for memcpy. - * reloc.c (bfd_generic_get_relocated_section_contents): Likewise, - for malloc. - * section.c (bfd_get_section_contents): Likewise, for memcpy. - * srec.c (srec_get_section_contents): Likewise. - (srec_set_section_contents): Likewise. - * sunos.c (bfd_sunos_size_dynamic_sections): Likewise, for - realloc and memset. - (sunos_scan_relocs): Likewise, for malloc. - (sunos_scan_dynamic_symbol): Likewise, for realloc. - * syms.c (_bfd_generic_read_minisymbols): Likewise, for malloc. - * versados.c (versados_get_section_contents): Likewise, for - memcpy. - - * libbfd.c (real_read): Add prototype. Change argument types from - int to size_t. - (bfd_read): Cast real_read argument to size_t, not int. - (bfd_write): Cast fwrite argument to size_t, not int. - - * elf64-gen.c (elf_info_to_howto): Fix definition for recent elf.c - changes. - - * configure.in: Fix typo: change {$enableval} to ${enableval}. - * configure: Rebuild. - - * Makefile.in (BFD32_BACKENDS): Add elflink.o. - - * targets.c (bfd_target): Add fields _read_minisymbols and - _minisymbol_to_symbol. - (BFD_JUMP_TABLE_SYMBOLS): Add _read_minisymbols and - _minisymbol_to_symbol. - (bfd_read_minisymbols): Define. - (bfd_minisymbol_to_symbol): Define. - * syms.c (_bfd_generic_read_minisymbols): Define. - (_bfd_generic_minisymbol_to_symbol): Define. - * libbfd-in.h (_bfd_nosymbols_read_minisymbols): Define. - (_bfd_nosymbols_minisymbol_to_symbol): Define. - (_bfd_generic_read_minisymbols): Declare. - (_bfd_generic_minisymbol_to_symbol): Declare. - * bfd-in2.h: Rebuild. - * libbfd.h: Rebuild. - * aoutx.h (MINISYM_THRESHOLD): Define. - (NAME(aout,read_minisymbols)): New function. - (NAME(aout,minisymbol_to_symbol)): New function. - * libaout.h (NAME(aout,read_minisymbols)): Declare. - (NAME(aout,minisymbol_to_symbol)): Declare. - * aout-target.h (MY_read_minisymbols): Define. - (MY_minisymbol_to_symbol): Define. - * All targets: Define read_minisymbols and minisymbol_to_symbol. - -Wed Jul 12 17:55:55 1995 Ken Raeburn <raeburn@cygnus.com> - - * elflink.h (elf_link_add_object_symbols): Cast return value from - bfd_alloc. - - * elfcode.h (size_info): Don't use "&" before function names. - -Wed Jul 12 00:16:48 1995 Ken Raeburn <raeburn@kr-pc.cygnus.com> - - * libelf.h (elf_backend_data): Use unsigned, not unsigned char, - for bitfields. - -Tue Jul 11 15:19:53 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf.c (bfd_section_from_shdr): In case SHT_REL[A], only get the - BFD section for the sh_link section if it is a SYMTAB section. - - * aoutx.h (NAME(aout,link_add_symbols)): Don't bother to check - that archives hold a.out objects. - * cf-i386lynx.c (coff_bfd_link_add_symbols): Don't define. - (lynx_link_add_symbols): Remove. - * cf-m68klynx.c (coff_bfd_link_add_symbols): Don't define. - (lynx_link_add_symbols): Remove. - * elflink.h (elf_bfd_link_add_symbols): Don't bother to check that - archives hold ELF objects. - - * archive.c (bfd_generic_archive_p): If the archive has a map, and - the target was defaulted, but the first object in the archive can - not be matched with that target, then return a bad format error. - - * elf64-sparc.c (elf_sparc_howto_table): Set howto for WDISP16 to - elf64_wdisp16_reloc. - (elf64_wdisp16_reloc): New static function. - (elf64_sparc_relocate_section): New static function. - (elf_backend_relocate_section): Define. - - * libelf.h (struct elf_size_info): Change type of last argument to - swap_symbol_out from char * to PTR. - (bfd_elf32_swap_symbol_out): Update declaration. - (bfd_elf64_swap_symbol_out): Likewise. - * elfcode.h (elf_swap_symbol_out): Change type of cdst from char * - to PTR. - * elf.c (swap_out_syms): Cast to PTR, not char *, when calling - swap_symbol_out routine. - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Likewise. - (elf_link_output_sym): Likewise. - (elf_link_output_extsym): Likewise. - * elf32-sparc.c (elf32_sparc_finish_dynamic_sections): Likewise. - -Tue Jul 11 12:29:49 1995 Rick Sladkey <jrs@world.std.com> - - * elf.c (_bfd_elf_find_nearest_line): Handle the simple case where - there is no debugging information. - -Mon Jul 10 11:45:55 1995 Ken Raeburn <raeburn@cygnus.com> - - * makefile.dos (OBJS): Add binary.o and tekhex.o. From DJ - Delorie. - -Mon Jul 10 11:09:58 1995 Ian Lance Taylor <ian@cygnus.com> - - * linker.c (set_symbol_from_hash): bfd_link_hash_new case: Don't - abort; it can happen for constructor symbols when not building - constructors. - - * coff-i960.c (coff_i960_relocate): Correct typo: use ! on strcmp, - not on string. - * cofflink.c (_bfd_coff_generic_relocate_section): Remove unused - local i. - * coff-arm.c (coff_arm_rtype_to_howto): Don't declare. - (PCRELOFFSET): Define if not already defined. - * Makefile.in: Rebuild dependencies. - (BFD32_BACKENDS): Add coff-arm.o - (CFILES): Add coff-arm.c, pe-arm.c, pei-arm.c. - - * aoutx.h (NAME(aout,link_hash_table_create)): Allocate hash table - using bfd_alloc, not malloc. - * cofflink.c (_bfd_coff_link_hash_table_create): Likewise. - * ecoff.c (_bfd_ecoff_bfd_link_hash_table_create): Likewise. - * i386linux.c (linux_link_hash_table_create): Likewise. - * linker.c (_bfd_generic_link_hash_table_create): Likewise. - * sunos.c (sunos_link_hash_table_create): Likewise. - - Based on patches from Eric Youngdale <eric@aib.com>: - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): If -Bsymbolic, - output a DT_SYMBOLIC dynamic entry. - (elf_adjust_dynamic_symbol): If -Bsymbolic, don't require a PLT - entry for a locally defined symbol. - * elf32-i386.c (elf_i386_relocate_section): If -Bsymbolic, do warn - about undefined symbols, and fill in the GOT entry for a symbol - defined in a regular object file. - (elf_i386_finish_dynamic_symbol): If -Bsymbolic, output a RELATIVE - reloc rather than a GLOB_DAT reloc for a symbol defined in a - regular object file. - * elf32-m68k.c (elf_m68k_relocate_section): If -Bsymbolic, do warn - about undefined symbols, and fill in the GOT entry for a symbol - defined in a regular object file. - (elf_m68k_finish_dynamic_symbol): If -Bsymbolic, output a RELATIVE - reloc rather than a GLOB_DAT reloc for a symbol defined in a - regular object file. - * elf32-sparc.c (elf32_sparc_relocate_section): If -Bsymbolic, do - warn about undefined symbols, and fill in the GOT entry for a - symbol defined in a regular object file. - (elf32_sparc_finish_dynamic_symbol): If -Bsymbolic, output a - RELATIVE reloc rather than a GLOB_DAT reloc for a symbol defined - in a regular object file. - - * config/m68k-coff.mt (SELECT_VECS): Rename from SELECT_VECTORS. - Correct elements to be actual BFD vector names. - - * Makefile.in (Makefile): Don't depend upon @frags@. - (config.status): Depend upon @frags@. - -Fri Jul 7 17:36:44 1995 Ian Lance Taylor <ian@cygnus.com> - - * coffgen.c (coff_renumber_symbols): Sort defined symbols that are - neither BSF_FUNCTION not BSF_NOT_AT_END just before undefined - symbols. - * coffcode.h (coff_slurp_symbol_table): Set BSF_FUNCTION as well - as BSF_NOT_AT_END. - -Fri Jul 7 17:16:15 1995 Ken Raeburn <raeburn@cygnus.com> - - * Makefile.in (do_mostlyclean): Remove config.log. - (do_distclean): Remove config.cache. - -Thu Jul 6 14:37:43 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-i386.c (elf_i386_relocate_section): Revert May 24 patch. - Don't copy PC32 reloc against section into shared object. - - * Makefile.in: Rebuild dependencies. - (CFILES): Added elflink.c. - (Makefile): Depend upon config.status, not configure.in. - (config.status): New target; depend upon configure configure.host - and config.bfd. - -Wed Jul 5 20:17:14 1995 Ken Raeburn <raeburn@cygnus.com> - - * elfcore.h, elflink.h, elfcode.h, elf.c, elflink.c: Moved some - primarily size-independent code from elfcode.h to elf.c and new - file elflink.c; moved out other core- or linker-related routines - into other new .h files for clarity. Renamed many routines to - start with bfd_elf or _bfd_elf. Added a structure of - size-dependent but target-independent info to elfcode.h. - * Makefile.in: Build elflink.o. Update dependencies. - * libelf.h: Updated some declarations. Added a definition for the - new structure in elfcode.h. Added more fields to elf backend data - structure. - * elfxx-target.h: Refer to the appropriate size-dependent info. - * elf32-*.c: Changed some function names. Moved common - create_dynamic_sections code from m68k, sparc, and i386 support - into elflink.c. Define some new macros to fill in new fields of - back end data. Also clean up some "gcc -Wall" warnings regarding - unused or uninitialized variables. - - * Makefile.in (BFD_LIBS): No, don't put elflink.o here. - * configure.in: Include it here whenever elf.o is specified. - -Wed Jul 5 10:31:47 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-mips.c (mips_elf_object_p): Unconditionally set - elf_bad_symtab, since sometimes the symbol table is messed up and - the last symbol is global. - - * ecoff.c (_bfd_ecoff_bfd_is_local_label): New function. - * libecoff.h (_bfd_ecoff_bfd_is_local_label): Declare. - * elf32-mips.c (mips_elf_is_local_label): New static function. - (bfd_elf32_bfd_is_local_label): Define. - - * configure.in: Use $ac_config_sub, not $configsub. - * configure: Likewise. - - Permit --enable-targets=ieee: - * config.bfd (*-*-ieee*): New target. - * config/ieee.mt: New file. - -Wed Jul 5 04:16:35 1995 Ken Raeburn <raeburn@kr-pc.cygnus.com> - - * config/i386aix.mh (HDEFINES): Remove -DFASCIST_FDOPEN. - - Autoconfiscation: - * configure.in, Makefile.in, doc/Makefile.in: Switch from Cygnus - configure to autoconf ways of processing --enable arguments, - setting up symlinks, incorporating makefile fragments, printing - messages at configuration time, setting variables in Makefile. - Deleted some unused variables. Check for ranlib via autoconf. - For now, configure script removes doc/config.status. - * configure: New file. - * dep-in.sed: Use @SRCDIR@ instead of @srcdir@, so Makefile.in - line doesn't get broken by configure. - * doc/configure.in: Removed. - -Tue Jul 4 12:22:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * archive.c (_bfd_construct_extended_name_table): If - BFD_TRADITIONAL_FORMAT is set, limit the length of all file names - to ar_max_namelen. - (bfd_dont_truncate_arname): If BFD_TRADITIONAL_FORMAT is set, call - bfd_bsd_truncate_arname. - (_bfd_write_archive_contents): Revert June 1 change. - - * elfcode.h (NAME(bfd_elf,record_link_assignment)): Add provide - argument. - * bfd-in.h (bfd_elf32_record_link_assignment): Update prototype. - (bfd_elf64_record_link_assignment): Likewise. - * bfd-in2.h: Rebuild. - - * libelf.h (struct elf_link_hash_table): Add needed field. Remove - saw_needed field. - * elfcode.h (elf_link_add_object_symbols): If elf_dt_needed_name - is an empty string, don't make a DT_NEEDED entry in the output - file. Record all DT_NEEDED entries found in input dynamic - objects. - (elf_link_output_extsym): Don't check saw_needed when issuing - warnings. - * elf.c (_bfd_elf_link_hash_table_init): Initialize needed, not - saw_needed. - (bfd_elf_get_needed_list): New function. - * bfd-in.h (struct bfd_elf_link_needed_list): Define. - (bfd_elf_get_needed_list): Define. - * bfd-in2.h: Rebuild. - - * ecoff.c (_bfd_ecoff_find_nearest_line): Also initialize - find_buffer and fdrtab_len fields of newly allocated - find_line_info structure. - -Mon Jul 3 17:03:52 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (hppa_som_gen_reloc_type): New argument "sym_diff", - nonzero when we're generating relocations for an expression - using the difference of two symbols. All callers changed. - Handle difference of symbols for both R_HPPA and R_COMPLEX - cases. - (som_write_fixups): Handle R_COMP1, R_COMP2 and R_CODE_EXPR - fixups. - -Mon Jul 3 13:55:18 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * config.bfd (win32): New configuration. - * configure.host (pe): Changed to i386win32. - * config/i386pe.mh: Deleted. - * config/i386win32.mh: New file. - -Mon Jul 3 11:30:45 1995 Ian Lance Taylor <ian@cygnus.com> - - * ecoff.c (_bfd_ecoff_find_nearest_line): If we allocate - find_line_info, clear the fdrtab field. - - * targets.c (enum bfd_flavour): Add bfd_target_msdos_flavour here, - rather than in bfd-in2.h. - - * bfd.c (enum bfd_error): Define bfd_error_no_armap. - (bfd_errmsgs): Add string for bfd_error_no_armap. - * bfd-in2.h: Rebuild. - * ecoff.c (ecoff_link_add_archive_symbols): If an archive has no - armap, set bfd_error_no_armap rather than bfd_error_no_symbols. - * elfcode.h (elf_link_add_archive_symbols): Likewise. - * linker.c (_bfd_generic_link_add_archive_symbols): Likewise. - - * elfcode.h (elf_link_add_object_symbols): Permit common and - indirect symbols in weakdefs BFD_ASSERT. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Simplify - BFD_ASSERT to permit some legal, but odd, cases. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise. - - * Makefile.in: Rebuild dependencies. - (BFD32_BACKENDS): Add versados.o. - (CFILES): Add pe-i386.c, pei-i386.c, and versados.c. - -Sun Jul 2 17:49:32 1995 Ian Lance Taylor <ian@cygnus.com> - - * cofflink.c (_bfd_coff_generic_relocate_section): Cast base_file - to FILE * before using it. - * stab-syms.c: Revert yesterday's patch. - -Sat Jul 1 12:10:42 1995 Fred Fish <fnf@cygnus.com> - - * stab-syms.c (stdio.h): Include prior to libaout.h, which - includes bfdlink.h, which now uses FILE. - -Sat Jul 1 00:11:08 1995 Ken Raeburn <raeburn@cygnus.com> - - * elfxx-target.h: New file. - - * libelf.h (struct elf_backend_data): Remove elf_64_p field. - * elfxx-target.h (elfNN_bed): Don't set it. - - * elf32-target.h, elf64-target.h: Deleted. - * Makefile.in (elf32-target.h, elf64-target.h): Build them from - elfxx-target.h. - -Fri Jun 30 16:07:18 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * cofflink.c (_bfd_coff_generic_relocate_section): Compare - the full text of .reloc or .edata section names. - -Fri Jun 30 15:47:37 1995 Fred Fish <fnf@cygnus.com> - - * cofflink.c (_bfd_coff_generic_relocate_section): - Remove extra '+'. - -Thu Jun 29 17:24:52 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * coff-h8300.c (COFF_LONG_FILENAMES): Define. - -Wed Jun 28 18:04:42 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * Makefile.in: versados.o is now conditionally built. - * coffcode.h (add_data_entry): New function. - (coff_write_object_contents): Clean up. Calculate - data entries. - * cofflink.c (_bfd_coff_generic_relocate_section): - .reloc and .edata sections are IMAGE_BASED too. - If there's a base_file then write out base information. - * configure.host (i386-*-pe): New. - * syms.c (coff_section_type): Only scan prefixes. - * targets.c (bfd_target_vector): Versados is now conditionally - built. - * config/m68k-coff.mt: Build versados.o - * hosts/i386pe.h: New file. - -Mon Jun 26 13:53:49 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hpa.c (elf32_hppa_relocate_section): Close comment before - R_PARISC_DPREL21L handling. - -Thu Jun 22 19:28:36 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - Sun May 7 11:53:41 MDT 1995 Bryan Ford <baford@cs.utah.edu> - - * config/i386-moss.mt: created. - -Thu Jun 22 08:56:10 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * reloc.c (bfd_perform_relocation): Add case for -ve words. - -Wed Jun 21 13:13:49 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_relocate_section): Don't try to apply a - relocation against an undefined symbols. - -Wed Jun 21 10:16:10 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * versados.c: Second pass/rewrite. - -Mon Jun 19 08:40:45 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * syms.c (coff_section_type): Compare only the front part - of a section name. - -Sat Jun 17 09:40:44 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_size_stubs): Set the size of the stub - section if we get an error. - - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Don't mess - with the operands of an R_PARISC_DPREL21L relocation if the insn - is not "addil <symbol>,%r27". - -Fri Jun 16 15:04:47 1995 Stan Shebs <shebs@andros.cygnus.com> - - * bfd-in.h (NT_subsystem, NT_stack_heap): Declare but don't - define. - * bfd-in2.h: Rebuilt. - * bfd.c (NT_subsystem, NT_stack_heap): Define. - -Fri Jun 16 00:07:25 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_bfd_link_link_relocate): Use the right - type field (there are two!) when checking to see if $global$ is - defined. - -Thu Jun 15 14:03:47 1995 Stan Shebs <shebs@andros.cygnus.com> - - * bfd-in.h, bfd-in2.h (bfd_boolean): Rename bfd_true, bfd_false - to bfd_tttrue, bfd_fffalse so as not to conflict with functions. - * coffswap.h (coff_swap_scnhdr_out): Remove version that was - hacked for MPW C. - * mpw-config.in: Set shell vars instead of pasting to makefile - for each configuration, edit coffswap.h to make MPW C not choke. - (i386-unknown-coff, sh-hitachi-hms): Recognize. - * mpw-make.in (BFD_LIBS): Add versados.c.o. - - * versados.c (versados_scan): Properly cast results from bfd_alloc. - -Wed Jun 14 15:27:32 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * cofflink.c (process_embedded_commands): New function - reads and handles .drectve sections for PE. - (coff_link_input_bfd): Call new function if PE. - -Mon Jun 12 12:09:39 1995 Jeff Law (law@snake.cs.utah.edu) - - * bfd-in.h (bfd_set_section_vma): Case true to a boolean. - (bfd_set_cacheable): Likewise. - * bfd-in2.h: Rebuilt. - -Fri Jun 9 12:20:28 1995 Steve Chamberlain <sac@rtl.cygnus.com> - - * elfcode.h (elf_sort_hdrs): Rewrite to be symmetrical. - -Fri Jun 9 12:49:00 1995 Jeff Law (law@snake.cs.utah.edu) - - * targets.c: Add copy_private_symbol_data and link_split_section - to the target vector. - * libbfd-in.h (_bfd_generic_bfd_copy_private_symbol_data): Define. - (_bfd_nolink_bfd_link_split_section): Likewise. - (bfd_generic_link_split_section): Declare. - * syms.c (bfd_copy_private_symbol_data): Define. - * linker.c (bf_link_split_section): Likewise. - * som.c (som_bfd_copy_private_symbol_data): New function - (som_bfd_link_split_section): Likewise. - * All other targets updated with default versions of new routines. - - * Take out my braindamaged bfd_true/bfd_false changes from earlier - today. Replace with just: - * bfd-in.h: (TRUE_FALSE_ALREADY_DEFINED): Define this if - compiling with g++-2.6 or later. - * bfd-in2.h: Rebuilt. - -Fri Jun 9 07:54:29 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * versados.c (struct esd, get_4): Lint; use unsigned chars. - - * coff-i960.c (coff_i960_relocate): Compare output section names - when converting for vxworks. - -Wed Jun 7 19:01:30 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * elfcode.h (elf_fake_sections): Permit .scommon or COMMON - sections as random SHT_NOBITS sections, in case a linker script is - strange. - -Tue Jun 6 17:29:32 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * bfd-in.h (NT_subsystem, NT_stack_heap): Moved from pe.h - * coff-i386.c (coff_i386_rtype_to_howto): Get PE relocs right. - * coffcode.h (coff_mkobject): Set pe tdata bit when using PE. - * cofflink.c (COFF_WITH_PE code): Test on obj_pe bit rather - than conditional compile. - * configure.in: Fix PE dependencies. - * libcoff-in.h (obj_pe): New. - (coff_tdata): Added pe entry. - * libcoff.h: Regenerated. - -Mon Jun 5 09:07:13 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * coff-a29k.c (coff_a29k_adjust_symndx): Completely parenthesize - macro. - -Mon Jun 5 02:15:20 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com> - - Linker support for m68k-elf from Andreas Schwab - <schwab@issan.informatik.uni-dortmund.de>: - * elfcode.h (elf_link_add_object_symbols): Check for NULL when - looping through the symbol hashes. - (elf_bfd_final_link): When looking for _init and _fini don't use - the symbol if it is imported from another object. - * elf32-m68k.c: Relocation type changed from REL to RELA. Regular - and dynamic linking support functions added, similar to other elf - targets. - - * config.bfd (i[345]86-*-gnu*): Use ELF configuration. - -Fri Jun 2 18:54:59 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * versados.c: New file. - * bfd-in2.h (struct _bfd): New field. - * bfd.c (struct _bfd): New field. - * configure.in (versados_vec): New field. - * targets.c (bfd_flavor): Added versados. - -Thu Jun 1 13:51:49 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * coffcode.h (sec_to_styp_flags, styp_to_sec_flags, - coff_new_section_hook): Any section that starts ".stab" - is now marked as debugging. - -Thu Jun 1 16:15:16 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * archive.c (_bfd_write_archive_contents): Disable extended name - table until it can be made optional, so that native AR has half a - chance on SunOS and HP/UX. - - * linker.c (_bfd_generic_link_output_symbols, case - bfd_link_hash_indirect): Add cast to correct pointer types. - -Sat May 27 21:37:31 1995 J.T. Conklin <jtc@rtl.cygnus.com> - - * config.bfd (m68k-bull-sysv*): Added strip_underscore=yes. - (m68k-est-coff): Removed. target does not effect object format. - -Wed May 24 10:52:01 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * linker.c (_bfd_generic_link_output_symbols): Cope with - indirect symbols. - - * elf32-i386.c (elf_i386_relocate_section): Give error - message when linking to a shared reloc which isn't there. - -Wed May 24 10:40:00 1995 Steve Chamberlain <sac@slash.cygnus.com> - - Support for ARM-PE. - - * Makefile.in, coffcode.h, config.bfd, configure.in, pe-arm.c, - pei-arm.c, coff-arm.c, reloc.c, targets.c, config/arm-pe.mt: - Support for ARM COFF/PE. - -Tue May 23 19:24:58 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * bfd.c (bfd_get_relocated_section_contents): Now a function, - tries calling routine from input bfd target vector for - bfd_indirect_link_order. Put a declaration into the header file. - * bfd-in2.h: Regenerated. - * elf32-mips.c (gprel16_with_gp): New function, split out from - mips_elf_gprel16_reloc. - (mips_elf_gprel16_reloc): Call it. If output bfd target vector - isn't elf flavoured, abort, since it's assumed to be elf in some - of this code, including the code that looks up the gp value. - (elf32_mips_get_relocated_section_contents): New function, - modified from bfd_generic_get_relocated_section_contents to deal - with passing gp to gprel16_with_gp. - (bfd_elf32_bfd_get_relocated_section_contents): New macro. - * elf32-target.h (bfd_elf32_bfd_get_relocated_section_contents): - Don't define if already defined. - -Tue May 23 15:58:15 1995 Jeff Law (law@snake.cs.utah.edu) - - * Makefile.in: Install bfdlink.h too. - -Sun May 21 22:25:09 1995 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_relocate_section): Handle undefined and - notsupported return codes from final_link_relocate (used when - $global$ is undefined or nonexistant). - (elf32_hppa_bfd_link_link_relocate): If $global$ exists, but is - not defined,then return bfd_reloc_undefined. - -Fri May 19 10:00:14 1995 Steve Chamberlain <sac@rtl.cygnus.com> - - * coffswap.h: (IMAGE_BASE): Define to 0 if not. - -Thu May 18 04:24:01 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com> - - Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * aoutx.h (aout_link_input_section_standard): If defined, call - MY_relocatable_reloc before doing a partial relocation. - - * aout-arm.c: (WRITE_HEADERS): Delete. - (NAME): Define version to override default in aoutx.h - (MY(howto_table)): Reformat. Alter some entries slightly. - (RELOC_ARM_BITS_NEG_{BIG,LITTLE}): Define. - (MY(reloc_howto), MY(put_reloc), MY(relocatable_reloc)): New functions. - (MY_reloc_howto, MY_put_reloc, MY_relocatable_reloc): Define. - (MY(fix_pcrel_26)): Renamed from aoutarm_fix_pcrel_26, return - bfd_reloc_ok not bfd_reloc_continue. - (MY(fix_pcrel_26_done)): Likewise. - (MY(bfd_reloc_type_lookup)): Renamed from aoutarm_reloc_type_lookup. - (MY_bfd_link_hash_table_create, MY_bfd_link_add_symbols, - MY_bfd_final_link): Delete. - (MY_swap_std_reloc_in, MY_swap_std_reloc_out, MY_get_section_contents): - Define. - (aoutx.h): Include it. - (MY(swap_std_reloc_{in,out})): New functions. - Use RELOC_ARM_BITS_NEG_{BIG,LITTLE} to extract negative reloc bit. - (aoutarm_squirt_out_relocs): Delete. - - From: David Taylor (dtaylor@armltd.co.uk) - * config/arm[lb]-aout.mt: New files. - * aout-arm.c: New file. - * config.bfd: Handle arm{,e[lb]}-*-aout - * configure.in: Add vetor for aout_arm_{big,little}_vec. - * reloc.c: New relocation types for the ARM. - * targets.c (aout_arm_{big,little}_vec): declare. - -Tue May 16 10:29:51 1995 Jim Kingdon <kingdon@deneb.cygnus.com> - - * libbfd.c (bfd_stat): If bfd_cache_lookup returns an error, - return an error to the caller. Call bfd_set_error on errors. - -Tue May 16 14:44:45 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * libcoff-in.h (coff_renumber_symbols): Modified prototypes in - accordance with 11 May libcoff.h change. - -Thu May 11 16:43:14 1995 Steve Chamberlain <sac@slash.cygnus.com> - - tekhex.c (first_phase): Understand type 0 symbols. - (tekhex_write_object_contents): Fix typo in final record. - -Thu May 11 16:43:14 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * coff-i960.c (optcall_callback): don't try and optimize - undefined refs. - (coff_write_relocs): Search for broken relocs on the way - out and fix them up. - (coff_renumber_symbols): Calculate and return index of - first undefined symbol. - (coff_write_object_contents): Call coff_renumber_symbols - and coff_write_relocs with the new args. - * libcoff.h: (coff_renumber_symbols, coff_renumber_symbols): - Modified prototypes. - -Thu May 11 16:43:14 1995 Steve Chamberlain <sac@slash.cygnus.com> - Tom Griest <griest@cs.yale.edu> - - Initial support for PE format. - - * Makefile.in, targets.c, configure.in, config.bfd: - Add support for i386-*-winnt and i386-*-pe. - * archive.c (do_slurp_coff_armap): Understand NTPE format - archives. - (_bfd_slurp_extended_name_table): Turn \ in a filename - into /. - * bfd-in.h (bfd_link_subsystem, _bfd_link_stack_heap): New. - * coff-i386.c (howto_table): Conditionalize PCRELOFFSET. - * coffcode.h (IMAGE_BASE): New. - (coff_compute_section_file_positions): Throw away .junk - sections for PE, align symbols. - (coff_write_object_contents): Throw away .junk sections - for PE. Remember info on .idata and .rsrc sections. - Fill in the PE header. - (coff_slurp_symbol_table): PE uses C_SECTION class. - * cofflink.c (_bfd_coff_final_link): Keep PE info up to date. - (_bfd_coff_generic_relocate_section): Cope with PE relocs. - * coffswap.h (coff_swap_{aout/file/scn/sym}hdr_{in/out}): - New code for PE headers. - -Tue May 9 17:01:38 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * config.bfd: Add little endian PowerPC support. - * configure.in: Ditto. - * targets.c: Ditto. - * config/ppcle-elf.mt: New file, for little endian PowerPC - support. - * config/ppc-elf.mt: Add little endian powerpc to the BFD - selection vectors. - * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Complain if - linking a different endian object than we expect. - (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define, to provide little - endian support. - -Tue May 2 16:32:24 1995 Jeff Law (law@snake.cs.utah.edu) - - * config.bfd (hppa*-*-lites*): Treat just like hppa*-*-*elf*. - -Tue Apr 25 19:38:43 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * coffgen.c (make_a_section_from_file): Initialize lma same as - vma. - -Tue Apr 25 11:03:21 1995 Jason Molenda (crash@phydeaux.cygnus.com) - - * hosts/std-host.h: #include ansidecl.h 'cause PTR is used in - std-host.h. - -Mon Apr 24 23:56:44 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * hosts/i386linux.h (HAVE_PROCFS): Don't define it. Added lengthy - comment explaining why. - -Mon Apr 24 10:34:02 1995 Michael Meissner <meissner@cygnus.com> - - * hosts/i386linux.h (HAVE_PROCFS): If NO_PROCFS is defined, don't - define HAVE_PROCFS. - -Mon Apr 24 08:33:12 1995 Michael Meissner <meissner@cygnus.com> - - * elf32-ppc.c (ppc_elf_relocate_section): Do not continue - processing unknown symbols to prevent a cascade of errors. - -Fri Apr 21 12:48:48 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - Patches from H.J. Lu for Linux ELF core file support. - * elfcode.h (elf_core_file_matches_executable_p) [HAVE_PROCFS]: - Use prpsinfo_t instead of struct prpsinfo, for consistency. - * hosts/i386linux.h (HAVE_PROCFS): Define. - -Thu Apr 20 09:07:39 1995 Steve Chamberlain <sac@slash.cygnus.com> - - * linker.c (link_action): Do the right thing when a undefined - strong symbol appears after an undefined weak symbol. - -Fri Apr 14 16:51:17 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * elf32-ppc.c (ppc_elf_relocate_section): New function to relocate - a whole section for the linker, bypassing bfd_perform_relocation. - (ppc_elf_reloc_type_lookup): New function to map the BFD - enumeration code into a howto structure. - (ppc_elf_howto_raw): Rename from ppc_elf_howto_table. - (ppc_elf_howto_table): New array that maps PowerPC relocation - numbers to howto structures without a linear search. Change from - using bfd_elf_generic_reloc to use ppc_elf_std_reloc. - (ppc_elf_howto_init): Initialize ppc_elf_howto_table from - ppc_elf_howto_raw. - (ppc_elf_reloc_type_lookup): Use a case statement instead of a - loop. - (ppc_elf_std_reloc): Replacement for bfd_elf_generic_reloc. - (ppc_elf_unsupported_reloc): Print a real error message, instead - of calling abort. - (ppc_elf_addr16_ha_inner): Abstract getting adjustment from - ppc_elf_addr16_ha_reloc, so ppc_elf_relocate_section can use it - too. - (ppc_elf_addr16_ha_reloc): Call it. - (ppc_elf_got16_inner): Abstract getting adjustment from - ppc_elf_got16_reloc, so ppc_elf_relocate_section can use it too. - (ppc_elf_got16_reloc): Call it. - (ppc_elf_info_to_howto): Rename from powerpc_info_to_howto. - - * elfcode.h (elf_symbol_from_bfd_symbol): Omit space in debugging - output. - (elf_symbol_flags): Add debug function to decode flags so that - defining DEBUG to be 4 will compile again. - (elf_debug_section): Fix typo in debug output. - -Fri Apr 14 16:03:04 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * config.bfd: Add m68*-*-elf*. - * elf32-m68k.c: Filled out implementation, except for dynamic - linking support. - * reloc.c (enum bfd_reloc_code_real): Added *_GOT_PCREL, *_GOTOFF, - *_PLT_PCREL, *_PLTOFF, *_68K_* relocations for ELF. - * libbfd.h, bfd-in2.h: Regenerated. - -Thu Apr 13 14:28:04 1995 Torbjorn Granlund <tege@adder.cygnus.com> - - * coff-m68k.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Change from - 1 to 2. - (bfd_target): Change minimum section alignment from 1 to 2. - -Wed Apr 12 12:40:04 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * aoutx.h (machine_type, case bfd_arch_mips): Treat R8000 like - R6000 and R4000 for now. - -Tue Apr 4 12:28:25 1995 Stan Shebs <shebs@andros.cygnus.com> - - * mpw-config.in: New file, MPW version of configure.in. - * mpw-make.in: New file, MPW version of Makefile.in. - * hosts/mpw.h: New file, MPW host definitions. - * ecoffswap.h (ecoff_swap_pdr_in, ecoff_swap_pdr_in) [MPW_C]: - Alternate versions without ECOFF_64 that chokes MPW C. - * coffswap.h (coff_swap_scnhdr_out): Add alternative version with - partly-expanded macros. - -Thu Mar 30 14:56:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * reloc.c (bfd_perform_relocation): Don't bother to check for - overflow if the symbol is undefined. - -Thu Mar 30 14:32:26 1995 H.J. Lu (hjl@nynexst.com) - - * config.bfd: Change linux to default to elf. Using - i[345]86-*-linuxaout will build a library which defaults to a.out. - * config/i386-laout.mt: Rename from old config/i386-linux.mt. - * config/i386-linux.mt: Rename from old config/i386-lelf.mt. - Comment out EXTRALIBS. - * config/i386-lelf.mt: Remove. - -Wed Mar 29 12:01:30 1995 Ian Lance Taylor <ian@cygnus.com> - - * coff-i960.c (coff_i960_relocate): Cache the section symbol in - the used_by_bfd field of the section, to avoid looping for each - reloc. - - * cpu-h8500.c (arch_info_struct): Change name from "H8/300" to - "h8300" for consistency with other cpu-* files. - -Tue Mar 28 15:14:11 1995 Ian Lance Taylor <ian@cygnus.com> - - * bout.c (b_out_canonicalize_reloc): Handle SEC_CONSTRUCTOR - sections. - (b_out_get_reloc_upper_bound): Likewise. - - * linker.c (generic_link_add_symbol_list): Skip constructor - symbols which the main linker code did not do anything with. - (_bfd_generic_link_output_symbols): Use udata.p if it is set, - rather than looking the symbol up in the hash table. Just pass - through constructor symbols for which udata.p is not set. If the - linker defined the symbol, clear the constructor flag. - -Tue Mar 21 10:50:32 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_set_reloc_info): Sign extend constants from - R_DATA_OVERRIDE fixups. - * libhppa.h (sign_extend): Renamed from sign_ext. Fix. - (low_sign_extend): Likewise. - -Mon Mar 20 22:39:10 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_slurp_symbol_table): Tighten test to determine - what symbols are section symbols. - -Sat Mar 18 01:54:45 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (elf_bfd_link_add_symbols): An empty archive is OK. - -Fri Mar 17 16:29:02 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_copy_private_section_data): Just return true when - either the input or output section isn't attached to a SOM BFD. - (som_bfd_copy_private_bfd_data): Similarly for BFD private data. - -Fri Mar 17 11:50:34 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (elf_link_add_object_symbols): Check whether a dynamic - object has already been included, and ignore it the second time. - -Wed Mar 15 11:56:40 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-sparc.c (elf_sparc_howto_table): Change R_SPARC_GOT13 from - complain_overflow_bitfield to complain_overflow_signed. - - * libelf.h (bfd_elf32__write_relocs): Don't declare. - (bfd_elf64__write_relocs): Don't declare. - -Tue Mar 14 05:54:33 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * stab-syms.c (aout_stab_name): Moved aout_stab_names to be local - to this function. Recoded function to stop using table, to - improve performance (on i486-netbsd host). Left old version - intact under "#if 0" for further performance testing. - -Mon Mar 13 13:48:49 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (write_relocs): Make static. Use PTR argument as a - pointer to a boolean variable set to true if something fails. - Cast to PTR rather than void *. - (sym_is_global): Rewrite for clarity. - (map_program_segments): If the program header size is too small, - call _bfd_error_handler and return failure rather than aborting. - (NAME(bfd_elf,write_object_contents)): Pass boolean variable when - calling write_relocs. - (elf_symbol_from_bfd_symbol): Use BFD_ASSERT rather than abort. - (struct elf_info_failed): Define. - (NAME(bfd_elf,size_dynamic_sections)): Declare variables in inner - blocks. Pass elf_info_failed structure when calling - elf_export_symbol and elf_adjust_dynamic_symbol. - (elf_export_symbol): Treat data argument as elf_info_failed rather - than bfd_link_info. Set failed field on error. - (elf_adjust_dynamic_symbol): Likewise. - (struct elf_finfo_failed): Define. - (elf_bfd_final_link): Pass elf_finfo_failed structure when calling - elf_link_output_extsym. Use BFD_ASSERT rather than abort. - (elf_link_output_extsym): Treat data argument as elf_finfo_failed - rather than elf_final_link_info. Set failed field on error. - (elf_link_input_bfd): Use BFD_ASSERT rather than abort. - (elf_reloc_link_order): Likewise. - - * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Only write - out PLTRELSZ, PLTREL and JMPREL relocs if there is a .rela.plt - section. Solaris 2.4 apparently does not handle empty reloc - information correctly. - - * archive.c (bsd_write_armap): Cast getuid and getgid results to - long, and print with %ld. - - -Fri Mar 10 16:41:05 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (translate_to_native_sym_flags): Always use the output - section if it is not NULL. - -Thu Mar 9 15:06:25 1995 Ian Lance Taylor <ian@cygnus.com> - - * coffswap.h (coff_swap_scnhdr_out): If the line number count or - the reloc count does not fit, print an error and return 0. - * coffcode.h (coff_write_object_contents): Check return value of - coff_swap_scnhdr_out. - * ecoff.c (_bfd_ecoff_write_object_contents): Check return value - of bfd_coff_swap_scnhdr_out. - - * bfd.c: Include <stdarg.h> or <varargs.h>, depending upon - ANSI_PROTOTYPES. - (bfd_error_handler_type): New global type. - (_bfd_error_program_name): New static variable. - (_bfd_default_error_handler): New static function. - (_bfd_error_handler): New BFD private global variable. - (bfd_set_error_handler): New globally visible function. - (bfd_set_error_program_name): New globally visible function. - * libbfd-in.h (_bfd_error_handler): Declare. - * bfd-in2.h, libbfd.h: Rebuild. - - * aoutx.h (NAME(aout,swap_ext_reloc_in)): Add symcount parameter, - and use it instead of bfd_get_symcount. Check r_index after - setting r_extern based on whether this is a base relative reloc. - (NAME(aout,swap_std_reloc_IN)): Add symcount parameter, and use it - instead of bfd_get_symcount. - (NAME(aout,slurp_reloc_table)): Pass bfd_get_symcount to reloc - swap routines. - * libaout.h (NAME(aout,swap_ext_reloc_in)): Add symcount parameter - to declaration. - (NAME(aout,swap_std_reloc_in)): Likewise. - * sunos.c (sunos_canonicalize_dynamic_reloc): Pass - info->dynsym_count to reloc swap routines. - * aout-ns32k.c (MY_swap_std_reloc_in): Add symcount parameter. - * hp300hpux.c (MY(swap_std_reloc_in)): Likewise. - (MY(slurp_reloc_table)): Pass bfd_get_symcount to reloc swap - routine. - * i386lynx.c (NAME(lynx,swap_ext_reloc_in)): Add symcount - parameter. - (NAME(lynx,swap_std_reloc_in)): Likewise. - (NAME(lynx,slurp_reloc_table)): Pass bfd_get_symcount to reloc - swap routines. - -Thu Mar 9 12:04:05 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * bfd.c (bfd_merge_private_bfd_data): New function vector to be - called by the linker to merge any private bfd data of the input - files and the output file. Used by the PowerPC ELF support to - check whether -mrelocatable is used for all modules. - (bfd_set_private_flags): New function vector to be called by the - assembler to set private flags. Used by the PowerPC ELF support - to set that a particular object file was assembled with the - -mrelocatable option. - - * targets.c (BFD_JUMP_TABLE_COPY): Add intiialization of the - bfd_merge_private_bfd_data and bfd_set_private_flags function - vectors. - - * bfd-in2.h, libbfd-in.h: Rebuild with bfd.c and targets.c - changes. - - * elf32-ppc.c (ppc_elf_set_private_flags): New function to set the - ELF e_flags field. - (ppc_elf_copy_private_bfd_data): Copy the e_flags field from the - input file to the output file. - (ppc_elf_merge_private_bfd_data): Check for a mismatch between the - e_flags field of all of the linker input files. - - * libelf.h (elf_obj_tdata): Add ppc_flags_init field so that the - PowerPC support can check if compataible e_flags are present. - - * aout-target.h: Add NOP for the bfd_merge_private_bfd_data - and bfd_set_private_flags function vectors. - * coffcode.h: Ditto. - * elf32-target.h: Ditto. - * elf64-target.h: Ditto. - * libbfd.h: Ditto. - * libecoff.h: Ditto. - * som.c: Ditto. - -Wed Mar 8 00:53:54 1995 Ian Lance Taylor <ian@cygnus.com> - - * cpu-mips.c (arch_info_struct): Add mips:8000 entry. - - * elfcode.h (swap_out_syms): Mark an undefined BSF_WEAK symbol as - STB_WEAK rather than STB_GLOBAL. - - -Tue Mar 7 12:23:47 1995 Ian Lance Taylor <ian@cygnus.com> - - * coffcode.h (bfd_coff_backend_data): Add new field - _bfd_coff_adjust_symndx. - (bfd_coff_adjust_symndx): Define. - (coff_adjust_symndx): Define as NULL if not already defined. - (bfd_coff_std_swap_table): Initialize new field to - coff_adjust_symndx. - * cofflink.c (coff_link_input_bfd): Call coff_adjust_symndx if it - is defined. - * coff-a29k.c (coff_a29k_adjust_symndx): New static function. - (coff_adjust_symndx): Define before including coffcode.h. - * libcoff.h: Rebuild. - - * format.c (bfd_check_format_matches): Skip binary_vec when - searching through bfd_target_vector. - - * elfcode.h (elf_sort_hdrs): Check SHT_NOBITS before checking - sh_size. - -Mon Mar 6 23:31:36 1995 Doug Evans <dje@chestnut.cygnus.com> - - * elfcode.h (elf_sort_hdrs): Keep SHT_NOBITS sections after - !SHT_NOBITS ones. - -Mon Mar 6 09:53:08 1995 Jeff Law (law@snake.cs.utah.edu) - - * cpu-hppa.c (arch_info_struct): Support both PA1.0 and PA1.1 - machine types. - (bfd_hppa_arch): Link in both PA1.0 and PA1.1 architecture info - structures. - * libhppa.h (enum pa_arch): New enumeration to describe the - different variants of the PA architecture. - * som.c (som_object_setup): Use new enumeration to set machine - type. - (som_finish_writing): If the machine type is PA1.1, then use the - PA1.1 machine identifier in the output file. - -Thu Mar 2 15:58:24 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (NAME(aout,swap_ext_reloc_in)): Treat the index of a - base relative reloc as an index into the symbol table, regardless - of the setting of r_extern. - (NAME(aout,swap_std_reloc_in)): Likewise. - - * aoutx.h (NAME(aout,set_section_contents)): Double check that the - caller is writing to a valid section. - -Thu Mar 2 14:37:57 1995 Bryan Ford <baford@cs.utah.edu> - - * binary.c: Add support for reading binary files. Loads the raw - contents of the file into a data section and wraps some symbols - around it. The symbols `_binary_<filename>_start' and - `_binary_<filename>_end' indicate the start and end of the data, - while `_binary_<filename>_size' is an absolute symbol whose value - is the size of the data. <filename> is the name of the binary - input file, with all non-alphanumeric characters converted to - underscores. - - * archures.c (bfd_arch_get_compatible): Assume users knows what - they're doing if one of the architectures is bfd_arch_unknown. - -Wed Mar 1 17:30:46 1995 Michael Meissner <meissner@cygnus.com> - - * elf32-ppc.c (elf_powerpc_howto_table): For relocation - R_PPC_GOT16, change complain_on_overflow to be - complain_overflow_signed. - -Wed Mar 1 11:52:55 1995 Jason Molenda <crash@phydeaux.cygnus.com> - - * configure.host: Recognize powerpc-*-aix*. - -Wed Mar 1 11:57:39 1995 Ian Lance Taylor <ian@cygnus.com> - - * coff-i960.c (COFF_PAGE_SIZE): Define. - - * configure.in: Rewrite output of TDEFAULTS to avoid relying on - semantics of single quotes in parameter substitution. - -Tue Feb 28 12:53:09 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (elf_sort_hdrs): Sort empty sections before non-empty - sections, if they have the same VMA. - - * config.bfd (i[345]86-*-linuxelf*): New target. Use i386-lelf. - (i[345]86-*-gnuelf*): New target. Use i386-gelf. - * config/i386-lelf.mt: New file. - * config/i386-gelf.mt: New file. - -Mon Feb 27 12:58:25 1995 Kung Hsu <kung@mexican.cygnus.com> - - * config.bfd: add a29k-*-vxworks configuration. - -Wed Feb 22 14:40:26 1995 Ian Lance Taylor <ian@cygnus.com> - - * libaout.h (NAME(aout,slurp_reloc_table)): Change declaration to - use reloc_howto_type rather than const struct reloc_howto_struct. - -Tue Feb 21 18:19:22 1995 Ian Lance Taylor <ian@cygnus.com> - - * bout.c (b_out_slurp_reloc_table): Don't return an error if asked - for relocations for the .bss section. - -Tue Feb 21 15:13:05 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_ar_write_symbol_stuff): Handle objects with odd - lengths. - -Fri Feb 17 12:34:36 1995 Michael Meissner <meissner@cygnus.com> - - * elf32-ppc.c (ppc_elf_got16_reloc): Make GOT style relocs add - 32768, so the GOT pointer can point to 16384 pointers, instead of - 8192. - -Fri Feb 17 11:45:38 1995 Ian Lance Taylor <ian@cygnus.com> - - * hosts/sysv4.h: Include <unistd.h>, <stdlib.h>, and <time.h>. - Only define SEEK_SET and SEEK_CUR if they are not already defined. - Remove all external function declarations. - - * syms.c (bfd_decode_symclass): Return 'W' for a weak symbol. - - * coffgen.c (coff_real_object_p): Set start address and flags - before calling coff_mkobject_hook. Restore them on failure. - * ecoff.c (_bfd_ecoff_mkobject_hook): If not ECOFF_AOUT_ZMAGIC, - clear D_PAGED. - - * coffgen.c: Reindented. - -Thu Feb 16 14:37:23 1995 Doug Evans <dje@cygnus.com> - - * reloc.c (bfd_perform_relocation): Don't use bitpos in overflow - calculations. - (bfd_install_relocation): Likewise. - -Thu Feb 16 13:22:29 1995 Ian Lance Taylor <ian@cygnus.com> - - * hosts/std-host.h: Remove all function declarations which return - int or void, except the one for free. - -Wed Feb 15 14:54:18 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * elf32-ppc.c (elf_powerpc_howto_table): Use a destination mask of - 0xffffffff for R_PPC_REL32, not 0. - (powerpc_reloc_map): Add low 16 bit, high 16 bit, and high 16 bit - adjusted relocations. - -Tue Feb 14 17:47:17 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-mips.c (struct mips_elf_find_line): Define. - (mips_elf_find_nearest_line): New static function. - (bfd_elf32_find_nearest_line): Define. - * libelf.h (struct elf_obj_tdata): Add find_line_info field. - - * ecoff.c (_bfd_ecoff_swap_tir_in): Move to ecofflink.c. - (_bfd_ecoff_swap_tir_out): Likewise. - (_bfd_ecoff_swap_rndx_in): Likewise. - (_bfd_ecoff_swap_rndx_out): Likewise. - (cmp_fdrtab_entry): Likewise. - (mk_fdrtab): Likewise. - (lookup): Likewise. - (_bfd_ecoff_find_nearest_line): Just call _bfd_ecoff_locate_line - to do most of the work. Allocate find_line_info if necessary. - * ecofflink.c: Include "aout/stab_gnu.h". - (_bfd_ecoff_swap_tir_in): Move in from ecoff.c. - (_bfd_ecoff_swap_tir_out): Likewise. - (_bfd_ecoff_swap_rndx_in): Likewise. - (_bfd_ecoff_swap_rndx_out): Likewise. - (cmp_fdrtab_entry): Likewise. Use PTR instead of void *. - (mk_fdrtab): Move in from ecoff.c. Add debug_info, debug_swap, - and line_info arguments, and use them instead of ecoff_data. - (fdrtab_lookup): Move in from lookup in ecoff.c. Remove abfd - argument, add line_info argument. Use it instead of ecoff_data. - (_bfd_ecoff_locate_line): New function, mostly from the old - _bfd_ecoff_find_nearest_line in ecoff.c. - * libecoff.h (ecoff_data_type): Remove find_buffer, fdrtab_len and - fdrtab fields, replacing them find_line_info field. - (_bfd_ecoff_swap_tir_in): Declare. - (_bfd_ecoff_swap_tir_out): Declare. - (_bfd_ecoff_swap_rndx_in): Declare. - (_bfd_ecoff_swap_rndx_out): Declare. - * libbfd-in.h (_bfd_ecoff_locate_line): Declare. - * libbfd.h: Rebuild. - * configure.in: Don't use ecoff.o for bfd_elf32_bigmips_vec or - bfd_elf32_littlemips_vec. - * Makefile.in: Rebuild dependencies. - -Tue Feb 14 14:04:22 1995 Michael Meissner <meissner@tiktok.cygnus.com> - - * libelf.h (elf_backend_data): Add fields elf_machine_alt1 and - elf_machine_alt2 which provide alternate versions of the machine - code. - - * elf32-ppc.c (ELF_MACHINE_ALT1, ELF_MACHINE_ALT2): Define to - recognize old versions of the PowerPC machine code. - - * elf32-target.h (elf32_bed): Initialize alternate machine code - fields defined by ELF_MACHINE_ALT1 and ELF_MACHINE_ALT2. - - * elf64-target.h (elf64_bed): Initialize alternate machine code - fields defined by ELF_MACHINE_ALT1 and ELF_MACHINE_ALT2. - - * elfcode.h (elf_object_p, elf_core_file_p): In addition to the - main machine code field, check the two alternate machine code - fields. - -Tue Feb 14 12:46:48 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutf1.h (MACHTYPE_OK): Don't define if already defined. Don't - accept M_SPARC if bfd_arch_sparc is not in the list of supported - architectures, and don't accept a 680x0 machine type if - bfd_arch_m68k is not in the list of supported architectures. - * aout0.c (MACHTYPE_OK): Define. - -Mon Feb 13 23:25:38 1995 Ian Lance Taylor <ian@cygnus.com> - - * aoutx.h (NAME(aout,swap_ext_reloc_in)): Don't return a pointer - to garbage if the symbol index is out of range. - (NAME(aout,swap_std_reloc_in)): Likewise. - - -Thu Feb 9 18:36:52 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * Makefile.in (BFD32_BACKENDS): Add i386msdos.o. - -Thu Feb 9 12:02:35 1995 Ian Lance Taylor <ian@cygnus.com> - - * i386linux.c (NEEDS_SHRLIB): Define. - (linux_tally_symbols): Crash if a NEEDS_SHRLIB symbol is - undefined. From hjl@nynexst.com (H.J. Lu). - -Wed Feb 8 17:26:00 1995 Ian Lance Taylor <ian@cygnus.com> - - * linker.c (generic_link_check_archive_element): Allocate common - symbol information structure. Don't bother to check for common - symbol size overflow. - (_bfd_generic_link_add_one_symbol): Likewise. - * aoutx.h (aout_link_check_ar_symbols): Likewise. - * linker.c (generic_link_check_archive_element): Adjust references - to common symbol information for new structure. - (_bfd_generic_link_add_one_symbol): Likewise. - * aoutx.h (aout_link_check_ar_symbols): Likewise. - (aout_link_add_symbols): Likewise. - * ecoff.c (ecoff_link_add_externals): Likewise. - * elfcode.h (elf_link_add_object_symbols): Likewise. - (elf_link_output_extsym): Likewise. - * sunos.c (sunos_add_one_symbol): Likewise. - -Wed Feb 8 09:53:42 1995 Doug Evans <dje@canuck.cygnus.com> - - * elfcode.h (elf_sort_hdrs): Put SHT_NOBITS sections after !SHT_NOBITS. - -Tue Feb 7 16:27:33 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_find_nearest_line): Just return false, don't - abort. - -Tue Feb 7 14:43:33 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * ecoff.c: Reformatted some comments and brace constructs in - recent changes to GNU style. - (cmp_fdrtab_entry, mk_fdrtab, lookup): Use old-style function - definitions. - -Tue Feb 7 14:21:28 1995 Ian Lance Taylor <ian@cygnus.com> - - * ecoffswap.h (ecoff_swap_pdr_in): Zero out intern before setting - any of the fields. - -Mon Feb 6 20:01:24 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - Sat Feb 4 14:20:24 1995 David Mosberger-Tang <davidm@piston.cs.arizona.edu> - - * ecoffswap.h (ecoff_swap_pdr_in, ecoff_swap_pdr_out): added - internalizing/externalizing new "prof" field. - - * libecoff.h (ecoff_tdata): added fdrtab. - - * ecoff.c (_bfd_ecoff_find_nearest_line): Fixed. - -Mon Feb 6 14:25:24 1995 Ian Lance Taylor <ian@cygnus.com> - - * libelf.h (struct elf_link_hash_table): Add saw_needed field. - * elfcode.h (elf_link_add_object_symbols): Set saw_needed if - DT_NEEDED seen in .dynamic section. - (elf_link_output_extsym): Warn if an undefined symbol is - only referenced from a dynamic object, and not making a shared - object, and saw_needed is false. - * elf.c (_bfd_elf_link_hash_table_init): Initialize saw_needed. - - * libelf.h (ELF_LINK_HASH_DEFINED_WEAK): Don't define. - * elfcode.h (elf_link_add_object_symbols): Don't clear or set - ELF_LINK_HASH_DEFINED_WEAK. - (elf_link_output_extsym): Don't check ELF_LINK_HASH_DEFINED_WEAK. - - Distinguish a weak defined symbol from a regular defined symbol. - * linker.c (enum link_action): Add DEFW. - (link_action): Add bfd_link_hash_defweak column. - (_bfd_generic_link_add_one_symbol): Add DEFW case. Handle - bfd_link_hash_defweak in a few other cases. - * Many files (bfd_link_hash_undefweak): Renamed from - bfd_link_hash_weak. - * aoutx.h (aout_link_write_symbols): Handle bfd_link_hash_defweak. - (aout_link_write_other_symbol): Likewise. - (aout_link_input_section_std): Likewise. - (aout_link_input_section_ext): Likewise. - * bout.c (get_value): Likewise. - * coff-a29k.c (coff_a29k_relocate_section): Likewise. - * coff-alpha.c (alpha_convert_external_reloc): Likewise. - (alpha_relocate_section): Likewise. - * coff-mips.c (mips_relocate_section): Likewise. - (mips_relax_section): Likewise. - (bfd_mips_ecoff_create_embedded_relocs): Likewise. - * cofflink.c (coff_write_global_sym): Likewise. - (_bfd_coff_generic_relocate_section): Likewise. - * ecoff.c (ecoff_link_add_externals): Likewise. - (ecoff_link_write_external): LIkewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - (elf32_hppa_size_stubs): Likewise. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_symbol): Likewise. - * elf32-mips.c (mips_elf_output_extsym): Likewise. - (mips_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - (elf32_sparc_relocate_section): Likewise. - * elfcode.h (elf_link_add_object_symbols): Likewise. - (elf_adjust_dynamic_symbol): Likewise. - (elf_bfd_final_link): Likewise. - (elf_link_output_extsym): Likewise. - * i386linux.c (linux_add_one_symbol): Likewise. - (linux_tally_symbols): Likewise. - (linux_finish_dynamic_link): Likewise. - * linker.c (_bfd_generic_link_output_symbols): Likewise. - (set_symbol_from_hash): Likewise. - * reloc16.c (bfd_coff_reloc16_get_value): Likewise. - (bfd_perform_slip): Likewise. - * sunos.c (sunos_add_one_symbol): Likewise. - (sunos_scan_std_relocs): Likewise. - (sunos_scan_ext_relocs): Likewise. - (sunos_scan_dynamic_symbol): Likewise. - (sunos_write_dynamic_symbol): Likewise. - -Mon Feb 6 03:20:17 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - Changes from Bryan Ford, baford@schirf.cs.utah.edu: - * config.bfd (i[345]86-*-msdos*): New target. - * configure.in (i386msdos_vec): Handle it. - * i386msdos.c: New file. - * config/i386-msdos.mt: New file. - * bfd.c (enum bfd_error): Added new value bfd_error_file_too_big. - (bfd_errmsgs): Added string to table. - * libaout.h (reloc_type-lookup): Declare it. - * targets.c (enum bfd_flavour): Added bfd_target_msdos_flavour. - (i386msdos_vec): Declare. - (bfd_target_vector): Add it to the list. - * bfd-in2.h: Regenerated. - -Wed Feb 1 01:32:14 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_set_reloc_info, case R_DATA_ONE_SYMBOL): If there's - nothing in R_DATA_OVERRIDE, then try to find the addend in the - section's contents. - (som_write_fixups): Ignore the addend in a R_DATA_ONE_SYMBOL fixup. - - * som.c (som_object_setup): More heruistics to detect the - braindamaged HP OSF1 linker. - (setup_sections): Don't forget to free subspace_sections if we get - an error. - (som_slurp_string_table): Allocate strings on this bfd's obstack - rather than directly out of the heap. - (som_slurp_symbol_table): Likewise for the saved copy of the - canonical symbols. - (som_slurp_reloc_table): Likewise for the saved copy of the - canonical relocations. Free the native relocations when we're - done with them. - -Tue Jan 31 21:53:28 1995 Doug Evans <dje@canuck.cygnus.com> - - * libelf.h (struct elf_obj_tdata): New member program_header_size. - * elfcode.h (get_program_header_size): New parameters sorted_hdrs, - count, and maxpagesize. All callers updated. - If sorted_hdrs is non-NULL, use it to compute the number of segments. - Save result in case called again. - (assign_file_positions_except_relocs): Sort headers before calling - get_program_header_size. - -Tue Jan 31 15:27:53 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (map_program_segments): Add sorted_hdrs parameter. - Search through it rather than through unsorted section headers. - (assign_file_positions_except_relocs): Pass sorted_hdrs to - map_program_segments. - -Mon Jan 30 22:04:53 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * ecoff.c (_bfd_ecoff_find_nearest_line): Fix problems in range - checking. Expect argument OFFSET to be section-relative. From - David Mosberger-Tang, davidm@piston.cs.arizona.edu. - -Mon Jan 30 11:22:11 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (NAME(bfd_elf,record_link_assignment)): Don't do - anything if we are not linking an ELF file. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. - -Sat Jan 28 12:48:57 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (compare_subspaces): New function to sort subspaces by - their location in the object file. - (setup_sections): When computing the index for each subspace, - handle case where setup_sections reads the subspaces in a - different order that they appear in the object file. - (som_is_space): Also examine the output section for the containing - section. - (som_is_subspace, som_is_container): Likewise. - (som_begin_writing): Don't prepare or write fixups here. When - writing the symbol strings, use the unsorted symbol table. - (som_write_object_contents): Don't write the symbol table here. - (som_finish_writing): Prepare and write the fixups here. Likewise - for the symbol table. - (som_bfd_derive_misc_symbol_info): Undefined symbols always have - type SS_UNSAT regardless of BSF_EXPORT. - (som_set_reloc_info): Unpack and attach argument location - information for R_PCREL_CALL and R_ABS_CALL relocations. - - * som.c (som_object_setup): New heuristic to determine if the - entry and flags fields are switched in the exec header. - -Sat Jan 28 00:16:01 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (elf_link_add_object_symbols): Use *sym_hash instead - of h if we might not be doing an ELF link. - -Fri Jan 27 16:13:42 1995 Ian Lance Taylor <ian@cygnus.com> - - * elf32-mips.c (mips_elf_final_link): If the size of an input - .reginfo section is zero, force it to the correct size, since the - linker emulation code may have clobbered it. - - * elfcode.h (elf_sort_hdrs): Correct SHF_ALLOC test. - (assign_file_positions_except_relocs): Free sorted_hdrs. - -Thu Jan 26 09:00:12 1995 Steve Chamberlain <sac@splat> - - * srec.c (srec_set_section_contents): Fix off by - one end address calculation. - - * config.bfd: (m68*-est-coff): New configuration. - -Thu Jan 26 11:39:21 1995 Ian Lance Taylor <ian@cygnus.com> - - * elfcode.h (elf_link_add_object_symbols): Only examine weakdef if - we are using an ELF hash table. - - * aoutx.h (NAME(aout,some_aout_object_p)): Always set EXEC_P if - the start address is in the .text section, even if STAT_FOR_EXEC - is set. Just use STAT_FOR_EXEC as an additional test. - -Thu Jan 26 11:12:54 1995 Michael Meissner <meissner@cygnus.com> - - * elfcode.h (prep_headers): Use EM_PPC instead of - EM_CYGNUS_POWERPC. - - * elf32-ppc.c (reloc_type): Add all System V.4 and eABI - relocations currently defined. - (powerpc_reloc_map): Adjust to new relocation names. - (elf_powerpc_howto_table): Add most of the new relocations. - (ELF_MACHINE_CODE): Use EM_PPC instead of EM_CYGNUS_POWERPC. - - * config.bfd: Add support for powerpc-*-eabi. - - * config/ppc-elf.mt: Add rs6000 architecture support to the - PowerPC. Also add XCOFF support. - -Wed Jan 25 23:26:13 1995 Ian Lance Taylor <ian@cygnus.com> - - * coff-sh.c (CALC_ADDEND): Don't define. - (coff_sh_relocate_section): Remove. - (coff_relocate_section): Use _bfd_coff_generic_relocate_section. - -Tue Jan 24 14:22:47 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elf32-mips.c (mips_elf_output_extsym): Set the value of the - ECOFF symbol from the hash table entry. - -Mon Jan 23 14:53:35 1995 Steve Chamberlain <sac@splat> - - * coff-sh.c (coff_sh_relocate_section): Don't subtract - vma twice. - -Mon Jan 23 13:33:18 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * coff-sh.c (sh_reloc): Don't ignore the previous contents of an - R_SH_IMM32 reloc. - - * config.bfd (i[345]86-*-gnu*): Set bfd_name to i386-gnu. - * config/i386-gnu.mt: New file. Include ELF support. - - * opncls.c (bfd_openstreamr): Call bfd_cache_init. - -Fri Jan 20 11:44:45 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * sunos.c (sunos_add_one_symbol): Only set the sunos specific - fields if we are doing a sunos link. - -Wed Jan 18 12:28:17 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * cpu-h8300.c (h8300_info_struct): Change name from "H8/300" to - "h8300" for consistency with other cpu-* files. - (h8300h_info_struct): Change name from "H8/300H" to "h8300h". - * coff-h8300.c (special): Remove unused variable diff. - -Tue Jan 17 10:52:32 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * bfd-in.h (bfd_byte, reloc_howto_type): Define here, not... - * reloc.c (bfd_byte, reloc_howto_type): here. - * Changed all occurrences of ``const struct reloc_howto_struct'' - to be ``reloc_howto_type'' instead. - * bfd-in2.h, libbfd.h, libcoff.h: Rebuilt. - - * opncls.c (bfd_openstreamr): New function. - * bfd-in2.h: Rebuilt. - - * elf32-mips.c (enum reloc_type): Define new relocs used on Irix. - (elf_mips_howto_table): Add entries for new relocs. - (mips_elf_section_from_shdr): Handle SHT_MIPS_MSYM, - SHT_MIPS_DWARF, and SHT_MIPS_EVENTS. - (mips_elf_fake_sections): Handle sections named .msym, .debug_* - and .MIPS.events.*. - - * srec.c (srec_init): Remove unused local variable i. - -Sat Jan 14 19:09:48 1995 Steve Chamberlain <sac@jonny> - - * archures.c, Makefile.in, targets.c, bfd-in2.h, coffcode.h, - config.bfd, configure.in, config/w65.mt: Initial support for the W65. - -Sun Jan 15 13:57:45 1995 Steve Chamberlain <sac@splat> - - * opncls.c (bfd_fdopenr): Configure for WIN32. - -Thu Jan 12 16:30:47 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * Makefile.in (diststuff): Include `headers'. - - * sunos.c (m68k_plt_first_entry, sparc_plt_first_entry): Now - const. - * tekhex.c (digs): Ditto. - * elf32-i386.c (elf_i386_plt0_entry, elf_i386_plt_entry): Ditto. - - * srec.c, tekhex.c: Include libiberty.h. Delete static array - hex_value and replace references to it with references to - hex_init, hex_p, and hex_value. - * Makefile.in: Updated dependencies. - - * archures.c (archures_init_table): Now const. - (bfd_arch_init): Adjusted type of local var `ptable'. - -Thu Jan 12 09:33:24 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * hosts/symmetry.h: Redefine `shared' to enable compilation - with the native Dynix cc compiler. - * i386dynix.c: Include aoutx.h instead of using routines - from aout32.c. - -Wed Jan 11 21:31:41 1995 Ken Raeburn <raeburn@cujo.cygnus.com> - - * reloc.c (reloc_howto_type): Make typedef include `const'. - * aout-ns32k.c, aoutx.h, bout.c, cf-m68klynx.c, coff-i386.c, - coff-i960.c, coff-m68k.c, cofflink.c, cpu-ns32k.c, ecoff.c, - elf32-hppa.c, elf32-i386.c, elf32-mips.c, elf32-sparc.c, - elfcode.h, libbfd-in.h, linker.c, mipsbsd.c, nlm32-ppc.c, oasys.c, - reloc.c, som.c: Don't use `const' in combination with - `reloc_howto_type'. - * bfd-in2.h, libbfd.h: Regenerated. - - * ecoff.c (ecoff_type_to_string): Local variable `buffer1' doesn't - need to be static. - -Wed Jan 11 14:36:41 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * sunos.c (sunos_add_one_symbol): Don't core dump if a multiple - definition of an absolute symbol is encountered. - - * linker.c (_bfd_generic_link_add_one_symbol): Ignore - redefinitions of an absolute symbol to the same value. - -Mon Jan 9 15:51:32 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_link_add_object_symbols): It's reasonable for no - flags to be set, so don't insist otherwise. - -Fri Jan 6 16:39:40 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_slurp_symbol_table): Don't set BSF_GLOBAL for an - undefined or common symbol. - (elf_link_add_object_symbols): Likewise. - -Wed Jan 4 14:14:05 1995 Jeff Law (law@snake.cs.utah.edu) - - * som.c (bfd_section_from_som_symbol): Only return sections which - correspond to subspaces. - - * som.c (som_begin_writing): Don't forget to bump the - total_subspaces when writing the unloadable subspaces. - -Wed Dec 28 20:54:47 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_write_fixups): Use SEC_HAS_CONTENTS to identify - bss-like sections. - (som_get_section_contents): Likewise. - (som_set_section_contents): Likewise. - -Tue Dec 27 14:03:47 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.c (setup_sections): Turn off SEC_HAS_CONTENTS for bss-like - sections. - -Tue Dec 20 15:30:12 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * coffgen.c (bfd_debug_section): Deleted. - (coff_section_from_bfd_index): Return absolute section for debug - symbol. - (coff_write_symbol): Set BSF_DEBUGGING for C_FILE symbols. If - BSF_DEBUGGING is set, set section to N_DEBUG. - (coff_bfd_make_debug_symbol): Use absolute section. - - * elfcode.h (assign_file_positions_except_relocs): In assertion, - force all values to the same type. - -Tue Dec 20 11:11:58 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * coff-h8300.c (howto_table): All relocs get a special function. - (special): Never do anything when linking -r. - -Tue Dec 20 13:58:01 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * i386linux.c (linux_add_one_symbol): Don't do anything Linux - specific if this is not a Linux hash table. From Eric Youngdale - <eric@aib.com>. - - Patches from kkojima@mix.or.jp (Kazumoto Kojima): - * mipsbsd.c (mips_howto_table_ext): Change sizes of memory relocs - apply to from two bytes to four bytes. - * MY(reloc_howto_type_lookup): Handle BFD_RELOC_CTOR. - - * elf32-i386.c (elf_i386_relocate_section): Correct and expand the - list of cases for which relocation need not be computed. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - - -Mon Dec 19 23:09:16 1994 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_read_symext_info): Delete do_locals and - do_globals arguments, always read symbol extension information for - globals and locals. All callers changed. - (elf32_hppa_size_stubs): Rework to only read symbol extension - information once for each input bfd. 10% improvement in linker - performance. - -Fri Dec 16 12:28:46 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_section_from_bfd_section): Check - bfd_is_abs_section, etc., only after checking for the section in - the BFD and after calling the backend routine. - -Wed Dec 14 20:21:58 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_map_symbols): Only use section symbols whose - value is the start of the section, checking output_offset when - using output_section. When creating a new symbol, set the value - to 0, since BFD symbol values are section relative. - -Tue Dec 13 13:31:06 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * cpu-z8k.c (arch_info_struct): Make z8002 the default - architecture. - -Fri Dec 9 12:43:05 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_bfd_link_add_symbols): If the first object in the - archive is not an ELF object, pass the archive to the add_symbols - entry point appropriate for the first object. From Eric Youngdale - <eric@aib.com>. - * aoutx.h (NAME(aout,link_add_symbols)): Similar change if the - first object is not an a.out object. - - * elf32-i386.c (elf_i386_relocate_section): Don't compute - relocation in cases where we won't use it. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - -Thu Dec 8 14:19:41 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * pc532-mach.c (NAME): Define to use ns32kaout prefix. - * ns32knetbsd.c (NAME): Ditto. - (ns32kaout_32_get_section_contents): Define to standard aout-32 - version. - -Fri Dec 2 13:56:49 1994 Ian Lance Taylor <ian@rtl.cygnus.com> - - * coff-mips.c (mips_read_relocs): New static function, broken out - of mips_relax_section. - (mips_relax_section): Call mips_read_relocs. - (bfd_mips_ecoff_create_embedded_relocs): New function. - * bfd-in.h (bfd_mnips_ecoff_create_embedded_relocs): Declare. - * bfd-in2.h: Rebuild. - -Wed Nov 30 14:12:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-sh.c: Use _bfd_dummy_target instead of no_archive. - - -Tue Nov 29 14:00:19 1994 J.T. Conklin <jtc@.rtl.cygnus.com> - - * config.bfd (i[345]86-*-freebsd*): Use i386-bsd as bfd_name. - * configure.host (i[345]86-*-freebsd*): Use i386bsd as my_host. - -Mon Nov 28 15:36:04 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/m68k-nbsd.mt (DEFAULT_VECTOR): set to m68knetbsd_vec. - * Makefile.in: Rebuilt dependancies. - (CFILES): Added m68knetbsd.c. - (HFILES): Added netbsd.h. - -Wed Nov 23 19:21:41 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * coff-sh.c (shlcoff_vec): New target vector. - (no_archive): New function. - * coffcode.h (coff_set_arch_mach_hook, coff_set_flags): Handle - little endian SH. - * configure.in: Handle shl. - * targets.c (bfd_target_vector): Add shlcoff_vec. - * config/sh-coff.mt (SELECT_VECS): Handle shl_coff_vec. - -Wed Nov 23 10:50:13 1994 Jeff Law (law@snake.cs.utah.edu) - - * elfcode.h (write_relocs): Do not subtract the section's vma from - the reloc's offset when writing .o's. Instead add the section's - vma to the reloc's offset when writing an executable or shared - library. - -Tue Nov 22 23:34:37 1994 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Do not add - input_section->vma to the relocation's offset. - -Mon Nov 21 12:37:25 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * srec.c (srec_get_reloc_upper_bound): Define. - (srec_canonicalize_reloc): Define. - (srec_bfd_reloc_type_lookup): Define. - (srec_vec, symbolsrec_vec): Use BFD_JUMP_TABLE_RELOCS (srec). - -Sat Nov 19 03:10:51 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * configure.host (i[345]86-*-solaris*): Use solaris2 to - enable extraction of procfs info from core file for GDB. - -Thu Nov 17 17:37:39 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * reloc.c (bfd_reloc_code_type): Add new value BFD_RELOC_12_PCREL. - * bfd-in2.h, libbfd.h: Rebuilt. - -Thu Nov 17 13:12:08 1994 Jeff Law (law@snake.cs.utah.edu) - - * bfd/elf32-hppa.c (elf32_hppa_bfd_final_link_relocated): Use the - vma from the output_section containing $global$ when computing - global_vlaue. - -Thu Nov 17 14:29:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * archive.c (_bfd_write_archive_contents): Round up the archive - header size of the extended name table to an even number. - -Wed Nov 16 16:08:06 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * coff-sh.c: Deleted some code that was commented out or inside - "#if 0". - (COFF_LONG_FILENAMES): Define. - - * cpu-sh.c (arch_info_struct): Convert name to lowercase, for - consistency with other architectures. - -Sat Nov 12 23:50:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_export_symbol): Also export symbols which are - referenced by a regular file. - -Fri Nov 11 14:29:31 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add - export_dynamic argument, and handle it. - (elf_export_symbol): New function. - * bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration. - (bfd_elf64_size_dynamic_sections): Update declaration. - * bfd-in2.h: Rebuild. - -Fri Nov 11 10:35:33 1994 Jeff Law (law@snake.cs.utah.edu) - - * hpux-core.c (hpux_core_struct): Delete handles for the - data, reg and stack sections. They're never used. Delete - accessor macros. - (make_bfd_asection): Use bfd_make_section_anyway since debugging - cores from dynamic executables may have several sections with the - same logical name. - (hpux_core_core_file_p): Don't save handles to data, reg and - stack sections. Handle CORE_TEXT, CORE_MMF and CORE_SHM. - -Tue Nov 8 13:03:30 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * bout.c (callj_callback): Add new argument shrinking. Change all - callers. Handle relocs against section symbols correctly. If not - shrinking, don't subtract out dstidx; the subtraction is already - in the object file. - -Sun Nov 6 12:52:00 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.h: Conditionally include <shl.h> and <dl.h>. - -Thu Nov 3 18:19:13 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * Makefile.in (ALL_MACHINES): Include m68knetbsd.o. - - * config/i386linux.mh (EXTRALIBS): Include -lm. - - Patches from DJ Delorie: - * coff-go32.c: Replacement file, uses coff-i386.c with minor - changes. - * coff-i386.c (TARGET_UNDERSCORE): allow other files to override - underscore also - * makefile.dos: del ctor.o, add cofflink.o and elf32.o - - * aoutx.h (adjust_o_magic): If user set data section vma, use it - to determine the default bss vma. Patch from Takada Hiroaki, - hiro@is.s.u-tokyo.ac.jp. - (machine_type, case bfd_arch_vax): Set *unknown to false. Patch - from John David Anglin <dave@hiauly1.hia.nrc.ca>. - - * configure.in (tb): Rename ns32knetbsd_vec to pc532netbsd_vec, - since that's what it's called. - -Wed Nov 2 15:24:51 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * archive.c (normalize): Change to take a BFD as an argument. - Change VMS version to use bfd_alloc rather than malloc, so that we - don't lose the memory forever. - (_bfd_construct_extended_name_table): Check the name of an archive - entry which is not being extended, and correct it if it is wrong. - This is necessary in case the archive was constructed by another - program which put an entry in the extended name table which we - don't plan to put in ourselves. From jjc@jclark.com (James - Clark). - (bfd_dont_truncate_arname): Check return value of normalize. - -Mon Oct 31 14:19:08 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elf32-hppa.c (ELF32_PARISC_SX_SIZE): Define. - (ELF32_PARISC_SX_GET, ELF32_PARISC_SX_PUT): Define. - (symextn_entry): Don't define. - (symext_chain_size): Change type to bfd_size_type. - (symextn_contents): Change type to bfd_byte *. - (elf32_hppa_backend_begin_write_processing): Use - ELF32_PARISC_SX_SIZE instead of sizeof (symext_entryS). - (elf32_hppa_size_symext): Likewise. Also, change type of sizep to - bfd_size_type *. - (elf_hppa_tc_make_sections): Cast symextn_contents assignment to - bfd_byte *. Use ELF32_PARISC_SX_PUT instead of direct assignment. - (elf32_hppa_backend_symbol_table_processing): Use - ELF32_PARISC_SX_SIZE instead of sizeof (symext_entryS). Use - ELF32_PARISC_SX_GET insetad of direct assignment. - (elf32_hppa_read_symext_info): Change type of contents, and its - assignment cast, to bfd_byte *. Use ELF32_PARISC_SX_SIZE instead - of sizeof (symextn_entry). Use symext_entryS instead of - symextn_entry. Use ELF32_PARISC_SX_GET instead of direct - assignment. - - * archive.c (bfd_dont_truncate_arname): Add the ar padding - character, if there is room for it, even if the name is the - maximum length. - - * elfcode.h (assign_file_positions_except_relocs): Sort the ELF - headers by section address when assigning file positions. - (elf_sort_hdrs): New static function. - -Sun Oct 30 18:56:58 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Create DT_INIT - and DT_FINI dynamic entries based on the existence of _init and - _fini symbols, not on the .init and .fini sections. This is - compatible with some SVR4 linkers. - (elf_bfd_final_link): Corresponding change. - -Sat Oct 29 12:18:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Don't move a - symbol with a PLT entry into the .plt section if it is defined in - a regular file. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - - * linker.c (_bfd_generic_link_add_archive_symbols): It's not an - error if an empty archive has no symbol table. - * ecoff.c (ecoff_link_add_archive_symbols): Likewise. - * elfcode.h (elf_link_add_archive_symbols): Likewise. - -Fri Oct 28 10:08:41 1994 J.T. Conklin (jtc@rtl.cygnus.com) - - NetBSD/m68k support, based on work by mikeb@snow.datametrics.com: - * config.bfd (m68*-*-netbsd*): Use m68k-nbsd as bfd_name. - * configure.in (m68knetbsd_vec): Added. - * targets.c (bfd_m68knetbsd_vec): Added. - * hosts/m68knbsd.h, config/m68k-nbsd.mt, m68knetbsd.c: New files. - * Makefile.in (BFD32_BACKENDS, CFILES): Add m68knetbsd.c. - - miscellaneous cleanup required by all netbsd targets, based on work - by Andrew Cagney <cagney@highland.com.au>: - * netbsd.h (N_MAGIC, N_SET_MAGIC, N_GETMAGIC, N_GETMAGIC2, N_TXTADDR, - N_TXTOFF, N_ALIGN, N_DATADDR, N_DATOFF): Removed. Generic a.out - definitions work. - * i386nbsd.c, ns32knbsd.c, sparcnbsd.c (__LDPGSZ): Removed. - (MY(write_object_contents)): Use NetBSD's magic numbers - -Thu Oct 27 16:59:52 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * libelf.h (struct bfd_elf_section_data): Add field dynindx. - * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Don't finalize - the .dynsym, .dynstr or .hash sections until after the backend - size_dynamic_sections routine, so that it can add dynamic symbols - if it wants to. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Don't define the - symbol to be in the .plt section when generating a shared library - if it is a defined symbol. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - (elf32_sparc_size_dynamic_sections): When generating a shared - library, allocate space for a dynamic symbol for each output - section, storing the index in the dynindx field of the ELF section - data. Adjust the other dynindx fields to account for this. - (elf32_sparc_adjust_dynindx): New static function. - (elf32_sparc_relocate_section): When copying a reloc into a shared - library, use the original addend as appropriate. Convert an - R_SPARC_32 reloc into an R_SPARC_RELATIVE reloc. Use the dynamic - symbol index of the output section, not the normal symbol index. - (elf32_sparc_finish_dynamic_sections): Don't die if a section does - not exist when setting the value of the dynamic tags. Write out - a dynamic symbol for each output section. - -Wed Oct 26 01:15:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_input_section): Don't bother to read or write - the relocs if there aren't any. - -Tue Oct 25 11:44:38 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * Makefile.in (ALL_MACHINES): Add tekhex.o. - * targets.c (bfd_target_vector): If SELECT_VECS is not defined, - include tekhex_vec. - * tekhex.c (NIBBLE, ISHEX): Cast array arguments to unsigned char. - (getvalue, getsym, out): Likewise. - (find_chunk): Remove unused variable s. - (first_phase): Remove unused variable s. - (pass_over): Remove unused variable address. - (tekhex_object_p): Remove unused variable section. - (move_section_contents): Change return type from boolean to void. - (tekhex_write_object_contents): Remove unused variables tdata and - list. - - * linker.c (enum link_action): Add CIND. - (link_action): Change COMMON_ROW\indr from MDEF to CREF. Change - INDR_ROW\common from MDEF to CIND. - (_bfd_generic_link_add_one_symbol): In CREF case, handle an - existing symbol which is indirect rather than defined. Add new - CIND case. - -Mon Oct 24 15:33:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - Change S-record backend to use multiple sections to handle gaps in - file. - * srec.c (srec_data_list_struct): Move field next from last place - to first. Change type of data to bfd_byte *. - (struct srec_symbol): Define. - (tdata_type): Remove done_symbol_read, count, strings, symbol_idx, - string_size, string_idx. Change type of symbols to struct - srec_symbol *. Add symtail and csymbols. - (low, high): Remove. - (size_symbols, fillup_symbols, size_srec, fillup): Remove. - (white, skipwhite, pass_over, object_p): Remove. - (srec_mkobject): Call srec_init. Adjust tdata initialization for - field changes. - (srec_get_byte, srec_bad_byte): New static functions. - (srec_new_symbol, srec_scan): New static functions. - (srec_object_p): Change type of b to bfd_byte. Explicitly set - wrong_format error. Call srec_mkobject and srec_scan instead of - object_p. - (symbolsrec_object_p): Likewise. Also, change b to be only two - bytes. - (srec_read_section): New static function. - (srec_get_section_contents): Call srec_read_section rather than - pass_over. Handle zero length section correctly. - (set_set_arch_mach): Change from function to macro. - (srec_set_section_contents): Change data to bfd_byte *. - (srec_write_record): Change data, end and src to bfd_byte *. - (srec_write_header): Change buffer and dst to bfd_byte *. - (srec_write_section): Change location to bfd_byte *. - (srec_write_terminator): Change buffer to bfd_byte *. - (srec_get_symtab_upper_bound): Don't call - srec_get_section_contents. - (srec_get_symtab): Rewrite. - - * ecoff.c (ecoff_set_symbol_info): Set udata.i to 0, not NULL. - -Fri Oct 21 16:43:13 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * libaout.h (machine_type): added M_68K_NETBSD and M_SPARC_NETBSD. - * i386netbsd.c, ns32knetbsd.c, sparcnetbsd.c: removed RCS Id's. - changed how PAGE_SIZE and SEGMENT_SIZE are defined so they are - consistant with each other. - * netbsd.h (N_HEADER_IN_TEXT, TEXT_START_ADDR): NetBSD fits its - header into the start of its text segment. - -Fri Oct 21 17:13:07 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * targets.c (BFD_JUMP_TABLE_ARCHIVE): Add case for - _construct_extended_name_table. - (bfd_target): Add _bfd_construct_extended_name_table. - * archive.c (_bfd_archive_bsd_construct_extended_name_table): New - function. - (_bfd_archive_coff_construct_extended_name_table): New function. - (_bfd_construct_extended_name_table): Renamed by adding a leading - underscore, and made externally visible. Added trailing_slash - argument, and used it instead of elf_style. Changed type of - tablen to bfd_size_type *. - (_bfd_write_archive_contents): Use BFD_SEND to call - construct_extended_name_table. Use the returned name. - * libbfd-in.h (_bfd_construct_extended_name_table): Declare. - (_bfd_noarchive_construct_extended_name_table): Define. - (_bfd_archive_bsd_construct_extended_name_table): Declare. - (_bfd_archive_coff_construct_extended_name_table): Declare. - * bfd-in2.h: Rebuild. - * libbfd.h: Rebuild. - * som.c (som_construct_extended_name_table): New static function. - * aout-target.h (MY_construct_extended_name_table): Define. - * coff-rs6000.c (rs6000coff_construct_extended_name_table): - Define. - * ieee.c (ieee_construct_extended_name_table): Define. - * libecoff.h (_bfd_ecoff_construct_extended_name_table): Define. - * oasys.c (oasys_construct_extended_name_table): Define. - - Fix the ELF linker to not require an interpreter if no dynamic - objects were seen, even when linking PIC code. - * libelf.h (ELF_LINK_HASH_NEEDS_PLT): Define. - (struct elf_link_hash_table): Add field dynamic_sections_created. - * elfcode.h (elf_link_record_dynamic_symbol): Create dynstr if it - doesn't already exist. - (elf_link_add_object_symbols): Create dynamic sections based on - dynamic_sections_created field, not dynobj field. Don't bother to - set dynobj. - (elf_link_create_dynamic_sections): If dynamic sections were - already created, don't do anything. If dynobj is already set, use - it; otherwise, set it to the bfd argument. Don't initialize - dynsymcount. Only create dynstr if it does not exist. Set - dynamic_sections_created to true. - (NAME(bfd_elf,size_dynamic_sections)): Skip most of this function - if no dynamic objects were seen. - (elf_adjust_dynamic_symbol): If a symbol has the - ELF_LINK_HASH_NEEDS_PLT flag set, let the backend adjust it. - (elf_bfd_final_link): Change most decisions based on dynobj to - check dynamic_sections_created instead. - (elf_link_output_extsym): Only handle dynamic symbols if a dynamic - object was seen. - * elf.c (_bfd_elf_link_hash_table_init): Initialize new field - dynamic_sections_created. Set dynsymcount to 1, not 0. - * elf32-i386.c (elf_i386_create_dynamic_sections): Call - elf_i386_create_got_section rather than creating the .got and - .got.plt sections. - (elf_i386_create_got_section): New static function. - (elf_i386_check_relocs): Just call elf_i386_create_got_section if - a GOT table is needed, not bfd_elf32_link_create_dynamic_sections. - Only create the .rel.got section, and only make space for a reloc, - for a global symbol or when generating a shared object. For a - R_386_PLT32 reloc, just set the ELF_LINK_HASH_NEEDS_PLT flag. - (elf_i386_adjust_dynamic_symbol): Rework initial assertion to - permit ELF_LINK_HASH_NEEDS_PLT non dynamic symbols. Create a - procedure linkage table entry for such symbols. But, if no - dynamic objects were seen, never create a PLT entry. - (elf_i386_size_dynamic_sections): If no dynamic objects were seen, - skip most of this function, and force the size of the .rel.got - section to zero. - (elf_i386_relocate_section): For a R_386_GOT32 reloc against a global - symbol when no dynamic object was seen, initialize the contents of - the .got section. For a R_386_GOT32 against a local symbol, only - create a R_386_RELATIVE reloc when generating a shared object. - Treat a R_386_PLT32 reloc against a symbol for which we did not - create a PLT entry as a R_386_PC32 reloc. - (elf_i386_finish_dynamic_sections): Only fiddle with the dynamic - entries and the PLT if we saw a dynamic object. - * elf32-sparc.c (elf_sparc_howto_table): Fix R_SPARC_PC22 by - setting rightshift to 10. Fix R_SPARC_WPLT20 by setting - rightshift to 2, size to 2, bitsize to 30, and dst_mask to - 0x3fffffff. - (elf32_sparc_create_dynamic_sections): Don't set the size of the - .plt section. Call elf32_sparc_create_got_section rather than - creating the .got section. - (elf32_sparc_check_relocs): Call elf32_sparc_create_got_section if - a GOT table is needed, not bfd_elf32_link_create_dynamic_sections. - Only create the .rela.got section, and only make space for a - reloc, for a global symbol or when generating a shared object. - Set the alignment of the .rela.got section to 2. For a - R_SPARC_WPLT30 reloc, just set the ELF_LINK_HASH_NEEDS_PLT flag. - (elf32_sparc_adjust_dynamic_symbol): Rework initial assertion to - permit ELF_LINK_HASH_NEDS_PLT non dynamic symbols. Create a - procedure linkage table for such symbols. But, if no dynamic - objects were seen, never create a PLT entry. Initialize the size - of the .plt section. - (elf32_sparc_size_dynamic_sections): If no dynamic objects were - seen, skip most of this function, and force the size of the - .rela.got section to zero. Strip empty reloc sections, and strip - an empty .plt section. - (elf32_sparc_relocate_section): For a GOT reloc against a global - symbol when no dynamic object was seen, initialize the contents of - the .got section. For a GOT reloc against a local symbol, only - create a R_SPARC_RELATIVE reloc when generating a shared object. - Treat a R_SPARC_WPLT30 reloc against a symbol for which we did not - create a PLT entry as a R_SPARC_WDISP30 reloc. - (elf32_sparc_finish_dynamic_sections): Only fiddle with the - dynamic entries and the PLT if we saw a dynamic object. - -Thu Oct 20 13:28:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_map_symbols): Don't worry about section symbols - in a section not owned by any BFD. - (elf_section_from_bfd_section): Separate out loop which calls - backend routine. Check bfd_section and call the backend routine - even for a section not owned by any BFD. - * elf32-mips.c (mips_elf_section_from_bfd_section): Handle - .acommon section. - -Wed Oct 19 13:28:29 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * 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. - -Wed Oct 19 01:26:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * binary.c (binary_set_section_contents): Set the base file - position from the lowest section VMA, not the start address. - - * 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. - -Tue Oct 18 12:56:43 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * aout-target.h (MY_bfd_copy_private_section_data): Only copy - subformat to another bfd_target_aout_flavour file. - - * 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. - - * srec.c (tdata_type): Add field tail. - (srec_mkobject): Initialize tail. - (srec_set_section_contents): Sort S record list by address. - -Mon Oct 17 11:38:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * elfcode.h (elf_map_symbols): Sort the symbols into a new array, - rather than messing with Elf_Sym_Extra. Store the symbol index in - the udata.i field. - (swap_out_syms): Use outbound_syms as a pointer rather than as an - array. Don't worry about elf_sym_num. - * libelf.h (struct elf_sym_extra): Don't define. - (Elf_Sym_Extra): Don't define. - (struct elf_obj_tdata): Remove sym_extra field. - (elf_sym_extra): Don't define. - * elf32-hppa.c (elf32_hppa_backend_final_write_processing): Use - udata.i rather than elf_sym_extra array. - - * syms.c (asymbol): Change udata field into a union. - * bfd-in2.h: Rebuild. - * aoutx.h (NAME(aout,translate_symbol_table)): Use udata.p rather - than just udata. - * bout.c (perform_slip): Likewise. - * hp300hpux.c (MY(slurp_symbol_table)): Likewise. - * ieee.c (ieee_slurp_external_symbols): Likewise. - * linker.c (generic_link_add_symbol_list): Likewise. - (default_indirect_link_order): Likewise. - * oasys.c (oasys_slurp_symbol_table): Likewise. - * reloc16.c (bfd_perform_slip): Likewise. - * srec.c (fillup_symbols): Likewise. - * coffcode.h (get_index): Use udata.i rather than just udata. - (coff_slurp_symbol_table): Likewise. - * coffgen.c (set_index): Likewise. - * ecoff.c (ecoff_set_symbol_info): Likewise. - * elfcode.h (elf_symbol_from_bfd_symbol): Likewise. - * libecoff.h (ecoff_get_sym_index, ecoff_set_sym_index): Likewise. - * som.c (compare_syms): Likewise. - (som_prep_for_fixups): Likewise. - (som_write_fixups): Likewise. - - 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. - - * 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. - - * elfcode.h (elf_swap_shdr_in): Use bfd_section, not rawdata. - 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_hppa_backend_symbol_table_processing): Don't set - symextn_hdr->size; just use sh_size. - * 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. - - * srec.c (pass_over): Set the start address for S7, S8 or S9. - -Fri Oct 14 19:15:46 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * VERSION: Updated to 2.5. - -Fri Oct 14 11:07:50 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * bfd.c (bfd_scan_vma): Cast end to be non const before passing it - to strtoul. - -Thu Oct 13 14:40:41 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * bfd.c (bfd_scan_vma): Pass end argument on to strtoul. - -Wed Oct 12 16:46:43 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * 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. - -Wed Oct 12 11:54:37 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * ecoff.c (ecoff_set_symbol_info): Mark local stProc, stLabel or - stabs symbols as BSF_DEBUGGING. - - * rs6000-core.c (rs6000coff_core_file_matches_executable_p): Make - str1 and str2 const pointers. - - * 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. - -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. - -Tue Oct 11 17:12:00 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * lynx-core.c (lynx_core_file_p): SPARC Lynx appears to start - dumping the .data section in a core file at a page boundary. - -Mon Oct 10 16:24:44 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * 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. - - * elf32-sparc.c (elf_sparc_howto_table): The PC10, PC22, and - WPLT30 relocations are PC-relative. - -Thu Oct 6 12:57:26 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org) - - * aoutx.h (adjust_o_magic): Correctly initialize vma if the vma of - the text section was user-defined. - -Wed Oct 5 14:42:12 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * archive.c (bfd_construct_extended_name_table): SVR4 uses slash - newline at the end of the file name, not just newline. - -Tue Oct 4 11:23:12 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * ecoff.c (_bfd_ecoff_new_section_hook): Default section alignment - power to 4, rather than using align_power_min. - - * 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. - - * configure.in: Use ${config_shell} when running config.bfd. - - * cofflink.c (coff_link_input_bfd): Don't try to convert a long - filename if the offset field is zero. - - * elfcode.h (swap_out_syms): If the alignment of a common symbol - was not set, use a sensible default rather than zero. - -Mon Oct 3 16:04:29 1994 H.J. Lu (hjl@nynexst.com) - - * opncls.c (bfd_close): Honor umask when setting execution bits. - (bfd_close_all_done): Likewise. - -Mon Oct 3 04:41:49 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * 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. - -Fri Sep 30 13:11:38 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> - - * 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. - -Thu Sep 29 15:21:44 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * reloc.c (bfd_install_relocation): Change type of "data" to - bfd_byte *, to go along with yesterday's change. - - * 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. - - * 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. - -Thu Sep 29 12:29:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * syms.c (stt): Add .rdata and .rodata. - -Wed Sep 28 13:35:05 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * reloc.c (bfd_install_relocation): Cast data_start to bfd_byte * - before trying to add values to it. - -Tue Sep 27 16:47:58 1994 Ken Raeburn <raeburn@cujo.cygnus.com> - - * elf32-hppa.c (elf32_hppa_backend_final_write_processing): Cast - return value from elf_sym_extra. - (elf32_hppa_build_stubs): Cast return value from bfd_zalloc. - (elf32_hppa_size_stubs): Cast return value from malloc. - - * gen-aout.c (main): Declare and initialize "arch". - - * cofflink.c (coff_link_add_symbols): Cast return value of - bfd_hash_allocate. - - * riscix.c (riscix_callback): Use PARAMS macro in prototype. - - * reloc.c (bfd_install_relocation): New function, mostly copied - from bfd_perform_relocation, adjusted for the assembler's needs. - * bfd-in2.h: Regenerated. - -Mon Sep 26 11:00:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (assign_file_positions_except_relocs): Align the - section VMA and the file position even if D_PAGED is not set. - - * 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. - -Fri Sep 23 15:15:31 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (map_program_segments): Don't abort if we allocated - too much space for the program header, only if we allocated too - little. - (assign_file_positions_except_relocs): Similar change. - -Tue Sep 20 13:17:07 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * libaout.h: Fix comment. - * ns32knbsd.h: Changed M_NS32K_NETBSD to M_532_NETBSD to match - libaout.h. - -Tue Sep 20 15:23:21 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * Makefile.in: Rebuilt dependencies. - (BFD32_BACKENDS): Add sparcnetbsd.o. - (CFILES): Add ns32knetbsd.c and sparcnetbsd.c. - * targets.c: ns32knetbsd_vec was renamed to pc532netbsd_vec. - - * coff-sh.c (rtype2howto): Remove; unused. - (coff_sh_relocate_section): Remove unused local variable rstat. - (reloc_processing): Comment out; unused. - -Fri Sep 16 12:12:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - -Wed Sep 14 15:37:19 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - - * 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. - -Wed Sep 14 15:06:55 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - - * libecoff.h (struct ecoff_tdata): Add field find_buffer. - * ecoff.c: Include aout/stab_gnu.h. - (ecoff_find_nearest_line): Handle stabs debugging information. - - * elfcode.h (elf_link_output_extsym): Keep a symbol marked as weak - even if it is referenced by another object. - -Tue Sep 13 17:57:00 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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'. - - * 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. - - * 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. - - * 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). - -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. - -Tue Sep 13 16:23:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * aoutx.h (NAME(aout,final_link)): Don't assume that all the input - files are a.out. - -Tue Sep 13 11:09:39 1994 J.T. Conklin (jtc@rtl.cygnus.com) - - * 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. - -Mon Sep 12 21:56:20 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Mon Sep 12 11:43:08 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coff-alpha.c (ecoffalpha_little_vec): Add SEC_CODE and SEC_DATA - to section_flags. - * coff-mips.c (ecoff_little_vec, ecoff_big_vec): Likewise. - - * elfcode.h (swap_out_syms): Set the type of an undefined symbol - to STT_FUNC if the BSF_FUNCTION flag is set. - - * 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. - - * ctor.c: Remove; obsolete. - * Makefile.in: Rebuild dependencies. - (BFD_LIBS): Remove ctor.o. - (CFILES): Remove ctor.c. - * libbfd.h: Rebuild. - -Mon Sep 12 01:58:47 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Sun Sep 11 21:58:59 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/hppaosf.mh (RANLIB): Do not set. - * config/hppabsd.mh (RANLIB): Likewise. - -Sun Sep 11 22:50:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Fri Sep 9 11:51:49 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coffgen.c (coff_get_symtab): Reindented. Removed commented out - call to bfd_constructor_entry. - - 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. - -Thu Sep 8 16:20:38 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * coff-h8300.c (h8300_reloc16_extra_cases, case RELBYTE): Flag - overflows correctly. - -Wed Sep 7 19:01:42 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * libelf.h (struct elf_backend_data): Change second argument of - elf_backend_final_write_processing hook to boolean. - (struct elf_obj_tdata): Add linker field. - * elfcode.h (NAME(bfd_elf,write_object_contents)): Pass value of - tdata linker field to final_write_processing, rather than NULL. - (elf_bfd_final_link): Don't call final_write_processing hook. Set - tdata linker field to true. - * elf32-mips.c (mips_elf_final_write_processing): Change type of - second argument to boolean. - * elf32-hppa.c (elf32_hppa_backend_final_write_processing): - Likewise. - - * 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. - -Tue Sep 6 23:28:52 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Tue Sep 6 14:51:11 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - 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. Don't check obj_raw_syment_count - until after coff_write_symbols is called. - (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): Set obj_raw_syment_count, not - 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. - -Tue Sep 6 14:00:45 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * coffgen.c (coff_print_symbol, case bfd_symbol_print_all): Check - for section symbol, and print its aux fields with appropriate - labels. - - * Makefile.in (ALL_MACHINES): Added cpu-arm.o. - -Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org) - - * aoutx.h (NAME(aout,machine_type)): Recognize the ARM processor. - * archures.c, config.bfd, configure.host, libaout.h, reloc.c, - targets.c: Add support for the ARM. - * cpu-arm.c, riscix.c, config/riscix.mh, config/riscix.mt: New files. - - * aoutx.h (add_to_stringtable): Check that str isn't a NULL pointer. - -Fri Sep 2 14:10:30 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * 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. - -Tue Aug 30 21:24:54 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_write_fixups, case R_ENTRY): Handle case where no - unwind descriptor information is available. - -Tue Aug 30 11:43:30 1994 Eric Youngdale (ericy@cais.cais.com) - - * 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. - -Fri Aug 26 15:47:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coffgen.c (coff_real_object_p): Set obj_raw_syment_count. - (coff_get_normalized_symtab): Verify obj_raw_syment_count, rather - than setting it. - -Thu Aug 25 10:44:53 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * archive.c (bsd_write_armap): Remove host dependencies. - - * aoutx.h (add_to_stringtab): Check for _bfd_stringtab_add error - before adding BYTES_IN_WORD. - - * coffgen.c (coff_find_nearest_line): Look for the best C_FILE, - not merely the first. - - * 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. - -Wed Aug 24 11:49:19 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - - * configure.host, config.bfd: Change i[34]86 to i[345]86. - * 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. - - * section.c (bfd_make_section_anyway): Fix failure check of - bfd_make_empty_symbol. From Antti.Miettinen@ntc.nokia.com. - - * 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. - -Tue Aug 23 10:51:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * archive.c (_bfd_write_archive_contents): Don't update the - symbol map timestamp if there is no symbol map. From - schwab@issan.informatik.uni-dortmund.de (Andreas Schwab). - -Mon Aug 22 12:26:42 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - - * 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. - -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. - -Thu Aug 18 16:29:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - 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. - - * 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. - -Wed Aug 17 16:54:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * linker.c (_bfd_generic_link_add_archive_symbols): Initialize - PASS to the old value + 1. - - * 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. - -Tue Aug 16 16:53:00 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Tue Aug 16 00:12:31 1994 Eric Youngdale (ericy@cais.cais.com) - - * 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. - -Mon Aug 15 12:16:56 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - - * 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. - - * 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. - - * 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. - - * 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. - -Fri Aug 12 11:22:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (section_from_elf_index): Correct check for invalid - section index. - - * 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>. - - * configure.host (sparc-*-solaris2*): Use solaris2, not sysv4. - The linker depends upon configuring for solaris2. - * hosts/solaris2.h: New file; include hosts/sysv4.h. - * config/solaris2.mh: New file; copy of config/sysv4.mh. - -Wed Aug 10 13:09:38 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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>. - -Mon Aug 8 17:18:49 1994 Stan Shebs (shebs@andros.cygnus.com) - - 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. - -Mon Aug 8 17:55:52 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coff-i960.c (coff_i960_relocate): Don't try to convert relocs - against common symbols. - -Sat Aug 6 22:27:30 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * irix-core.c (irix_core_core_file_p): Ignore sections that - are not contained in the core file. - -Thu Aug 4 11:32:23 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coff-m68k.c (m68k_reloc_type_lookup): New function. - (coff_bfd_reloc_type_lookup): Define. - * cf-m68klynx.c (_bfd_m68kcoff_reloc_type_lookup): Define. - - * 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. - -Wed Aug 3 16:45:41 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coff-i960.c (coff_i960_relocate): Rewrote to change relocs - against locally defined symbols into relocs against section - symbols, for VxWorks 5.1. - -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. - -Wed Aug 3 05:08:24 1994 D. V. Henkel-Wallace (gumby@cygnus.com) - - * coffcode.h (coff_write_object_contents): set internal_a.magic to - LYNXCOFFMAGIC whenever 68k, SPARC or i386 LynxOS - (yes, they have the same magic number!) - -Tue Aug 2 10:43:21 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * hp300hpux.c (BMAGIC): Define as HPUX_DOT_O_MAGIC, to make test - in aoutx.h work correctly. - - * coff-i960.c (coff_i960_relocate): New function. - (howto_rellong, howto_iprmed): Use it as special_function. - - * 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. - -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. - -Mon Aug 1 12:04:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elf64-sparc.c (ELF_MAXPAGESIZE): Define. - - 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. - (map_program_segments): Check DYNAMIC as well as EXEC_P. - (assign_file_positions_except_relocs): Likewise. - * 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. - - * elfcode.h (elf_adjust_dynamic_symbol): Correct weak symbol - handling again. - - * elfcode.h (elf_slurp_reloc_table): Don't try to read the relocs - if there aren't any. - - * configure.host (sparc-*-solaris2*): Use sysv4, not solaris2. - * hosts/solaris2.h: Remove. - * config/solaris2.mh: Remove. - -Sun Jul 31 14:27:04 1994 Jeff Law (law@snake.cs.utah.edu) - - * elf32-hppa.c, elf32-hppa.h: Update comment reflecting which - HPPA ELF spec the code implements. - -Tue Jul 26 17:38:01 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * cpu-i960.c (MAX_ARCH): New macro. - (compatible): Use it in computing array bounds. Put comma after - last entry in array, for regularity. - (arch_info_struct): Adjust spacing for easier reading. - - * coff-i960.c (howto_rellong, howto_iprmed, howto_optcall): Use - HOWTO macro. - - * cpu-i960.c (JX): Define as bfd_mach_i960_jx. - (scan_960_mach): Recognize jx machine. - (MAX_ARCH): Define to be JX. - (compatible): Add JX row to array. - (arch_info_struct): Add JX entry. - - * archures.c (bfd_mach_i960_jx): New macro. - * bfd-in2.h: Regenerated. - - * coffcode.h (coff_set_arch_mach_hook): For F_I960JX, set machine - to bfd_mach_i960_jx. - (coff_set_flags): For bfd_mach_i960_jx, set F_I960JX. - -Tue Jul 26 11:04:00 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (elf_adjust_dynamic_symbol): When handling a weak - symbol, correct check to see whether the equivalent normal symbol - was referenced. - - 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. - -Mon Jul 25 12:21:07 1994 Stan Shebs (shebs@andros.cygnus.com) - - * 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. - -Fri Jul 22 11:07:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * linker.c (generic_link_check_archive_element): When changing a - symbol to common, set the alignment. - (_bfd_generic_link_add_one_symbol): When creating a common symbol, - set the alignment. - * aoutx.h (aout_link_check_ar_symbols): When changing a symbol to - common, set the alignment. - (aout_link_add_symbols): Restrict the alignment of a common symbol - to the alignment power given by the architecture. - * libelf.h (struct elf_link_hash_entry): Remove align field. Add - copy_offset field. - * elfcode.h (elf_link_add_object_symbols): Store alignment in - new bfd_link_hash_entry field, not in elf_link_hash_entry field. - (elf_link_output_extsym): Similar change when getting alignment. - * elf.c (_bfd_elf_link_hash_newfunc): Don't initialize align. Do - initialize copy_offset. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Use copy_offset - field rather than align field. Get alignment using bfd_log2 - rather than switch. - * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. - * elf32-i386.c (elf_i386_finish_dynamic_symbol): Use copy_offset, - not align. - * elf32-sparc.c (elf32_sparc_finish_dynamic_symbol): Likewise. - - * 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. - -Thu Jul 21 17:24:31 1994 Stan Shebs (shebs@andros.cygnus.com) - - * i386mach3.c: Reverted to version from before Jul 5 1994 changes. - -Thu Jul 21 12:26:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - -Wed Jul 20 15:46:44 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (NAME(bfd_elf,size_dynamic_sections)): Add rpath - argument. If it is not NULL, use it to set DT_RPATH. - * bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype. - (bfd_elf64_size_dynamic_sections): Likewise. - * bfd-in2.h: Rebuilt. - -Sat Jul 16 21:10:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (elf_get_dynamic_symtab_upper_bound): If there is no - dynamic symtab, return error. - - * 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. - - * 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. - -Sat Jul 16 13:55:38 1994 Stan Shebs (shebs@andros.cygnus.com) - - * config.bfd (m88*-harris-cxux*): Recognize. - * hosts/harris.h (POSIX_UTIME, HAVE_PROCFS): Define. - - * 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. - -Thu Jul 14 15:12:24 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * reloc.c (enum bfd_reloc_code_real, bfd_type, struct - reloc_howto_struct, reloc_howto_type, HOWTO, HOWTO2): Copied - changes over from bfd-in2.h so they get generated properly next - time someone runs "make headers". - * bfd-in2.h: Rebuilt. - - * targets.c (netbsd532_vec, pc532mach_vec): Declare const. - (m88kmach3_vec): Restore deleted declaration. - - * configure.in: Alphabetize target vector names. - - * config/pc532mach.mh: New file. - (HDEPFILES, HDEFINES): Define here. - * config/pc532-mach.mt (HDEPFILES, HDEFINES): Deleted. - * config/ns32k-netbsd.mt (HDEPFILES, HDEFINES): Deleted. - - Sun Jul 10 00:04:20 1994 Ian Dall (dall@hfrd.dsto.gov.au) - - * pc532-mach.c: New File. pc532-mach a.out format. - - * netbsd532.c: New file. pc532-netbsd532 a.out format. - - * hosts/pc532mach.h: New file. pc532-mach host support. - - * cpu-ns32k.c: New file. ns32k support cpu specific code rather - than format specific code. - - * config/pc532-mach.mt: New file. Support for pc532-mach target. - - * config/ns32k-netbsd.mt: New file. Support for netbsd532 target. - - * aout-ns32k.c, aout-ns32k.h: New files supporting aout format for - ns32k series. - - * targets.c: Add netbsd532_vec and pc532machaout_vec into - bfd_target_vector array. Move netbsd386_vec to alphabetic order - location. - - * reloc.c (_bfd_final_link_relocate) Add support for - special_function1 in howto. - - * libaout.h: add M_NS32032, M_NS32532, M_532_NETBSD entries in - machine_type enum. - - * configure.in: add pc532mach_vec and netbsd532_vec entries. - - * config.bfd: add pc532mach host entries. Use for both - ns32k-pc532-mach and ns32k-pc532-netbsd. - - * config.bfd: it doesn't work to use i386-mach3 for ns32k*-*-mach. - add ns32k-pc532-mach* and ns32k-*-netbsd* entries. - - * bfd-in2.h: Add ns32k specific relocations to bfd_reloc_code_real - enum. - - * bfd-in2.h: Add special_function1 to struct howto. Change HOWTO - and NEWHOWTO macros to make special_function1 NULL. Neww HOWTO2 - macro. - - * bfd-in2.h: Split definition of struct reloc_howto_struct - and corresponding typedef into two statements. - - * bfd-in2.h: Add entry bfd_arch_ns32k to bfd_architecture enum. - - * archures.c: Add bfd_ns32k_arch prototype, and entry in - archures_init_table. - - * aoutx.h (aout_link_reloc_link_order): Allow for target dependent - MY_put_reloc macro. Allow for target dependent special_function1 - to apply the relocation. - - * aoutx.h (aout_link_input_section_std): Allow for target - dependent determination of reloc howto. Allow for target dependent - special_function1 to apply the relocation. - - * aoutx.h (get_reloc_upper_bound): Detect bss and return 0. - - * aoutx.h (slurp_reloc_table): Detect bss and succesfully read - zero reloc entries. - - * aoutx.h (machine_type): Add bfd_arch_ns32k case. - - * aoutx.h: Stat to determine executable status if STAT_FOR_EXEC - is defined (not just MACH). Use fstat instead of stat and check - for fstat error. - - * aoutx.h: Allow target dependent swap_std_reloc_{in,out}. - - * aoutx.h: Allow CTORS reloc info to be in target dependent reloc - table. - - * aout-target.h: Apply SWAP_MAGIC (if defined) after - swap_exec_header_in, otherwise we have magic in the wrong order. - -Thu Jul 14 11:47:27 1994 Stan Shebs (shebs@andros.cygnus.com) - - * coff-sparc.c (sparccoff_vec): Have leading underscores. - -Tue Jul 12 12:08:10 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * 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. - -Tue Jul 12 11:41:22 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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. - - * 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. - -Mon Jul 11 20:08:23 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * section.c (STD_SECTION): Make the sixth argument boolean, not - the seventh. From gary@tuva.pacsemi.oz.au (gary kopff). - -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 - -Thu Jul 7 14:18:06 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * reloc.c (bfd_perform_relocation): Don't clobber the relocation - value for coff-Intel-little or coff-Intel-big. Hack upon hack. - -Thu Jul 7 10:10:34 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * 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. - -Thu Jul 7 10:19:20 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.h (R_HPPA_COMPLEX): Fix dumb typo. - -Wed Jul 6 19:21:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * hosts/sysv4.h (qsort, strtol): Don't declare. - - * elfcode.h (elf_link_output_sym): Don't call output_symbol_hook - if it is NULL. - - * elf32-mips.c (mips_elf_final_write_processing): Add ignored info - argument to correspond to recent libelf.h change. - -Wed Jul 6 00:48:57 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * 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. - -Wed Jul 6 00:13:17 1994 Jeff Law (law@snake.cs.utah.edu) - - * hppabsd-core.c (hppabsd_core_core_file_p): Sanity check the - value of clicksz to help weed out non HPPA BSD core files. - -Tue Jul 5 13:26:02 1994 Stan Shebs (shebs@andros.cygnus.com) - - 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. - -Tue Jul 5 13:56:52 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * elfcode.h (swap_out_syms): Get alignment of common symbol from - st_value field of saved ELF symbol information, if there is any. - -Mon Jul 4 19:13:32 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.h (R_HPPA_COMPLEX): Define. - * elf32-hppa.h (R_HPPA_COMPLEX): Define. - (elf32_hppa_reloc_type): Delete R_PARISC_STUB_CALL_17. - -Fri Jul 1 12:07:41 1994 Jeff Law (law@snake.cs.utah.edu) - - * Support code for enabling the new style linker for PA ELF. - * elfcode.h (swap_symbol_in, swap_symbol_out): Externalize. - (elf_compute_section_file_positions): Pass link_info to - the begin_write_processing hook. - (bfd_elf_write_object_contents): Pass NULL for new link_info - argument to final_write_processing hook. - (elf_link_output_sym): Accept new "input_section" argument for - the symbols's input section. All callers changed. Call the - link_output_symbol_hook if it's defined. - (elf_bfd_final_link): Call the final_write_processing hook if - it's defined. - * libelf.h (elf_backend_link_output_symbol_hook): Declare. - (elf_backend_begin_write_processing): Add new "info" argument. - (elf_backend_final_write_processing): Likewise. - * elf32-target.h (elf_backend_link_output_symbol_hook): Provide - a default definition. - (elf32_bed): Add elf_backend_link_output_symbol_hook. - * elf64-target.h: Likewise. - - * Major rework of the PA ELF code. Uses the new style BFD - linker, major cleanups. - * hppa_stubs.h: Rewrite from scratch. Much smaller and simpler. - * elf32-hppa.h: Delete all symbol extension related code. - (hppa_look_for_stubs_in_section): Delete decl. - (elf32_hppa_size_stubs, elf32_hppa_build_stubs): New decls. - * elf32-hppa.c: Symbol extension stuff moved form elf32-hppa.h - into elf32-hppa.c. Do not include aout64.h. - (typdef hppa_stub_type): Delete. - (elf32_hppa_stub_name_list_struct): Delete. - (elf32_hppa_stub_description_struct): Delete. - (arg_reloc_type): Use simpler enumerations. All references changed. - (arg_location, arg_reloc_relocation): Likewise. - (elf32_hppa_symextn_map_struct): Delete. - (get_symbol_value): Delete. - (elf32_hppa_get_sym_extn): Delete. - (find_stubs, new_stubs, type_of_mismatch): Delete. - (find_stub_by_name, add_stub_by_name): Delete. - (hppa_elf_stub_finish, hppa_elf_stub_reloc): Delete. - (hppa_elf_arg_reloc_needed): Renamed. Simplify. - (hppa_elf_build_linker_stub, hppa_elf_create_stub_sec): Delete. - (hppa_elf_long_branch_needed_p): Delete. - (hppa_look_for_stubs_in_section): Delete. - (hppa_elf_get_section_contents): Delete. - (elf32_hppa_backend_symbol_processing): Delete. - (elf32_hppa_backend_section_processing): Delete. - (elf32_hppa_backend_section_from_shdr): Delete. - (elf32_hppa_backend_fake_sections): Delete. - (elf32_hppa_backend_section_from_bfd_section): Delete. - (NEW_INSTRUCTION): Delete. - (CURRENT_STUB_OFFSET): Delete. - (elf32_hppa_relocate_section): New function. - (elf32_hppa_bfd_final_link_relocate): New function. - (elf32_hppa_size_symext): New function. - (elf32_hppa_link_output_symbol_hook): New function. - (elf32_hppa_read_symext_info): New function. - (elf32_hppa_add_symbol_hook): New function. - (elf32_hppa_name_of_stub): New function. - (elf32_hppa_size_of_stub): New function. - (elf32_hppa_build_one_sub): New function. - (elf32_hppa_build_stubs): New function. - (elf32_hppa_size_stubs): New function. - (linker, stub and argument hash tables): Add appropriate - structures, definitions and functions to implement all three - hash tables. - (hppa_elf_relocate_insn): Don't need argument location information - in this function. - (add_entry_to_symext_chain): Accept a symbol's argument location - information rather than the symbol itself. All callers changed. - (hppa_elf_gen_reloc_type): Simplify. - (hppa_elf_set_section_contents): Stub section is no longer special. - (hppa_elf_reloc): Greatly simplify. - (elf32_hppa_begin_write_processing): Accept link_info argument. - Handle being called from the BFD backend linker. - (elf32_hppa_final_write_processing): Likewise. - (elf_hppa_tc_make_sections): No longer call stub_finish. - -Mon Jun 27 18:07:06 1994 Steve Chamberlain (sac@cirdan.cygnus.com) - - * section.c (bfd_get_section_contents): Put in parens to get - precedence right. - -Sun Jun 26 18:08:29 1994 Jeff Law (law@snake.cs.utah.edu) - - * libelf.h (relocate_section): New argument "output_names" added - to prototype. - * elfcode.h (elf_link_input_bfd): New argument "output_names" - added to prototype of relocate_section. Pass the output symbol - names to relocate_section. - * elf32-i386.c (elf_i386_relocate_section): Use "output_names" to - determine the name of a local symbol. - * elf32-mips.c (mips_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - -Fri Jun 24 08:15:42 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - 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. - -Thu Jun 23 15:31:28 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - 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. - - * elfcode.h (elf_object_p): Don't set DYNAMIC just because there - is an SHT_DYNAMIC section. - - * cf-i386lynx.c (i386coff_vec): Don't include DYNAMIC in - object_flags. - * coff-sparc.c (sparccoff_vec): Likewise. - * hppabsd-core.c (hppabsd_core_vec): Likewise. - - * aoutx.h (NAME(aout,some_aout_object_p)): Don't set SEC_RELOC - just because DYNAMIC is set. - -Thu Jun 23 12:53:41 1994 David J. Mackenzie (djm@rtl.cygnus.com) - - * configure.in: Change --with-targets to --enable-targets and - --with-64-bit-bfd to --enable-64-bit-bfd. - * Makefile.in, mpw-make.in, targets.c: Change comments. - -Wed Jun 22 17:59:59 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config.bfd (powerpc-*-elf*): New target, just like - powerpc-*-sysv4*. - - * linker.c (FAIL): Undefine macro before defining as enum. - -Wed Jun 22 10:52:47 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * linker.c (_bfd_generic_link_add_archive_symbols): Initialize - pass from abfd->archive_pass, and save it there as well. - - * 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. - - * elfcode.h (elf_get_reloc_upper_bound): Correct. - - * aout64.c (BMAGIC, QMAGIC): Define if not already defined. From - Peter Schauer <pes@regent.e-technik.tu-muenchen.de>. - - 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. - - * 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). - -Tue Jun 21 11:47:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * coff-go32.c (go32coff_archive_p): Remove unused function. - - * 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. - -Mon Jun 20 11:06:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * 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 *. - - * 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. - - * 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. - - * 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. - - * mipsbsd.c (MY_final_link_callback): Define to avoid warning. - - * 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. - -Fri Jun 17 14:45:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aout-target.h (MY(callback)): Set the alignments of the text, - data and bss sections after determining the architecture. - - * sunos.c (sunos_add_one_symbol): Treat a common symbol from a - dynamic object as being in the .bss section of the object, rather - than as being undefined. - -Fri Jun 17 11:16:50 1994 Jeff Law (law@snake.cs.utah.edu) - - * libhppa.h (bfd_hppa_insn2fmt, hppa_rebuild_insn): Make INLINE. - - * elf32-hppa.h (elf_hppa_final_processing): Delete decl. - -Thu Jun 16 23:36:23 1994 Jeff Law (law@snake.cs.utah.edu) - - * elfcode.h (elf_link_input_bfd): Don't try to read local symbols - if there aren't any in the input file. - -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. - -Thu Jun 16 14:23:46 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - - * elfcode.h (elf_bfd_final_link): If trying to generate a shared - object, warn and return false. - - * aoutx.h (NAME(aout,some_aout_object_p)): Accept BMAGIC objects - and treat them as OMAGIC. - -Wed Jun 15 18:02:21 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - Enable sparc v9 support for release. Note that this is still a - work in progress, pending release of an ABI specification. - * config.bfd, configure.in: Include sparc v9 elf config. - * elfcode.h (prep_headers): Handle sparc v9 (64 bit). - * reloc.c (bfd_reloc_code_real): New reloc types. - * elf64-sparc.c: Implement elf64-sparc target. - * Makefile.in, targets.c: Updated. - -Wed Jun 15 01:34:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - - * 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. - - * coff-sparc.c (SWAP_OUT_RELOC_EXTRA): Define to clear the r_spare - field of the reloc rather than letting it be garbage. - - * 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). - - * 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. - - * aoutx.h (translate_from_native_sym_flags): Treat N_SETV symbols - as N_DATA symbols. - (aout_link_add_symbols): Likewise. - - * 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. - - * bfd-in.h (BFD_TRADITIONAL_FORMAT): Define new BFD flag to - request BFD to write object in the traditional format, whatever - that means for the particular backend. - * bfd-in2.h: Rebuilt. - - * hash.c (bfd_hash_allocate): If obstack_alloc fails, set - bfd_error_no_memory. - -Tue Jun 14 13:00:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - - * 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. - -Mon Jun 13 14:20:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Sun Jun 12 20:21:03 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Sat Jun 11 16:32:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - 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. - -Fri Jun 10 13:25:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (NAME(aout,canonicalize_reloc)): Handle .bss section. - (NAME(aout,get_reloc_upper_bound)): Likewise. - - * 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. - -Wed Jun 8 23:15:53 1994 Stu Grossman (grossman@cygnus.com) - - * nlmcode.h (nlm_object_p): Set EXEC_P and start address for GDB. - -Wed Jun 8 23:57:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Tue Jun 7 13:25:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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>. - - * 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. - -Mon Jun 6 10:57:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - - 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. - - * 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. - - * 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. - - * ecoff.c (ecoff_bfd_copy_private_bfd_data): Don't try to copy - data to a non-ECOFF file. - - * libbfd-in.h: Add warning that libbfd.h is a generated file. - * libbfd.h: Rebuilt. - -Sun Jun 5 15:02:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - 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. - - * elf.c (_bfd_elf_make_section_from_shdr): Only set SEC_DATA if - SEC_LOAD is set, rather than checking SEC_ALLOC. - - * libbfd-in.h (bfd_realloc): Change last arg to "size_t size". - -Fri Jun 3 10:58:02 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_write_object_contents): Don't compute the file header's - checksum here. - (som_write_headers): Instead do it here. - - * libbfd.h (bfd_realloc): Change last arg to "size_t size". - -Thu Jun 2 17:39:22 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * hosts/sun3.h: Include <stdlib.h>. Don't declare free, exit or - getenv. - - 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. - - * aoutx.h (NAME(aout,slurp_symbol_table)): Don't zero out cached - until we know it is non-NULL. - (aout_link_write_symbols): Don't skip a warning symbol even if it - has already been written out. If skipping an indirect symbol, - skip the next symbol as well. - -Wed Jun 1 14:37:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * hosts/sun3.h: Don't declare qsort, malloc or realloc. - -Thu May 26 13:56:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * nlmcode.h (nlm_swap_auxiliary_headers_in): Cast bfd_byte pointer - to char pointer to avoid compiler warnings. - - * dep-in.sed: Remove spaces before colons. - - Merged changes back in from FSF gas release 2.3: - - * Makefile.in (stmp-bfd.h): Wrap `if' block around grep - invocation, to avoid a bug in BSD 4.4 make. - - From Ralph Campbell: - * mipsbsd.c (mips_fix_jmp_addr): If symbol is undefined, return an - error. - (mips_fix_hi16_s): Ditto. - - Fri May 13 21:21:00 1994 DJ Delorie (dj@ctron.com) - - * makefile.dos: define a default target, or archives won't work - due to multiple matches. - - Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com) - - * configure.bat: update for latest files - * makefile.dos: update for correct targets and sources - * coff-go32.c: [new] go32's COFF format (i386coff with underscores) - * targets.c: add go32coff target - * makefile.in: add coff-go32.c support - -Thu May 26 10:10:21 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Tue May 24 16:17:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - 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. - -Fri May 20 13:38:23 1994 Jeff Law (law@snake.cs.utah.edu) - - * som.c (som_set_reloc_info): Do not set any relocation info - for SOM fixups which are never passed to BFD. - -Fri May 20 11:57:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-mips.c (mips_relocate_section): Add MIPS_R_JMPADDR overflow - checking. - - * 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. - - * 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. - -Thu May 19 11:37:11 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-target.h, elf64-target.h: Change ar_max_namelen value from - 15 to 14 to match SVR4 ar. - - 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. - -Wed May 18 08:29:04 1994 Ian Lance Taylor (ian@cygnus.com) - - * 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. - -Wed May 18 09:09:32 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Tue May 17 19:33:12 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * coff-i960.c (icoff_little_vec, icoff_big_vec): Indicate leading - underscore, for compatibility with Intel tool chain (gnu960v2). - -Mon May 16 10:09:22 1994 Jeff Law (law@snake.cs.utah.edu) - - * 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. - -Sat May 14 09:09:19 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aoutx.h (add_to_stringtab): Use BFD_ASSERT not assert. This - avoids __eprintf troubles. - -Fri May 13 10:51:21 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bout.c (b_out_bfd_reloc_type_lookup): Handle BFD_RELOC_CTOR. - - * config/mipsbelf.mt (SELECT_VECS): Add ecoff_big_vec and - ecoff_little_vec since Irix 5 supports ECOFF executables. - -Wed May 11 00:31:57 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_find_nearest_line): Handle fdr.adr != pdr.adr - correctly. - - * Makefile.in (stmp-bfd.h): Use || instead of ; to force SunOS - make to invoke the shell. - -Tue May 10 14:23:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Mon May 9 18:53:40 1994 Bill Cox (bill@rtl.cygnus.com) - - * linker.c: Add missing comment terminator. - -Mon May 9 11:53:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - - * elfcode.h (assign_file_positions_except_relocs): Don't require - page shared between .data and .bss segments to contain zeroes. - - * 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. - - * Makefile.in (stmp-bfd.h): Avoid useless make error message in a - different way; touch takes a numeric argument on some systems. - -Fri May 6 13:34:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Fri May 6 11:11:50 1994 D. V. Henkel-Wallace (gumby@rtl.cygnus.com) - - * config.bfd: handle erricsson config (for OSE). - -Thu May 5 15:40:47 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - Patches from Ralph Campbell: - * mipsbsd.c (mips_fix_jmp_addr): New function. - (mips_fix_hi16_s): Use bfd_is_com_section. - (mips_howto_table_ext): Call mips_fix_jmp_addr for MIPS_RELOC_JMP. - -Fri May 6 11:48:55 1994 Steve Chamberlain (sac@cygnus.com) - - * config/go32.mh: XX support. - - From bill - * Makefile.in: Build sysdep.h without causing worrying but - harmless error message. - -Wed May 4 11:09:53 1994 Ian Lance Taylor (ian@cygnus.com) - - 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. - -Wed May 4 02:56:00 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config.bfd (i386-*-gnu*): Treat like i386-*-mach*. - (m68*-apollo-*): Treat all Apollo configs the same, don't handle - BSD specially. - -Tue May 3 19:43:21 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Fri Apr 29 15:08:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * 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. - -Fri Apr 29 09:42:39 1994 Steve Chamberlain (sac@cygnus.com) - - * 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. - -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. - -Tue Apr 26 15:04:26 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (hppa_elf_reloc): Adjust the addend of relocations - against section symbols to avoid losing during ld -r. - -Tue Apr 26 12:16:41 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (shstrtab_length_fixed): Remove useless static - variable. - (struct elf_sect_data): Remove unused structure. - (elf_object_p): Free memory if error occurs. Check return value - of bfd_default_set_arch_mach. If elf_get_str_section fails, - preserve error code rather than setting wrong_format. - (null_shdr): Remove static variable. - (assign_section_numbers): Remove shstrtab_length_fixed assignment. - Allocate first section header on BFD obstack rather than using - null_shdr. - (bfd_prpsinfo): Remove unused local variable newsect. - -Mon Apr 25 15:31:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (write_relocs): Undo patch of Apr 10; breaks Solaris. - - * 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. - -Fri Apr 22 11:08:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - 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. - - 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. - - * ieee.c (ieee_object_p): Set bfd_error_got_wrong_format if - appropriate. - - * targets.c (bfd_target_vector): Add bfd_elf32_powerpc_vec. - - * aout-adobe.c (aout_adobe_set_arch_mach): Check return value of - bfd_default_set_arch_mach. Accept bfd_arch_m68k as well as - bfd_arch_unknown. - * coffcode.h (coff_set_arch_mach): Check return value of - bfd_default_set_arch_mach. - * elfcode.h (elf_set_arch_mach): Don't check a list of ELF - architectures, just see if the desired architecture matches what - the ELF backend permits. - - * coffcode.h (coff_set_arch_mach_hook): Rename SHMAGIC to - SH_ARCH_MAGIC to match change in coff/sh.h. - (coff_set_flags): Likewise. - - Follow convention in which each NLM header has an 8 byte stamp - followed by a four byte length. - * libnlm.h (struct nlm_obj_tdata): Rename nlm_cygnus_section_hdr - to nlm_cygnus_ext_header, and change type to - Nlm_Internal_Cygnus_Ext_Header. - (nlm_cygnus_ext_header): Rename from nlm_cygnus_section_header. - * nlmcode.h (nlm_swap_auxiliary_headers_in): Use CyGnUsEx instead - of CyGnUsSeCs. Rename from cygnus_section to cygnus_ext. Require - length word to be 8. - (nlm_swap_auxiliary_headers_out): Rename from cygnus_section to - cygnus_ext. Set length word to 8. - (nlm_compute_section_file_positions): Rename from cygnus_section - to cygnus_ext. - -Thu Apr 21 22:54:22 1994 Stu Grossman (grossman at cygnus.com) - - * nlmcode.h (nlm_swap_auxiliary_headers_in): Keep section table - (from CyGnUsSeCs) in more permanent memory to keep section names - from getting trashed. - -Thu Apr 21 09:29:37 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * libelf.h (elf_obj_tdata): Add members for dynamic symbol table - handling. - * elfcode.h (bfd_section_from_shdr): Handle dynamic symbol table. - * elfcode.h (elf_slurp_symbol_table): Take additional parameter - to select static or dynamic symbol table and return number of - symbols slurped or -1 on error. - * elfcode.h (elf_get_symtab): Set bfd symcount from - elf_slurp_symbol_table result. - * elfcode.h (elf_get_dynamic_symtab_upper_bound, - elf_canonicalize_dynamic_symtab): New functions to handle dynamic - symbol table. - * elf32-target.h, elf64-target.h (BFD_JUMP_TABLE_DYNAMIC): - Change to handle dynamic symbol table, provide default definitions - for dynamic relocs. - * aoutx.h (howto_table_std, NAME(aout,swap_std_reloc_out), - NAME(aout,swap_std_reloc_in), aout_link_input_section_std, - aout_link_reloc_link_order): Handle r_jmptable and r_relative - relocations. - -Thu Apr 21 11:58:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Clean up uses of _bfd_dummy_target (from Peter Schauer). - * libbfd.c (_bfd_dummy_target): Set bfd_error_wrong_format. - * nlm-target.h (nlm_core_file_p): Define as _bfd_dummy_target, not - NULL. - * srec.c (srec_vec): Use _bfd_dummy_target, not NULL, in - _bfd_check_format. - (symbolsrec_vec): Likewise. - * tekhex.c (tekhex_vec): Likewise. - - * libnlm.h (struct nlm_obj_tdata): Add nlm_cygnus_section_hdr - field. - (nlm_cygnus_section_header): New accessor macro. - * nlmcode.h (nlm_object_p): Free new tdata structure if failure. - Add fixed sections before swapping in auxiliary headers. After - adding sections, treat errors as real, not as wrong format. - (nlm_swap_auxiliary_headers_in): Swap in the sections header; add - sections to the BFD for each section it describes. - (nlm_swap_auxiliary_headers_out): Swap out the sections header. - (nlm_compute_section_file_positions): Account for the size of the - sections header. - -Wed Apr 20 16:45:51 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * coff-sparc.c (sparccoff_vec): Change minimum alignment power to - 2, so that stab sections can be multiples of 4 bytes only. - - * hosts/i386aix.h: Changes to avoid prototypes conflicts with the - ones defined in stdlib.h. (From Minh Tran-Le.) - -Wed Apr 20 14:15:21 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlm32-ppc.c: Complete rewrite for new version of PowerPC - NetWare. Old code still present, but ifdeffed out. - - * nlmcode.h (nlm_swap_auxiliary_headers_in): Don't assume a - particular format for the customer header. Allocate a block of - memory and read it into that. - (nlm_swap_auxiliary_headers_out): Write out the block of memory. - (nlm_compute_section_file_positions): Include length of customer - header when computing its size. - -Mon Apr 18 14:27:17 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_prep_headers): Get the space's number from the - backend private section data rather than target_index. - (bfd_som_set_section_attributes): Store the space's number - in the backend private section data rather than target_index. - - * som.h (som_copyable_section_data_struct): Add space_number. - -Fri Apr 15 12:22:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-a29k.c (reloc_processing): Always set the address of a - R_IHCONST reloc to that of the immediately preceding R_IHIHALF. - gas does this anyhow, but some other assemblers seem to leave - garbage in the R_IHCONST address field. - - * bfd/archive.c: Consistently use ARFMAG; from - schwab@issan.informatik.uni-dortmund.de (Andreas Schwab). - (_bfd_write_archive_contents): Use ARFMAG rather than '`' and - '\012'. - (bsd_write_armap): Likewise. - (coff_write_armap): Likewise. - - * coff-mips.c (mips_relocate_section): When relaxing, adjust local - relocs against the .text section as required. - * ecofflink.c (bfd_ecoff_debug_accumulate): When relaxing, adjust - PDR addresses as required. - - * ecoff.c (ecoff_emit_aggregate): Take fdr argument. Map fdr - index through rfd map if it exists. Check for a couple of cases - which gdb handles specially. Change all callers. - (ecoff_type_to_string): Take fdr argument rather than aux_ptr and - bigendian argument. Change all callers. - (ecoff_print_symbol): Handle stStruct, stUnion and stEnum. - -Thu Apr 14 13:05:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-mips.c (mips_howto_table): Add dummy entries to account for - numbering changes in include/coff/mips.h. Add entries for - MIPS_R_RELHI and MIPS_R_RELLO. - (mips_ecoff_swap_reloc_in): Handle an extra bit for the reloc type - when little endian. Treat internal MIPS_R_RELLO or MIPS_R_RELHI - relocs like MIPS_R_SWITCH, and convert r_offset from 24 to 32 - bits. - (mips_ecoff_swap_reloc_out): Likewise. - (mips_adjust_reloc_in): Handle internal MIPS_R_RELLO or - MIPS_R_RELHI relocs like MIPS_R_SWITCH. - (mips_adjust_reloc_out): Likewise. - (mips_relhi_addr, mips_relhi_addend): New static variables. - (mips_relhi_reloc, mips_rello_reloc): New functions. - (mips_bfd_reloc_type_lookup): Turn BFD_RELOC_PCREL_HI16_S into - MIPS_R_RELHI and turn BFD_RELOC_PCREL_LO16 into MIPS_R_RELLO. - (mips_relocate_hi): Rename from mips_relocate_refhi, and add pcrel - argument. Changed all callers. - (mips_relocate_section): Rename got_reflo to got_lo and - reflo_int_rel to lo_int_rel. Handle MIPS_R_RELLO and MIPS_R_RELHI - relocs. - (mips_relax_section): Adjust MIPS_R_RELHI/MIPS_R_RELLO pairs when - expanding a PC relative call. - - * reloc.c (bfd_reloc_code_real_type): Add BFD_RELOC_PCREL_HI16_S - and BFD_RELOC_PCREL_LO16. - * bfd-in2.h: Rebuilt. - -Wed Apr 13 11:50:07 1994 Stan Shebs (shebs@andros.cygnus.com) - - * coff-sparc.c (sparccoff_vec): Set minimum alignment power to 3. - -Tue Apr 12 13:36:20 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_write_fixups): Always emit at least - one relocation for any non-bss section. - -Mon Apr 11 14:41:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (assign_file_positions_except_relocs): Don't require - the file alignment to correspond to the page size when linking - with -N. - -Sun Apr 10 01:02:24 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elfcode.h (write_relocs): For rela relocations, adjust the - addend for relocations involving section symbols to account - for the lossage of 1:1 mapping from input section symbols to - output section symbols. - -Fri Apr 8 12:22:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (NAME(aout,make_sections)): New function. - (NAME(aout,some_aout_object_p)): Call NAME(aout,make_sections) - rather than making sections inline. - (NAME(aout,mkobject)): Don't make any sections. - (NAME(aout,adjust_sizes_and_vmas)): Call NAME(aout,make_sections). - (NAME(aout,final_link)): Don't dereference obj_textsec (abfd) or - obj_datasec (abfd) if they are NULL. - * libaout.h (NAME(aout,make_sections)): Declare. - * bout.c (b_out_mkobject): Don't make any sections. - (b_out_write_object_contents): Call aout_32_make_sections. - (b_out_set_section_contents): Likewise. - * i386os9k.c (os9k_mkobject): Don't make any sections. - (os9k_write_object_contents): Call aout_32_make_sections. - (os9k_set_section_contents): Likewise. - - * aoutx.h (NAME(aout,new_section_hook)): Don't set N_EXT in target - index. - -Wed Apr 6 20:44:56 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * config.bfd, configure.host: Add mips-*-sysv4* support. - -Thu Apr 7 14:23:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-mips.c (mips_howto_table): Add entry for MIPS_R_SWITCH. - (mips_ecoff_swap_reloc_in): For MIPS_R_SWTICH, copy r_symndx into - r_offset and set r_symndx to RELOC_SECTION_TEXT. - (mips_ecoff_swap_reloc_out): For MIPS_R_SWITCH, get the r_symndx - value from the r_offset field. - (mips_adjust_reloc_in): Maximum r_type value is now MIPS_R_SWITCH. - For MIPS_R_SWITCH, copy the r_offset field into the addend field. - (mips_adjust_reloc_out): For MIPS_R_SWITCH, copy the addend field - into the r_offset field. - (mips_switch_reloc): New function. - (mips_bfd_reloc_type_lookup): Translate BFD_RELOC_GPREL32 into - MIPS_R_SWITCH. - (mips_relocate_section): Handle MIPS_R_SWITCH. - (mips_relax_section): Adjust MIPS_R_SWITCH offset if necessary. - -Thu Apr 7 11:10:51 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elfcode.h (elf_set_section_contents): Support calling the backend - function elf_backend_begin_write_processing when just beginning to - write an object file. - - * libelf.h (elf_backend_begin_write_processing): Declare. - - * elf{32,64}-target.h (elf_backend_begin_write_processing): Provide - a default definition. - (elf{32,64}_bed): Add elf_backend_begin_write_processing. - - * elf32-hppa.h (elf_hppa_tc_symbol): Delete extern declaration. - (elf_hppa_tc_make_sections): Likewise. - - * elf32-hppa.c (symext_chain_built): Delete. - (symext_chain_size): Renamed from symextn_contents_real_size. - (elf32_hppa_backend_{begin,final}_write_processing): New functions. - (add_entry_to_symext_chain): New function. - (hppa_elf_set_section_contents): Ignore writes to the symbol extension - section until it's been rebuilt internally. - (hppa_elf_get_section_contents): Symbol extension section is no - longer special. - (elf_backend_{begin,final}_write_processing): Define. - (elf_hppa_tc_make_sections): Simplify now that much code has - migrated into elf32_hppa_backend_{being,final}_write_processing. - -Wed Apr 6 17:24:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Add new target vectors to read the dynamic symbols and dynamic - relocs. Change a.out to use these rather than reading the dynamic - symbols and relocs along with the normal symbols and relocs. - * targets.c (bfd_target): Add fields - _bfd_get_dynamic_symtab_upper_bound, - _bfd_canonicalize_dynamic_symtab, - _bfd_get_dynamic_reloc_upper_bound, - _bfd_canonicalize_dynamic_reloc. - (BFD_JUMP_TABLE_DYNAMIC): Define. - * libbfd-in.h (_bfd_nodynamic_get_dynamic_symtab_upper_bound): - Define. - (_bfd_nodynamic_canonicalize_dynamic_symtab): Define. - (_bfd_nodynamic_get_dynamic_reloc_upper_bound): Define. - (_bfd_nodynamic_canonicalize_dynamic_reloc): Define. - * bfd.c (bfd_get_dynamic_symtab_upper_bound): Define. - (bfd_canonicalize_dynamic_symtab): Define. - (bfd_get_dynamic_reloc_upper_bound): Define. - (bfd_canonicalize_dynamic_reloc): Define. - * sunos.c (MY_read_dynamic_symbols): Don't define. - (MY_read_dynamic_relocs): Don't define. - (MY_get_dynamic_symtab_upper_bound): Define. - (MY_canonicalize_dynamic_symtab): Define. - (MY_get_dynamic_reloc_upper_bound): Define. - (MY_canonicalize_dynamic_reloc): Define. - (struct sunos_dynamic_info): Change type of dynsym_count and - dynrel_count to long. Add fields canonical_dynsym and - canonical_dynrel. - (sunos_read_dynamic_info): Check that BFD had DYNAMIC flag set. - Clear info->canonical_dynsym and info->canonical_dynrel. - (MY(read_dynamic_symbols)): Removed. - (MY(read_dynamic_relocs)): Removed. - (sunos_get_dynamic_symtab_upper_bound): New function. - (sunos_canonicalize_dynamic_symtab): New function. - (sunos_get_dynamic_reloc_upper_bound): New function. - (sunos_canonicalize_dynamic_reloc): New function. - * libaout.h: Declare struct reloc_ext_external and - reloc_std_external to avoid prototype problems. - (struct aout_backend_data): Remove fields read_dynamic_symbols and - read_dynamic_relocs. - (NAME(aout,translate_symbol_table)): Declare. - (NAME(aout,swap_ext_reloc_in)): Declare. - (NAME(aout,swap_std_reloc_in)): Declare. - * aoutx.h (NAME(aout,translate_symbol_table)): Renamed from - translate_symbol_table and made non-static. Changed all callers. - (NAME(aout,slurp_symbol_table)): Don't read dynamic symbols. - (NAME(aout,slurp_reloc_table)): Don't read dynamic relocs. - (NAME(aout,get_reloc_upper_bound)): Don't count dynamic relocs. - * aoutf1.h (aout_32_sunos4_write_object_contents): Don't bother to - remove dynamic symbols and relocs. They will no longer be - present. - (MY_read_dynamic_symbols): Don't define. - (MY_read_dynamic_relocs): Don't define. - (sunos4_aout_backend): Don't initialize dynamic entry points. - * aout-target.h (MY_read_dynamic_symbols): Don't define. - (MY_read_dynamic_relocs): Don't define. - (MY(backend_data)): Don't initialize dynamic entry points. - (MY_get_dynamic_symtab_upper_bound): If not defined, define to - _bfd_nodynamic version. - (MY_canonicalize_dynamic_symtab): Likewise. - (MY_get_dynamic_reloc_upper_bound): Likewise. - (MY_canonicalize_dynamic_reloc): Likewise. - * All backends: Added BFD_JUMP_TABLE_DYNAMIC to target vector. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - - * cf-m68klynx.c: Include sysdep.h. - - * hp300hpux.c: Removed some spaces in uses of NAME to avoid - problems with traditional C compilers. - - * targets.c (bfd_target): Rearranged fields in target vector. - Removed _bfd_debug_info_start, _bfd_debug_info_end and - _bfd_debug_info_accumulate, which were never used. - (BFD_JUMP_TABLE_GENERIC, BFD_JUMP_TABLE_COPY): Defined. - (BFD_JUMP_TABLE_CORE, BFD_JUMP_TABLE_ARCHIVE): Defined. - (BFD_JUMP_TABLE_SYMBOLS, BFD_JUMP_TABLE_RELOCS): Defined. - (BFD_JUMP_TABLE_WRITE, BFD_JUMP_TABLE_LINK): Defined. - * All backends: Changed to use the new BFD_JUMP_TABLE_* macros - rather than the single JUMP_TABLE macro. Removed many of the - weird macro definitions needed to support the monolithic - JUMP_TABLE. - * bfd-in.h (JUMP_TABLE): Removed. - * libbfd-in.h: Define a bunch of macros, and declare a few - functions, for use with the new BFD_JUMP_TABLE_* macros. - * libbfd.c (_bfd_dummy_new_section_hook): Removed. - (bfd_false): Set bfd_error_invalid_operation. - (bfd_nullvoidptr): Likewise. - (bfd_n1): New function. - (_bfd_nocore_core_file_matches_executable_p): Renamed from - _bfd_dummy_core_file_matches_executable_p. - (_bfd_nocore_core_file_failing_command): Similar rename. Set - bfd_error_invalid_operation. - (_bfd_nocore_core_file_failing_signal): Likewise. - (_bfd_generic_get_section_contents): Renamed from - bfd_generic_get_section_contents. Changed all callers. - (_bfd_generic_set_section_contents): Similar rename. - * ieee.c: #if 0 out ieee_bfd_debug_info_start, - ieee_bfd_debug_info_end, ieee_bfd_debug_info_accumulate. They - were never called. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - -Tue Apr 5 22:10:04 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Crude support for examining dynamic libraries. - * som.c (som_object_setup): Set DYNAMIC flag for SHL_MAGIC and - DL_MAGIC objects. - (som_prep_headers): Preserve the system_id for DYNAMIC objects. - Use SHL_MAGIC as the magic number of the DYNAMIC flag is set. - Write exec headers for DYNAMIC objects. - (som_begin_writing): DYNAMIC objects have the same alignment - restrictions as D_PAGED objects. - (bfd_section_from_som_symbol): Treat DYNAMIC objects like EXEC_P - objects. - (object_flags): Add DYNAMIC. - -Tue Apr 5 17:48:52 1994 Stan Shebs (shebs@andros.cygnus.com) - - * i386lynx.c, sparclynx.c (NAME): Remove embedded whitespace in - macro uses, confuses some non-ANSI compilers. - -Tue Apr 5 15:50:01 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_free_cached_info): Add missing PARAMS decl. - Don't free anything if we don't have a bfd_object. - (som_close_and_cleanup): Call som_bfd_free_cached_info. - -Tue Apr 5 11:22:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-mips.c (mips_elf_final_link): Don't remove empty sections. - It turns out not to be required on Irix 5, and it causes problems - if the sections happen to contain symbols. - - * elfcode.h (write_shdrs_and_ehdr): Correct bfd_write check. - - * aoutx.h (NAME(aout,canonicalize_reloc)): Don't error out if - section->relocation is NULL; malloc might have returned NULL when - given a zero size if there were no relocations. - * bout.c (b_out_canonicalize_reloc): Likewise. - * coffcode.h (coff_canonicalize_reloc): Likewise. - * ecoff.c (ecoff_canonicalize_reloc): Likewise. - * elfcode.h (elf_canonicalize_reloc): Likewise. - * mipsbsd.c (MY(canonicalize_reloc)): Likewise. - * i386lynx.c (NAME(lynx,canonicalize_reloc)): Likewise. - * nlmcode.h (nlm_canonicalize_reloc): Likewise. - * som.c (som_canonicalize_reloc): Likewise. - * hp300hpux.c (MY(slurp_reloc_table)): Likewise. Also, if malloc - returns NULL, don't report an error if we asked for zero bytes. - * i386lynx.c (NAME(lynx,slurp_reloc_table)): If malloc returns - NULL, don't report an error if we asked for zero bytes. - * nlmcode.h (nlm_slurp_reloc_fixups): Likewise. - -Mon Apr 4 15:30:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (NAME(aout,bfd_free_cached_info)): Don't free anything - if we don't have a bfd_object. - - Made sure that every call to bfd_read, bfd_write, and bfd_seek - checks the return value and handled bfd_error correctly. These - changes are not itemised. Also: - * aoutx.h (emit_strtab): Change return type to boolean, and return - errors. - (NAME(aout,write_syms)): Check emit_strtab return value. - (NAME(aout,final_link)): Likewise. - * coffcode.h (coff_write_relocs): Change return type to boolean, - and return errors. - (coff_write_object_contents): Check coff_write_relocs return - value. - * i386os9k.c (os9k_swap_exec_header_in): Change return type to - boolean. - (os9k_object_p): Check os9k_swap_exec_header_in return value. - * oasys.c (oasys_read_record): Change return type to boolean. - (oasys_slurp_symbol_table: Check oasys_read_record return value. - (oasys_object_p, oasys_slurp_section_data): Likewise. - (oasys_write_record): Change return type to boolean. - (oasys_write_syms): Likewise. Also, check oasys_write_record - return value. - (oasys_write_sections): Check oasys_write_record return value. - (oasys_write_header): Change return type to boolean. Check - oasys_write_record return value. - (oasys_write_end, oasys_write_data): Likewise. - (oasys_write_object_contents): Check return values of - oasys_write_header, oasys_write_syms, oasys_write_data, and - oasys_write_end. - * srec.c (srec_write_record): Change return type to boolean. - (srec_write_header): Likewise. Also, check srec_write_record - return value. - (srec_write_section, srec_write_terminator): Likewise. - (srec_write_symbols): Change return type to boolean. - (internal_srec_write_object_contents): Check return value of - srec_write_symbols, srec_write_header, srec_write_section, and - srec_write_terminator. - - * Makefile.in: Rebuilt dependencies. - -Mon Apr 4 10:56:45 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * aix386-core.c (aix386_bfd_is_local_label): Correct cast from - asection to asymbol. - * ptrace-core.c (ptrace_unix_bfd_is_local_label): Correct cast from - bfd to asymbol. - * trad-core.c (trad_unix_bfd_is_local_label): Correct cast from - asection to asymbol. - -Sun Apr 3 18:27:29 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_slurp_string_table): Use malloc to allocate space - for the cached copy of the native string table. - (som_slurp_symbol_table): Likewise for the native symbol table. - (som_slurp_reloc_table): Likewise for the native and generic - relocation tables. - (som_bfd_free_cached_info): Free the cached native strings, - symbols, and relocations. Also free the canonical cached - relocations. - -Fri Apr 1 12:40:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_write_symbols): If keep_memory is false, make - sure the symbol name is stored in permanent memory before adding - it to the string table. - - * archive.c (_bfd_write_archive_contents): Once we've found an - object, don't bother to look for more when deciding whether to - build a map. - (compute_and_write_armap): After adding the symbols for a BFD, - call bfd_free_cached_info on it. - - Add bfd_free_cached_info support to a.out backends. - * aoutx.h (aout_get_external_symbols): Renamed from - aout_link_get_symbols. Read strings even if symbols have been - read. Store string size in obj_aout_string_size. - (NAME(aout,slurp_symbol_table)): Call aout_get_external_symbols to - read the symbols. Allocate the cached symbols with malloc, not - bfd_alloc. - (NAME(aout,slurp_reloc_table)): Allocate the cached relocs with - malloc, not bfd_alloc. - (NAME(aout,bfd_free_cached_info)): New function; free cached - symbols and relocs. - * libaout.h (struct aoutdata): Add external_string_size field. - (obj_aout_external_string_size): New accessor macro. - (NAME(aout,close_and_cleanup)): Don't declare. - (NAME(aout,bfd_free_cached_info)): Declare. - (aout_32_close_and_cleanup): Don't define. - (aout_64_close_and_cleanup): Don't define. - * aout-target.h (MY_bfd_free_cached_info): If not already defined, - define as NAME(aout,free_cached_info). - (MY_close_and_cleanup): If not already defined, define as - MY_bfd_free_cached_info. - * aout-adobe.c (aout_32_close_and_cleanup): Define. - (aout_32_bfd_free_cached_info): Don't define. - * bout.c (aout_32_close_and_cleanup): Define. - (aout_32_bfd_free_cached_info): Don't define. - * hp300hpux.c (MY_bfd_free_cached_info): Define as bfd_true. - (MY_close_and_cleanup): Don't define. - * i386lynx.c (NAME(lynx,slurp_reloc_table)): Allocate the cached - relocs with malloc, not bfd_alloc. - * i386os9k.c (aout_32_close_and_cleanup): Define. - (aout_32_bfd_free_cached_info): Don't define. - - Add a new entry point to free memory cached by a BFD. - * targets.c (bfd_target): Add _bfd_free_cached_info field. - * bfd.c (bfd_free_cached_info): Define. - * bfd-in.h (JUMP_TABLE): Add _bfd_free_cached_info. - * bfd-in2.h: Rebuilt. - * All backends: Initialize bfd_free_cached_info entry point to - bfd_true. - - * elf32-hppa.c (elf_hppa_reloc_type_lookup): Correct type of - first, unused, argument. - (hppa_elf_is_local_label): Declare instead of - som_bfd_is_local_label. - - * coff-a29k.c (a29k_reloc): Add reloc_entry->address to value of - absolute R_IREL reloc. - -Thu Mar 31 11:52:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Added some support for Irix 4 shared libraries. - * ecoff.c (ecoff_new_section_hook): Set SEC_SHARED_LIBRARY for a - .lib section. - (ecoff_sec_to_styp_flags): Set SEC_SHARED_LIBRARY if - STYP_ECOFF_LIB bit is set. - (ecoff_compute_section_file_positions): Round the contents of a - .lib section up to the next page boundary. - (ecoff_set_section_contents): If we see a .lib section, increment - the vma by one to count the number of shared libraries we have. - (ecoff_write_object_contents): Don't crash if we see a - STYP_ECOFF_LIB section, and don't adjust text_start or data_start - or bss_size either. - - * coffcode.h (CALC_ADDEND): Change to fetch original symbol value - from original BFD, rather than using value of current BFD symbol. - Needed for new linker. - * coff-sparc.c (CALC_ADDEND): Likewise. - - * ecoff.c (ecoff_write_object_contents): Set the text_start and - data_start entries in the optional header correctly even if a text - or data section starts at location zero. - - * reloc.c (bfd_reloc_code_real_type): Added BFD_RELOC_26 (from sef - and raeburn). - * bfd-in2.h: Rebuilt. - - * nlm32-i386.c (nlm_i386_read_import): Null terminate the symbol - name. - * nlm32-alpha.c (nlm_alpha_read_import): Likewise. - * nlm32-sparc.c (nlm_sparc_read_import): Likewise. - - * coffgen.c (coff_write_symbol): Reindented. Changed to return - boolean, and changed written to unsigned int *. Check error - returns from called functions. - (coff_write_alien_symbol): Likewise. - (coff_write_native_symbol): Likewise. - (coff_write_symbols): Likewise. Reworked checks on whether to - write symbol name to string table for clarity and to avoid core - dumping when given a non COFF symbol. - * libcoff-in.h (coff_write_symbols): Declare as returning boolean. - * libcoff.h: Rebuilt. - * coffcode.h (coff_write_object_contents): Check return value of - coff_write_symbols. - -Wed Mar 30 16:25:41 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Changes to let BFD return an error indication from - get_symtab_upper_bound, bfd_canonicalize_symtab, - bfd_get_reloc_upper_bound, and bfd_canonicalize_reloc. They now - return long instead of unsigned int, and use -1 to indicate an - error. Along the way, rename get_symtab_upper_bound to - bfd_get_symtab_upper_bound. - * bfd.c (bfd_get_reloc_upper_bound): Return long, and -1 on - errors. - (bfd_canonicalize_reloc): Likewise. - * syms.c (bfd_get_symtab_upper_bound): Renamed from - get_symtab_upper_bound. - * targets.c (bfd_target): Renamed _get_symtab_upper_bound to - _bfd_get_symtab_upper_bound, and changed it and - _bfd_canonicalize_symtab and _get_reloc_upper_bound and - _bfd_canonicalize_reloc to all return long. - * aoutx.h (NAME(aout,get_symtab)): Return long, and -1 on errors. - (NAME(aout,canonicalize_reloc)): Likewise. - (NAME(aout,get_reloc_upper_bound)): Likewise. - (NAME(aout,get_symtab_upper_bound)): Likewise. - * bout.c (b_out_canonicalize_reloc): Likewise. - (b_out_get_reloc_upper_bound): Likewise. - * coffcode.h (coff_canonicalize_reloc): Likewise. - * coffgen.c (coff_get_symtab_upper_bound): Likewise. - (coff_get_symtab): Likewise. - (coff_get_reloc_upper_bound): Likewise. - * ecoff.c (ecoff_get_symtab_upper_bound): Likewise. - (ecoff_get_symtab): Likewise. - (ecoff_canonicalize_reloc): Likewise. - * elfcode.h (elf_get_symtab_upper_bound): Likewise. - (elf_get_reloc_upper_bound): Likewise. - (elf_canonicalize_reloc): Likewise. - (elf_get_symtab): Likewise. - * hp300hpux.c (MY(get_symtab)): Likewise. - (MY(get_symtab_upper_bound)): Likewise. - (MY(canonicalize_reloc)): Likewise. - * i386lynx.c (NAME(lynx,canonicalize_reloc)): Likewise. - * ieee.c (ieee_slurp_external_symbols): Change return type to - boolean. Check for errors from get_symbol. - (ieee_slurp_symbol_table): Change return type to boolean. Check - for errors from ieee_slurp_external_symbols. - (ieee_get_symtab_upper_bound): Return long, and -1 on errors. - (ieee_get_symtab): Likewise. - (ieee_get_reloc_upper_bound): Likewise. - (ieee_canonicalize_reloc): Likewise. - * mipsbsd.c (MY(canonicalize_reloc)): Likewise. - * nlmcode.h (nlm_get_symtab_upper_bound): Likewise. - (nlm_get_symtab): Likewise. - (nlm_get_reloc_upper_bound): Likewise. - (nlm_canonicalize_reloc): Likewise. - * oasys.c (oasys_get_symtab_upper_bound): Likewise. - (oasys_get_symtab): Likewise. - (oasys_get_reloc_upper_bound): Likewise. - (oasys_canonicalize_reloc): Likewise. - * som.c (som_get_symtab_upper_bound): Likewise. - (som_get_symtab): Likewise. - (som_get_reloc_upper_bound): Likewise. - (som_canonicalize_reloc): Likewise. - * srec.c (srec_get_symtab_upper_bound): Likewise. - (srec_get_symtab): Likewise. - (srec_get_reloc_upper_bound): Define as bfd_0l. - (srec_canonicalize_reloc): Likewise. - * tekhex.c (tekhex_get_symtab): Return long, and -1 on errors. - (tekhex_get_symtab_upper_bound): Likewise. - (tekhex_get_reloc_upper_bound): Define as bfd_0l. - (tekhex_canonicalize_reloc): Likewise. - * libaout.h (NAME(aout,get_symtab_upper_bound)): Change - declaration to return long. - (NAME(aout,get_symtab)): Likewise. - (NAME(aout,canonicalize_reloc)): Likewise. - (NAME(aout,get_reloc_upper_bound)): Likewise. - * libcoff-in.h (coff_get_symtab_upper_bound): Likewise. - (coff_get_symtab): Likewise. - (coff_get_reloc_upper_bound): Likewise. - * libecoff.h (ecoff_get_symtab_upper_bound): Likewise. - (ecoff_get_symtab): Likewise. - (ecoff_canonicalize_reloc): Likewise. - * libelf.h (bfd_elf32_get_symtab_upper_bound): Likewise. - (bfd_elf32_get_symtab): Likewise. - (bfd_elf32_get_reloc_upper_bound): Likewise. - (bfd_elf32_canonicalize_reloc): Likewise. - (bfd_elf64_get_symtab_upper_bound): Likewise. - (bfd_elf64_get_symtab): Likewise. - (bfd_elf64_get_reloc_upper_bound): Likewise. - (bfd_elf64_canonicalize_reloc): Likewise. - * libnlm.h (nlmNAME(get_symtab_upper_bound)): Likewise. - (nlmNAME(get_symtab)): Likewise. - (nlmNAME(get_reloc_upper_bound)): Likewise. - (nlmNAME(canonicalize_reloc)): Likewise. - * archive.c (compute_and_write_armap): Use error_return and - no_memory_return labels rather than freeing information in various - places. Change storage, symcount and src_count to long. Check - errors from bfd_get_symtab_upper_bound and - bfd_canonicalize_symtab. - * bout.c (b_out_relax_section): Change reloc_size to long. Check - for errors from bfd_get_reloc_upper_bound and - bfd_canonicalize_reloc. - (b_out_get_relocated_section_contents): Likewise. - * coff-alpha.c (alpha_ecoff_get_relocated_section_contents): - Likewise. - * elf32-mips.c: Likewise. - * elf32-hppa.c (hppa_elf_stub_finish): Likewise. - (hppa_look_for_stubs_in_section): Check for errors from - bfd_get_symtab_upper_bound, bfd_canonicalize_symtab, and - bfd_canonicalize_reloc. - * ecofflink.c (bfd_ecoff_debug_accumulate_other): Check for errors - from bfd_get_symtab_upper_bound and bfd_canonicalize_symtab. - * linker.c (generic_link_read_symbols): Likewise. - (_bfd_generic_final_link): Check for errors from - bfd_get_reloc_upper_bound and bfd_canonicalize_reloc. - * reloc.c (bfd_generic_get_relocated_section_contents): Likewise. - * reloc16.c (bfd_coff_reloc16_relax_section): Likewise. - (bfd_coff_reloc16_get_relocated_section_contents): Likewise. - * libbfd.c (bfd_0l): New function. - * libbfd-in.h (bfd_0l): Declare. - * aix386-core.c: Change get_symtab_upper_bound, get_symtab, - get_reloc_upper_bound, and canonicalize_reloc to use bfd_0l rather - than bfd_0u. - * cisco-core.c, hppabsd-core.c, hpux-core.c: Likewise. - * irix-core.c, osf-core.c, ptrace-core.c, trad-core.c: Likewise. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - * libcoff.h: Rebuilt. - - * nlm32-sparc.c (nlm_sparc_read_reloc): Remove unused variables - temp and name. - -Wed Mar 30 08:33:04 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/dpx2.h: Define POSIX_UTIME. - -Wed Mar 30 00:31:49 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * i386dynix.c, config/i386-dynix.mt: New files, handling Dynix - variant of a.out. - * configure.in, config.bfd: Use them for Dynix. - * Makefile.in: Add dependencies for i386dynix.o. - * targets.c: Add definition for i386dynix_vec. - * hosts/symmetry.h: Do not define TRAD_CORE_USER_OFFSET for Dynix. - Define HOST_DATA_START_ADDR and TRAD_UNIX_CORE_FILE_FAILING_SIGNAL - for Dynix. Remove inclusion of dynix3.h, Dynix bfd is now handled by - i386dynix.c - -Mon Mar 28 12:53:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (BFD32_BACKENDS): Add coff-sparc.o. - - * coffcode.h (coff_set_flags): Handle bfd_arch_powerpc like - bfd_arch_rs6000. - - * config.bfd (powerpc-*-aix*): New target; use rs6000.mt. - * config/rs6000.mt (SELECT_ARCHITECTURES): Add bfd_powerpc_arch. - - * aoutx.h (translate_from_native_sym_flags): Set SEC_RELOC flag - for generated constructor section. - -Sun Mar 27 16:25:22 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_begin_writing): New approach at dealing with holes - in executables left by the HP linker. Does not rely on subspace - alignments as subspaces are *NOT* guaranteed to be properly - aligned in an executable (can you believe that!). - -Sat Mar 26 10:25:43 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_get_section_contents): New function. Do not try - to actually read data from a section that doesn't have either - SEC_LOAD or SEC_DEBUGGING set (eg $BSS$) just return true. - - * libbfd.c (bfd_read): Set bfd_error as appropriate for a short - read. (bfd_error_system_call or bfd_error_file_truncated). - - * som.c: Do not blindly set bfd_error_system_call after a - failing bfd_read, bfd_write, or bfd_seek. In a few places - (like som_object_p) override the error status set by bfd_read. - - * aix386-core.c, aout-encap,c archive.c, bout.c: Likewise. - * coff-rs6000.c, coffgen.c ecoff.c, elf.c: Likewise. - * elf32-hppa.c, elfcode.h, hp300hpux.c, i386lynx.c: Likewise. - * nlm32-alpha.c, nlm32-i386.c, nlm32-sparc.c: Likewise. - - * som.c: Check return values from several bfd_{seek,read,write} - calls that we just assumed were not failing. - -Fri Mar 25 11:44:06 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * hosts/sysv4.h (HAVE_PROCFS): Add comments about ptx4. - * config/sysv4.mh: Add comment. - * config/symmetry.mh: Change comment. - * configure.host: Use sysv4, not symmetry, for i[34]86-sequent-sysv4*. - -Fri Mar 25 17:10:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Changes to support linker relaxing of embedded MIPS PIC code to - use a five instruction sequence for function calls which are out of - range of the bal instruction. - * libecoff.h (struct ecoff_section_tdata): Define. - (ecoff_section_data): Define. - (ecoff_bfd_relax_section): Don't define. - * ecoff.c (ecoff_final_link_debug_accumulate): Don't read or free - the debugging information if it has already been read. - (ecoff_indirect_link_order): Handle _cooked_size being different - from _raw_size. Don't reread the contents or the relocs if they - have already been read in. - * coff-mips.c (mips_howto_table): Change bitsize of PCREL16 from - 18 to 16. - (PCREL16_EXPANSION_ADJUSTMENT): Define. - (mips_relocate_refhi): Take adjust argument. - (mips_relocate_section): Handle reloc offsets stored in section - used_by_bfd field. Call mips_relax_pcrel16 to handle details of - expanding an out of range PCREL16. Keep trace of adjustments - required by expansions. Set s and unset h when converting a reloc - from undefined to section. Change handling of PC relative relocs: - if against a section, they are correct in the object file, if - against an external symbol they are pcrel_offset. - (mips_relax_section): New function. - (mips_relax_pcrel16): New function. - (ecoff_bfd_relax_section): Define. - * coff-alpha.c (ecoff_bfd_relax_section): Define. - * ecofflink.c (bfd_ecoff_debug_accumulate): Handle adjustments - built by mips_relax_section when writing out addresses. - * elf32-mips.c (mips_elf_read_ecoff_info): Clear adjust field. - - * aoutx.h (NAME(aout,find_nearest_line)): The caller expects - functionname_ptr to be set to a symbol name, so prepend - symbol_leading_char. - -Thu Mar 24 11:33:46 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * coff-h8300.c (h8300_reloc16_extra_cases): Add relaxing info - for 16bit relative branches. - * coff-h8500.c (r_high8, r_low16, r_high16): Don't complain on - overflow. - -Thu Mar 24 09:21:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_prep_for_ar_write): Ignore non-SOM objects. - (som_bfd_ar_write_symbol_stuff, som_write_armap): Likewise. - -Wed Mar 23 14:29:31 1994 David J. Mackenzie (djm@rtl.cygnus.com) - - * netbsd386.c (N_SET_FLAGS): Delete the old definition. - -Wed Mar 23 14:58:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Clean up the relaxing code for the new linker. - * targets.c (_bfd_relax_section): Take boolean *again argument - rather than asymbol list. - * bfd.c (bfd_relax_section): Change name of fourth argument from - symbols to again. - * reloc.c (bfd_generic_relax_section): Take boolean *again - argument rather than asymbol list. Always return true. - * bout.c: Include genlink.h. - (aligncode, perform_slip): Declare. - (perform_slip): Take BFD argument rather than asymbol list. - Changed all callers. Get the symbols from the BFD. Change the - hash table entry value as well as the symbol value. - (abs32code): Take BFD argument rather than asymbol list. Changed - all callers. - (aligncode): Likewise. - (b_out_relax_section): Take boolean *again argument rather than - asymbol list. Only return false if an error occurred. Set *again - to false. Get symbols from BFD. - * reloc16.c: Include genlink.h. - (bfd_perform_slip): Take BFD argument rather than asymbol list. - Get the symbols from the BFD. Change the hash table entry value - as well as the symbol value. - (bfd_coff_reloc16_relax_section): Take boolean *again argument - rather than asymbol list. Only return false if an error occurred. - Set *again to false. Get symbols from BFD. - * coffcode.h (bfd_coff_backend_data): Change - _bfd_coff_reloc16_estimate to take BFD argument rather than - asymbol list. - (bfd_coff_reloc16_estimate): Corresponding change. - (dummy_reloc16_estimate): Corresponding change. - * libcoff-in.h (bfd_coff_reloc16_relax_section): Change - declaration to take boolean * rather than asymbol list. - (bfd_perform_slip): Change declaration to take BFD rather than - asymbol list. - * coff-h8300.c (h300_reloc16_estimate): Take BFD argument rather - than asymbol list. Changed calls to bfd_perform_slip. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - * libcoff.h: Rebuilt. - * Makefile.in: Rebuilt dependencies. - - * genlink.h (_bfd_generic_link_get_symbols): Define. - (_bfd_generic_link_get_symcount): Define. - * linker.c (generic_link_read_symbols): New function. - (generic_link_add_object_symbols): Use it. Use - _bfd_generic_link_get_symbols and _bfd_generic_link_get_symcount - to get the symbols from the BFD. - (generic_link_check_archive_element): Likewise. - (_bfd_generic_final_link): Likewise. - (_bfd_generic_link_output_symbols): Likewise. - (default_indirect_link_order): Likewise. - (generic_link_add_symbol_list): Store pointer to hash table entry - in asymbol udata field. - -Tue Mar 22 13:09:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-mips.c (mips_howto_table): Add entry for new MIPS_R_PCREL16 - reloc, used in embedded PIC code. - (mips_adjust_reloc_in): Change sanity check to permit new reloc. - (mips_bfd_reloc_type_lookup): Turn BFD_RELOC_16_PCREL_S2 into - MIPS_R_PCREL16. - - * elf32-mips.c (mips_elf_final_link): Account for link_order - relocs when allocating space for relocations. Set SEC_RELOC flag - for any section which has relocs. Handle link_order relocs in - link_order loop. Use _bfd_generic_link_add_symbols_collect for - add_symbls entry point. - - * linker.c (_bfd_generic_final_link): Set reloc_count to 0 before - counting relocs. Set SEC_RELOC flag for any section which has - relocs. - - * linker.c (_bfd_default_link_order): Handle bfd_data_link_order. - - * linker.c (_bfd_generic_link_add_symbols): Just call - generic_link_add_symbols. - (_bfd_generic_link_add_symbols_collect): New function, like - _bfd_generic_link_add_symbols but also collect constructors and - destructors by name as collect2 does. - (generic_link_add_symbols): New function, like old - _bfd_generic_link_add_symbols but with collect argument. - (generic_link_add_object_symbols): Take collect argument. - (generic_link_check_archive_element_no_collect): New function. - (generic_link_check_archive_element_collect): New function. - (generic_link_check_archive_element): Take collect argument. - (generic_link_add_symbol_list): Take collect argument. - (_bfd_generic_link_add_one_symbol): Rename constructor argument to - collect. - * libbfd-in.h (_bfd_generic_link_add_symbols_collect): Declare. - * libbfd.h: Rebuilt. - -Tue Mar 22 10:04:00 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * archive.c (bfd_construct_extended_name_table): Use ar_padchar - for first character in an extended name. - (_bfd_write_archive_contents): If ar_padchar == '/', then use - "//" as the name of the special archive member holding the - extended name table. - -Mon Mar 21 12:28:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Support for link_order types which generate relocs in order to - support -Ur in the linker. - * linker.c (generic_link_add_symbol_list): Remove bitsize argument - from call to _bfd_generic_link_add_one_symbol. - (_bfd_generic_link_add_one_symbol): Remove bitsize argument. - Don't pass bitsize to constructor call back. Pass BFD_RELOC_CTOR - instead of bitsize to add_to_set call back. - (_bfd_generic_final_link): Account for link_order relocs when - allocating space for relocations. Handle them in link_order loop. - (_bfd_generic_reloc_link_order): New function. - (_bfd_default_link_order): If a reloc_link_order is seen here, - abort. - (_bfd_count_link_order_relocs): New function. - * libbfd-in.h (_bfd_generic_link_add_one_symbol): Remove bitsize - argument from declaration. - (_bfd_generic_reloc_link_order): Declare. - (_bfd_count_link_order_relocs): Declare. - * libbfd.h: Rebuilt. - * aoutx.h (aout_link_add_symbols): Remove bitsize argument from - call to _bfd_generic_link_add_one_symbol. - (NAME(aout,final_link)): Account for link_order relocs when - allocating space for relocations. Handle them after handling all - input BFDs. - (aout_link_reloc_link_order): New function. - * ecoff.c (ecoff_link_add_externals): Remove bitsize argument from - call to _bfd_generic_link_add_one_symbol. - (ecoff_bfd_final_link): Account for link_order relocs when - allocating space for relocations. Handle them in link_order loop. - (ecoff_link_write_external): Set the storage class of a defined - linker created symbol based on the section it is in. Correct - bfd_link_hash_weak case to use .sc rather than .st. - (ecoff_reloc_link_order): New function. - * coff-alpha.c (alpha_bfd_reloc_type_lookup): Handle - BFD_RELOC_CTOR. - * coff-mips.c (mips_bfd_reloc_type_lookup): Likewise. - - * sunos.c (sunos_read_dynamic_info): Remove unused locals dynsym - and buf. - - * cisco-core.c (cisco_core_file_p): Only pass one argument to - bfd_zmalloc. Free a pointer, not a union. - (cisco_bfd_is_local_label): Correct cast from asection to asymbol. - -Sun Mar 20 09:24:36 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * bfd/som.c (som_begin_writing): Fix thinko (off by one error). - - * som.c (bfd_section_from_som_symbol): Only to do the value - comparison for function symbols within executables. - - * som.c (bfd_section_from_som_symbol): Renamed from - som_section_from_subspace_index. Pass in a native SOM symbol. - For executables, iterate through the sections to find out - which contains the symbol's address rather than using the - symbol_info field. (symbol_info has a different meaning for - dynamicly linked executables.) - - * trad-core.c (trad_unix_core_file_p): Don't pass abfd to - bfd_zmalloc. - - * som.c (som_begin_writing): Fix braino (one call to align - space/subspace data was done unconditionally rather than - just for executables.) - - * som.c (som_begin_writing): Align text in all executables to - make HPUX kernel happy. Fixes strip/objcopy for shared - executables. - -Sat Mar 19 07:06:59 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_begin_writing): Account for alignment needs of - subspaces too when writing executables. Never request a negative - bss size. Fixes some problems with demand paged executables, - still having problems with pure executables and shared executables. - -Fri Mar 18 19:12:47 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * trad-core.c (trad_unix_core_file_p): Call bfd_zmalloc not - bfd_zalloc for rawptr, because later on we may call free, not - bfd_release, on it. - - * bfd.c (struct _bfd): Add cisco_core_struct to tdata union. - * libbfd.c (bfd_read, bfd_seek): Add comments regarding errors. - * cisco-core.c: New file. - * Makefile.in: Change accordingly. - * configure.in: Recognize cisco_core_vec. - * config/m68k-aout.mt (SELECT_VECS): Add cisco_core_vec. - * targets.c: Add cisco_core_vec. - * bfd-in2.h: Rebuilt. - -Fri Mar 18 18:13:49 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.h (som_copyable_section_data_struct): New structure - containing all the private section information which needs - to be copied from input section to output section during - objcopy or strip. - (som_section_data_struct): Remove several fields now in - som_copyable_section_data_struct. Make the space and - subspace dictionaries be pointers (to save space when - only reading objects). - - * som.c (bfd_som_set_section_attributes): Now returns a boolean; - some references changed. Allocate a copyable data stucture if - none exists. Store info into the copyable data structure. - (bfd_som_set_subsection_attributes): Likewise. - (som_is_space, som_is_subspace, som_is_container): New functions. - Use these instead of directly accessing private data. - (som_prep_headers): Allocate space and subspace headers here. - Fill in some fields in the space/subspace headers from the - copyable data. - (som_bfd_copy_private_section_data): Only copy the stuff - that we really need to make objcopy and strip work. Allocate - the copy_data structure for the output bfd before copying. - - * som.h (struct som_exec_data): New structure to hold exec - info that must be preserved when running objcopy/strip. - (struct somdata): Add new "exec_data" field and accessor - macro. Add some comments on how the various fields are used. - (som_section_data_struct): Make is_space and is_subspace bitfields. - Delete unused subspace_index. All references now use the - target_index field within the section structure itself. - - * som.c (make_unique_section): Delete unused declaration. - (som_bfd_copy_private_bfd_data): New function. - (som_object_setup): Allocate space for and save exec information - that needs to be copied during objcopy/strip. - (som_mkobject): Do not allocate space for a file header here. - It is not used when only reading SOM objects. - (som_prep_headers): Allocate space for and attach a file header - to the output bfd. For executables, use the saved system_id - value rather than trying to guess the right value. Do not abort - wwhen setting file_hdr->entry* for executables. - (som_begin_writing): For executables, set the exec_entry and - exec_flags fields. - (som_copy_private_backend_section_data): Always return a value. - - * libhppa.h (PA_PAGESIZE): Define. - - * som.c (SOM_ALIGN): Define. - (som_begin_writing): If writing an executable, initialize all - fields in the exec header to zero. Update fields in the exec - header as sizes of loadable subspaces are computed. Carefully - preserve alignments when building executables. Actually write the - exec after all the fields are filled in. - - * Better long-filename handling. Reads SOM ABI compliant extended - names, but doesn't quite write compliant extended names yet. - * som.c (som_slurp_extended_name_table): Delete function. The - generic code will handle things correctly. - (som_slurp_armap): Seek to the beginning of the next member. - (normalize): New function. - (som_bfd_ar_write_symbol_stuff): Take the size of the extended - name table into account when computing the file offsets in the - SOM dictionary. Make sure to align to an even boundary. - (som_write_armap): Initialize the checksum to zero. - (ar_maxchars): Fix. Opps. - -Fri Mar 18 20:35:24 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * aoutx.h (reloc_type_lookup): Handle BFD_RELOC_CTOR on a 64-bit - machine. Handle BFD_RELOC_SPARC13 and BFD_RELOC_SPARC_BASE13. - -Thu Mar 17 18:26:46 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * bfd-in.h (BFD_VERSION): Use @VERSION@. - * Makefile.in (bfd.h): Replace it with contents of VERSION file. - * bfd-in2.h: Regenerated. - - * trad-core.c (trad_unix_bfd_is_local_label): Fixed typo where - this was also named trad_unix_bfd_copy_private_bfd_data. - -Thu Mar 17 10:37:07 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aoutx.h, elfcode.h, coff-alpha.c, bout.c, ecoff.c, ecofflink.c, - elf32-hppa.c, elf32-mips.c, linker.c, som.c, sunos.c: If malloc(0) - returns NULL, it is not an error. It's possible that some of - these checks are not necessary (because the size can never be - zero), but putting in the checks is the conservative thing to do - in light of the fact that some of these malloc calls replaced - unchecked alloca calls, in which a zero argument would work fine. - -Thu Mar 17 11:44:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * osf-core.c (osf_core_bfd_copy_private_bfd_data): Remove - duplicate definition. - (osf_core_bfd_is_local_label): Define. - - * reloc.c (bfd_generic_get_relocated_section_contents): Don't fail - if malloc (0) fails. bfd_canonicalize_reloc returning 0 is not a - failure indication, it merely means there are no relocs. - - * elfcode.h (NAME(bfd_elf,write_object_contents)): Don't use space - after NAME, since SunOS /bin/cc can't handle it. - -Wed Mar 16 16:43:33 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * netbsd386.c (N_SET_FLAGS): Don't nuke the machine id field. - From sukes@glue.umd.edu (Tasuki Hirata). - -Wed Mar 16 07:55:54 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aoutf1.h (4 places): Use a simple #if on ARCH_SIZE, rather than - all that convoluted stuff with NAME, CAT3, etc. The convoluted - stuff broke for SunOS4 /bin/cc (due to DEFUN elimination, I guess). - -Wed Mar 16 00:02:05 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_prep_for_fixups): Detect section symbols based - on either the lack of private data or the symbol flags. Do not - munge section symbol names anymore -- they no longer confuse GDB. - (som_begin_writing): Leave space for an exec header if writing - an executable. - (som_slurp_symbol_table): Recognize both forms of section symbol - names "L$0\002" and "$<FOO>$". Change the name of "L$0\002" - section symbols to be the name of the section they represent. - Debugging symbols begin with "L$0\001", not just "L$". - -Tue Mar 15 22:58:28 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * bfd-in2.h, libbfd.h, libcoff.h: Rebuilt. - - * bfd-in.h (JUMP_TABLE): Add new entries to the jump table - for bfd_copy_private_section_data, bfd_copy_private_bfd_data, - and bfd_is_local_label. - - * targets.c: Add new entries to the bfd_target structure. - - * bfd.c (bfd_copy_private_bfd_data): New definition. - - * section.c (bfd_copy_private_section_data): New definition. - - * syms.c (bfd_is_local_label): New definition. - - * libbfd-in.h (bfd_generic_is_local_label): Declare. - - * libbfd.c (bfd_generic_is_local_label): New function. - - * *-core.c: Provide default definitions for new functions in - the target vector which all point to bfd_false. - - * aout-target.h, coffcode.h, elf32-target.h elf64-target.h, ieee.c - libaout.h, libecoff.h, nlm-target.h, oasys.c, srec.c, tekhex.c - Default new vectors for copying private backend data to bfd_true. - Default new vector for determining if a symbol is a local label - to bfd_generic_is_local_label. - - * som.c (som_bfd_copy_private_section_data): New function. - (som_bfd_is_local_label): New function. - (som_bfd_copy_private_bfd_data): For now default to bfd_true. - - * elf32-hppa.c (hppa_elf_is_local_label): New function. - -Tue Mar 15 23:55:47 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * cf-m68klynx.c (CALC_ADDEND): Use _bfd_m68klynx_howto_table. - -Tue Mar 15 04:41:13 1994 David J. Mackenzie (djm@rtl.cygnus.com) - - * Most files: - Replace DEFUN and DEFUN_VOID with K&R-style function definition. - Indent some of them to GNU standards. - - * aout32.c, archures.c, core.c, cpu-h8300.c, cpu-i960.c, - cpu-m68k.c, cpu-m88k.c, cpu-mips.c, cpu-vax.c, ctor.c, demo64.c, - elf32-hppa.h, gen-aout.c, host-aout.c, init.c, libhppa.h, - libieee.h, liboasys.h, newsos3.c, som.h, stab-syms.c, sunos.c: - Update copyright years. - -Mon Mar 14 11:41:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_prep_for_fixups): A relocation involving the section - symbol for the *ABS* section is really a relocation involving - no symbol. - (som_slurp_symbol_table): Do not set BSF_GLOBAL or BSF_EXPORT for - undefined symbols. Correctly distinguish between debugger symbols - and section symbols. - - * som (setup_sections): Set SEC_DEBUGGING and the section attributes - for spaces and subspaces. - - * som.c (som_bfd_count_ar_symbols): Fix typo. - - * som.c (som_object_setup): Set EXEC_P, D_PAGED, WP_TEXT, and - HAS_RELOC based on the object's magic number. - (make_unique_section): Delete function. BFD and its users are - prepared to handle multiple sections with the same name. - (setup_sections): Allocate space on the BFD's obstack to hold - section names. Use bfd_make_setion_anyway rather than the - obsolete make_unique_section. - (som_prep_headers): Choose the correct SOM magic number based - on the BFD's flags. - (som_bfd_fill_in_ar_symbols): Return false, not NULL on error. - -Sat Mar 12 09:46:09 1994 Ian Lance Taylor (ian@cygnus.com) - - * elf32-ppc.c: Renamed from elf32-powerpc.c. - * nlm32-ppc.c: Renamed from nlm32-powerpc.c. - * Makefile.in, configure.in: Corresponding changes. - -Fri Mar 11 22:27:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf32-powerpc.c: Extensive changes to update to preliminary ABI. - -Fri Mar 11 00:34:59 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * sunos.c (sunos_read_dynamic_info): Assume that dynamic info - is always located at the start of the data section to allow - recovery of the dynamic info from a stripped executable. - * ecoff.c (ecoff_styp_to_sec_flags): Handle STYP_PDATA, STYP_XDATA - and STYP_COMMENT. - -Wed Mar 9 17:17:53 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * libbfd-in.h: Remove alloca cruft. It was missing some necessary - cruft (like the #pragma alloca for AIX). - In addition to that problem, the C alloca calls xmalloc, which - means checking for being out of memory can't work right. The - following changes remove all uses of alloca from BFD. - * hosts/solaris2.h: Remove alloca cruft. - * som.c: Replace alloca with a fixed size auto array. - * aoutx.h, elfcode.h, nlmcode.h, bout.c, coff-alpha.c, ecoff.c, - ecofflink.c, elf32-hppa.c, elf32-mips.c, linker.c, reloc.c, som.c, - sunos.c: Replace alloca with malloc and appropriate error checking and - freeing. - * linker.c: Replace alloca with obstack_alloc. - * libbfd.h: Rebuilt. - -Tue Mar 8 12:10:38 1994 Ian Lance Taylor (ian@cygnus.com) - - * coff-mips.c (mips_relocate_section): Handle MIPS_R_LITERAL like - MIPS_R_GPREL. - -Sat Mar 5 14:08:54 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * elf32-hppa.h, elfcode.h: Replace uses of Elf*_Half, Elf*_Word, - Elf*_Off typedefs by their expansion, the typedefs have been - removed from include/elf/internal.h. - * elfcode.h (bfd_section_from_shdr): Handle SHT_DYNAMIC section like - SHT_PROGBITS section. - -Thu Mar 3 20:03:39 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.h (_PA_RISC_ID): Treat HOST_HPPAOSF just like HOST_HPPABSD. - -Wed Mar 2 13:28:06 1994 Jim Kingdon (kingdon@deneb.cygnus.com) - - * configure.host: Recognize i[34]86-sequent-*. - - * trad-core.c (trad_unix_core_file_p): A non-zero, not zero, - return from bfd_seek indicates an error. - New macro TRAD_CORE_DSIZE_INCLUDES_TSIZE to replace - TRAD_CORE_STACK_OFFSET. - * hosts/symmetry.h: Define TRAD_CORE_DSIZE_INCLUDES_TSIZE and - TRAD_CORE_USER_OFFSET but not HOST_STACK_OFFSET. - -Wed Mar 2 11:57:03 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.[ch]: Do not include libhppa.h in som.c, instead include - it in som.h. - - * elf32-hppa.[ch]: Do not include libhppa.h in elf32-hppa.c, instead - include it in elf32-hppa.h. - - * som.c (log2): Return -1 on error rather than aborting. - (setup_sections): Bubble up an error from log2. - - * Changes to make HP C compiler happy in both traditional - and ANSI mode. - * som.c (hppa_som_gen_reloc_type): Use correct enum type for - field parameter. - (bfd_som_set_section_attributes): Use unsigned int rather than - unsigned char to avoid GNU-C extensions. - (bfd_som_attach_aux_hdr): Return a boolean to indicate success - or failure rather than aborting on failure. - - * som.h (bfd_som_set_section_attributes): Fix prototype to match - som.c changes. - (bfd_som_attach_aux_hdr): Add prototype. - (hppa_som-gen_reloc_type): Likewise. - - * elf32-hppa.c: Add a couple casts to make HP compiler happy. - (hppa_look_for_stubs_in_section): Do not return false on failure - until rest of code is ready to handle it. Abort for now. - -Tue Mar 1 18:33:59 1994 Jim Kingdon (kingdon@deneb.cygnus.com) - - * bfd-in2.h: Rebuilt. - -Tue Mar 1 13:06:53 1994 Kung Hsu (kung@mexican.cygnus.com) - - * i386os9k.c: use new functions bfd_set_error and bfd_get_error. - * Makefile.in: delete an extra blank. - * configure.in : Add i396os9k_vec. - -Mon Feb 28 15:41:01 1994 Kung Hsu (kung@mexican.cygnus.com) - - * config.bfd : Add i386-os9k. - * config/i386-os9k.mt : Newly add os9k target makefile. - - * i386os9k.c : new file to handle os9k format bfd. - * Makefile.in : Handle new file i386os9k.c - * targets.c : Add bfd_target_os9k_flavour and i386os9k_vec. - * cache.c : Initialize cache_sentinel to 0. - -Sun Feb 27 16:30:55 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (mismatches, retval_mismatches): Fix mismatch - action in case where caller specified no argument relocation. - (hppa_elf_build_linker_stub): Try again to get the sym_ptr_ptr - right in the original relocation and the stub's relocation. - - * elf32-hppa.h (hppa_look_for_stub_in_section): Fix typo. Delete - unused symbols argument. - - * elf32-hppa.c (hppa_elf_stub_reloc): Accept asymbol ** rather - than asymbol * for original target symbol. All callers changed. - Set reloc->sym_ptr_ptr appropriately. - (hppa_elf_build_linker_stub): Set reloc->sym_ptr_ptr correctly. - (hppa_elf_look_for_stubs_in_section): No longer need symbols - argument. Use the output symbols when canonicalizing the relocs, - creating them if necessary. - - * linker.c (_bfd_generic_link_output_symbols): Do not - rebuild/clobber the output symbols if they already exist. - -Sun Feb 27 15:22:36 1994 Stan Shebs (shebs@andros.cygnus.com) - - * targets.c (BFD_SEND, BFD_SEND_FMT): Add debugging versions that - check all the pointer dereferences. Enabled via DEBUG_BFD_SEND. - * bfd-in2.h: Rebuilt. - - * srec.c (hex_value): Always set to a size of 256 bytes. - (srec_init): Cosmetic changes. - -Sun Feb 27 11:18:47 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elf32-hppa.c: Second half of major cleanup. More comments, - PARAMize and staticize rest of functions. Delete unused - functions. Delete unused/unnecessary arguments to some functions. - Group static vars together. Abort for bad errors until we have - error code propogation working. Work on spacing and indention. - Add FIXMEs for unresolved problems. Use enums rather than - #defines for lots of things. Merge two functions which build - linker stubs into a single function (so they can easily share a - ton of common code). - -Sat Feb 26 10:00:45 1994 Ian Lance Taylor (ian@cygnus.com) - - * reloc.c (_bfd_relocate_contents): Adjust handling of overflow to - avoid depending upon right shifts of signed numbers, and to - correct handling of src_mask with lower bits zero. - - * aoutx.h, archive.c: Add casts to avoid warnings from SVR4 cc. - * ecoff.c, ecofflink.c, ecoffswap.h, srec.c: Likewise. - * elf32-i386.c: Likewise. - * elfcode.h (bfd_section_from_shdr): Make i unsigned; remove old - #if 0 code. - (elf_write_phdrs): Make i unsigned. - (map_program_segments): Make i and n_left unsigned. - (assign_file_positions_except_relocs): Make i unsigned. - (write_shdrs_and_ehdr): Make count unsigned. - (assign_file_positions_for_relocs): Make i unsigned. - (NAME(bfd,elf_write_object_contents)): Make count unsigned. - (section_from_elf_index): Make index argument unsigned. - -Fri Feb 25 21:34:58 1994 Ian Lance Taylor (ian@cygnus.com) - - * elfcode.h: Don't include assert.h. - (swap_out_syms): Use BFD_ASSERT rather than assert. - - * linker.c (_bfd_generic_link_write_global_symbol): Add missing - break in switch. - - * hosts/i386v4.h (qsort, strtol): Remove incorrect and useless - declarations. - -Fri Feb 25 16:35:57 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * libhppa.h (hppa_rebuild_insn): Moved here from elf32-hppa.c. - - * elf32-hppa.h (elf_hppa_tc_symbol): Add new arguments. - (elf_hppa_tc_make_sections): Likewise. - (elf_hppa_final_processing): Add extern decl. - - * elf32-hppa.c: First half of major cleanup. Add/cleanup lots of - comments. PARAMize some static functions. Delete unused functions. - Delete unused/unnecessary arguments to many functions. Group - static vars together. Collapse common case statements together - in many places. Use default case when possible instead of listing - each case separately. Abort for bad errors until we get error - code propogation working. Work on spacing and indention problems. - Add FIXMEs for some unresolved problems. Delete hopelessly broken - COMPLEX relocation support (it's never used anyway). - (hppa_elf_rebuild_insn): Delete. Moved into libhppa.h. - (elf_hppa_tc_symbol): Accept and use new arguments (symext chains). - (elf_hppa_tc_make_sections): Likewise. - - * format.c (bfd_check_format_matches): Initialize matching_vector - to keep gcc -Wall quiet. - - * elfcode.h (elf_slurp_reloca_table): Fix typo. - - * som.c (som_get_symtab_upper_bound): Use "sizeof (asymbol *)" - not "sizeof (som_symbol_type *)". - - * elfcode.h (elf_get_symtab_upper_bound): Use "sizeof (asymbol *)" - not "sizeof (asymbol"). Opps. - -Fri Feb 25 13:19:04 1994 Ted Lemon (mellon@pepper.ncd.com) - - * bfd.c (bfd_get_gp_size): Can't return gp value on an archive. - (bfd_set_gp_size): Can't set gp value on an archive. - -Fri Feb 25 12:57:00 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * srec.c (pass_over): Don't skip too many characters when - end of line seen. - -Fri Feb 25 11:41:57 1994 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.c (ecoff_sizeof_headers): Align result to 16 byte - boundary. - -Thu Feb 24 07:13:22 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_derive_misc_symbol_info): Derive symbol_info - field for absolute symbols in the same manner as undefined - and common symbols. - -Thu Feb 24 04:29:19 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * elfcode.h (elf_core_file_p): Check for core file e_machine match - like in elf_object_p. - -Wed Feb 23 18:28:37 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elfcode.h (alloca): Delete declaration. - - * som.c (som_prep_headers): Use CPU_PA_RISC1_0 for magic - number rather than HP9000S800_ID. Note som.c is careful - to make sure CPU_PA_RISC1_0 is always defined. - -Mon Feb 21 10:12:02 1994 Stan Shebs (shebs@andros.cygnus.com) - - * Makefile.in (targets.o, archures.o): Use ALL_CFLAGS to supply - flags to explicit compile actions. - -Mon Feb 21 09:50:06 1994 Ian Lance Taylor (ian@lisa.cygnus.com) - - * ecofflink.c (ecoff_write_symhdr): Set symhdr->magic here. - * ecoff.c (ecoff_write_object_contents): Make sure .bss section - ends on a page boundary if there is no symbol table. - (ecoff_bfd_final_link): Don't set symhdr->magic here. - - * hosts/hp300.h: Include <stdlib.h>; don't declare free. - - * som.c (som_bfd_count_ar_symbols): Use a pointer and alloca - rather than an array of variable size. - (som_bfd_fill_in_ar_symbols): Likewise. - (som_bfd_ar_write_symbol_stuff): Likewise. - - * coff-alpha.c (alpha_relocate_section): Rewrite mask and shift - operation to avoid OSF 1.3 cc bug. - * ecoff.c (ecoff_write_object_contents): Make text_size, data_size - and bss_size bfd_size_type instead of unsigned long. Make - text_start and data_start bfd_vma instead of unsigned long. - * ecofflink.c (ecoff_add_string): Remove incorrect cast of return - value. - -Sun Feb 20 16:06:54 1994 Ian Lance Taylor (ian@lisa.cygnus.com) - - * linker.c (_bfd_generic_link_add_archive_symbols): Consider - symbols in the order they appear in the archive map. - -Sat Feb 19 03:17:32 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * coff-alpha.c (reloc_nil): Add forward declaration, add missing - error_message argument. - * coff-sparc.c (bfd_coff_generic_reloc): Add forward declaration, - add missing error_message argument. - * mipsbsd.c (mips_fix_hi16_s): Add forward declaration, add missing - error_message argument. - -Fri Feb 18 11:41:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Support for PowerPC NetWare. - * nlm32-powerpc.c: New file. - * config.bfd (powerpc-*-netware*): New target; use ppc-nlm. - * config/ppc-nlm.mt: New file. - * configure.in (nlm32_powerpc_vec): New target vector; use - nlm32-powerpc.o, nlm32.o, nlm.o. - * targets.c (nlm32_powerpc_vec): Declare. - * Makefile.in (BFD32_BACKENDS): Add nlm32-powerpc.o. - (CFILES): Add nlm32-powerpc.c. - - Initial support for PowerPC ELF. Done without an ABI, and - probably to be changed when I get an ABI. - * config.bfd (powerpc-*-sysv4*): New target; use ppc-elf. - * config/ppc-elf.mt: New file. - * configure.in (bfd_elf32_powerpc_vec): New target vector; use - elf32-powerpc.o, elf32.o, elf.o. - * elf32-powerpc.c: New file. - * elfcode.h (prep_headers): Add bfd_arch_powerpc case. - (elf_set_arch_mach): Likewise. - * targets.c (bfd_elf32_powerpc_vec): Declare. - * Makefile.in (BFD32_BACKENDS): Add elf32-powerpc.o. - (CFILES): Add elf32-powerpc.c. - Rebuilt dependencies. - -Thu Feb 17 15:29:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffgen.c (coff_write_linenumbers): Always return a value. - - * elfcode.h (elf_slurp_symbol_table): Handle zero symbols - reasonably. Allocate x_symp using alloca. - - * elfcode.h (map_program_segments): ELF program header entries - must be sorted by load address. This used to generate the entries - in reverse order. - - * section.c (SEC_IN_MEMORY): Define. - (asection): Rename unused field otheruserdata to contents, and - make it char *. - (bfd_make_section_anyway): Initialize contents field to NULL. - (bfd_get_section_contents): If SEC_IN_MEMORY is set, get section - contents from contents field rather than from file. - * bfd-in2.h: Rebuilt. - -Thu Feb 17 08:30:53 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * bfd.c (bfd_get_error, bfd_set_error): New functions. - (bfd_error): Make static. - (bfd_error_type): Renamed from bfd_ec. Prepend "bfd_error_" to - all values. - * bfd-in2.h: Regenerated. - * aix386-core.c, aout-adobe.c, aout-encap.c, aout-target.h, - aoutf1.h, aoutx.h, archive.c, archures.c, - bfd.c, bout.c, cache.c, coff-alpha.c, coff-mips.c, - coff-rs6000.c, coffcode.h, coffgen.c, core.c, ctor.c, - ecoff.c, ecofflink.c, elf.c, elf32-hppa.c, elf32-mips.c, - elfcode.h, format.c, hash.c, hp300hpux.c, hppabsd-core.c, - i386lynx.c, ieee.c, libbfd.c, libelf.h, linker.c, - lynx-core.c, nlm.c, nlm32-alpha.c, nlm32-i386.c, - nlm32-sparc.c, nlmcode.h, oasys.c, opncls.c, osf-core.c, - ptrace-core.c, reloc16.c, rs6000-core.c, section.c, som.c, - srec.c, sunos.c, syms.c, targets.c, tekhex.c, - trad-core.c: Change callers. - -Tue Feb 15 22:27:27 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c: Remove FIXMEs for things which have been dealt with. - -Tue Feb 15 19:39:24 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * section.c (bfd_get_section_contents): Since this function reads - unrelocated contents, the section's raw size is always the one to - use for bounds checking. - - * linker.c (default_indirect_link_order): In assertion, compare - link_order size field against cooked size, not raw size, of input - section. - - * bout.c (b_out_get_reloc_upper_bound): For BSS section, just - return 0. - (aligncode): When shrinking, the addend should be set to the - current offset in the section plus the number of bytes of padding - that will actually be retained. - (b_out_relax_section): If a section contains no relocations, don't - bother processing them. - (b_out_get_relocated_section_contents): Set reloc_done. Assert - that bfd_get_section_contents returns true. Check that relocs are - properly ordered. - (b_out_get_relocated_section_contents, case ALIGNDONE): Assert - that reloc->addend falls between the current source offset and the - raw size of the input section. - - * config.bfd: Support i960 vxworks versions > 5.0 with coff, not - bout. Default with no version number is still bout. Support - explicit i960-coff target too. - - * bout.c: Changed some indentation, deleted trailing whitespace, - fixed some comments, removed some "#if 1" lines. - (output_addr): New macro. - (calljx_callback, callj_callback, get_value, abs32code, aligncode, - b_out_get_relocated_section_contents): Use it for readability. - -Tue Feb 15 09:00:16 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_prep_for_ar_write): Iterate through the SOM - symbols, not the BFD symbols. - (som_bfd_ar_write_symbol_stuff): Likewise. - -Mon Feb 14 22:55:20 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_slurp_symbol_table): Do not die if a BFD doesn't - have any symbols. - - * Finish basic read-write support for SOM archive libraries. Bugs - surely remain as this hasn't been tested all that much. - * som.c (SOM_LST_HASH_SIZE, SOM_LST_MODULE_LIMIT): Define. - (struct som_misc_symbol_info): New structure to hold info necessary - to build both normal and library symbol tables. - (som_derive_misc_symbol_info): New function to derive info necessary - to build both normal and library symbol tables. - (som_build_and_write_symbol_table): Use new function to derive misc - symbol information. - (som_slurp_symbol_table): Update backend private data for symbols - appropriately. - (som_bfd_prep_for_ar_write): New function. - (som_bfd_ar_symbol_hash): New function. - (som_bfd_ar_write_symbol_stuff): New function. - (som_write_armap): Flesh out. - (som_vec): Fix ar padding character. - - * som.c: Consistently use memset rather than bzero. - -Mon Feb 14 17:02:28 1994 Stu Grossman (grossman at cygnus.com) - - * coff-rs6000.c: Add Lynx core file support, use HOST_AIX, where - appropriate. - * rs6000-core.c: Use HOST_AIX instead of COREFILES_PLEASE. - * config/rs6000.mh: Remove defs of ARCHIVES_PLEASE and - COREFILES_PLEASE. - * config/rs6000lynx.mh: Turn on Lynx core file support. - * hosts/rs6000.h: #define HOST_AIX. - * hosts/rs6000lynx.h: Create this to enable Lynx host support. - -Sun Feb 13 14:30:00 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.h (som_symbol_data): Safely access backend private data - for BFD symbols. All callers changed. - - * Read-only SOM archive support. - * som.c (som_bfd_count_ar_symbols): New helper function. - (som_bfd_fill_in_ar_symbols): New helper function. - (som_slurp_armap): New function to read a SOM LST. - - * som.h: Include <lst.h> and <ar.h>. - -Sat Feb 12 22:34:14 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elfcode.h (elf_map_symbols): Fix typo. - (write_object_contents): Check return values from prep_headers and - elf_compute_section_file_positions. - (set_section_contents): Likewise. - -Fri Feb 11 16:56:50 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * archive.c (normalize) [VMS]: Call malloc, not bfd_xmalloc. - (bfd_construct_extended_name_table): Check result of normalize. - -Tue Feb 8 08:57:31 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - Make all callers of malloc or realloc (including via obstacks) - check the result for NULL. Most set bfd_error to no_memory and - return in that case; a few are harder to fix, and are marked - with "FIXME <return type>". - - * elf32-hppa.c (hppa_elf_build_arg_reloc_stub - hppa_elf_build_long_branch_stub): Check bfd_make_empty_symbol return. - * linker.c (_bfd_generic_link_output_symbols - _bfd_generic_link_write_global_symbol): Ditto - * section.c (bfd_make_section_anyway): Ditto. - - * tekhex.c (find_chunk tekhex_mkobject): Check bfd_alloc. - (first_phase): Ditto. FIXME void - (tekhex_make_empty_symbol): Check bfd_zalloc. - - * sunos.c (sunos_read_dynamic_info): Check bfd_zalloc. - (MY(read_dynamic_symbols) MY(read_dynamic_relocs)): Check bfd_alloc. - - * stringhash.c (_bfd_stringtab_hash_newfunc): Check bfd_hash_allocate. - - * srec.c: Indent. - (fillup_symbols): Check bfd_alloc. FIXME void - (srec_mkobject srec_get_section_contents - srec_set_section_contents): Check bfd_alloc. - (srec_make_empty_symbol): Check bfd_zalloc. - - * som.c (hppa_som_gen_reloc_type): Check bfd_alloc_by_size_t. - (make_unique_section): Check bfd_alloc. - (som_new_section_hook): Check bfd_zalloc. - (bfd_som_attach_aux_hdr): Ditto. FIXME void - - * rs6000-core.c (rs6000coff_core_p): Check bfd_zalloc. - - * osf-core.c (osf_core_make_empty_symbol): Check bfd_zalloc. - (osf_core_core_file_p): Check bfd_alloc. - - * oasys.c (oasys_slurp_symbol_table oasys_archive_p - oasys_mkobject oasys_object_p oasys_new_section_hook - oasys_set_section_contents): Check bfd_alloc. - (oasys_slurp_section_data): Check bfd_zalloc and bfd_alloc. - (oasys_make_empty_symbol): Check bfd_zalloc. - - * nlmcode.h (nlm_make_empty_symbol): Check bfd_zalloc. - (nlm_slurp_symbol_table): Check bfd_zalloc and bfd_alloc. - - * nlm32-sparc.c (nlm_sparc_read_import): Check bfd_alloc. - - * nlm32-i386.c (nlm_i386_read_import): Check bfd_alloc. - - * nlm32-alpha.c (nlm_alpha_read_import): Check bfd_alloc. - - * linker.c (_bfd_link_hash_newfunc - (generic_link_hash_newfunc - (archive_hash_newfunc - (_bfd_generic_link_add_one_symbol): Check bfd_hash_allocate. - (_bfd_generic_final_link - (_bfd_generic_link_output_symbols - (default_indirect_link_order): Check bfd_alloc. - (bfd_new_link_order): Check bfd_alloc_by_size_t. - - * irix-core.c (irix_core_make_empty_symbol): Check bfd_zalloc. - - * ieee.c: Indent. - (read_id get_symbol get_section_entry ieee_archive_p ieee_object_p - ieee_slurp_section_data ieee_new_section_hook): Check bfd_alloc. - (do_one): Check bfd_alloc. Return a boolean. - (ieee_slurp_section_data): Check it. - (init_for_output): Check bfd_alloc. Return a boolean. - (ieee_set_section_contents): Check it. - (do_with_relocs): Check bfd_alloc. Return a boolean. - (ieee_bfd_debug_info_accumulate): Ditto. FIXME void. - (ieee_mkobject): Check bfd_zalloc. - (ieee_make_empty_symbol): Check bfd_zmalloc. - - * hpux-core.c (hpux_core_make_empty_symbol): Check - bfd_zalloc. - - * hppabsd-core.c (hppabsd_core_make_empty_symbol): Check - bfd_zalloc. - (hppabsd_core_core_file_p): Check bfd_zalloc. - - * hp300hpux.c (MY(slurp_symbol_table)): Check bfd_alloc. - - * elfcode.h (elf_new_section_hook): Check bfd_alloc. - (bfd_section_from_phdr): Ditto. - (write_relocs): Ditto. FIXME void - (elf_map_symbols assign_section_numbers map_program_segments): - Ditto. Return a boolean. - (swap_out_syms): Ditto. Check elf_map_symbols. - (elf_slurp_symbol_table): Check bfd_zalloc. - (elf_slurp_reloca_table): Check bfd_alloc. - (elf_slurp_reloc_table): Ditto. - (elf_compute_section_file_positions): Check assign_section_numbers. - (assign_file_positions_except_relocs): Return a boolean. - Check map_program_segments. - (elf_compute_section_file_positions): Check it. - - * elf32-mips.c (mips_elf_final_link): Check bfd_alloc. - - * elf32-hppa.c (hppa_elf_stub_branch_reloc): Check bfd_zmalloc and - realloc. - (hppa_elf_stub_reloc): Ditto. - (hppa_elf_build_arg_reloc_stub): Check bfd_zalloc. - (hppa_elf_build_long_branch_stub): Ditto. - (elf32_hppa_backend_symbol_table_processing): Ditto. - - * ecoff.c (ecoff_set_symbol_info): Check bfd_alloc. Return a boolean. - (ecoff_slurp_symbol_table): Check it. - (ecoff_slurp_armap): Check bfd_alloc. - (ecoff_write_armap): Check bfd_zalloc. - (ecoff_link_hash_newfunc): Check bfd_hash_allocate and - _bfd_link_hash_newfunc. - (ecoff_link_add_externals): Check bfd_alloc. - - * ctor.c (bfd_constructor_entry): Check bfd_alloc. - - * coffgen.c (coff_real_object_p): Check bfd_alloc. - (coff_renumber_symbols): Check bfd_alloc_by_size_t. Return a boolean. - (coff_write_symbol): Check bfd_alloc. FIXME int - (coff_write_linenumbers): Check bfd_alloc. Return a boolean. - (coff_section_symbol): Check bfd_alloc_by_size_t. - (coff_get_normalized_symtab): Check bfd_alloc. - (coff_bfd_make_debug_symbol): Check bfd_zalloc. - * libcoff-in.h: Change decls of coff_renumber_symbols, - coff_write_linenumbers. - * libcoff.h: Rebuilt. - * coffcode.h (coff_write_object_contents): Check - coff_renumber_symbols, coff_write_linenumbers. - - * coffcode.h: Indent. - (coff_add_missing_symbols): Check bfd_alloc_by_size_t. Return a - boolean. - (coff_write_object_contents): Check it. - - * coff-alpha.c (alpha_relocate_section): Check bfd_alloc. - * coff-mips.c (mips_relocate_section): Ditto. - - * archive.c (bfd_slurp_bsd_armap_f2): Check bfd_alloc value. - (do_slurp_bsd_armap): Ditto. - (compute_and_write_armap): Check bfd_realloc value. - - * aoutx.h (translate_from_native_sym_flags): Check bfd_alloc - return value. Return boolean value. - (NAME(aout,make_empty_symbol)): Check bfd_zalloc return value. - (NAME(aout,slurp_symbol_table)): Check bf_alloc and bfd_zalloc - return value. - (add_to_stringtab): Ditto. FIXME void - (aout_link_hash_newfunc): Check bfd_hash_allocate return value. - (aout_link_add_symbols): Check bfd_alloc value. - (translate_symbol_table): Check translate_from_native_sym_flags. - * hp300hpux.c (MY(slurp_symbol_table)): Ditto. - * aoutx.h (aout_link_hash_newfunc): Check _bfd_link_hash_newfunc. - - * opncls.c (bfd_zalloc bfd_realloc): Check result of bfd_alloc. - - * opncls.c (obstack_chunk_alloc): Define as malloc, not - bfd_xmalloc_by_size_t. - (_bfd_new_bfd): Check obstack_begin for 0 return. - - * ieee.c (obstack_chunk_alloc): Define as malloc, not - bfd_xmalloc_by_size_t. - (ieee_archive_p): Check obstack_begin for 0 return and - obstack_finish for NULL return. - - * hash.c (obstack_chunk_alloc): Define as malloc, not - bfd_xmalloc_by_size_t. - (bfd_hash_table_init_n): Check obstack_begin for 0 return and - obstack_finish for NULL return. - (bfd_hash_lookup): Check obstack_alloc for NULL return. - - * ecofflink.c (obstack_chunk_alloc): Define as malloc, not - bfd_xmalloc_by_size_t. - bfd_ecoff_debug_accumulate - bfd_ecoff_debug_accumulate_other): Check obstack_alloc. - (add_file_shuffle add_memory_shuffle): Check obstack_alloc for - NULL return. Return boolean, not void. - (bfd_ecoff_debug_init): Check obstack_begin for 0 return. - (bfd_ecoff_debug_accumulate): Check add_file_shuffle - and add_memory_shuffle return. - (string_hash_newfunc): Check bfd_hash_allocate and bfd_hash_newfunc. - (bfd_ecoff_debug_accumulate): Check bfd_alloc. - (ecoff_add_string): Check add_memory_shuffle return. - - * libbfd-in.h (xmalloc, bfd_xmalloc, bfd_xmalloc_by_size_t): - Remove decls. - * libbfd.h: Rebuilt. - -Fri Feb 11 15:35:32 1994 Stu Grossman (grossman at cygnus.com) - - * configure.host: Add Lynx/rs6000 support. - * config/i386-nlm.mt: Enable a.out file support. - * config/rs6000lynx.mh: Lynx/rs6000 host support. - -Fri Feb 11 17:25:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * archive.c (compute_and_write_armap): Rewrite somewhat to improve - memory usage. - -Fri Feb 11 13:10:42 1994 Stan Shebs (shebs@andros.cygnus.com) - - * archive.c: Change all references to '\n' in archive magic - to '\012', for greater portability. - * ecoff.c (ecoff_write_armap): Ditto. - -Thu Feb 10 12:58:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_write_other_symbol): Check strip settings to - see whether symbol should be output. - * genlink.h (struct generic_write_global_symbol_info): Added info - field. - * linker.c (_bfd_generic_final_link): Initialize wginfo.info. - (_bfd_generic_link_write_global_symbol): Check strip settings to - see whether symbol should be output. - * elf32-mips.c (mips_elf_final_link): Initialize wginfo.info. - -Wed Feb 9 21:34:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_reloc_queue_find): Do not examine a NULL queue entry. - - * som.c: Cast return values from BFD memory allocation routines to - avoid warnings from the HP compiler. - -Wed Feb 9 12:55:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-alpha.c (alpha_relocate_section): Accept a LITERAL - reloc on an "ldl" instruction too. - - * archive.c (bfd_ar_hdr_from_filesystem): Cast status elements - when passing them to sprintf. Use %ld instead of %d. - - * coff-rs6000.c (rs6000coff_mkarchive): Return false. - (rs6000_coff_snarf_ar_hdr): Don't declare errno; it's not used. - Also removed unused variable namelen. - (rs6000coff_write_armap): Declare orl_count and stridx parameters. - -Tue Feb 8 18:00:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libbfd-in.h (xmalloc): Don't declare parameter type, to avoid - conflicts. - * libbfd.h: Rebuilt. - -Tue Feb 8 15:55:50 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * coff-alpha.c (reloc_nil): New function. - (alpha_howto_table): Use it as special_function to prevent certain - relocs from being adjusted by bfd_perform_relocation. IGNORE - reloc should be partial_inplace. - (alpha_ecoff_get_relocated_section_contents): Accept a LITERAL - reloc on an "ldl" instruction too. - -Tue Feb 8 00:32:28 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * elf32-hppa.c (CURRENT_STUB_OFFSET, hppa_elf_build_arg_reloc_stub, - hppa_elf_build_long_branch_stub): Cast to char * instead of int - before performing pointer arithmetic. - -Mon Feb 7 20:56:27 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config.bfd (hppa*-*-osf*): Use bfd_name hppaosf for this - configuration. - (hppa*-*-*elf*): This configuration used hppa-elf now. - - * som.c: This file is also used for HOST_HPPAOSF. - - * targets.c (bfd_target_vector): Enable som_vec for HOST_HPPAOSF. - - * hosts/hppaosf.h: New host configuration file. - - * config/hppabsd.mt (SELECT_VECS): Add bfd_elf32_hppa_vec as - BSD handles both SOM and ELF object files. - - * config/hppaosf.mh (HDEFINES): Delete. No longer needed. - (RANLIB): Doesn't do anything, define it to be "echo". - - * config/hppaosf.mt: New target makefile fragment for a PA running - OSF1. - -Mon Feb 7 15:02:06 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * archures.c (enum bfd_architecture): Added bfd_arch_powerpc. - (archures_init_table): If SELECT_ARCHITECTURES is not defined, - added bfd_powerpc_arch. - * bfd-in2.h: Rebuilt. - * cpu-powerpc.c: New file. - * Makefile.in (ALL_MACHINES, CFILES): Added cpu-powerpc.c. - Rebuilt dependencies. - - * elfcode.h (bfd_section_from_shdr): Get vma and alignment_power - of an SHT_STRTAB section from sh_addr and sh_addralign, rather - than just setting them to zero. - -Sun Feb 6 20:04:10 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * elfcode.h (prep_headers, swap_out_syms): Check for NULL return - from bfd_new_strtab. - (elf_compute_section_file_positions): Check for false return from - swap_out_syms. - - * linker.c (default_indirect_link_order): Check for NULL return - from bfd_get_relocated_section_contents. - - * syms.c: Make example application in doc call xmalloc, not - bfd_xmalloc. - - * aoutx.h (NAME(aout,slurp_symbol_table), - aout_link_get_symbols, NAME(aout,link_hash_table_create)): - * bout.c (b_out_slurp_reloc_table, b_out_squirt_out_relocs): - * ecoff.c (ecoff_bfd_link_hash_table_create): - * ecofflink.c (bfd_ecoff_debug_init): - * format.c (bfd_check_format_matches): - * linker.c (_bfd_generic_link_hash_table_create): - (_bfd_generic_final_link): - * reloc16.c (bfd_coff_reloc16_relax_section): - (bfd_coff_reloc16_get_relocated_section_contents): - * elf32-hppa.c (hppa_elf_build_arg_reloc_stub): - * elf32-mips.c (mips_elf_final_link): - * elfcode.h (bfd_new_strtab): - (bfd_add_2_to_strtab): - (elf_slurp_symbol_table): - (elf_corefile_note): - * libbfd.c (bfd_zmalloc): - Use malloc and check the result, instead of bfd_xmalloc. - -Sat Feb 5 12:39:28 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Put m68*-*-sysv* line after m68*-*-sysv4*. - -Sat Feb 5 05:32:44 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * srec.c (srec_write_record): Put CONST keyword for "src" before - "unsigned", some compilers don't like it after "unsigned". - * libcoff.h, libcoff-in.h (bfd_perform_slip): Rename "value" to - "val" in prototype declaration because some compilers don't like - arguments whose names are the same as types. - -Sat Feb 5 01:14:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_check_ar_symbols): Correct test for whether - object file defines symbol. Also, if skipping a symbol, skip the - second symbol of a N_WARNING or N_INDR symbol as well. - -Fri Feb 4 23:55:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Add basic support for writing RS/6000 XCOFF files. - * coff-rs6000.c (dummy_reloc): Removed. - (rs6000coff_howto_table): Defined XCOFF relocs. - (RTYPE2HOWTO): Defined to use rs6000coff_rtype2howto. - (rs6000coff_rtype2howto): New function. - (coff_bfd_reloc_type_lookup): Defined to use - rs6000coff_reloc_type_lookup. - (rs6000coff_reloc_type_lookup): New function. - (SELECT_RELOC): Defined to set r_type and r_size fields. - (COFF_LONG_FILENAMES): Defined. - * coffcode.h (combined_entry_type): Changed fix_tag and fix_end - fields to bitfields. Added fields fix_value and fix_scnlen. - (sec_to_styp_flags): If STYP_DEBUG is defined, use it rather than - STYP_INFO for the type of a section named .debug. - (coff_add_missing_symbols): Don't define if RS6000COFF_C. - (coff_write_object_contents): If RS6000COFF_C, don't call - coff_add_missing_symbols. - (coff_slurp_symbol_table): If RS6000COFF_C, then if the last aux - entry has type STY_LD change the x_scnlen into a pointer to a - symbol and set fix_scnlen. Also, for a C_BSTAT symbol, change the - value into a pointer to a symbol and set fix_value. - * libcoff.h: Rebuilt. - * coffgen.c (coff_mangle_symbols): Reindent. If fix_value is set, - get the symbol offset. Likewise for fix_scnlen. - (string_size): Change type to bfd_size_type. - (debug_string_size, debug_string_section): New static variables. - (coff_fix_symbol_name): If bfd_coff_symname_in_debug returns true, - write the symbol name into the .debug section; assume that the - section has already been created with the right size. - (coff_write_symbols): Initialize debug_string_size to 0. If - bfd_coff_symname_in_debug returns true, don't put symbol name in - usual string table. After writing out all symbols, if - debug_string_size is not 0, check that it matches the size of the - .debug section. - (coff_get_normalized_symtab): Clear new fix_value and fix_scnlen - fields. If the string offset is 0, always use an empty string as - the name. - (coff_make_empty_symbol): Zero out the symbol structure. - * reloc.c (bfd_perform_relocation): Work around one gross hack - with another: actually look at the target name to avoid the broken - COFF check. - (bfd_reloc_code_real_type): Add BFD_RELOC_PPC_B26, - BFD_RELOC_PPC_BA26 and BFD_RELOC_PPC_TOC16. - * bfd-in2.h: Rebuilt. - -Fri Feb 4 17:28:32 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * libbfd.c (bfd_zmalloc): Call bfd_xmalloc instead of malloc. - (bfd_xmalloc, bfd_xmalloc_by_size_t): Functions deleted. - * libbfd-in.h: Define them as macros calling xmalloc and declare - xmalloc. - * libbfd.h: Rebuilt. - -Thu Feb 3 16:49:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecofflink.c (bfd_ecoff_debug_externals): If a small undefined - symbol has a value in the ECOFF symbol but not in the BFD symbol, - keep the value in the ECOFF symbol. This helps gas. - - * linker.c (_bfd_generic_link_output_symbols, - _bfd_generic_link_write_global_symbol): Don't require that all - references to a common symbol be themselves common symbols. - - * aoutx.h (aout_reloc_index_to_section): Handle N_UNDF. - -Wed Feb 2 20:37:19 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * libbfd.c, bfd-in.h, hosts/alphaosf.h, hosts/sparc-ll.h, aoutf1.h, - sparclynx.c, Makefile.in: Change HOST_64_BIT to BFD_HOST_64_BIT. - * bfd-in2.h: Rebuilt. - -Wed Feb 2 12:30:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffswap.h (coff_swap_reloc_out): If RS6000COFF_C, handle type - and size correctly. - (coff_swap_aux_in): If RS6000COFF_C, change x_csect.x_scnlen to - x_csect.x_scnlen.l to match change in coff/internal.h. - (coff_swap_aux_out): Likewise. - - * coff-mips.c (mips_ecoff_backend_data), coff-alpha.c - (alpha_ecoff_backend_data): Change casts of aux_in and aux_out - fields to match yesterday's changes. - - * coffcode.h (coff_write_relocs): If SELECT_RELOC is defined, pass - in the internal_reloc itself, not the type. - * coff-apollo.c, coff-h8300.c, coff-h8500.c, coff-i386.c, - coff-m68k.c, coff-sh.c, coff-we32k.c, coff-z8k.c: Changed - definition of SELECT_RELOC accordingly. - -Tue Feb 1 12:05:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffcode.h (bfd_coff_backend_data): Added new arguments to - _bfd_coff_swap_aux_in and _bfd_coff_swap_aux_out: aux index number - and number of aux entries. - (bfd_coff_swap_aux_in, bfd_coff_swap_aux_out): Changed - accordingly. - * libcoff.h: Rebuilt. - * coffswap.h (coff_swap_aux_in, coff_swap_aux_out): Accept new - arguments. If RS6000COFF_C, only treat C_EXT and C_HIDEXT - specially if this is the last aux entry. - * coffgen.c (coff_write_symbol, coff_get_normalized_symtab): Pass - new arguments to swap_aux functions. - -Sun Jan 30 15:14:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * gen-aout.c (main): Set DEFAULT_ARCH based on preprocessor macros - (only testing for m68k and vax at the moment); do verify that the - preprocessor didn't trash the arch name inside the string version. - Don't print out "pagesize =" line that prevents output from - compiling. Derive BYTES_IN_WORD and ARCH values from sizeof - results. - * Makefile.in (aout-params.h): Pass gen-aout a dummy target name. - (check, installcheck): Identify directory in "no testsuites" - message. - -Sun Jan 30 13:25:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_write_symbols): Write out correct value for - object file symbol. - -Fri Jan 28 18:34:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * hosts/vaxbsd.h (HOST_STACK_END_ADDR): Vax BSD doesn't define - KERNBASE, so hard-code 0x80000000 instead. - -Thu Jan 27 13:54:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * linker.c (generic_link_add_symbol_list): If symbol is common, - set the BSF_OLD_COMMON flag. - -Wed Jan 26 13:47:15 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * format.c (bfd_check_format_matches): Put the new entry in the - correct element of matching_vector. - -Tue Jan 25 11:43:28 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * som.c, som.h (bfd_som_set_section_attributes, - bfd_som_set_subsection_attributes): Change parameters from char - to int. Following a prototype with an old-style function definition - in the presence of widened parameters is a GCC-ism not supported - by the HP compiler in ANSI mode. - -Tue Jan 25 11:46:46 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * reloc.c (bfd_get_reloc_size): Size of type -2 is 4 bytes, not 2. - - * hp300hpux.c (MY(write_object_contents)): Write out the symbols - before writing out the relocs, so that the right symbol indices - are used. - - * archive.c (do_slurp_bsd_armap, bfd_slurp_bsd_armap_f2): Do not - try to overlay the internal carsyms on the external symdefs. That - can not work if the size of a host pointer is larger than 4 bytes. - - * format.c (bfd_check_format_matches): Cast result of - bfd_xmalloc_by_size_t. - * opncls.c (_bfd_new_bfd): Avoid ANSI C prototype. - - * archive.c: Reindented to GNU standards. - -Mon Jan 24 14:41:23 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add - "_bfd_" to function names. - * archive.c (_bfd_create_empty_archive_element_shell), - libbfd-in.h: Change callers. - - * libbfd.c (bfd_zmalloc): Renamed from zalloc. - * libbfd.c (bfd_add_to_string_table), - trad-core.c (trad_unix_core_file_p), - targets.c (bfd_target_list), - ptrace-core.c (ptrace_unix_core_file_p), - opncls.c (new_bfd), libbfd-in.h, - ieee.c (ieee_make_empty_symbol), - elf32-hppa.c (hppa_elf_stub_branch_reloc), - (hppa_elf_stub_reloc): Change callers. - * libbfd.h: Regenerated. - - * archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name. - (_bfd_get_elt_at_filepos), - coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h: - Change callers. - - * format.c (bfd_check_format_matches), libbfd-in.h, targets.c, - elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector - and default_vector to bfd_default_vector. - * libbfd.h: Regenerated. - - * format.c (bfd_check_format_matches): New function. - (bfd_check_format): Call it. - (bfd_matching_formats): Function removed. - * targets.c: Replace the vector added on Jan 21 with a count of - entries in default_vector. - * bfd-in2.h: Regenerated. - -Mon Jan 24 12:38:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-alpha.c (alpha_ecoff_object_p): New function. Set size of - .pdata section based on lnnoptr field, not section header. - (alpha_relocate_section): Don't bother to check if r_symndx >= 0, - since it is unsigned. - (ecoffalpha_little_vec): Use alpha_ecoff_object_p rather than - coff_object_p. - * ecoff.c (ecoff_new_section_hook): Set alignment_power field of - .pdata section to 3. - (ecoff_compute_section_file_positions): Save the size of the - .pdata section in the line_filepos field, and actually align the - .pdata section to an alignment power of 4. - (ecoff_compute_reloc_file_positions): Set output_has_begun after - calling ecoff_compute_section_file_positions. - (ecoff_write_object_contents): Set s_lnnoptr for the .pdata - section from the line_filepos field. Set vstamp for the optional - header from the vstamp of the symbolic header. - (ecoff_bfd_final_link): Set vstamp of the symbolic header to the - vstamp used by the first object file in the link. - - * ecofflink.c (ecoff_align_debug): Align RFDs to debug_align. - - * linker.c (generic_link_check_achive_element): Set SEC_ALLOC flag - for a created common section. - (_bfd_generic_link_add_one_symbol): Likewise. - - * elfcode.h (swap_out_syms): Use elf_section_from_bfd_section to - get the index of a common section, rather than always using - SHN_COMMON (MIPS has multiple common sections). - - * elf32-hppa.c (hppa_elf_gen_reloc_type): Typo (== for =). - - * bfd/aoutx.h (aout_link_input_section_std, - aout_link_input_section_ext): Pass additional arguments to - reloc_overflow callback. - * coff-alpha.c (alpha_ecoff_get_relocated_section_contents, - alpha_relocat_section): Likewise. - * coff-h8300.c (h8300_reloc16_extra_cases): Likewise. - * coff-h8500.c (extra_case): Likewise. - * coff-mips.c (mips_relocate_section): Likewise. - * coff-z8k.c (extra_case): Likewise. - * elf32-hppa.c (hppa_elf_stub_finish): Likewise. - * reloc.c (bfd_generic_get_relocated_section_contents): Likewise. - - * bout.c (calljx_callback, callj_callback): Use get_value to get - the symbol value and check for undefined symbols. - (get_value): If the symbol is undefined, look it up in the linker - hash table. - (b_out_get_relocated_section_contents): For PCREL24 and PCREL13 - use get_value to get the symbol value and check for undefined - symbols. - * reloc16.c (bfd_coff_reloc16_get_value): If the symbol is - undefined, look it up in the linker hash table. - - * aoutx.h (translate_symbol_table): The string index 0 has a - special meaning for normal symbols, but not for dynamic symbols. - -Sat Jan 22 12:26:01 1994 Stu Grossman (grossman at cygnus.com) - - * sparclynx.c: Setup appropriate macros to enable core file - support. - -Fri Jan 21 16:25:35 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * targets.c: Add a vector of matching format names. - * format.c (bfd_matching_formats): New function to return it. - (bfd_check_format): Set it. - * bfd-in2.h: Regenerated. - - * bfd-in.h: Remove decls of bfd_ec type and error printing functions. - Remove decl of type symclass; wasn't used. - * bfd.c: Document error handling, including code fragments - containing the error decls that were in bfd-in.h. - Remove DEFUNs. - * bfd-in2.h: Regenerated. - -Fri Jan 21 14:11:16 1994 Sean Fagan (sef@cygnus.com) - - * nlmcode.h, liblnm.h, nlm32-alpha.c nlm32-i386.c nlm32-sparc.c: - The sparc (and possibly other?) NLM format requires a different - way to write exports, so add a write_export field to the backend - data (and set it to NULL for everything but the sparc). - -Fri Jan 21 14:11:16 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * sunos.c (MY(read_dynamic_relocs)): Compare info->dynrel with NULL, - not (struct external_nlist *) NULL. info->dynrel is a PTR, not - a struct external_nlist *. - -Fri Jan 21 09:29:01 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * bfd.c: Remove error strings for errors removed below. - * aoutx.h (translate_to_native_sym_flags), bfd-in.h (bfd_ec), - oasys.c (oasys_write_sections): Rename - bfd_error_nonrepresentable_section to nonrepresentable_section. - None of the other bfd error names start with "bfd_error". - Remove errors symbol_not_found and no_relocation_info, which seem - to be unused. - * bfd-in2.h: Regenerated. - -Fri Jan 21 01:11:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.c (bfd_get_gp_size): Added support for ELF. - - * syms.c (BSF_DYNAMIC): New symbol flag. - (bfd_print_symbol_vandf): Print it. - * bfd-in2.h: Rebuilt. - * libaout.h (struct aout_backend_data): New read_dynamic_symbols - and read_dynamic_relocs fields. - (struct aoutdata): New dynamic_info field. - (obj_aout_dynamic_info): New accessor macro. - * sunos.c (struct sunos_dynamic_info): New structure. - (sunos_read_dynamic_info, MY(read_dynamic_symbols), - MY(read_dynamic_relocs)): New functions to read dynamic symbols - and relocs. - * aoutx.h (NAME(aout,some_aout_object_p)): If the object is - dynamically linked, set SEC_RELOC for both the .text and .data - sections. - (translate_from_native_sym_flags): Don't set BSF_LOCAL for an - undefined symbol. - (translate_symbol_table): New function, split out of - slurp_symbol_table; set the BSF_DYNAMIC flag appropriately. - (NAME(aout,slurp_symbol_table)): Read dynamic symbols, if any. - (NAME(aout,slurp_reloc_table)): Read dynamic relocs, if any. - (NAME(aout,get_reloc_upper_bound)): Include dynamic reloc count in - return value. - * aoutf1.h (NAME(aout,sunos4_write_object_contents)): Don't write - out dynamic symbols or relocs against reloc symbols, since they - are already in the .text section and we wouldn't know where to - write them anyhow. - (sunos4_aout_backend): Initialize read_dynamic_symbols and - read_dynamic_relocs fields. - * aout-target.h (MY(backend_data)): Initialize - read_dynamic_symbols and read_dynamic_relocs fields. - -Thu Jan 20 20:57:27 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * hosts/alphaosf.h (uint64e_type, uint64_type, int64_type): Delete - typedefs, since HOST_64_BIT will take care of defining them in - bfd.h. - -Wed Jan 19 17:28:59 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/alphaosf.mh (HDEFINES): Don't define HOST_64_BIT here; - that's dealt with elsewhere. - * hosts/alphaosf.h (sprintf_vma, fprintf_vma): New macros. - (uint64_typeHIGH, uint64_typeLOW): Comment with HOST_64_BIT so - they get copied to bfd.h. - - * reloc.c (enum bfd_reloc_code_real): Add some Alpha relocation - types. Reorganized some of the existing ones. - * coff-alpha.c (alpha_howto_table): Construct 64-bit negative one - values in case of compilation on a 32-bit machine. Fix pcrel - fields of some reloc types. - (alpha_bfd_reloc_type_lookup): Handle more relocation types. - - * bfd-in.h (uint64_typeHIGH, uint64_typeLOW): Supply default - definitions when not defined, regardless of whether uint64_type is - a defined macro or not. - (fprintf_vma, sprintf_vma): Define only if fprintf_vma is not - already defined. - -Wed Jan 19 00:02:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (translate_to_native_sym_flags): Set the type of a - BSF_WARNING symbol to N_WARNING. - -Tue Jan 18 16:43:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (aout_link_add_symbols): Increment sym_hash as well as p - for an indirect or warning symbol. - (aout_link_write_symbols): Update sym_hash with the target of an - indirect or warning symbol. If an indirect symbol is defined, - output the calculated value and don't output the target symbol. - -Tue Jan 18 03:54:59 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (translate_from_native_sym_flags): Give warning symbols - an (unused) nonzero section value, needed for check below. - -Mon Jan 17 15:12:07 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (translate_from_native_sym_flags, - aout_link_add_symbols): Treat N_SET[ABDT] | N_EXT like - N_SET[ABDT]. - -Fri Jan 14 16:45:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_object_p): If there is a SHT_DYNAMIC section, set - the DYNAMIC flag for the BFD. - (NAME(bfd_elf,write_object_contents)): Don't try to write out a - BFD with the DYNAMIC flag set, since we don't generate the program - header table correctly. - -Fri Jan 14 01:04:36 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * elfcode.h (elf_slurp_symbol_table): Free x_symp at the end - of the function to avoid storage leak. - -Thu Jan 13 23:07:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_link_write_external): An ifd can be -1. - -Thu Jan 13 12:33:27 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_set_reloc_info): Provide a default symbol for - relocations which don't actually have an associated symbol. - - * som.c (hppa_som_reloc): Add new "error message" argument. - -Wed Jan 12 13:36:43 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - Enable gdb to write to core files on more core file readers. - * libbfd.c (bfd_generic_set_section_contents): Remove range check - for section size, it is already done in bfd_set_section_contents - with bfd_get_section_size_now. - * aix386-core.c, hppabsd-core.c, hpux-core.c, irix-core.c, - osf-core.c, ptrace-core.c, trad-core.c (*_set_section_contents): - Use bfd_generic_set_section_contents instead of bfd_false. - -Wed Jan 12 15:31:57 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * linker.c: Added initial documentation. - - * linker.c (default_indirect_link_order): Don't expect space for - output relocations if there aren't any input relocations. - -Tue Jan 11 14:37:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * aoutx.h (NAME(aout,final_link)): Set a_entry before computing - file offsets. - - * elfcode.h (swap_out_syms): A common symbol is STT_OBJECT, not - STT_NOTYPE. - -Tue Jan 11 09:10:56 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Use ELF, not COFF for m88*-*-dgux*. - Combine m88k-*-* and m88110-*-* cases into m88*-*-*. - -Tue Jan 11 00:07:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecofflink.c: Extensive changes to compress and merge debugging - information, and to write some of out directly rather than saving - it in memory. Several new functions and structures, and new - arguments to existing functions. - * ecoff.c (ecoff_compute_reloc_file_positions): Compute - sym_filepos as well. - (ecoff_get_extr): Use ifdmap instead of ifdbase. - (ecoff_write_object_contents): Don't compute sym_filepos here. - Only output symbols if outsymbols is not NULL. - (ecoff_bfd_final_link): Adjust for changes in ecoff_debug_info and - bfd_ecoff_debug functions. Write out debugging information here. - (ecoff_final_link_debug_accumulate): Adjust for changes in - bfd_ecoff_debug functions. - (ecoff_link_write_external): Use ifdmap rather than ifdbase. - * elf32-mips.c (mips_elf_read_ecoff_info): Read external symbols - first, to put them in the first memory buffer. Clear fdr field. - (mips_elf_get_extr): Use pointer to unswapped external symbol. - (mips_elf_final_link): Adjust for changes in bfd_ecoff functions. - Preserve .text, .data and .bss even if they are empty. Save - pointer to unswapped external symbol rather than copying it. - Don't free up the external symbols. - * libelf.h (elf_symbol_type): Change mips_extr to PTR. - * bfd-in.h (bfd_ecoff_debug_init, bfd_ecoff_debug_free): Declare. - (bfd_ecoff_debug_accumulate): Update declaration. - (bfd_ecoff_debug_accumulate_other): Rename declaration from - bfd_ecoff_debug_link_other and update. - (bfd_ecoff_write_accumulated_debug): Declare. - * bfd-in2.h: Rebuilt. - * Makefile.in: Rebuilt dependencies. - -Mon Jan 10 20:46:53 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * Makefile.in (install): Remove "@" which follows a backslash. In - this position it just causes errors, not suppresses echoes. - -Mon Jan 10 09:06:21 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (hppa_som_gen_reloc_type): Fix handling of LT and RT - field selectors. - -Sun Jan 9 04:32:25 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/i386-netbsd.mt (SELECT_VECS): Include i386bsd_vec. - -Fri Jan 7 10:27:27 1994 David J. Mackenzie (djm@rtl.cygnus.com) - - * aoutx.h (adjust_z_magic): Don't merge the start of bss with the - end of data if they are not contiguous. - - * aoutf1.h (sunos4_aout_backend): Comment the fields' meanings. - -Fri Jan 7 15:40:16 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_mkobject_hook): Don't set SEC_SHARED_LIBRARY flag - for .reginfo section here. - (ecoff_new_section_hook): Set it here instead. - -Fri Jan 7 10:29:27 1994 Stan Shebs (shebs@andros.cygnus.com) - - * bfd-in.h: (bfd_boolean): Add workaround for systems that also - define true and false as enums. - (ALMOST_STDC): Add as alternative to __STDC__. - * bfd-in2.h: Rebuilt. - * syms.c (bfd_print_symbol_vandf): Convert a PTR to FILE*. - -Thu Jan 6 14:24:44 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h (translate_to_native_sym_flags): Catch the case where - there is no output section. - -Thu Jan 6 14:37:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlmcode.h (nlm_object_p): If we can't read the fixed header, - count it as a wrong format error, not a system call error, since - the object file might simply be too small. - - * targets.c (target_vector): Added nlm32_alpha_vec inside #ifdef - BFD64. - * Makefile.in (BFD32_BACKENDS): Remove nlm32-alpha.o. - (BFD64_BACKENDS): Add nlm32-alpha.o. It depends on 64 bit - support, even though it is for an Alpha in 32 bit mode. - * configure.in (nlm32_alpha_vec): Set target64 to true. - - * nlm32-gen.c, nlm64-gen.c: Removed. All nlm targets are - different, so there is no point to providing a generic one. - * libnlm.h: Don't bother to check for nlm_backend(bfd) being NULL - in the backend accessor macros; that should no longer be possible. - * targets.c (target_vector): Removed nlm32_big_generic_vec, - nlm64_big_generic_vec, nlm64_little_generic_vec. - * configure.in (nlm32_big_generic_vec, nlm32_little_generic_vec, - nlm64_big_generic_vec, nlm64_little_generic_vec): Removed. - * Makefile.in: Rebuilt dependencies, and - (BFD32_BACKENDS): Removed nlm32-gen.o. - (BFD64_BACKENDS): Removed nlm64-gen.o. - (CFILES): Removed nlm32-gen.c and nlm64-gen.c. - - * hp300hpux.c (ARCH_SIZE): Define before including aoutx.h. - - * linker.c (_bfd_generic_link_add_one_symbol): Add constructor and - bitsize arguments. Changed all callers (aoutx.h). - * libbfd-in.h (_bfd_generic_link_add_one_symbol): Add constructor - and bitsize arguments to declaration. - * libbfd.h: Rebuilt. - - * ecoff.c: First cut at new style of linker backend for - ECOFF--added a bunch of functions. Also: - (ecoff_sec_to_styp_flags): Set flags for .pdata and .xdata. - (ecoff_slurp_symbolic_header): New function. - (ecoff_slurp_symbolic_info): Call ecoff_slurp_symbolic_header. - (ecoff_compute_reloc_file_positions): New function. - (ecoff_set_section_contents): Get out quickly if count is zero. - Check errors better. - (ecoff_write_object_contents): Put .xdata section in data segment. - Call ecoff_compute_reloc_file_positions. Don't output relocs or - external symbols if outsymbols is NULL. - (ecoff_bfd_final_link): Completely rewritten. - * libecoff.h: Include bfdlink.h. - (struct ecoff_backend_data): Add relocate_section field. - (ecoff_data_type): Add sym_hashes and symndx_to_section fields. - (struct ecoff_link_hash_entry): Define. - (struct ecoff_link_hash_table): Define. - (ecoff_bfd_link_add_symbols): Declare as function, not macro. - (ecoff_bfd_link_hash_table_create): Likewise. - * ecofflink.c (bfd_ecoff_debug_one_external): New function. - (bfd_ecoff_debug_externals): Call bfd_ecoff_debug_one_external. - * bfd-in.h (bfd_ecoff_debug_one_external): Declare. - * bfd-in2.h: Rebuilt. - * coff-alpha.c (alpha_howto_table): Mark BRADDR as - partial_inplace, and set the src_mask to 0x1fffff. - (alpha_ecoff_get_relocated_section_contents): Remove unused - variable gp_warned. - (alpha_convert_external_reloc): New static function. - (alpha_relocate_section): New static function. - (alpha_ecoff_backend_data): Initialize relocate_section field. - * coff-mips.c (mips_relocate_refhi): New static function. - (mips_relocate_section): New static function. - (mips_ecoff_backend_data): Initialize relocate_section field. - - * reloc.c (_bfd_relocate_contents): Corrected signed overflow - checking when there is an addend. - - * aoutx.h (NAME(aout,final_link)): Don't abort when trying to link - a non a.out file, just pass it to _bfd_default_link_order. - (aout_link_input_section_std): When doing a final PC relative link - against a section symbol, subtract the VMA of the input section. - (aout_link_input_section_ext): Likewise. - - * linker.c (default_indirect_link_order): Renamed from - _bfd_generic_indirect_link_order and made static. - (_bfd_generic_final_link): Don't switch on link_order type, just - call _bfd_default_link_order. - (_bfd_default_link_order): Handle bfd_indirect_link_order type. - * genlink.h: Removed declaration of - _bfd_generic_indirect_link_order. - * elf32-mips.c (mips_elf_final_link): Don't switch on link_order - type, just call _bfd_default_link_order. - -Tue Jan 4 21:23:37 1994 Ian Lance Taylor (ian@cygnus.com) - - * linker.c (generic_link_check_archive_element): Base the name of - the created common section on the name of the section the symbol - came from. - (_bfd_generic_link_add_one_symbol): (case BIG): A common symbol - must have a section, so don't bother to create one. - -Mon Jan 3 15:32:16 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * aout-target.h (MY(vec)): Add DYNAMIC to mask of object flags. - * aoutf1.h (NAME(aout,sunos4_write_object_contents)): - If the DYNAMIC flag is set, set it in the exec header. - * aoutx.h (NAME(aout,some_aout_object_p)): If the object is - dynamically linked, set the DYNAMIC flag in the BFD. - * libaout.h (N_SET_DYNAMIC): New macro. - (N_DYNAMIC): Add missing 0 in mask. - -Mon Jan 3 11:41:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_get_extr): Don't output section symbols as - external symbols. - - * bfd-in.h, hash.c: Change bfd_hash_allocate argument from size_t - to unsigned int, because size_t may not be defined in bfd.h. - * bfd-in2.h: Rebuilt. - - * bfd-in.h (bfd_get{b,l}[_signed_]{16,32,64}): Declare argument to - be a const pointer. - * bfd-in2.h: Rebuilt. - * libbfd.c (bfd_get{b,l}[_signed_]{16,32,64}): Declare argument to - be a const pointer. - * targets.c (bfd_target): Change swap function pointers - accordingly. - * archive.c (do_slurp_coff_armap): Change swap accordingly. - * aix386-core.c: Change NO_GET and NO_GETS accordingly. - * hppabsd-core.c, hpux-core.c, irix-core.c, osf-core.c, - ptrace-core.c, trad-core.c: Change NO_GET and NO_SIGNED_GET - accordingly. - - * libbfd-in.h (struct artdata): Added tdata field. - (_bfd_add_bfd_to_archive_cache): Declare. - (_bfd_get_elt_at_filepos): Declare. - (_bfd_snarf_ar_hdr): Renamed from snarf_ar_hdr. - * libbfd.h: Rebuilt. - * archive.c: Cleaned up some more. - (_bfd_generic_mkarchive, bfd_generic_archive_p): Initialize - pointer elements of artdata. - (_bfd_add_bfd_to_archive_cache): Renamed from add_bfd_to_cache. - (_bfd_snarf_ar_hdr): Renamed from snarf_ar_hdr. - (_bfd_get_elt_at_filepos): Renamed from get_elt_at_filepos. - (get_extended_arelt_filename, bfd_construct_extended_name_table, - bfd_ar_hdr_from_filesystem, compute_and_write_armap): Made static. - * ecoff.c: Some comment changes. - (ecoff_slurp_armap): Handle rename of snarf_ar_hdr. Set - ardata->tdata to raw_armap. - (ecoff_archive_p): Initialize pointer elements of artdata. - * coff-rs6000.c (rs6000coff_get_elt_at_filepos): Handle rename of - add_bfd_to_cache. - - * hash.c: Added some documentation. - -Mon Jan 3 11:09:28 1994 Jim Kingdon (kingdon@lioth.cygnus.com) - - * aout-target.h, netbsd386.c: Replace NO_SWAP_MAGIC with SWAP_MAGIC, - and do the swapping here rather than calling ntohl from the N_* - macros. This cleans up assumptions about the size of a host long, - the existence to ntohl, etc. - -Sat Jan 1 13:50:05 1994 Rob Savoye (rob@darkstar.cygnus.com) - - * config.bfd: Add support for VSTa micro-kernel. It currently uses - i386-aout. - -Sat Jan 1 10:18:54 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * hosts/i386mach3.h (HOST_SEGMENT_SIZE): Fix value. - * i386mach3.c (SEGMENT_SIZE): Fix value. - -Fri Dec 31 16:23:43 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Minor cleanups suggested by CodeCenter. - * aoutx.h, coffgen.c, ecoff.c, ecofflink.c, elf.c, libbfd.c, - linker.c, reloc.c, section.c, srec.c: Added /*ARGSUSED*/ as - appropriate. - * aoutx.h (struct external_exec): Removed unnecessary declaration. - (NAME(aout,some_aout_object_p)): Set some tdata pointers to NULL. - (adjust_z_magic): Removed useless variable data_vma. - (stringtab_init): Initialize hash_zero. - (add_to_stringtab): Removed unused fourth argument. - (NAME(aout,swap_std_reloc_out)): Removed useless variable - r_addend. - (aout_link_input_section): Added some casts. - * archive.c (get_extended_arelt_filename, do_slurp_coff_armap, - bfd_ar_hdr_from_filesystem, bsd_write_armap, coff_write_armap): - Minor code rewriting to make it more C like. - (do_slurp_bsd_armap): Added some casts. - * ecoff.c (ecoff_write_object_contents): Removed useless variable - scn_base. - (ecoff_write_armap): Added some casts. Use "" rather than "\0". - * ecofflink.c (bfd_ecoff_write_debug): Added a cast. - * libaout.h (struct internal_exec): Removed unnecessary - declaration. - * linker.c (_bfd_generic_indirect_link_order): Added a cast. - * opncls.c (new_bfd): Removed a cast. - * reloc.c (bfd_generic_get_relocated_section_contents): Added - some casts. - * srec.c (internal_srec_write_object_contents): Removed useless - variable bytes_written. - -Fri Dec 31 11:46:13 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * i386mach3.c (N_TXTADDR): Don't define after all. - (TEXT_START_ADDR): Don't include exec header size in value. - -Thu Dec 30 15:47:54 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * i386mach3.c (N_TXTADDR): Define. - -Thu Dec 30 13:37:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Extensive changes to move the bulk of the linker into BFD so that - more efficient backend code can be written for specific object - files. Only existing efficient backend is a.out. - * seclet.c, seclet.h: Removed. - * hash.c, linker.c, genlink.h: New files. - * bfd-in.h: Removed bfd_error_vector. Declared hash table - structures and functions. - (JUMP_TABLE): Removed bfd_seclet_link, added - bfd_link_hash_table_create, bfd_link_add_symbols and - bfd_final_link. - * All backends: Changed accordingly. - * bfd-in2.h: Rebuilt. - * bfd.c (struct _bfd): Added link_next and archive_pass fields. - Removed ld_symbols field. - (bfd_nonrepresentable_section, bfd_undefined_symbol, - bfd_reloc_value_truncated, bfd_reloc_is_dangerous, - bfd_error_vector): Removed. - (bfd_default_error_trap, bfd_error_trap, - bfd_error_nonrepresentabltrap): Removed. - (bfd_get_relocated_section_contents): Pass link_info. Pass - link_order instead of seclet. Pass symbols. - (bfd_relax_section): Pass link_info. - (bfd_seclet_link): Removed. - (bfd_link_hash_table_create, bfd_link_add_symbols, - bfd_final_link): New macros. - * libbfd-in.h: If __GNUC__ is defined and alloca is not, define - alloca as __builtin_alloca. Declare internal linking functions. - * libbfd.h: Rebuilt. - * libbfd.c (bfd_seek): Comment out fseek assertion. It's worked - for months. - * reloc.c (reloc_howto_type): Added error_message argument to - special_function field. Changed all callers and all definitions. - (bfd_get_reloc_size): Make argument a const pointer. - (bfd_perform_relocation): Add error_message argument to hold - string set if return value if bfd_reloc_dangerous. Changed all - callers. - (_bfd_final_link_relocate, _bfd_relocate_contents): New functions. - * section.c (asection): Renamed seclets_head and seclets_tail to - link_order_head and link_order_tail. - * targets.c (bfd_target): Replaced seclet argument with link_info - and link_order and symbols arguments in - bfd_get_relocated_section_contents. Added symbols argument to - bfd_relax_section. Removed bfd_seclet_link. Added - bfd_link_hash_table_create, bfd_link_add_symbols and - bfd_final_link. - * libaout.h (struct aoutdata): Added external_syms, - external_sym_count, external_strings, sym_hashes fields. - (obj_aout_external_syms, obj_aout_external_sym_count, - obj_aout_external_strings, obj_aout_sym_hashes): New accessor - macros. - (WRITE_HEADERS): Only output symbols if outsymbols is not NULL. - * aoutx.h: Wrote new back end linker routines. - (translate_to_native_sym_flags): Return boolean value. Don't use - bfd_error_vector. - (NAME(aout,write_syms)): Return boolean value. Check return value - of translate_to_native_sym_flags and bfd_write. - * aout-target.h (final_link_callback): New function. - (MY_bfd_final_link): New function. - * aout-adobe.c (aout_adobe_write_object_contents): Check return - value of aout_32_write_syms. - * hp300hpux.c (MY(write_object_contents)): Likewise. - * i386lynx.c (WRITE_HEADERS): Likewise. - * libaout.h (WRITE_HEADERS): Likewise. - * bout.c: Changed functions to use link_info->callbacks rather - than bfd_error_vector, and link_orders rather than seclets. - * coff-alpha.c: Likewise. - * coff-h8300.c: Likewise. - * coff-h8500.c: Likewise. - * coff-sh.c: Likewise. - * coff-z8k.c: Likewise. - * elf32-hppa.c: Likewise. - * reloc16.c: Likewise. - * coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Look - up _gp in the hash table rather than in outsymbols. - * coff-a29k.c (a29k_reloc): Pass errors back in new error_message - argument rather than printing them. - * coffcode.h (bfd_coff_reloc16_extra_cases): Take link_info and - link_order arguments rather than seclet. Changed all uses and - definitions. - (bfd_coff_reloc16_estimate): Pass link_info arguments. Changed - all uses and definitions. - * libcoff.h: Rebuilt. - * ecoff.c (ecoff_get_extr): If symbol is defined by linker, but - not by ECOFF, make it scAbs. - (ecoff_bfd_final_link): Renamed from ecoff_bfd_seclet_link and - rewritten. - * elf32-mips.c (mips_elf_final_link): Renamed from - mips_elf_seclet_link and rewritten. - * elf32-hppa.c (elf32_hppa_stub_description): Added link_info - field. - (new_stub, add_stub_by_name, hppa_elf_build_arg_reloc_stub, - hppa_elf_build_long_branch_stub, hppa_look_for_stubs_in_section): - Added link_info arguments. Changed all callers. - * elfcode.h (elf_slurp_symbol_table): Don't quit if outsymbols is - not NULL. - * oasys.c (oasys_write_sections): Return boolean value rather than - using bfd_error_vector. - (oasys_write_object_contents): Check return value of - oasys_write_sections. - * hosts/std-host.h: Don't declare qsort or strtol. - * Makefile.in: Rebuild dependencies. - (BFD_LIBS): Removed seclet.o. Added hash.o and linker.o. - (CFILES): Removed seclet.c. Added hash.c and linker.c. - (HFILES): Removed seclet.h. Added genlink.h. - -Thu Dec 30 07:41:36 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) - - * section.c (bfd_get_section_contents): Return zero filled buffer - if section has no contents. - -Tue Dec 28 12:43:54 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elf.c (bfd_elf_generic_reloc): If this is not an inplace reloc, - then skip bfd_perform_relocation even if the addend is non-zero. - -Tue Dec 21 09:22:19 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * coffcode.h (coff_write_relocs) [SWAP_OUT_RELOC_OFFSET]: Copy - addend to r_offset field. - - * Makefile.in (CFILES): Added coff-sparc.c. Rebuild dependencies. - - * coff-sparc.c (SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET, - CALC_ADDEND): Define. - - * aix386-core.c (aix386_core_file_p): Use cd_regs[0] for computing - the offsetof because AIX /bin/cc does not like to take the address - of an array. (From Minh Tran-Le.) - -Thu Dec 16 13:06:32 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Thu Dec 16 15:41:06 1993 Peter Hoogenboom (hoogen@cs.utah.edu) - - * elf32-hppa.c (hppa_elf_build_arg_reloc_stub): Make sure to copy - the return pointer into %r2 if no jump-in-call-delay-slot - optimization was done. - - * hosts/hp300bsd.h: Correctly identify 4.3BSD vs 4.4BSD. - -Wed Dec 15 08:04:16 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * hosts/std-host.h: (time): Don't declare; conflicts on Mach3. - - * hosts/i386mach3.h (HOST_PAGE_SIZE): Set to 1 to avoid padding. - (HOST_SEGMENT_SIZE): Set to 0 for same reason. - - * i386mach3.c (PAGE_SIZE, SEGMENT_SIZE): Same changes as above. - (TEXT_START_ADDR): Correct. - (MY_backend_data): Define. - - * aoutx.h (adjust_o_magic, adjust_z_magic, adjust_n_magic): - New functions; code moved from aout_<size>_adjust_sizes_and_vmas. - -Tue Dec 14 21:48:33 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_begin_writing): Fix thinkos in auxiliary header - support. - (bfd_som_attach_aux_hdr): Likewise. - -Mon Dec 13 23:34:48 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * elf32-hppa.c (hppa_elf_gen_reloc_type): Handle 'T' field - selectors for PIC code. - - * som.c (hppa_som_gen_reloc_type): Handle 'T' field selectors. - (som_write_fixups): Handle R_DLT_REL, R_FSEL, R_RSEL, R_LSEL - relocations needed by PIC. - -Tue Dec 7 15:47:51 1993 Stu Grossman (grossman at cygnus.com) - - * nlmcode.h: Fixes to avoid compiler warnings... - -Tue Dec 7 15:10:54 1993 Ian Lance Taylor (ian@cygnus.com) - - * libnlm.h (nlm_backend_data): Removed macro definition. - (nlm_alpha_backend_data): Adjusted accordingly. - -Sun Dec 5 19:32:08 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_begin_writing): Flesh out code for handling simple - auxiliary headers. - (bfd_som_attach_aux_hdr): New function. - - * som.h (struct somdata): Add fields for attaching version and - copyright headers. Add accessor macros. - - * som.c (R_DLT_REL, R_AUX_UNWIND, R_SEC_STMT): Add protected - definitions for old versions of HPUX which fail to define them. - (som_hppa_howto_talbe): Add R_DLT_REL, R_AUX_UNWIND, and R_SEC_STMT - now that they're safe. Delete bogus R_STATEMENT relocations. - - * som.c (som_hppa_howto_table): Add missing R_END_TRY. Delete - extra R_DATA_OVERRIDE. - (hppa_som_gen_reloc_type): Generate a relocation for the rounding - mode selector if needed. - (som_write_fixups): Handle requests for a change in the default - rounding mode. Rounding modes do not consume input bytes, but - are just markers much like R_ENTRY and R_EXIT. - -Sat Dec 4 19:40:32 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - Fri Dec 3 09:55:17 1993 Pete Hoogenboom (hoogen@cs.utah.edu) - - * elf32-hppa.c: (hppa_elf_reloc): Do not do code reordering when - the branch instruction as originally been nullified. - hppa_elf_reloc): Avoid useless call to bfd_put_32 () in the - case of no code reordering due to an LDO instruction in the - delay slot of the branch. Make sure to relocate the correct - instruction. Do not perform instruction reordering for millicode - calls. - (hppa_elf_build_arg_reloc_stub): Change the relocation type - to R_HPPA_STUB_CALL_17 when special processing might be needed. - (hppa_elf_build_long_branch_stub): Prevent code reordering on - a call from a linker stub to another linker stub and for millicode - calls. Do not trash the return register for calls from one linker - stub to a second linker stub. - - * elf32-hppa.c: (elf_hppa_howto_table): PLABEL and DLT - relocations are not pc-relative. - - * hppa_stubs.h: (BLE_N_XXX_0_31): New instruction used in - linker stub code. - (COPY_2_31): Likewise. - -Fri Dec 3 18:40:58 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/solaris2.mh (HDEFINES): Remove -Dconst= - * hosts/solaris.h: If not __GNUC__, define const as empty. - -Thu Dec 2 15:43:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c: Added various casts for 32/64 bit cross targeting. - (ecoff_mkobject_hook): Set SEC_SHARED_LIBRARY for the .reginfo - section so that the linker ignores it. - * ecofflink.c: Added various casts for 32/64 bit cross targeting. - (ecoff_add_bytes): Changed need argument to size_t. - (bfd_ecoff_debug_link_other): Check return value of - ecoff_add_string. - - * libbfd-in.h (new_bfd): Use void rather than an empty parameter - list. - * libbfd.h: Rebuilt. - - * libnlm.h (struct nlm_obj_tdata): New field backend_data. - (nlm_backend_data, nlm_alpha_backend_data): New accessor macros. - (struct nlm_backend_data): New field no_uninitialized_data. - (nlm_no_uninitialized_data): New accessor macro. - * nlmcode.h (nlm_compute_section_file_positions): Handle - no_uninitialized_data. - (nlm_external_reloc_compare): Sort relocs by address for a - particular symbol, to make the sort more stable. - (nlm_write_object_contents): Cast the arguments to qsort. Get the - value of a debugging symbol the same way we get the value of a - normal symbol. - * nlm32-alpha.c: Various changes. Write out GP and .lita relocs. - Set no_uninitialized_data to true. - * nlm32-i386.c (nlm32_i386_backend), nlm32-sparc.c - (nlm32_sparc_backend): Set no_uninitialized_data field false. - * nlmswap.h (nlm_swap_fixed_header_out): Zero out destination - before filling it in. - -Wed Dec 1 21:47:58 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_section_type, som_decode_symcalss): New functions. - (som_get_symbol_info): Use them. - (som_slurp_symbol_table): Set the section of common and undefined - symbols correctly. - -Wed Dec 1 14:15:10 1993 Ken Raeburn (raeburn@cygnus.com) - - * elfcode.h (write_relocs): Initialize local var LAST_SYM_IDX, to - make gcc happy. - - * mipsbsd.c: Changes from Ralph Campbell: - (mips_howto_table_ext): MIPS_RELOC_LO16 should use - complain_overflow_dont. - (aout_mips_*_vec): Make name use "a.out" instead of "aout", to - make gdb happy. - - * bfd.c (bfd_errmsgs): Reword invalid-target message. - - * config.bfd: For sparc*-*-coff, use sparc-coff. - * configure.in: Handle sparccoff_vec. - * targets.c (sparccoff_vec): Declare. - - * reloc.c (bfd_get_reloc_size): New function. - (struct reloc_howto_type): Update documentation of size field. - -Wed Dec 1 14:39:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * nlm32-alpha.c: New file; preliminary Alpha NetWare support. - * config.bfd (alpha-*-netware*): New target; use alpha-nlm. - * config/alpha-nlm.mt: New file. - * configure.in (nlm32_alpha_vec): New vector; use nlm32-alpha.o, - nlm32.o, and nlm.o. - * Makefile.in (BFD32_BACKENDS): Added nlm32-alpha.o. - (CFILES): Added nlm32-alpha.c. - Rebuilt dependencies. - * targets.c (nlm32_alpha_vec): Declare. - - * libnlm.h (struct nlm_backend_data): New fields - optional_prefix_size, nlm_backend_object_p, nlm_write_prefix, - nlm_set_public_section, nlm_get_public_offset. Removed unused - nlm_write_reloc field. Changed nlm_write_import to remove - unnecessary symbol argument. Renamed nlm_write_externals to - nlm_write_external, and changed cound argument from bfd_vma to - bfd_size_type. - (nlm_optional_prefix_size, nlm_backend_object_p_func, - nlm_write_prefix_func, nlm_set_public_section_func, - nlm_get_public_offset_func): New accessor macros. - (nlm_write_reloc_func): Removed. - (nlm_write_external_func): Adjusted for field renaming. - * nlm32-i386.c (nlm_i386_write_import): Renamed from - nlm_i386_write_reloc. Removed old nlm_i386_write_import which - just called old nlm_i386_write_reloc. - (nlm_i386_write_external): Renamed from nlm_i386_write_externals. - Declared. Changed second argument from bfd_vma to bfd_size_type. - (nlm32_i386_backend): Adjusted for changes to fields and names. - * nlm32-sparc.c (nlm_sparc_mangle_relocs): Removed unused, - ifdeffed out code. - (nlm_sparc_write_import): Removed second argument. - (nlm_sparc_write_external): Renamed from - nlm_sparc_write_externals. Changed second argument from bfd_vma - to bfd_size_type. - (nlm32_sparc_backend): Adjusted for changes to fields and names. - * nlmcode.h: Removed some unused code. - (nlm_object_p): Don't destroy tdata pointer. Call - backend_object_p function if it exists. - (nlm_slurp_symbol_table): Removed unused variable rcount. Call - set_public_section_func if it exists instead of checking - NLM_HIBIT. - (nlm_compute_section_file_positions): Account for - optional_prefix_size. - (nlm_write_object_contents): Account for optional_prefix_size. - Removed useless variable write_reloc_func. Changed declaration - and call of write_import_func. Call write_prefix_func if it - exists. Removed unused variables len and temp. Call - get_public_offset_func if it exists rather than setting NLM_HIBIT. - * nlmswap.h: Declare functions. - - * bfd-in.h (uint64_typeLOW, uint64_typeHIGH): Fully parenthesize - for clarity. - (fprintf_vma, sprintf_vma): Use %lx, not %x. - * bfd-in2.h: Rebuilt. - * hosts/alphaosf.h (uint64_typeLOW, uint64_typeHIGH): Cast results - to unsigned long. - - * config.bfd: Don't set target64 here, as the setting is ignored. - * configure.in (ecoffalpha_little_vec): Set target64. - - * config/alphaosf.mt (TDEFINES): Removed; setting host parameters - in TDEFINES is wrong. - - * coff-alpha.c (alpha_ecoff_get_relocated_section_contents): - Remove unused variable output_section. - -Tue Nov 30 16:45:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * irix-core.c: New file for Irix 4 and Irix 5 core support. - Functions taken out of coff-mips.c. Handle vmap type VMAPFILE. - * coff-mips.c: Irix 4 core file support moved to irix-core.c. - * targets.c: If IRIX_CORE defined, include irix_core_vec in - target_vector. - * config/irix4.mh (HDEFINES): Add -DIRIX_CORE. - (HDEPFILES): Define to be irix-core.o. - * config/irix5.mh (HDEFINES): Define to be -DIRIX_CORE. - (HDEPFILES): Define to be irix-core.o. - * Makefile.in (OPTIONAL_BACKENDS): Added irix-core.o. Removed - sco-core.o, which no longer exists. - (CFILES): Added all *-core.c files. - Rebuilt dependencies. - -Wed Nov 24 02:02:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (map_program_segments): Restore check of file_size != - mem_size, but only if SHT_PROGBITS. - - * ecofflink.c: New file to hold ECOFF debug information linking - routines. - * ecoff.c (ecoff_clear_output_flags, ecoff_rel, ecoff_dump_seclet, - ecoff_add_string, ecoff_get_debug): Removed. Functionality now in - ecofflink.c. - (ecoff_get_extr, ecoff_set_index): New functions. - (ecoff_slurp_symbolic_info): Don't save raw_size. - (ecoff_bfd_seclet_link): Rewrote to use ecofflink.c functions. - (ecoff_compute_section_file_positions): Don't set EXEC_P just - because there is a start address. - (ecoff_write_object_contents): Handle external symbols here. Use - ecofflink.c functions to write out debugging information. - * elf32-mips.c (mips_elf_read_ecoff_info, mips_elf_get_extr, - mips_elf_set_index): New functions. - (mips_elf_seclet_link): Discard empty sections, the .options - section and .gptab sections. Handle linking .mdebug section. - * libecoff.h (ecoff_data_type): Removed raw_size and ifdbase. - * libelf.h (elf_symbol_type): Added mips_extr to tc_data union. - * bfd-in.h: Added prototypes for routines in ecofflink.c (some are - called by gas, so they are public). - * bfd-in2.h: Rebuilt. - * Makefile.in (BFD_LIBS): Added ecofflink.o. - (CFILES): Added ecofflink.c. - (ecofflink.o): New target. Rebuilt dependencies. - -Mon Nov 22 22:26:42 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (hppa_object_p): Also recognize SHARED_MAGIC_CNX as - a valid magic number if it's been defined. - -Mon Nov 22 14:17:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_mkobject): Don't create .scommon section; linker - no longer requires it. - (ecoff_bfd_seclet_link, ecoff_sizeof_headers, - ecoff_write_object_contents): Don't treat .scommon section - specially. - -Mon Nov 22 10:54:27 1993 Fred Fish (fnf@cygnus.com) - - Merged changes from kev@spuds.geg.mot.com (Kevin A. Buettner): - * bfd/config/delta88.mh (HDEFINES): Define this to be -DPTRACE_CORE. - * bfd/config/delta88.mh (HDEPFILES): Defined to be ptrace-core.o. - * bfd/ptrace-core.c: New file for dealing with core files with - start with the ptrace_user structure found on BCS compliant systems. - * bfd/targets.c (ptrace_core_vec): New vector. - -Mon Nov 22 02:33:12 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Minimal support for reading SOM fixup streams. Allows - objdump -r to do something reasonable. - * som.c (som_get_reloc_upper_bound): Implement. - (som_canonicalize_reloc): Implement. - (som_set_reloc_info, som_slurp_reloc_table): New functions. - -Sun Nov 21 13:46:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * hosts/lynx.h (FPRINTF_ALREADY_DECLARED): Define. - * hosts/sparclynx.h: Include lynx.h instead of duplicating it. - -Fri Nov 19 14:34:04 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coff-a29k.c (a29k_reloc): For R_IREL, don't left shift - signed_value before sign extending it. Don't subtract out - reloc_entry->address. This makes it compatible with what gas is - generating. - - * elfcode.h (elf_fake_sections): Accept .sbss as the name for a - SHT_NOBITS sections. - (map_program_segments): Don't leave the loop after the first - SHT_NOBITS section. - (assign_file_positions_except_relocs): Only force sh_offset and - sh_addr to match modulo maxpagesize for a section which is not - SHT_NOBITS. Changed the method used to force page alignment after - a SHT_NOBITS section to only do it for the last such consecutive - section, and to really force page alignment. - -Fri Nov 19 04:02:01 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * coffcode.h (coff_slurp_symbol_table): Print more verbose message - in the case of an unknown (or unhandled) storage class. - - * config/i386-lynx.mt (TDEFINES): FPRINTF_ALREADY_DECLARED should - not be defined here, since it is a host attribute, not a target - one. - * config/m68k-lynx.mt, config/sparc-lynx.mt: Ditto. - - * coffcode.h (coff_bfd_reloc_type_lookup): Don't define if already - defined. - - * coff-sparc.c: Define some relocations, based on ELF relocations. - (enum reloc_type, bfd_coff_generic_reloc, coff_sparc_howto_table, - struct coff_reloc_map, sparc_reloc_map, - coff_sparc_reloc_type_lookup): Borrowed from elf32-sparc.c and - elf.c, renamed. - (coff_bfd_reloc_type_lookup): Define to be coff_sparc_reloc_.... - (rtype2howto): Index into coff_sparc_howto_table using - dst->r_type. - -Thu Nov 18 11:45:39 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config.bfd (mips*-*-irix5*): New target; use mipsbelf. - * configure.host (mips-sgi-irix5*) New host; use irix5 (no - hosts/irix5.h created; just use std-host.h). - * config/irix5.mh: New file; like irix4.mh, but don't use -G or - -lmalloc. - * Makefile.in: Rebuilt dependencies. - - * ecoffswap.h: Changed type of internal pointers for swap out - functions to const *. - - * elf32-mips.c (mips_elf_got16_reloc): New function. Handle GOT16 - correctly for assembler, but linker support not implemented. - (elf_mips_howto_table): Use mips_elf_got16_reloc for GOT16. - (mips_elf_sym_is_global): New function; at least on Irix 5, all - non section symbols are considered global. - (elf_backend_sym_is_global): Define. - (mips_elf_final_write_processing): New function. Set the MIPS - architecture level correctly. - (elf_backend_final_write_processing): Define. - (mips_elf_section_from_shdr): Handle SHT_MIPS_OPTIONS. - (mips_elf_fake_sections): Set entsize of .mdebug or .reginfo - section to 1. Handle .options section. - (mips_elf_acom_section, mips_elf_acom_symbol, - mips_elf_acom_symbol_ptr): New static variables, used to build a - generic .acommon section to hold SHN_MIPS_ACOMMON symbols. - (mips_elf_symbol_processing): Handle SHN_MIPS_ACOMMON symbols by - putting them all in a global .acommon section. - - * elfcode.h (bfd_section_from_shdr): Don't dump core if target - section has no ELF section data. - (elf_make_sections): Set addralign of reloc section to 4. - (elf_fake_sections): Likewise. - (map_program_segments): Don't consider section 0. - (assign_file_positions_except_relocs): Don't consider section 0. - In the main loop, skip the symtab and strtab sections, since their - positions are set elsewhere. - (swap_out_syms): Set addralign of symtab section to 4. Set - addralign of strtab sections to 1. - (assign_file_positions_for_relocs): Don't consider section 0. - (write_object_contents): Don't write out section 0. - - * libelf.h (struct elf_backend_data): Added fields - elf_backend_sym_is_global and elf_backend_final_write_processing. - * elf32-target.h (elf32_bed): Added corresponding initializers. - * elf64-target.h (elf64_bed): Likewise. - * elfcode.h (sym_is_global): Take abfd argument. Call - elf_backend_sym_is_global if it is not NULL. - (elf_map_symbols): Pass abfd to sym_is_global. - (write_object_contents): Call elf_backend_final_write_processing - if it is defined. - -Wed Nov 17 18:43:28 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * libecoff.h: Include coff/ecoff.h. - (struct ecoff_backend_data): Move external debugging information - fields into a single field pointing to an ecoff_debug_swap - structure. - (ecoff_data_type): Move debugging information fields into a single - field pointing to an ecoff_debug_info structure. - * coff-alpha.c, coff-mips.c, ecoff.c: Corresponding changes. - -Wed Nov 17 17:38:58 1993 Sean Eric Fagan (sef@cygnus.com) - - * nlmswap.h: New file to swap fixed header. Included by NLM - backends. - * libnlm.h (struct reloc_and_sec): Define. - (struct nlm_backend_data): Add fields fixed_header_size, - nlm_read_import, nlm_write_import, nlm_swap_fhdr_in, - nlm_swap_fhdr_out. - (nlm_fixed_header_size, nlm_read_import_func, - nlm_write_import_func, nlm_swap_fixed_header_in_func, - nlm_swap_fixed_header_out_func, nlm_write_external_func): New - accessor macros. - * nlmcode.h: Use new functions. - * nlm32-i386.c: Provide new functions. - * nlm32-sparc.c: New file; SPARC NLM backend. - -Wed Nov 17 13:56:10 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * i386lynx.c (swap_std_reloc_in, swap_ext_reloc_in): Ignore - garbage bits appearing in the upper end of symbolnums. - - * config/sparc-lynx.mt (TDEFINES): Add -DFPRINTF_ALREADY_DECLARED. - -Tue Nov 16 17:03:41 1993 Stu Grossman (grossman at cygnus.com) - - * lynx-core.c (lynx_core_file_p): Change bfd_zalloc to bfd_alloc. - * m68klynx.c: Define core file macros. - * hosts/i386lynx.h, hosts/m68klynx.h, hosts/lynx.h: Move all - non-architecture specific stuff into lynx.h. - -Tue Nov 16 15:45:54 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * i386linux.c: Define new macro ZMAGIC_DISK_BLOCK_SIZE to 1024, and - change PAGE_SIZE to 4096. - -Mon Nov 15 11:48:08 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * Makefile.in (diststuff): New target. - - * VERSION: Updated. - -Sun Nov 14 23:33:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_object_setup): Do not create dummy ".text", ".data", - and ".bss" sections. - (setup_sections): Do not set SEC_HAS_CONTENTS if a section's size - is zero. Recognize BSS type sections and turn off SEC_LOAD and - SEC_DATA (so binutils/size works). Set the correct value for - a section's _raw_size. - (som_slurp_symbol_table): Program entry points, and millicode are - also functions. Mark them as such. Also mark L$* symbols as - debugging symbols. - - * bfd-in2.h: Rebuilt. - -Sat Nov 13 15:27:15 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_bfd_reloc_type_lookup): Add missing prototype. Returns - a pointer to constant data. Delete bogus #define which made the - function useless. - - * som.c (som_prep_for_fixups): New function. - (som_write_fixups): New function. - (som_write_space_strings): New function. - (som_write_symbol_strings): New function. - (som_begin_writing): New function. - -Fri Nov 12 15:29:36 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * som.c (som_write_object_contents): Do not abort. Flesh out. - (som_set_section_contents): Do not abort. Flesh out. - - * som.c (som_write_headers): New function. - (som_prep_headers): New function. - (som_build_and_write_symbol_table): New function. - - * som.c (som_sizeof_headers): Add missing prototype. - (som_set_arch_mach): Do not abort. - - * som.c (som_count_spaces): New function. - (som_count_subspaces): New function. - (compare_syms): New function. - (som_compute_checksum): New function. - - * som.c (hppa_som_gen_reloc_type): New function. - (som_bfd_reloc_type_lookup): New function. - - * som.c (try_prev_fixup): New function. - (som_reloc_skip): New function. - (som_reloc_addend): New function. - (som_reloc_call): New function. - - * som.c (som_initialize_reloc_queue): New function. - (som_reloc_queue_insert): Likewise. - (som_reloc_queue_fix): Likewise. - (som_reloc_queue_find): Likewise. - - * som.c (som_hppa_howto_table): SOM howto relocation table. - (hppa_som_reloc): New function. - - * som.c (struct reloc_queue): New structure to keep track of - the last four multibyte relocations emitted. - (enum pa_symbol_type): Type to fully describe the symbol types - associated with .import/.export assembler directives. - - * som.c: Include libhppa.h - - * som.c (bfd_som_set_section_attributes): New function. - (bfd_som_set_subsection_attributes): Likewise. - (bfd_som_set_symboL_type): Likewise. - (bfd_som_attach_unwind_info): Likewise. - * som.h: Declare new exported functions. - - * som.h (struct som_symbol): Add new fields to hold additional - information needed to build/write symbol tables and fixup streams. - (struct som_section_data_struct): Add new fields to hold additional - information needed to build/write space and subspace headers. - (som_symbol_data): New accessor macro for SOM symbol information. - (R_HPPA_*): Basic relocation types to be used by the assembler. - -Fri Nov 12 11:00:28 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * trad-core.c (trad_unix_core_file_p): If new hook - TRAD_CORE_ALLOW_ANY_EXTRA_SIZE defined, then skip the check for the - corefile being too big. - * hosts/i386sco.h: Define it. - -Thu Nov 11 15:16:28 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * bfd.c (struct _bfd): Add hppabsd_core_data. - * targets.c (target_vector): Add hppabsd_core_vec. - * hpux-core.c (hpux_core_core_file_p): Fail if an unknown core - section is encountered during core section scanning. - * hppabsd-core.c: New file. - * config/hppabsd.mh: Enable HPPA BSD core files. - - * elf32-hppa.c (hppa_elf_reloc): Remove DEFUN crud. Remove code - which is either commented out or ifdef'd out. Add, update and - clean comments. Fix various indention and spacing problems. Handle - problems related to using "ble" to jump to a stub rather than "bl" - (%r31 is trashed by "ble", but not by "bl"). - (NEW_INSTRUCTION): Put inside curly braces. - (CURRENT_STUB_OFFSET): Fix indention problems. - (hppa_elf_build_arg_reloc_stub): Fix indention and spacing problems. - Add, update and clean comments. Handle "ble" %r31 lossage problems. - (hppa_elf_build_long_branch_stub): Likewise. - (hppa_look_for_stubs_in_section): Likewise. - (hppa_elf_stub_check): Remove obsolete function. - - * hppa_stubs.h: Add new instructions to deal with %r31 lossage - problems. Delete unused instructions. - -Tue Nov 9 11:40:27 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * m68klynx.c (TARGET_IS_BIG_ENDIAN_P): Define. - -Tue Nov 9 11:26:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_object_p): Rather than looking through an array - of architectures, get the ELF EM_xxx code from the backend - information. Let the generic ELF target match any EM_xxx code not - matched by another ELF target. Call elf_backend_object_p to let - the backend do more checks and set global information. - * libelf.h (struct elf_backend_data): Added elf_machine_code and - elf_backend_object_p fields. - (struct bfd_elf_arch_map): Removed. - (bfd_elf_arch_map, bfd_elf_arch_map_size): Don't declare. - * elf32-target.h, elf64-target.h: Initialize elf_machine_code - field with ELF_MACHINE_CODE. Initialize elf_backend_object_p - field with elf_backend_object_p (if it is defined). - * elf32-gen.c, elf32-hppa.c, elf32-i386.c, elf32-i860.c, - elf32-m68k.c, elf32-m88k.c, elf32-mips.c, elf32-sparc.c, - elf64-gen.c (ELF_MACHINE_CODE): Defined. - * elf32-mips.c: Include ecoffswap.h to get ECOFF swapping - routines. - (mips_elf_object_p): Set the right machine number. - (mips_elf_ecoff_debug_swap): Defined. - (elf_backend_object_p): Defined to be mips_elf_object_p. - (elf_backend_ecoff_debug_swap): Defined to be - mips_elf_ecoff_debug_swap. - * elf.c (bfd_elf_arch_map, bfd_elf_arch_map_size): Removed. - - * libbfd-in.h (target_vector, default_vector): Declare. - * libbfd.h: Rebuilt. - * format.c (target_vector, default_vector): Don't declare. - - * elf32-mips.c (elf_mips_howto_table): Don't complain on overflow - for R_MIPS_26. Correct overflow detection requires matching the - upper four bits of the destination against the PC. From Ted Lemon - <mellon@pepper.ncd.com>. - - * bout.c (b_out_reloc_type_lookup): Return type should point to - const data. - * coff-i960.c (coff_i960_reloc_type_lookup): Likewise. - * elf32-hppa.c (elf_hppa_reloc_type_lookup): Likewise. - * mipsbsd.c (MY(reloc_howto_type_lookup)): Likewise. - * coff-i386.c (coff_i386_reloc): Made howto const. - * oasys.c (oasys_write_data): Made how const. - - * libelf.h: Added some comments. - (struct elf_backend_data): Added elf_backend_ecoff_debug_swap - field. Removed unused write_relocs field. - * elf32-target.h: Adjusted elf_backend_data initialization - accordingly. - * elf64-target.h: Corrected elf_backend_data initialization to - fill in all fields and to set elf_64_p to 1. - -Mon Nov 8 18:13:14 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (bfd_section_from_shdr): Remove duplicate assignment - to filepos in SHT_STRTAB case. - (assign_file_position_for_section): Set BFD section filepos as - well as ELF section sh_offset. - - * reloc.c: Use const instead of CONST. - (bfd_perform_relocation): Make variable howto a const pointer. - * bfd-in2.h, libbfd.h: Rebuilt. - -Mon Nov 8 12:19:15 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * Makefile.in (realclean): Don't remove generated headers. Reverts - change of 2 Jul 1993. - -Mon Nov 8 06:08:31 1993 D. V. Henkel-Wallace (gumby@cirdan.cygnus.com) - - * configure.bfd: make unixware equivalent to sysv4. - - * config/i386-nlm.mt: bring in elf config; make it the default. - -Sun Nov 7 20:21:38 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * libbfd.c (bfd_put_8): Add parens around reference to "val" - argument. - -Fri Nov 5 21:45:09 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * hosts/i386mach3.h (HOST_SEGMENT_SIZE), - i386mach3.c (SEGMENT_SIZE, TEXT_START_ADDR): Correct values (?). - -Fri Nov 5 15:17:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * coffcode.h (coff_write_object_contents): Zero out internal_a. - -Fri Nov 5 10:41:07 1993 David J. Mackenzie (djm@thepub.cygnus.com) - - * aoutx.h, archive.c, archures.c, bfd.c, cache.c, coffcode.h, - core.c, ctor.c, format.c, init.c, libbfd.c, opncls.c, reloc.c, - section.c, syms.c, targets.c: - Doc cleanup (spelling, punctuation, grammar, formatting). - * bfd-in2.h, libbfd.h: Rebuild. - -Thu Nov 4 14:46:14 1993 John Gilmore (gnu@rtl.cygnus.com) - - * bfd-in.h (bfd_get_cacheable, bfd_set_cacheable): New accessors. - * bfd.c, opncls.c: Improve comments on file descriptor cacheing. - -Thu Nov 4 08:54:30 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * From Pete Hoogenboom (hoogen@cs.utah.edu) - * elf32-hppa.c (hppa_elf_get_section_contents): Fix logic error - in last change. Always rebuild symbol extension section the first - time though if output sections exist (fixes ld -r problems). - -Thu Nov 04 08:08:46 1993 Jeffrey Wheat (cassidy@cygnus.com) - - * Makefile.in: Add .PHONY for check and installcheck rules. - -Tue Nov 2 14:42:27 1993 Bill Cox (bill@tarkas.cygnus.com) - - * libbfd-in.h (artdata): Use long, not time_t for portability, at - least to HPUX. File below is a derived file. - -Tue Nov 2 14:42:27 1993 Bill Cox (bill@tarkas.cygnus.com) - - * libbfd.h (artdata): Use long, not time_t for portability, at - least to HPUX. - -Tue Nov 2 09:32:25 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Use bigmips for mips*-*-bsd*. - -Mon Nov 1 14:30:09 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * elfcode.h (elf_slurp_reloca_table, elf_slurp_reloc_table): - Handle symbol number of zero. - - * reloc.c (enum bfd_reloc_code_real): Added - BFD_RELOC_MIPS_LITERAL, BFD_RELOC_MIPS_GOT16, - BFD_RELOC_MIPS_CALL16, BFD_RELOC_MIPS_GPREL32. - * bfd-in2.h: Rebuilt. - * coff-mips.c (mips_bfd_reloc_type_lookup): Handle - BFD_RELOC_MIPS_LITERAL. - * elf32-mips.c (mips_reloc_map): Handle new relocs. - (mips_elf_hi16_reloc, mips_elf_lo16_reloc): Rearrange _gp_disp - checks slightly. - - * aout-target.h (MY_bfd_debug_info_start, MY_bfd_debug_info_end, - MY_bfd_debug_info_accumulat [sic]): Remove unused definitions. - (MY_bfd_get_relocated_section_contents, MY_bfd_relax_section, - MY_bfd_seclet_link): Define. - (MY_bfd_reloc_type_lookup): Rename from - MY_reloc_howto_type_lookup. - (MY_bfd_make_debug_symbol): Rename from MY_make_debug_symbol. - (MY(vec)): Use JUMP_TABLE rather than listing functions. - * hp300hpux.c (MY_get_symtab, MY_get_symtab_upper_bound, - MY_canonicalize_reloc, MY_write_object_contents): Don't define in - terms of MY, because that causes a recusive invocation of CAT when - expanded within JUMP_TABLE, and ANSI compilers don't expand - recursive macros. - * mipsbsd.c (MY_bfd_reloc_type_lookup): Rename from - MY_reloc_howto_type_lookup, and don't define in terms of MY. - (MY_canonicalize_reloc): Don't define in terms of MY. - (aout_mips_little_vec, aout_mips_big_vec): Use JUMP_TABLE rather - than listing functions. - -Mon Nov 1 09:12:25 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * config.bfd: Use m68k-elf for m68*-*-sysv4*. - -See file ChangeLog.1 - - -Local Variables: -mode: indented-text -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gnu/usr.bin/binutils/bfd/TODO b/gnu/usr.bin/binutils/bfd/TODO index 08a3641b1ad..7a127352521 100644 --- a/gnu/usr.bin/binutils/bfd/TODO +++ b/gnu/usr.bin/binutils/bfd/TODO @@ -4,7 +4,7 @@ Things that still need to be done: -*- Text -*- is in a single bfd_target structure. Hence all the code for *writing* object files is still pulled into all the applications that only care about *reading* (gdb, nm, objdump), while gas has - to carry along all the unneded baggage for reading objects. And + to carry along all the unneeded baggage for reading objects. And so on. This would be a substantial change, and the payoff would not all that great (essentially none if bfd is used as a shared library). diff --git a/gnu/usr.bin/binutils/bfd/VERSION b/gnu/usr.bin/binutils/bfd/VERSION deleted file mode 100644 index c3be8ac6832..00000000000 --- a/gnu/usr.bin/binutils/bfd/VERSION +++ /dev/null @@ -1 +0,0 @@ -cygnus-2.7.2 diff --git a/gnu/usr.bin/binutils/bfd/acconfig.h b/gnu/usr.bin/binutils/bfd/acconfig.h deleted file mode 100644 index f3c4e998014..00000000000 --- a/gnu/usr.bin/binutils/bfd/acconfig.h +++ /dev/null @@ -1,28 +0,0 @@ - -/* Whether strstr must be declared even if <string.h> is included. */ -#undef NEED_DECLARATION_STRSTR - -/* Whether malloc must be declared even if <stdlib.h> is included. */ -#undef NEED_DECLARATION_MALLOC - -/* Whether realloc must be declared even if <stdlib.h> is included. */ -#undef NEED_DECLARATION_REALLOC - -/* Whether free must be declared even if <stdlib.h> is included. */ -#undef NEED_DECLARATION_FREE - -/* Whether getenv must be declared even if <stdlib.h> is included. */ -#undef NEED_DECLARATION_GETENV -@TOP@ - -/* Do we need to use the b modifier when opening binary files? */ -#undef USE_BINARY_FOPEN - -/* Name of host specific header file to include in trad-core.c. */ -#undef TRAD_HEADER - -/* Define only if <sys/procfs.h> is available *and* it defines prstatus_t. */ -#undef HAVE_SYS_PROCFS_H - -/* Do we really want to use mmap if it's available? */ -#undef USE_MMAP diff --git a/gnu/usr.bin/binutils/bfd/aclocal.m4 b/gnu/usr.bin/binutils/bfd/aclocal.m4 index 6d8f96c6db4..ca9d432d712 100644 --- a/gnu/usr.bin/binutils/bfd/aclocal.m4 +++ b/gnu/usr.bin/binutils/bfd/aclocal.m4 @@ -23,7 +23,6 @@ esac])dnl dnl Get a default for CC_FOR_BUILD to put into Makefile. AC_DEFUN(BFD_CC_FOR_BUILD, [# Put a plausible default for CC_FOR_BUILD in Makefile. -AC_REQUIRE([AC_C_CROSS])dnl if test -z "$CC_FOR_BUILD"; then if test "x$cross_compiling" = "xno"; then CC_FOR_BUILD='$(CC)' diff --git a/gnu/usr.bin/binutils/bfd/cf-m68klynx.c b/gnu/usr.bin/binutils/bfd/cf-m68klynx.c index 6425c3013e7..7674f1b248b 100644 --- a/gnu/usr.bin/binutils/bfd/cf-m68klynx.c +++ b/gnu/usr.bin/binutils/bfd/cf-m68klynx.c @@ -1,5 +1,5 @@ /* BFD back-end for Motorola M68K COFF LynxOS files. - Copyright 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -20,207 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define TARGET_SYM m68klynx_coff_vec #define TARGET_NAME "coff-m68k-lynx" - #define LYNXOS - #define COFF_LONG_FILENAMES - -#define _bfd_m68kcoff_howto_table _bfd_m68klynx_howto_table -#define _bfd_m68kcoff_rtype2howto _bfd_m68klynx_rtype2howto -#define _bfd_m68kcoff_howto2rtype _bfd_m68klynx_howto2rtype -#define _bfd_m68kcoff_reloc_type_lookup _bfd_m68klynx_reloc_type_lookup - -#define LYNX_SPECIAL_FN _bfd_m68klynx_special_fn - -#include "bfd.h" -#include "sysdep.h" - -#ifdef ANSI_PROTOTYPES -struct internal_reloc; -struct coff_link_hash_entry; -struct internal_syment; -#endif - -static bfd_reloc_status_type _bfd_m68klynx_special_fn - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static reloc_howto_type *coff_m68k_lynx_rtype_to_howto - PARAMS ((bfd *, asection *, struct internal_reloc *, - struct coff_link_hash_entry *, struct internal_syment *, - bfd_vma *)); - -/* For some reason when using m68k COFF the value stored in the .text - section for a reference to a common symbol is the value itself plus - any desired offset. (taken from work done by Ian Taylor, Cygnus Support, - for I386 COFF). */ - -/* If we are producing relocateable output, we need to do some - adjustments to the object file that are not done by the - bfd_perform_relocation function. This function is called by every - reloc type to make any required adjustments. */ - -static bfd_reloc_status_type -_bfd_m68klynx_special_fn (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - symvalue diff; - - if (output_bfd == (bfd *) NULL) - return bfd_reloc_continue; - - if (bfd_is_com_section (symbol->section)) - { - /* We are relocating a common symbol. The current value in the - object file is ORIG + OFFSET, where ORIG is the value of the - common symbol as seen by the object file when it was compiled - (this may be zero if the symbol was undefined) and OFFSET is - the offset into the common symbol (normally zero, but may be - non-zero when referring to a field in a common structure). - ORIG is the negative of reloc_entry->addend, which is set by - the CALC_ADDEND macro below. We want to replace the value in - the object file with NEW + OFFSET, where NEW is the value of - the common symbol which we are going to put in the final - object file. NEW is symbol->value. */ - diff = symbol->value + reloc_entry->addend; - } - else - { - /* For some reason bfd_perform_relocation always effectively - ignores the addend for a COFF target when producing - relocateable output. This seems to be always wrong for 386 - COFF, so we handle the addend here instead. */ - diff = reloc_entry->addend; - } - -#define DOIT(x) \ - x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask)) - - if (diff != 0) - { - reloc_howto_type *howto = reloc_entry->howto; - unsigned char *addr = (unsigned char *) data + reloc_entry->address; - - switch (howto->size) - { - case 0: - { - char x = bfd_get_8 (abfd, addr); - DOIT (x); - bfd_put_8 (abfd, x, addr); - } - break; - - case 1: - { - short x = bfd_get_16 (abfd, addr); - DOIT (x); - bfd_put_16 (abfd, x, addr); - } - break; - - case 2: - { - long x = bfd_get_32 (abfd, addr); - DOIT (x); - bfd_put_32 (abfd, x, addr); - } - break; - - default: - abort (); - } - } - - /* Now let bfd_perform_relocation finish everything up. */ - return bfd_reloc_continue; -} -/* Compute the addend of a reloc. If the reloc is to a common symbol, - the object file contains the value of the common symbol. By the - time this is called, the linker may be using a different symbol - from a different object file with a different value. Therefore, we - hack wildly to locate the original symbol from this file so that we - can make the correct adjustment. This macro sets coffsym to the - symbol from the original file, and uses it to set the addend value - correctly. If this is not a common symbol, the usual addend - calculation is done, except that an additional tweak is needed for - PC relative relocs. - FIXME: This macro refers to symbols and asect; these are from the - calling function, not the macro arguments. */ - -#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \ - { \ - coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \ - if (ptr && bfd_asymbol_bfd (ptr) != abfd) \ - coffsym = (obj_symbols (abfd) \ - + (cache_ptr->sym_ptr_ptr - symbols)); \ - else if (ptr) \ - coffsym = coff_symbol_from (abfd, ptr); \ - if (coffsym != (coff_symbol_type *) NULL \ - && coffsym->native->u.syment.n_scnum == 0) \ - cache_ptr->addend = - coffsym->native->u.syment.n_value; \ - else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ - && ptr->section != (asection *) NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ - else \ - cache_ptr->addend = 0; \ - if (ptr && (reloc.r_type == R_PCRBYTE \ - || reloc.r_type == R_PCRWORD \ - || reloc.r_type == R_PCRLONG)) \ - cache_ptr->addend += asect->vma; \ - } - -#define coff_rtype_to_howto coff_m68k_lynx_rtype_to_howto +#define STATIC_RELOCS +#define COFF_COMMON_ADDEND #include "coff-m68k.c" - -/* coff-m68k.c uses the special COFF backend linker. We need to - adjust common symbols. - - We can't define this function until after we have included - coff-m68k.c, because it uses RTYPE2HOWTO. */ - -/*ARGSUSED*/ -static reloc_howto_type * -coff_m68k_lynx_rtype_to_howto (abfd, sec, rel, h, sym, addendp) - bfd *abfd; - asection *sec; - struct internal_reloc *rel; - struct coff_link_hash_entry *h; - struct internal_syment *sym; - bfd_vma *addendp; -{ - arelent relent; - reloc_howto_type *howto; - - RTYPE2HOWTO (&relent, rel); - - howto = relent.howto; - - if (howto->pc_relative) - *addendp += sec->vma; - - if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0) - { - /* This is a common symbol. The section contents include the - size (sym->n_value) as an addend. The relocate_section - function will be adding in the final value of the symbol. We - need to subtract out the current size in order to get the - correct result. */ - BFD_ASSERT (h != NULL); - *addendp -= sym->n_value; - } - - /* If the output symbol is common (in which case this must be a - relocateable link), we need to add in the final size of the - common symbol. */ - if (h != NULL && h->root.type == bfd_link_hash_common) - *addendp += h->root.u.c.size; - - return howto; -} diff --git a/gnu/usr.bin/binutils/bfd/cisco-core.c b/gnu/usr.bin/binutils/bfd/cisco-core.c index 15b95471164..3492e75369c 100644 --- a/gnu/usr.bin/binutils/bfd/cisco-core.c +++ b/gnu/usr.bin/binutils/bfd/cisco-core.c @@ -219,6 +219,9 @@ cisco_core_file_validate (abfd, crash_info_loc) /* NAN */ case 54: abfd->tdata.cisco_core_data->sig = SIGFPE; break; default: +#ifndef SIGEMT +#define SIGEMT SIGTRAP +#endif /* "software generated"*/ abfd->tdata.cisco_core_data->sig = SIGEMT; } diff --git a/gnu/usr.bin/binutils/bfd/coff-apollo.c b/gnu/usr.bin/binutils/bfd/coff-apollo.c index 5ba47f7a667..6075d52b1e9 100644 --- a/gnu/usr.bin/binutils/bfd/coff-apollo.c +++ b/gnu/usr.bin/binutils/bfd/coff-apollo.c @@ -1,5 +1,5 @@ /* BFD back-end for Apollo 68000 COFF binaries. - Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. + Copyright 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc. By Troy Rollo (troy@cbme.unsw.edu.au) Based on m68k standard COFF version Written by Cygnus Support. @@ -22,7 +22,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" #include "libbfd.h" -#include "obstack.h" #include "coff/apollo.h" #include "coff/internal.h" #include "libcoff.h" diff --git a/gnu/usr.bin/binutils/bfd/coff-aux.c b/gnu/usr.bin/binutils/bfd/coff-aux.c index 1dba9d5c465..6966392a33b 100644 --- a/gnu/usr.bin/binutils/bfd/coff-aux.c +++ b/gnu/usr.bin/binutils/bfd/coff-aux.c @@ -1,8 +1,6 @@ /* BFD back-end for Apple M68K COFF A/UX 3.x files. - Copyright 1996 Free Software Foundation, Inc. - Portions written by Richard Henderson <rth@tamu.edu>, - COMMON symbol munging cribbed from cf-m68klynx.c which was - written by Cygnus Support. + Copyright 1996, 1997 Free Software Foundation, Inc. + Written by Richard Henderson <rth@tamu.edu>. This file is part of BFD, the Binary File Descriptor library. @@ -35,225 +33,30 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */ #define BSS_NOLOAD_IS_SHARED_LIBRARY -#define _bfd_m68kcoff_howto_table _bfd_m68kaux_howto_table -#define _bfd_m68kcoff_rtype2howto _bfd_m68kaux_rtype2howto -#define _bfd_m68kcoff_howto2rtype _bfd_m68kaux_howto2rtype -#define _bfd_m68kcoff_reloc_type_lookup _bfd_m68kaux_reloc_type_lookup +#define STATIC_RELOCS -/* Rather than change names lots of places, reuse the same hack */ -#define LYNX_SPECIAL_FN _bfd_m68kaux_special_fn +#define COFF_COMMON_ADDEND #include "bfd.h" #include "sysdep.h" -#ifdef ANSI_PROTOTYPES -struct internal_reloc; -struct coff_link_hash_entry; -struct internal_syment; -#endif - - -static bfd_reloc_status_type _bfd_m68kaux_special_fn - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static reloc_howto_type *coff_m68k_aux_rtype_to_howto - PARAMS ((bfd *, asection *, struct internal_reloc *, - struct coff_link_hash_entry *, struct internal_syment *, - bfd_vma *)); static boolean coff_m68k_aux_link_add_one_symbol PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword, asection *, bfd_vma, const char *, boolean, boolean, struct bfd_link_hash_entry **)); - -#define coff_rtype_to_howto coff_m68k_aux_rtype_to_howto #define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol - -/* Compute the addend of a reloc. If the reloc is to a common symbol, - the object file contains the value of the common symbol. By the - time this is called, the linker may be using a different symbol - from a different object file with a different value. Therefore, we - hack wildly to locate the original symbol from this file so that we - can make the correct adjustment. This macro sets coffsym to the - symbol from the original file, and uses it to set the addend value - correctly. If this is not a common symbol, the usual addend - calculation is done, except that an additional tweak is needed for - PC relative relocs. - FIXME: This macro refers to symbols and asect; these are from the - calling function, not the macro arguments. */ - -#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \ - { \ - coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \ - if (ptr && bfd_asymbol_bfd (ptr) != abfd) \ - coffsym = (obj_symbols (abfd) \ - + (cache_ptr->sym_ptr_ptr - symbols)); \ - else if (ptr) \ - coffsym = coff_symbol_from (abfd, ptr); \ - if (coffsym != (coff_symbol_type *) NULL \ - && coffsym->native->u.syment.n_scnum == 0) \ - cache_ptr->addend = - coffsym->native->u.syment.n_value; \ - else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ - && ptr->section != (asection *) NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ - else \ - cache_ptr->addend = 0; \ - if (ptr && (reloc.r_type == R_PCRBYTE \ - || reloc.r_type == R_PCRWORD \ - || reloc.r_type == R_PCRLONG)) \ - cache_ptr->addend += asect->vma; \ - } - - - #include "coff/aux-coff.h" /* override coff/internal.h and coff/m68k.h */ #include "coff-m68k.c" - - -/* For some reason when using m68k COFF the value stored in the .text - section for a reference to a common symbol is the value itself plus - any desired offset. (taken from work done by Ian Taylor, Cygnus Support, - for I386 COFF). */ - -/* If we are producing relocateable output, we need to do some - adjustments to the object file that are not done by the - bfd_perform_relocation function. This function is called by every - reloc type to make any required adjustments. */ - -static bfd_reloc_status_type -_bfd_m68kaux_special_fn (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - symvalue diff; - - if (output_bfd == (bfd *) NULL) - return bfd_reloc_continue; - - if (bfd_is_com_section (symbol->section)) - { - /* We are relocating a common symbol. The current value in the - object file is ORIG + OFFSET, where ORIG is the value of the - common symbol as seen by the object file when it was compiled - (this may be zero if the symbol was undefined) and OFFSET is - the offset into the common symbol (normally zero, but may be - non-zero when referring to a field in a common structure). - ORIG is the negative of reloc_entry->addend, which is set by - the CALC_ADDEND macro below. We want to replace the value in - the object file with NEW + OFFSET, where NEW is the value of - the common symbol which we are going to put in the final - object file. NEW is symbol->value. */ - diff = symbol->value + reloc_entry->addend; - } - else - { - /* For some reason bfd_perform_relocation always effectively - ignores the addend for a COFF target when producing - relocateable output. This seems to be always wrong for 386 - COFF, so we handle the addend here instead. */ - diff = reloc_entry->addend; - } - -#define DOIT(x) \ - x = ((x & ~howto->dst_mask) | \ - (((x & howto->src_mask) + diff) & howto->dst_mask)) - - if (diff != 0) - { - reloc_howto_type *howto = reloc_entry->howto; - unsigned char *addr = (unsigned char *) data + reloc_entry->address; - - switch (howto->size) - { - case 0: - { - char x = bfd_get_8 (abfd, addr); - DOIT (x); - bfd_put_8 (abfd, x, addr); - } - break; - - case 1: - { - short x = bfd_get_16 (abfd, addr); - DOIT (x); - bfd_put_16 (abfd, x, addr); - } - break; - - case 2: - { - long x = bfd_get_32 (abfd, addr); - DOIT (x); - bfd_put_32 (abfd, x, addr); - } - break; - - default: - abort (); - } - } - - /* Now let bfd_perform_relocation finish everything up. */ - return bfd_reloc_continue; -} - - -/* coff-m68k.c uses the special COFF backend linker. We need to - adjust common symbols. */ - -/*ARGSUSED*/ -static reloc_howto_type * -coff_m68k_aux_rtype_to_howto (abfd, sec, rel, h, sym, addendp) - bfd *abfd; - asection *sec; - struct internal_reloc *rel; - struct coff_link_hash_entry *h; - struct internal_syment *sym; - bfd_vma *addendp; -{ - arelent relent; - reloc_howto_type *howto; - - RTYPE2HOWTO (&relent, rel); - - howto = relent.howto; - - if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0) - { - /* This is a common symbol. The section contents include the - size (sym->n_value) as an addend. The relocate_section - function will be adding in the final value of the symbol. We - need to subtract out the current size in order to get the - correct result. */ - BFD_ASSERT (h != NULL); - *addendp -= sym->n_value; - } - - /* If the output symbol is common (in which case this must be a - relocateable link), we need to add in the final size of the - common symbol. */ - if (h != NULL && h->root.type == bfd_link_hash_common) - *addendp += h->root.u.c.size; - - return howto; -} - - /* We need non-absolute symbols to override absolute symbols. This mirrors Apple's "solution" to let a static library symbol override a shared library symbol. On the whole not a good thing, given how shared libraries work here, but can work if you are careful with what you include in the shared object. */ -boolean +static boolean coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value, string, copy, collect, hashp) struct bfd_link_info *info; diff --git a/gnu/usr.bin/binutils/bfd/coff-h8500.c b/gnu/usr.bin/binutils/bfd/coff-h8500.c index 1348cfbeb18..22eeaa55954 100644 --- a/gnu/usr.bin/binutils/bfd/coff-h8500.c +++ b/gnu/usr.bin/binutils/bfd/coff-h8500.c @@ -1,5 +1,5 @@ /* BFD back-end for Hitachi H8/500 COFF binaries. - Copyright 1993, 1994 Free Software Foundation, Inc. + Copyright 1993, 94, 95, 1997 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, <sac@cygnus.com>. @@ -21,7 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" -#include "obstack.h" #include "libbfd.h" #include "bfdlink.h" #include "coff/h8500.h" @@ -137,7 +136,7 @@ rtype2howto(internal, dst) #define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry) -/* Perform any necessaru magic to the addend in a reloc entry */ +/* Perform any necessary magic to the addend in a reloc entry */ #define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \ diff --git a/gnu/usr.bin/binutils/bfd/coff-w65.c b/gnu/usr.bin/binutils/bfd/coff-w65.c index d14cdf9d9ad..0379bfbc325 100644 --- a/gnu/usr.bin/binutils/bfd/coff-w65.c +++ b/gnu/usr.bin/binutils/bfd/coff-w65.c @@ -1,5 +1,5 @@ /* BFD back-end for WDC 65816 COFF binaries. - Copyright 1995 Free Software Foundation, Inc. + Copyright 1995, 96, 1997 Free Software Foundation, Inc. Written by Steve Chamberlain, <sac@cygnus.com>. This file is part of BFD, the Binary File Descriptor library. @@ -20,7 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" -#include "obstack.h" #include "libbfd.h" #include "bfdlink.h" #include "coff/w65.h" @@ -83,7 +82,7 @@ rtype2howto (internal, dst) #define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry) -/* Perform any necessaru magic to the addend in a reloc entry */ +/* Perform any necessary magic to the addend in a reloc entry */ #define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \ diff --git a/gnu/usr.bin/binutils/bfd/coff-z8k.c b/gnu/usr.bin/binutils/bfd/coff-z8k.c index 3f4a735063e..21f29a82969 100644 --- a/gnu/usr.bin/binutils/bfd/coff-z8k.c +++ b/gnu/usr.bin/binutils/bfd/coff-z8k.c @@ -1,5 +1,5 @@ /* BFD back-end for Zilog Z800n COFF binaries. - Copyright 1992, 1993, 1994 Free Software Foundation, Inc. + Copyright 1992, 93, 94, 95, 1997 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, <sac@cygnus.com>. @@ -21,7 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" -#include "obstack.h" #include "libbfd.h" #include "bfdlink.h" #include "coff/z8k.h" @@ -112,7 +111,7 @@ rtype2howto (internal, dst) #define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry) -/* Perform any necessaru magic to the addend in a reloc entry */ +/* Perform any necessary magic to the addend in a reloc entry */ #define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \ diff --git a/gnu/usr.bin/binutils/bfd/config.h-vms b/gnu/usr.bin/binutils/bfd/config.h-vms deleted file mode 100644 index 66c4344973d..00000000000 --- a/gnu/usr.bin/binutils/bfd/config.h-vms +++ /dev/null @@ -1,59 +0,0 @@ -/* config.h-vms. Generated by hand by Klaus Kämpf, kkaempf@didymus.rmi.de. */ -/* config.in. Generated automatically from configure.in by autoheader. */ - -/* Whether malloc must be declared even if <stdlib.h> is included. */ -/* #undef NEED_DECLARATION_MALLOC */ - -/* Whether free must be declared even if <stdlib.h> is included. */ -/* #undef NEED_DECLARATION_FREE */ - -/* Define if you have a working `mmap' system call. */ -/* #define HAVE_MMAP 1 */ - -/* Do we need to use the b modifier when opening binary files? */ -/* #undef USE_BINARY_FOPEN */ - -/* Name of host specific header file to include in trad-core.c. */ -/* #undef TRAD_HEADER */ - -/* Define only if <sys/procfs.h> is available *and* it defines prstatus_t. */ -/* #undef HAVE_SYS_PROCFS_H */ - -/* Do we really want to use mmap if it's available? */ -/* #undef USE_MMAP */ - -/* Define if you have the fcntl function. */ -#define HAVE_FCNTL 1 - -/* Define if you have the getpagesize function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define if you have the madvise function. */ -#define HAVE_MADVISE 1 - -/* Define if you have the mprotect function. */ -#define HAVE_MPROTECT 1 - -/* Define if you have the <fcntl.h> header file. */ -#define HAVE_FCNTL_H 1 - -/* Define if you have the <stddef.h> header file. */ -#define HAVE_STDDEF_H 1 - -/* Define if you have the <stdlib.h> header file. */ -#define HAVE_STDLIB_H 1 - -/* Define if you have the <string.h> header file. */ -#define HAVE_STRING_H 1 - -/* Define if you have the <strings.h> header file. */ -#define HAVE_STRINGS_H 1 - -/* Define if you have the <sys/file.h> header file. */ -#define HAVE_SYS_FILE_H 1 - -/* Define if you have the <time.h> header file. */ -#define HAVE_TIME_H 1 - -/* Define if you have the <unistd.h> header file. */ -#define HAVE_UNISTD_H 1 diff --git a/gnu/usr.bin/binutils/bfd/configure.bat b/gnu/usr.bin/binutils/bfd/configure.bat deleted file mode 100644 index 78fe79e9112..00000000000 --- a/gnu/usr.bin/binutils/bfd/configure.bat +++ /dev/null @@ -1,18 +0,0 @@ -@echo off
-if "%1" == "h8/300" goto h8300
-
-echo Configuring bfd for go32
-update hosts\go32.h sysdep.h
-update Makefile.dos Makefile
-echo s/@WORDSIZE@/32/g>config.sed
-sed -e s/^/s\/@VERSION@\// -e s/$/\/g/g version >>config.sed
-sed -f config.sed < bfd-in2.h > bfd.h2
-update bfd.h2 bfd.h
-goto exit
-
-:h8300
-echo Configuring bfd for H8/300
-update hosts\h-go32.h sysdep.h
-update Makefile.dos Makefile
-
-:exit
diff --git a/gnu/usr.bin/binutils/bfd/cpu-mn10200.c b/gnu/usr.bin/binutils/bfd/cpu-mn10200.c deleted file mode 100644 index 2a0a9888c58..00000000000 --- a/gnu/usr.bin/binutils/bfd/cpu-mn10200.c +++ /dev/null @@ -1,38 +0,0 @@ -/* BFD support for the Matsushita 10200 processor - Copyright 1996 Free Software Foundation, Inc. - -This file is part of BFD, the Binary File Descriptor library. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" - -const bfd_arch_info_type bfd_mn10200_arch = - { - 16, /* 16 bits in a word */ - 24, /* 16 bits in an address */ - 8, /* 8 bits in a byte */ - bfd_arch_mn10200, - 200, - "mn10200", - "mn10200", - 2, - true, /* the one and only */ - bfd_default_compatible, - bfd_default_scan , - 0, - }; diff --git a/gnu/usr.bin/binutils/bfd/cpu-mn10300.c b/gnu/usr.bin/binutils/bfd/cpu-mn10300.c deleted file mode 100644 index fc6108d407b..00000000000 --- a/gnu/usr.bin/binutils/bfd/cpu-mn10300.c +++ /dev/null @@ -1,38 +0,0 @@ -/* BFD support for the Matsushita 10300 processor - Copyright 1996 Free Software Foundation, Inc. - -This file is part of BFD, the Binary File Descriptor library. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" - -const bfd_arch_info_type bfd_mn10300_arch = - { - 32, /* 16 bits in a word */ - 32, /* 16 bits in an address */ - 8, /* 8 bits in a byte */ - bfd_arch_mn10300, - 300, - "mn10300", - "mn10300", - 2, - true, /* the one and only */ - bfd_default_compatible, - bfd_default_scan , - 0, - }; diff --git a/gnu/usr.bin/binutils/bfd/cpu-sparc.c b/gnu/usr.bin/binutils/bfd/cpu-sparc.c index 35b714deb7d..234bd92bd29 100644 --- a/gnu/usr.bin/binutils/bfd/cpu-sparc.c +++ b/gnu/usr.bin/binutils/bfd/cpu-sparc.c @@ -1,5 +1,5 @@ /* BFD support for the SPARC architecture. - Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1992, 94, 95, 96, 1997 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -23,6 +23,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Don't mix 32 bit and 64 bit files. */ +static const bfd_arch_info_type *sparc_compatible + PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); + static const bfd_arch_info_type * sparc_compatible (a, b) const bfd_arch_info_type *a; diff --git a/gnu/usr.bin/binutils/bfd/dep-in.sed b/gnu/usr.bin/binutils/bfd/dep-in.sed index 779a0bb04ae..9da181ab8fc 100644 --- a/gnu/usr.bin/binutils/bfd/dep-in.sed +++ b/gnu/usr.bin/binutils/bfd/dep-in.sed @@ -14,7 +14,6 @@ s/ libbfd.h//g s/ config.h//g s! \$(INCDIR)/fopen-[^ ]*\.h!!g s! \$(INCDIR)/ansidecl\.h!!g -s! \$(INCDIR)/obstack\.h!!g s/\\\n */ /g diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info b/gnu/usr.bin/binutils/bfd/doc/bfd.info deleted file mode 100644 index f8ea24b8a6d..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info +++ /dev/null @@ -1,94 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -Indirect: -bfd.info-1: 936 -bfd.info-2: 50487 -bfd.info-3: 91356 -bfd.info-4: 139850 -bfd.info-5: 181537 - -Tag Table: -(Indirect) -Node: Top936 -Node: Overview1201 -Node: History2251 -Node: How It Works3192 -Node: What BFD Version 2 Can Do4733 -Node: BFD information loss6047 -Node: Canonical format8570 -Node: BFD front end12931 -Node: Memory Usage31295 -Node: Initialization32518 -Node: Sections32890 -Node: Section Input33365 -Node: Section Output34717 -Node: typedef asection37178 -Node: section prototypes50487 -Node: Symbols56231 -Node: Reading Symbols57818 -Node: Writing Symbols58898 -Node: Mini Symbols60458 -Node: typedef asymbol61419 -Node: symbol handling functions66065 -Node: Archives70069 -Node: Formats73671 -Node: Relocations76452 -Node: typedef arelent77168 -Node: howto manager91356 -Node: Core Files106226 -Node: Targets107231 -Node: bfd_target109189 -Node: Architectures126860 -Node: Opening and Closing136295 -Node: Internal139850 -Node: File Caching144788 -Node: Linker Functions147532 -Node: Creating a Linker Hash Table149195 -Node: Adding Symbols to the Hash Table150918 -Node: Differing file formats151804 -Node: Adding symbols from an object file153533 -Node: Adding symbols from an archive155665 -Node: Performing the Final Link158060 -Node: Information provided by the linker159288 -Node: Relocating the section contents160420 -Node: Writing the symbol table162153 -Node: Hash Tables164740 -Node: Creating and Freeing a Hash Table165928 -Node: Looking Up or Entering a String167080 -Node: Traversing a Hash Table168318 -Node: Deriving a New Hash Table Type169092 -Node: Define the Derived Structures170144 -Node: Write the Derived Creation Routine171206 -Node: Write Other Derived Routines173884 -Node: BFD back ends175180 -Node: What to Put Where175399 -Node: aout175537 -Node: coff181537 -Node: elf206935 -Node: Index207760 - -End Tag Table diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info-1 b/gnu/usr.bin/binutils/bfd/doc/bfd.info-1 deleted file mode 100644 index cb26d46ed74..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info-1 +++ /dev/null @@ -1,1306 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) - - This file documents the binary file descriptor library libbfd. - -* Menu: - -* Overview:: Overview of BFD -* BFD front end:: BFD front end -* BFD back ends:: BFD back ends -* Index:: Index - - -File: bfd.info, Node: Overview, Next: BFD front end, Prev: Top, Up: Top - -Introduction -************ - - BFD is a package which allows applications to use the same routines -to operate on object files whatever the object file format. A new -object file format can be supported simply by creating a new BFD back -end and adding it to the library. - - BFD is split into two parts: the front end, and the back ends (one -for each object file format). - * The front end of BFD provides the interface to the user. It manages - memory and various canonical data structures. The front end also - decides which back end to use and when to call back end routines. - - * The back ends provide BFD its view of the real world. Each back - end provides a set of calls which the BFD front end can use to - maintain its canonical form. The back ends also may keep around - information for their own use, for greater efficiency. - -* Menu: - -* History:: History -* How It Works:: How It Works -* What BFD Version 2 Can Do:: What BFD Version 2 Can Do - - -File: bfd.info, Node: History, Next: How It Works, Prev: Overview, Up: Overview - -History -======= - - One spur behind BFD was the desire, on the part of the GNU 960 team -at Intel Oregon, for interoperability of applications on their COFF and -b.out file formats. Cygnus was providing GNU support for the team, and -was contracted to provide the required functionality. - - The name came from a conversation David Wallace was having with -Richard Stallman about the library: RMS said that it would be quite -hard--David said "BFD". Stallman was right, but the name stuck. - - At the same time, Ready Systems wanted much the same thing, but for -different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k -coff. - - BFD was first implemented by members of Cygnus Support; Steve -Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K. -Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace -(`gumby@cygnus.com'). - - -File: bfd.info, Node: How It Works, Next: What BFD Version 2 Can Do, Prev: History, Up: Overview - -How To Use BFD -============== - - To use the library, include `bfd.h' and link with `libbfd.a'. - - BFD provides a common interface to the parts of an object file for a -calling application. - - When an application sucessfully opens a target file (object, -archive, or whatever), a pointer to an internal structure is returned. -This pointer points to a structure called `bfd', described in `bfd.h'. -Our convention is to call this pointer a BFD, and instances of it -within code `abfd'. All operations on the target object file are -applied as methods to the BFD. The mapping is defined within `bfd.h' -in a set of macros, all beginning with `bfd_' to reduce namespace -pollution. - - For example, this sequence does what you would probably expect: -return the number of sections in an object file attached to a BFD -`abfd'. - - #include "bfd.h" - - unsigned int number_of_sections(abfd) - bfd *abfd; - { - return bfd_count_sections(abfd); - } - - The abstraction used within BFD is that an object file has: - - * a header, - - * a number of sections containing raw data (*note Sections::.), - - * a set of relocations (*note Relocations::.), and - - * some symbol information (*note Symbols::.). - -Also, BFDs opened for archives have the additional attribute of an index -and contain subordinate BFDs. This approach is fine for a.out and coff, -but loses efficiency when applied to formats such as S-records and -IEEE-695. - - -File: bfd.info, Node: What BFD Version 2 Can Do, Prev: How It Works, Up: Overview - -What BFD Version 2 Can Do -========================= - - When an object file is opened, BFD subroutines automatically -determine the format of the input object file. They then build a -descriptor in memory with pointers to routines that will be used to -access elements of the object file's data structures. - - As different information from the the object files is required, BFD -reads from different sections of the file and processes them. For -example, a very common operation for the linker is processing symbol -tables. Each BFD back end provides a routine for converting between -the object file's representation of symbols and an internal canonical -format. When the linker asks for the symbol table of an object file, it -calls through a memory pointer to the routine from the relevant BFD -back end which reads and converts the table into a canonical form. The -linker then operates upon the canonical form. When the link is finished -and the linker writes the output file's symbol table, another BFD back -end routine is called to take the newly created symbol table and -convert it into the chosen output format. - -* Menu: - -* BFD information loss:: Information Loss -* Canonical format:: The BFD canonical object-file format - - -File: bfd.info, Node: BFD information loss, Next: Canonical format, Up: What BFD Version 2 Can Do - -Information Loss ----------------- - - *Information can be lost during output.* The output formats -supported by BFD do not provide identical facilities, and information -which can be described in one form has nowhere to go in another format. -One example of this is alignment information in `b.out'. There is -nowhere in an `a.out' format file to store alignment information on the -contained data, so when a file is linked from `b.out' and an `a.out' -image is produced, alignment information will not propagate to the -output file. (The linker will still use the alignment information -internally, so the link is performed correctly). - - Another example is COFF section names. COFF files may contain an -unlimited number of sections, each one with a textual section name. If -the target of the link is a format which does not have many sections -(e.g., `a.out') or has sections without names (e.g., the Oasys format), -the link cannot be done simply. You can circumvent this problem by -describing the desired input-to-output section mapping with the linker -command language. - - *Information can be lost during canonicalization.* The BFD internal -canonical form of the external formats is not exhaustive; there are -structures in input formats for which there is no direct representation -internally. This means that the BFD back ends cannot maintain all -possible data richness through the transformation between external to -internal and back to external formats. - - This limitation is only a problem when an application reads one -format and writes another. Each BFD back end is responsible for -maintaining as much data as possible, and the internal BFD canonical -form has structures which are opaque to the BFD core, and exported only -to the back ends. When a file is read in one format, the canonical form -is generated for BFD and the application. At the same time, the back -end saves away any information which may otherwise be lost. If the data -is then written back in the same format, the back end routine will be -able to use the canonical form provided by the BFD core as well as the -information it prepared earlier. Since there is a great deal of -commonality between back ends, there is no information lost when -linking or copying big endian COFF to little endian COFF, or `a.out' to -`b.out'. When a mixture of formats is linked, the information is only -lost from the files whose format differs from the destination. - - -File: bfd.info, Node: Canonical format, Prev: BFD information loss, Up: What BFD Version 2 Can Do - -The BFD canonical object-file format ------------------------------------- - - The greatest potential for loss of information occurs when there is -the least overlap between the information provided by the source -format, that stored by the canonical format, and that needed by the -destination format. A brief description of the canonical form may help -you understand which kinds of data you can count on preserving across -conversions. - -*files* - Information stored on a per-file basis includes target machine - architecture, particular implementation format type, a demand - pageable bit, and a write protected bit. Information like Unix - magic numbers is not stored here--only the magic numbers' meaning, - so a `ZMAGIC' file would have both the demand pageable bit and the - write protected text bit set. The byte order of the target is - stored on a per-file basis, so that big- and little-endian object - files may be used with one another. - -*sections* - Each section in the input file contains the name of the section, - the section's original address in the object file, size and - alignment information, various flags, and pointers into other BFD - data structures. - -*symbols* - Each symbol contains a pointer to the information for the object - file which originally defined it, its name, its value, and various - flag bits. When a BFD back end reads in a symbol table, it - relocates all symbols to make them relative to the base of the - section where they were defined. Doing this ensures that each - symbol points to its containing section. Each symbol also has a - varying amount of hidden private data for the BFD back end. Since - the symbol points to the original file, the private data format - for that symbol is accessible. `ld' can operate on a collection - of symbols of wildly different formats without problems. - - Normal global and simple local symbols are maintained on output, - so an output file (no matter its format) will retain symbols - pointing to functions and to global, static, and common variables. - Some symbol information is not worth retaining; in `a.out', type - information is stored in the symbol table as long symbol names. - This information would be useless to most COFF debuggers; the - linker has command line switches to allow users to throw it away. - - There is one word of type information within the symbol, so if the - format supports symbol type information within symbols (for - example, COFF, IEEE, Oasys) and the type is simple enough to fit - within one word (nearly everything but aggregates), the - information will be preserved. - -*relocation level* - Each canonical BFD relocation record contains a pointer to the - symbol to relocate to, the offset of the data to relocate, the - section the data is in, and a pointer to a relocation type - descriptor. Relocation is performed by passing messages through - the relocation type descriptor and the symbol pointer. Therefore, - relocations can be performed on output data using a relocation - method that is only available in one of the input formats. For - instance, Oasys provides a byte relocation format. A relocation - record requesting this relocation type would point indirectly to a - routine to perform this, so the relocation may be performed on a - byte being written to a 68k COFF file, even though 68k COFF has no - such relocation type. - -*line numbers* - Object formats can contain, for debugging purposes, some form of - mapping between symbols, source line numbers, and addresses in the - output file. These addresses have to be relocated along with the - symbol information. Each symbol with an associated list of line - number records points to the first record of the list. The head - of a line number list consists of a pointer to the symbol, which - allows finding out the address of the function whose line number - is being described. The rest of the list is made up of pairs: - offsets into the section and line numbers. Any format which can - simply derive this information can pass it successfully between - formats (COFF, IEEE and Oasys). - - -File: bfd.info, Node: BFD front end, Next: BFD back ends, Prev: Overview, Up: Top - -BFD front end -************* - -`typedef bfd' -============= - - A BFD has type `bfd'; objects of this type are the cornerstone of -any application using BFD. Using BFD consists of making references -though the BFD and to data in the BFD. - - Here is the structure that defines the type `bfd'. It contains the -major data about the file and pointers to the rest of the data. -. - struct _bfd - { - /* The filename the application opened the BFD with. */ - CONST char *filename; - - /* A pointer to the target jump table. */ - const struct bfd_target *xvec; - - /* To avoid dragging too many header files into every file that - includes ``bfd.h'', IOSTREAM has been declared as a "char - *", and MTIME as a "long". Their correct types, to which they - are cast when used, are "FILE *" and "time_t". The iostream - is the result of an fopen on the filename. However, if the - BFD_IN_MEMORY flag is set, then iostream is actually a pointer - to a bfd_in_memory struct. */ - PTR iostream; - - /* Is the file descriptor being cached? That is, can it be closed as - needed, and re-opened when accessed later? */ - - boolean cacheable; - - /* Marks whether there was a default target specified when the - BFD was opened. This is used to select which matching algorithm - to use to choose the back end. */ - - boolean target_defaulted; - - /* The caching routines use these to maintain a - least-recently-used list of BFDs */ - - struct _bfd *lru_prev, *lru_next; - - /* When a file is closed by the caching routines, BFD retains - state information on the file here: */ - - file_ptr where; - - /* and here: (``once'' means at least once) */ - - boolean opened_once; - - /* Set if we have a locally maintained mtime value, rather than - getting it from the file each time: */ - - boolean mtime_set; - - /* File modified time, if mtime_set is true: */ - - long mtime; - - /* Reserved for an unimplemented file locking extension.*/ - - int ifd; - - /* The format which belongs to the BFD. (object, core, etc.) */ - - bfd_format format; - - /* The direction the BFD was opened with*/ - - enum bfd_direction {no_direction = 0, - read_direction = 1, - write_direction = 2, - both_direction = 3} direction; - - /* Format_specific flags*/ - - flagword flags; - - /* Currently my_archive is tested before adding origin to - anything. I believe that this can become always an add of - origin, with origin set to 0 for non archive files. */ - - file_ptr origin; - - /* Remember when output has begun, to stop strange things - from happening. */ - boolean output_has_begun; - - /* Pointer to linked list of sections*/ - struct sec *sections; - - /* The number of sections */ - unsigned int section_count; - - /* Stuff only useful for object files: - The start address. */ - bfd_vma start_address; - - /* Used for input and output*/ - unsigned int symcount; - - /* Symbol table for output BFD (with symcount entries) */ - struct symbol_cache_entry **outsymbols; - - /* Pointer to structure which contains architecture information*/ - const struct bfd_arch_info *arch_info; - - /* Stuff only useful for archives:*/ - PTR arelt_data; - struct _bfd *my_archive; /* The containing archive BFD. */ - struct _bfd *next; /* The next BFD in the archive. */ - struct _bfd *archive_head; /* The first BFD in the archive. */ - boolean has_armap; - - /* A chain of BFD structures involved in a link. */ - struct _bfd *link_next; - - /* A field used by _bfd_generic_link_add_archive_symbols. This will - be used only for archive elements. */ - int archive_pass; - - /* Used by the back end to hold private data. */ - - union - { - struct aout_data_struct *aout_data; - struct artdata *aout_ar_data; - struct _oasys_data *oasys_obj_data; - struct _oasys_ar_data *oasys_ar_data; - struct coff_tdata *coff_obj_data; - struct pe_tdata *pe_obj_data; - struct xcoff_tdata *xcoff_obj_data; - struct ecoff_tdata *ecoff_obj_data; - struct ieee_data_struct *ieee_data; - struct ieee_ar_data_struct *ieee_ar_data; - struct srec_data_struct *srec_data; - struct ihex_data_struct *ihex_data; - struct tekhex_data_struct *tekhex_data; - struct elf_obj_tdata *elf_obj_data; - struct nlm_obj_tdata *nlm_obj_data; - struct bout_data_struct *bout_data; - struct sun_core_struct *sun_core_data; - struct trad_core_struct *trad_core_data; - struct som_data_struct *som_data; - struct hpux_core_struct *hpux_core_data; - struct hppabsd_core_struct *hppabsd_core_data; - struct sgi_core_struct *sgi_core_data; - struct lynx_core_struct *lynx_core_data; - struct osf_core_struct *osf_core_data; - struct cisco_core_struct *cisco_core_data; - struct versados_data_struct *versados_data; - struct netbsd_core_struct *netbsd_core_data; - PTR any; - } tdata; - - /* Used by the application to hold private data*/ - PTR usrdata; - - /* Where all the allocated stuff under this BFD goes. This is a - struct objalloc *, but we use PTR to avoid requiring the inclusion of - objalloc.h. */ - PTR memory; - }; - -Error reporting -=============== - - Most BFD functions return nonzero on success (check their individual -documentation for precise semantics). On an error, they call -`bfd_set_error' to set an error condition that callers can check by -calling `bfd_get_error'. If that returns `bfd_error_system_call', then -check `errno'. - - The easiest way to report a BFD error to the user is to use -`bfd_perror'. -Type `bfd_error_type' ---------------------- - -The values returned by `bfd_get_error' are defined by the enumerated -type `bfd_error_type'. -. - typedef enum bfd_error - { - bfd_error_no_error = 0, - bfd_error_system_call, - bfd_error_invalid_target, - bfd_error_wrong_format, - bfd_error_invalid_operation, - bfd_error_no_memory, - bfd_error_no_symbols, - bfd_error_no_armap, - bfd_error_no_more_archived_files, - bfd_error_malformed_archive, - bfd_error_file_not_recognized, - bfd_error_file_ambiguously_recognized, - bfd_error_no_contents, - bfd_error_nonrepresentable_section, - bfd_error_no_debug_section, - bfd_error_bad_value, - bfd_error_file_truncated, - bfd_error_file_too_big, - bfd_error_invalid_error_code - } bfd_error_type; - -`bfd_get_error' -............... - - *Synopsis* - bfd_error_type bfd_get_error (void); - *Description* -Return the current BFD error condition. -`bfd_set_error' -............... - -*Synopsis* - void bfd_set_error (bfd_error_type error_tag); - *Description* -Set the BFD error condition to be ERROR_TAG. -`bfd_errmsg' -............ - -*Synopsis* - CONST char *bfd_errmsg (bfd_error_type error_tag); - *Description* -Return a string describing the error ERROR_TAG, or the system error if -ERROR_TAG is `bfd_error_system_call'. -`bfd_perror' -............ - -*Synopsis* - void bfd_perror (CONST char *message); - *Description* -Print to the standard error stream a string describing the last BFD -error that occurred, or the last system error if the last BFD error was -a system call failure. If MESSAGE is non-NULL and non-empty, the error -string printed is preceded by MESSAGE, a colon, and a space. It is -followed by a newline. -BFD error handler ------------------ - -Some BFD functions want to print messages describing the problem. They -call a BFD error handler function. This function may be overriden by -the program. - - The BFD error handler acts like printf. -. - typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...)); - -`bfd_set_error_handler' -....................... - - *Synopsis* - bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); - *Description* -Set the BFD error handler function. Returns the previous function. -`bfd_set_error_program_name' -............................ - -*Synopsis* - void bfd_set_error_program_name (const char *); - *Description* -Set the program name to use when printing a BFD error. This is printed -before the error message followed by a colon and space. The string -must not be changed after it is passed to this function. -Symbols -======= - -`bfd_get_reloc_upper_bound' -........................... - -*Synopsis* - long bfd_get_reloc_upper_bound(bfd *abfd, asection *sect); - *Description* -Return the number of bytes required to store the relocation information -associated with section SECT attached to bfd ABFD. If an error occurs, -return -1. -`bfd_canonicalize_reloc' -........................ - -*Synopsis* - long bfd_canonicalize_reloc - (bfd *abfd, - asection *sec, - arelent **loc, - asymbol **syms); - *Description* -Call the back end associated with the open BFD ABFD and translate the -external form of the relocation information attached to SEC into the -internal canonical form. Place the table into memory at LOC, which has -been preallocated, usually by a call to `bfd_get_reloc_upper_bound'. -Returns the number of relocs, or -1 on error. - - The SYMS table is also needed for horrible internal magic reasons. -`bfd_set_reloc' -............... - -*Synopsis* - void bfd_set_reloc - (bfd *abfd, asection *sec, arelent **rel, unsigned int count) - *Description* -Set the relocation pointer and count within section SEC to the values -REL and COUNT. The argument ABFD is ignored. -`bfd_set_file_flags' -.................... - -*Synopsis* - boolean bfd_set_file_flags(bfd *abfd, flagword flags); - *Description* -Set the flag word in the BFD ABFD to the value FLAGS. - - Possible errors are: - * `bfd_error_wrong_format' - The target bfd was not of object format. - - * `bfd_error_invalid_operation' - The target bfd was open for - reading. - - * `bfd_error_invalid_operation' - The flag word contained a bit - which was not applicable to the type of file. E.g., an attempt - was made to set the `D_PAGED' bit on a BFD format which does not - support demand paging. -`bfd_set_start_address' -....................... - -*Synopsis* - boolean bfd_set_start_address(bfd *abfd, bfd_vma vma); - *Description* -Make VMA the entry point of output BFD ABFD. -*Returns* -Returns `true' on success, `false' otherwise. -`bfd_get_mtime' -............... - -*Synopsis* - long bfd_get_mtime(bfd *abfd); - *Description* -Return the file modification time (as read from the file system, or -from the archive header for archive members). -`bfd_get_size' -.............. - -*Synopsis* - long bfd_get_size(bfd *abfd); - *Description* -Return the file size (as read from file system) for the file associated -with BFD ABFD. - - The initial motivation for, and use of, this routine is not so we -can get the exact size of the object the BFD applies to, since that -might not be generally possible (archive members for example). It -would be ideal if someone could eventually modify it so that such -results were guaranteed. - - Instead, we want to ask questions like "is this NNN byte sized -object I'm about to try read from file offset YYY reasonable?" As as -example of where we might do this, some object formats use string -tables for which the first `sizeof(long)' bytes of the table contain -the size of the table itself, including the size bytes. If an -application tries to read what it thinks is one of these string tables, -without some way to validate the size, and for some reason the size is -wrong (byte swapping error, wrong location for the string table, etc.), -the only clue is likely to be a read error when it tries to read the -table, or a "virtual memory exhausted" error when it tries to allocate -15 bazillon bytes of space for the 15 bazillon byte table it is about -to read. This function at least allows us to answer the quesion, "is -the size reasonable?". -`bfd_get_gp_size' -................. - -*Synopsis* - int bfd_get_gp_size(bfd *abfd); - *Description* -Return the maximum size of objects to be optimized using the GP -register under MIPS ECOFF. This is typically set by the `-G' argument -to the compiler, assembler or linker. -`bfd_set_gp_size' -................. - -*Synopsis* - void bfd_set_gp_size(bfd *abfd, int i); - *Description* -Set the maximum size of objects to be optimized using the GP register -under ECOFF or MIPS ELF. This is typically set by the `-G' argument to -the compiler, assembler or linker. -`bfd_scan_vma' -.............. - -*Synopsis* - bfd_vma bfd_scan_vma(CONST char *string, CONST char **end, int base); - *Description* -Convert, like `strtoul', a numerical expression STRING into a `bfd_vma' -integer, and return that integer. (Though without as many bells and -whistles as `strtoul'.) The expression is assumed to be unsigned (i.e., -positive). If given a BASE, it is used as the base for conversion. A -base of 0 causes the function to interpret the string in hex if a -leading "0x" or "0X" is found, otherwise in octal if a leading zero is -found, otherwise in decimal. - - Overflow is not detected. -`bfd_copy_private_bfd_data' -........................... - -*Synopsis* - boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd); - *Description* -Copy private BFD information from the BFD IBFD to the the BFD OBFD. -Return `true' on success, `false' on error. Possible error returns are: - - * `bfd_error_no_memory' - Not enough memory exists to create private - data for OBFD. - #define bfd_copy_private_bfd_data(ibfd, obfd) \ - BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ - (ibfd, obfd)) - -`bfd_merge_private_bfd_data' -............................ - -*Synopsis* - boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd); - *Description* -Merge private BFD information from the BFD IBFD to the the output file -BFD OBFD when linking. Return `true' on success, `false' on error. -Possible error returns are: - - * `bfd_error_no_memory' - Not enough memory exists to create private - data for OBFD. - #define bfd_merge_private_bfd_data(ibfd, obfd) \ - BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ - (ibfd, obfd)) - -`bfd_set_private_flags' -....................... - -*Synopsis* - boolean bfd_set_private_flags(bfd *abfd, flagword flags); - *Description* -Set private BFD flag information in the BFD ABFD. Return `true' on -success, `false' on error. Possible error returns are: - - * `bfd_error_no_memory' - Not enough memory exists to create private - data for OBFD. - #define bfd_set_private_flags(abfd, flags) \ - BFD_SEND (abfd, _bfd_set_private_flags, \ - (abfd, flags)) - -`stuff' -....... - -*Description* -Stuff which should be documented: - #define bfd_sizeof_headers(abfd, reloc) \ - BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc)) - - #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ - BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line)) - - /* Do these three do anything useful at all, for any back end? */ - #define bfd_debug_info_start(abfd) \ - BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) - - #define bfd_debug_info_end(abfd) \ - BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) - - #define bfd_debug_info_accumulate(abfd, section) \ - BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) - - - #define bfd_stat_arch_elt(abfd, stat) \ - BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) - - #define bfd_update_armap_timestamp(abfd) \ - BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) - - #define bfd_set_arch_mach(abfd, arch, mach)\ - BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) - - #define bfd_relax_section(abfd, section, link_info, again) \ - BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) - - #define bfd_link_hash_table_create(abfd) \ - BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) - - #define bfd_link_add_symbols(abfd, info) \ - BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) - - #define bfd_final_link(abfd, info) \ - BFD_SEND (abfd, _bfd_final_link, (abfd, info)) - - #define bfd_free_cached_info(abfd) \ - BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) - - #define bfd_get_dynamic_symtab_upper_bound(abfd) \ - BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) - - #define bfd_print_private_bfd_data(abfd, file)\ - BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) - - #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ - BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) - - #define bfd_get_dynamic_reloc_upper_bound(abfd) \ - BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) - - #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ - BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) - - extern bfd_byte *bfd_get_relocated_section_contents - PARAMS ((bfd *, struct bfd_link_info *, - struct bfd_link_order *, bfd_byte *, - boolean, asymbol **)); - -* Menu: - -* Memory Usage:: -* Initialization:: -* Sections:: -* Symbols:: -* Archives:: -* Formats:: -* Relocations:: -* Core Files:: -* Targets:: -* Architectures:: -* Opening and Closing:: -* Internal:: -* File Caching:: -* Linker Functions:: -* Hash Tables:: - - -File: bfd.info, Node: Memory Usage, Next: Initialization, Prev: BFD front end, Up: BFD front end - -Memory usage -============ - - BFD keeps all of its internal structures in obstacks. There is one -obstack per open BFD file, into which the current state is stored. When -a BFD is closed, the obstack is deleted, and so everything which has -been allocated by BFD for the closing file is thrown away. - - BFD does not free anything created by an application, but pointers -into `bfd' structures become invalid on a `bfd_close'; for example, -after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is -still around, since it has been allocated by the application, but the -data that it pointed to are lost. - - The general rule is to not close a BFD until all operations dependent -upon data from the BFD have been completed, or all the data from within -the file has been copied. To help with the management of memory, there -is a function (`bfd_alloc_size') which returns the number of bytes in -obstacks associated with the supplied BFD. This could be used to select -the greediest open BFD, close it to reclaim the memory, perform some -operation and reopen the BFD again, to get a fresh copy of the data -structures. - - -File: bfd.info, Node: Initialization, Next: Sections, Prev: Memory Usage, Up: BFD front end - -Initialization -============== - - These are the functions that handle initializing a BFD. -`bfd_init' -.......... - -*Synopsis* - void bfd_init(void); - *Description* -This routine must be called before any other BFD function to initialize -magical internal data structures. - -File: bfd.info, Node: Sections, Next: Symbols, Prev: Initialization, Up: BFD front end - -Sections -======== - -The raw data contained within a BFD is maintained through the section -abstraction. A single BFD may have any number of sections. It keeps -hold of them by pointing to the first; each one points to the next in -the list. - - Sections are supported in BFD in `section.c'. - -* Menu: - -* Section Input:: -* Section Output:: -* typedef asection:: -* section prototypes:: - - -File: bfd.info, Node: Section Input, Next: Section Output, Prev: Sections, Up: Sections - -Section input -------------- - -When a BFD is opened for reading, the section structures are created -and attached to the BFD. - - Each section has a name which describes the section in the outside -world--for example, `a.out' would contain at least three sections, -called `.text', `.data' and `.bss'. - - Names need not be unique; for example a COFF file may have several -sections named `.data'. - - Sometimes a BFD will contain more than the "natural" number of -sections. A back end may attach other sections containing constructor -data, or an application may add a section (using `bfd_make_section') to -the sections attached to an already open BFD. For example, the linker -creates an extra section `COMMON' for each input file's BFD to hold -information about common storage. - - The raw data is not necessarily read in when the section descriptor -is created. Some targets may leave the data in place until a -`bfd_get_section_contents' call is made. Other back ends may read in -all the data at once. For example, an S-record file has to be read -once to determine the size of the data. An IEEE-695 file doesn't -contain raw data in sections, but data and relocation expressions -intermixed, so the data area has to be parsed to get out the data and -relocations. - -File: bfd.info, Node: Section Output, Next: typedef asection, Prev: Section Input, Up: Sections - -Section output --------------- - -To write a new object style BFD, the various sections to be written -have to be created. They are attached to the BFD in the same way as -input sections; data is written to the sections using -`bfd_set_section_contents'. - - Any program that creates or combines sections (e.g., the assembler -and linker) must use the `asection' fields `output_section' and -`output_offset' to indicate the file sections to which each section -must be written. (If the section is being created from scratch, -`output_section' should probably point to the section itself and -`output_offset' should probably be zero.) - - The data to be written comes from input sections attached (via -`output_section' pointers) to the output sections. The output section -structure can be considered a filter for the input section: the output -section determines the vma of the output data and the name, but the -input section determines the offset into the output section of the data -to be written. - - E.g., to create a section "O", starting at 0x100, 0x123 long, -containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and -"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would -look like: - - section name "A" - output_offset 0x00 - size 0x20 - output_section -----------> section name "O" - | vma 0x100 - section name "B" | size 0x123 - output_offset 0x20 | - size 0x103 | - output_section --------| - -Link orders ------------ - -The data within a section is stored in a "link_order". These are much -like the fixups in `gas'. The link_order abstraction allows a section -to grow and shrink within itself. - - A link_order knows how big it is, and which is the next link_order -and where the raw data for it is; it also points to a list of -relocations which apply to it. - - The link_order is used by the linker to perform relaxing on final -code. The compiler creates code which is as big as necessary to make -it work without relaxing, and the user can select whether to relax. -Sometimes relaxing takes a lot of time. The linker runs around the -relocations to see if any are attached to data which can be shrunk, if -so it does it on a link_order by link_order basis. - -File: bfd.info, Node: typedef asection, Next: section prototypes, Prev: Section Output, Up: Sections - -typedef asection ----------------- - -Here is the section structure: -. - typedef struct sec - { - /* The name of the section; the name isn't a copy, the pointer is - the same as that passed to bfd_make_section. */ - - CONST char *name; - - /* Which section is it; 0..nth. */ - - int index; - - /* The next section in the list belonging to the BFD, or NULL. */ - - struct sec *next; - - /* The field flags contains attributes of the section. Some - flags are read in from the object file, and some are - synthesized from other information. */ - - flagword flags; - - #define SEC_NO_FLAGS 0x000 - - /* Tells the OS to allocate space for this section when loading. - This is clear for a section containing debug information - only. */ - #define SEC_ALLOC 0x001 - - /* Tells the OS to load the section from the file when loading. - This is clear for a .bss section. */ - #define SEC_LOAD 0x002 - - /* The section contains data still to be relocated, so there is - some relocation information too. */ - #define SEC_RELOC 0x004 - - #if 0 /* Obsolete ? */ - #define SEC_BALIGN 0x008 - #endif - - /* A signal to the OS that the section contains read only - data. */ - #define SEC_READONLY 0x010 - - /* The section contains code only. */ - #define SEC_CODE 0x020 - - /* The section contains data only. */ - #define SEC_DATA 0x040 - - /* The section will reside in ROM. */ - #define SEC_ROM 0x080 - - /* The section contains constructor information. This section - type is used by the linker to create lists of constructors and - destructors used by `g++'. When a back end sees a symbol - which should be used in a constructor list, it creates a new - section for the type of name (e.g., `__CTOR_LIST__'), attaches - the symbol to it, and builds a relocation. To build the lists - of constructors, all the linker has to do is catenate all the - sections called `__CTOR_LIST__' and relocate the data - contained within - exactly the operations it would peform on - standard data. */ - #define SEC_CONSTRUCTOR 0x100 - - /* The section is a constuctor, and should be placed at the - end of the text, data, or bss section(?). */ - #define SEC_CONSTRUCTOR_TEXT 0x1100 - #define SEC_CONSTRUCTOR_DATA 0x2100 - #define SEC_CONSTRUCTOR_BSS 0x3100 - - /* The section has contents - a data section could be - `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be - `SEC_HAS_CONTENTS' */ - #define SEC_HAS_CONTENTS 0x200 - - /* An instruction to the linker to not output the section - even if it has information which would normally be written. */ - #define SEC_NEVER_LOAD 0x400 - - /* The section is a COFF shared library section. This flag is - only for the linker. If this type of section appears in - the input file, the linker must copy it to the output file - without changing the vma or size. FIXME: Although this - was originally intended to be general, it really is COFF - specific (and the flag was renamed to indicate this). It - might be cleaner to have some more general mechanism to - allow the back end to control what the linker does with - sections. */ - #define SEC_COFF_SHARED_LIBRARY 0x800 - - /* The section contains common symbols (symbols may be defined - multiple times, the value of a symbol is the amount of - space it requires, and the largest symbol value is the one - used). Most targets have exactly one of these (which we - translate to bfd_com_section_ptr), but ECOFF has two. */ - #define SEC_IS_COMMON 0x8000 - - /* The section contains only debugging information. For - example, this is set for ELF .debug and .stab sections. - strip tests this flag to see if a section can be - discarded. */ - #define SEC_DEBUGGING 0x10000 - - /* The contents of this section are held in memory pointed to - by the contents field. This is checked by - bfd_get_section_contents, and the data is retrieved from - memory if appropriate. */ - #define SEC_IN_MEMORY 0x20000 - - /* The contents of this section are to be excluded by the - linker for executable and shared objects unless those - objects are to be further relocated. */ - #define SEC_EXCLUDE 0x40000 - - /* The contents of this section are to be sorted by the - based on the address specified in the associated symbol - table. */ - #define SEC_SORT_ENTRIES 0x80000 - - /* When linking, duplicate sections of the same name should be - discarded, rather than being combined into a single section as - is usually done. This is similar to how common symbols are - handled. See SEC_LINK_DUPLICATES below. */ - #define SEC_LINK_ONCE 0x100000 - - /* If SEC_LINK_ONCE is set, this bitfield describes how the linker - should handle duplicate sections. */ - #define SEC_LINK_DUPLICATES 0x600000 - - /* This value for SEC_LINK_DUPLICATES means that duplicate - sections with the same name should simply be discarded. */ - #define SEC_LINK_DUPLICATES_DISCARD 0x0 - - /* This value for SEC_LINK_DUPLICATES means that the linker - should warn if there are any duplicate sections, although - it should still only link one copy. */ - #define SEC_LINK_DUPLICATES_ONE_ONLY 0x200000 - - /* This value for SEC_LINK_DUPLICATES means that the linker - should warn if any duplicate sections are a different size. */ - #define SEC_LINK_DUPLICATES_SAME_SIZE 0x400000 - - /* This value for SEC_LINK_DUPLICATES means that the linker - should warn if any duplicate sections contain different - contents. */ - #define SEC_LINK_DUPLICATES_SAME_CONTENTS 0x600000 - - /* This section was created by the linker as part of dynamic - relocation or other arcane processing. It is skipped when - going through the first-pass output, trusting that someone - else up the line will take care of it later. */ - #define SEC_LINKER_CREATED 0x800000 - - /* End of section flags. */ - - /* Some internal packed boolean fields. */ - - /* See the vma field. */ - unsigned int user_set_vma : 1; - - /* Whether relocations have been processed. */ - unsigned int reloc_done : 1; - - /* A mark flag used by some of the linker backends. */ - unsigned int linker_mark : 1; - - /* End of internal packed boolean fields. */ - - /* The virtual memory address of the section - where it will be - at run time. The symbols are relocated against this. The - user_set_vma flag is maintained by bfd; if it's not set, the - backend can assign addresses (for example, in `a.out', where - the default address for `.data' is dependent on the specific - target and various flags). */ - - bfd_vma vma; - - /* The load address of the section - where it would be in a - rom image; really only used for writing section header - information. */ - - bfd_vma lma; - - /* The size of the section in bytes, as it will be output. - contains a value even if the section has no contents (e.g., the - size of `.bss'). This will be filled in after relocation */ - - bfd_size_type _cooked_size; - - /* The original size on disk of the section, in bytes. Normally this - value is the same as the size, but if some relaxing has - been done, then this value will be bigger. */ - - bfd_size_type _raw_size; - - /* If this section is going to be output, then this value is the - offset into the output section of the first byte in the input - section. E.g., if this was going to start at the 100th byte in - the output section, this value would be 100. */ - - bfd_vma output_offset; - - /* The output section through which to map on output. */ - - struct sec *output_section; - - /* The alignment requirement of the section, as an exponent of 2 - - e.g., 3 aligns to 2^3 (or 8). */ - - unsigned int alignment_power; - - /* If an input section, a pointer to a vector of relocation - records for the data in this section. */ - - struct reloc_cache_entry *relocation; - - /* If an output section, a pointer to a vector of pointers to - relocation records for the data in this section. */ - - struct reloc_cache_entry **orelocation; - - /* The number of relocation records in one of the above */ - - unsigned reloc_count; - - /* Information below is back end specific - and not always used - or updated. */ - - /* File position of section data */ - - file_ptr filepos; - - /* File position of relocation info */ - - file_ptr rel_filepos; - - /* File position of line data */ - - file_ptr line_filepos; - - /* Pointer to data for applications */ - - PTR userdata; - - /* If the SEC_IN_MEMORY flag is set, this points to the actual - contents. */ - unsigned char *contents; - - /* Attached line number information */ - - alent *lineno; - - /* Number of line number records */ - - unsigned int lineno_count; - - /* When a section is being output, this value changes as more - linenumbers are written out */ - - file_ptr moving_line_filepos; - - /* What the section number is in the target world */ - - int target_index; - - PTR used_by_bfd; - - /* If this is a constructor section then here is a list of the - relocations created to relocate items within it. */ - - struct relent_chain *constructor_chain; - - /* The BFD which owns the section. */ - - bfd *owner; - - /* A symbol which points at this section only */ - struct symbol_cache_entry *symbol; - struct symbol_cache_entry **symbol_ptr_ptr; - - struct bfd_link_order *link_order_head; - struct bfd_link_order *link_order_tail; - } asection ; - - /* These sections are global, and are managed by BFD. The application - and target back end are not permitted to change the values in - these sections. New code should use the section_ptr macros rather - than referring directly to the const sections. The const sections - may eventually vanish. */ - #define BFD_ABS_SECTION_NAME "*ABS*" - #define BFD_UND_SECTION_NAME "*UND*" - #define BFD_COM_SECTION_NAME "*COM*" - #define BFD_IND_SECTION_NAME "*IND*" - - /* the absolute section */ - extern const asection bfd_abs_section; - #define bfd_abs_section_ptr ((asection *) &bfd_abs_section) - #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) - /* Pointer to the undefined section */ - extern const asection bfd_und_section; - #define bfd_und_section_ptr ((asection *) &bfd_und_section) - #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) - /* Pointer to the common section */ - extern const asection bfd_com_section; - #define bfd_com_section_ptr ((asection *) &bfd_com_section) - /* Pointer to the indirect section */ - extern const asection bfd_ind_section; - #define bfd_ind_section_ptr ((asection *) &bfd_ind_section) - #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) - - extern const struct symbol_cache_entry * const bfd_abs_symbol; - extern const struct symbol_cache_entry * const bfd_com_symbol; - extern const struct symbol_cache_entry * const bfd_und_symbol; - extern const struct symbol_cache_entry * const bfd_ind_symbol; - #define bfd_get_section_size_before_reloc(section) \ - (section->reloc_done ? (abort(),1): (section)->_raw_size) - #define bfd_get_section_size_after_reloc(section) \ - ((section->reloc_done) ? (section)->_cooked_size: (abort(),1)) - diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info-2 b/gnu/usr.bin/binutils/bfd/doc/bfd.info-2 deleted file mode 100644 index 36c5b800ab3..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info-2 +++ /dev/null @@ -1,1121 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: section prototypes, Prev: typedef asection, Up: Sections - -Section prototypes ------------------- - - These are the functions exported by the section handling part of BFD. -`bfd_get_section_by_name' -......................... - -*Synopsis* - asection *bfd_get_section_by_name(bfd *abfd, CONST char *name); - *Description* -Run through ABFD and return the one of the `asection's whose name -matches NAME, otherwise `NULL'. *Note Sections::, for more information. - - This should only be used in special cases; the normal way to process -all sections of a given name is to use `bfd_map_over_sections' and -`strcmp' on the name (or better yet, base it on the section flags or -something else) for each section. -`bfd_make_section_old_way' -.......................... - -*Synopsis* - asection *bfd_make_section_old_way(bfd *abfd, CONST char *name); - *Description* -Create a new empty section called NAME and attach it to the end of the -chain of sections for the BFD ABFD. An attempt to create a section with -a name which is already in use returns its pointer without changing the -section chain. - - It has the funny name since this is the way it used to be before it -was rewritten.... - - Possible errors are: - * `bfd_error_invalid_operation' - If output has already started for - this BFD. - - * `bfd_error_no_memory' - If memory allocation fails. -`bfd_make_section_anyway' -......................... - -*Synopsis* - asection *bfd_make_section_anyway(bfd *abfd, CONST char *name); - *Description* -Create a new empty section called NAME and attach it to the end of the -chain of sections for ABFD. Create a new section even if there is -already a section with that name. - - Return `NULL' and set `bfd_error' on error; possible errors are: - * `bfd_error_invalid_operation' - If output has already started for - ABFD. - - * `bfd_error_no_memory' - If memory allocation fails. -`bfd_make_section' -.................. - -*Synopsis* - asection *bfd_make_section(bfd *, CONST char *name); - *Description* -Like `bfd_make_section_anyway', but return `NULL' (without calling -bfd_set_error ()) without changing the section chain if there is -already a section named NAME. If there is an error, return `NULL' and -set `bfd_error'. -`bfd_set_section_flags' -....................... - -*Synopsis* - boolean bfd_set_section_flags(bfd *abfd, asection *sec, flagword flags); - *Description* -Set the attributes of the section SEC in the BFD ABFD to the value -FLAGS. Return `true' on success, `false' on error. Possible error -returns are: - - * `bfd_error_invalid_operation' - The section cannot have one or - more of the attributes requested. For example, a .bss section in - `a.out' may not have the `SEC_HAS_CONTENTS' field set. -`bfd_map_over_sections' -....................... - -*Synopsis* - void bfd_map_over_sections(bfd *abfd, - void (*func)(bfd *abfd, - asection *sect, - PTR obj), - PTR obj); - *Description* -Call the provided function FUNC for each section attached to the BFD -ABFD, passing OBJ as an argument. The function will be called as if by - - func(abfd, the_section, obj); - - This is the prefered method for iterating over sections; an -alternative would be to use a loop: - - section *p; - for (p = abfd->sections; p != NULL; p = p->next) - func(abfd, p, ...) - -`bfd_set_section_size' -...................... - -*Synopsis* - boolean bfd_set_section_size(bfd *abfd, asection *sec, bfd_size_type val); - *Description* -Set SEC to the size VAL. If the operation is ok, then `true' is -returned, else `false'. - - Possible error returns: - * `bfd_error_invalid_operation' - Writing has started to the BFD, so - setting the size is invalid. -`bfd_set_section_contents' -.......................... - -*Synopsis* - boolean bfd_set_section_contents - (bfd *abfd, - asection *section, - PTR data, - file_ptr offset, - bfd_size_type count); - *Description* -Sets the contents of the section SECTION in BFD ABFD to the data -starting in memory at DATA. The data is written to the output section -starting at offset OFFSET for COUNT bytes. - - Normally `true' is returned, else `false'. Possible error returns -are: - * `bfd_error_no_contents' - The output section does not have the - `SEC_HAS_CONTENTS' attribute, so nothing can be written to it. - - * and some more too This routine is front end to the back end -function `_bfd_set_section_contents'. -`bfd_get_section_contents' -.......................... - -*Synopsis* - boolean bfd_get_section_contents - (bfd *abfd, asection *section, PTR location, - file_ptr offset, bfd_size_type count); - *Description* -Read data from SECTION in BFD ABFD into memory starting at LOCATION. -The data is read at an offset of OFFSET from the start of the input -section, and is read for COUNT bytes. - - If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set -are requested or if the section does not have the `SEC_HAS_CONTENTS' -flag set, then the LOCATION is filled with zeroes. If no errors occur, -`true' is returned, else `false'. -`bfd_copy_private_section_data' -............................... - -*Synopsis* - boolean bfd_copy_private_section_data(bfd *ibfd, asection *isec, bfd *obfd, asection *osec); - *Description* -Copy private section information from ISEC in the BFD IBFD to the -section OSEC in the BFD OBFD. Return `true' on success, `false' on -error. Possible error returns are: - - * `bfd_error_no_memory' - Not enough memory exists to create private - data for OSEC. - #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ - BFD_SEND (obfd, _bfd_copy_private_section_data, \ - (ibfd, isection, obfd, osection)) - - -File: bfd.info, Node: Symbols, Next: Archives, Prev: Sections, Up: BFD front end - -Symbols -======= - -BFD tries to maintain as much symbol information as it can when it -moves information from file to file. BFD passes information to -applications though the `asymbol' structure. When the application -requests the symbol table, BFD reads the table in the native form and -translates parts of it into the internal format. To maintain more than -the information passed to applications, some targets keep some -information "behind the scenes" in a structure only the particular back -end knows about. For example, the coff back end keeps the original -symbol table structure as well as the canonical structure when a BFD is -read in. On output, the coff back end can reconstruct the output symbol -table so that no information is lost, even information unique to coff -which BFD doesn't know or understand. If a coff symbol table were read, -but were written through an a.out back end, all the coff specific -information would be lost. The symbol table of a BFD is not necessarily -read in until a canonicalize request is made. Then the BFD back end -fills in a table provided by the application with pointers to the -canonical information. To output symbols, the application provides BFD -with a table of pointers to pointers to `asymbol's. This allows -applications like the linker to output a symbol as it was read, since -the "behind the scenes" information will be still available. - -* Menu: - -* Reading Symbols:: -* Writing Symbols:: -* Mini Symbols:: -* typedef asymbol:: -* symbol handling functions:: - - -File: bfd.info, Node: Reading Symbols, Next: Writing Symbols, Prev: Symbols, Up: Symbols - -Reading symbols ---------------- - -There are two stages to reading a symbol table from a BFD: allocating -storage, and the actual reading process. This is an excerpt from an -application which reads the symbol table: - - long storage_needed; - asymbol **symbol_table; - long number_of_symbols; - long i; - - storage_needed = bfd_get_symtab_upper_bound (abfd); - - if (storage_needed < 0) - FAIL - - if (storage_needed == 0) { - return ; - } - symbol_table = (asymbol **) xmalloc (storage_needed); - ... - number_of_symbols = - bfd_canonicalize_symtab (abfd, symbol_table); - - if (number_of_symbols < 0) - FAIL - - for (i = 0; i < number_of_symbols; i++) { - process_symbol (symbol_table[i]); - } - - All storage for the symbols themselves is in an objalloc connected -to the BFD; it is freed when the BFD is closed. - -File: bfd.info, Node: Writing Symbols, Next: Mini Symbols, Prev: Reading Symbols, Up: Symbols - -Writing symbols ---------------- - -Writing of a symbol table is automatic when a BFD open for writing is -closed. The application attaches a vector of pointers to pointers to -symbols to the BFD being written, and fills in the symbol count. The -close and cleanup code reads through the table provided and performs -all the necessary operations. The BFD output code must always be -provided with an "owned" symbol: one which has come from another BFD, -or one which has been created using `bfd_make_empty_symbol'. Here is an -example showing the creation of a symbol table with only one element: - - #include "bfd.h" - main() - { - bfd *abfd; - asymbol *ptrs[2]; - asymbol *new; - - abfd = bfd_openw("foo","a.out-sunos-big"); - bfd_set_format(abfd, bfd_object); - new = bfd_make_empty_symbol(abfd); - new->name = "dummy_symbol"; - new->section = bfd_make_section_old_way(abfd, ".text"); - new->flags = BSF_GLOBAL; - new->value = 0x12345; - - ptrs[0] = new; - ptrs[1] = (asymbol *)0; - - bfd_set_symtab(abfd, ptrs, 1); - bfd_close(abfd); - } - - ./makesym - nm foo - 00012345 A dummy_symbol - - Many formats cannot represent arbitary symbol information; for -instance, the `a.out' object format does not allow an arbitary number -of sections. A symbol pointing to a section which is not one of -`.text', `.data' or `.bss' cannot be described. - -File: bfd.info, Node: Mini Symbols, Next: typedef asymbol, Prev: Writing Symbols, Up: Symbols - -Mini Symbols ------------- - -Mini symbols provide read-only access to the symbol table. They use -less memory space, but require more time to access. They can be useful -for tools like nm or objdump, which may have to handle symbol tables of -extremely large executables. - - The `bfd_read_minisymbols' function will read the symbols into -memory in an internal form. It will return a `void *' pointer to a -block of memory, a symbol count, and the size of each symbol. The -pointer is allocated using `malloc', and should be freed by the caller -when it is no longer needed. - - The function `bfd_minisymbol_to_symbol' will take a pointer to a -minisymbol, and a pointer to a structure returned by -`bfd_make_empty_symbol', and return a `asymbol' structure. The return -value may or may not be the same as the value from -`bfd_make_empty_symbol' which was passed in. - -File: bfd.info, Node: typedef asymbol, Next: symbol handling functions, Prev: Mini Symbols, Up: Symbols - -typedef asymbol ---------------- - -An `asymbol' has the form: -. - typedef struct symbol_cache_entry - { - /* A pointer to the BFD which owns the symbol. This information - is necessary so that a back end can work out what additional - information (invisible to the application writer) is carried - with the symbol. - - This field is *almost* redundant, since you can use section->owner - instead, except that some symbols point to the global sections - bfd_{abs,com,und}_section. This could be fixed by making - these globals be per-bfd (or per-target-flavor). FIXME. */ - - struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ - - /* The text of the symbol. The name is left alone, and not copied; the - application may not alter it. */ - CONST char *name; - - /* The value of the symbol. This really should be a union of a - numeric value with a pointer, since some flags indicate that - a pointer to another symbol is stored here. */ - symvalue value; - - /* Attributes of a symbol: */ - - #define BSF_NO_FLAGS 0x00 - - /* The symbol has local scope; `static' in `C'. The value - is the offset into the section of the data. */ - #define BSF_LOCAL 0x01 - - /* The symbol has global scope; initialized data in `C'. The - value is the offset into the section of the data. */ - #define BSF_GLOBAL 0x02 - - /* The symbol has global scope and is exported. The value is - the offset into the section of the data. */ - #define BSF_EXPORT BSF_GLOBAL /* no real difference */ - - /* A normal C symbol would be one of: - `BSF_LOCAL', `BSF_FORT_COMM', `BSF_UNDEFINED' or - `BSF_GLOBAL' */ - - /* The symbol is a debugging record. The value has an arbitary - meaning. */ - #define BSF_DEBUGGING 0x08 - - /* The symbol denotes a function entry point. Used in ELF, - perhaps others someday. */ - #define BSF_FUNCTION 0x10 - - /* Used by the linker. */ - #define BSF_KEEP 0x20 - #define BSF_KEEP_G 0x40 - - /* A weak global symbol, overridable without warnings by - a regular global symbol of the same name. */ - #define BSF_WEAK 0x80 - - /* This symbol was created to point to a section, e.g. ELF's - STT_SECTION symbols. */ - #define BSF_SECTION_SYM 0x100 - - /* The symbol used to be a common symbol, but now it is - allocated. */ - #define BSF_OLD_COMMON 0x200 - - /* The default value for common data. */ - #define BFD_FORT_COMM_DEFAULT_VALUE 0 - - /* In some files the type of a symbol sometimes alters its - location in an output file - ie in coff a `ISFCN' symbol - which is also `C_EXT' symbol appears where it was - declared and not at the end of a section. This bit is set - by the target BFD part to convey this information. */ - - #define BSF_NOT_AT_END 0x400 - - /* Signal that the symbol is the label of constructor section. */ - #define BSF_CONSTRUCTOR 0x800 - - /* Signal that the symbol is a warning symbol. The name is a - warning. The name of the next symbol is the one to warn about; - if a reference is made to a symbol with the same name as the next - symbol, a warning is issued by the linker. */ - #define BSF_WARNING 0x1000 - - /* Signal that the symbol is indirect. This symbol is an indirect - pointer to the symbol with the same name as the next symbol. */ - #define BSF_INDIRECT 0x2000 - - /* BSF_FILE marks symbols that contain a file name. This is used - for ELF STT_FILE symbols. */ - #define BSF_FILE 0x4000 - - /* Symbol is from dynamic linking information. */ - #define BSF_DYNAMIC 0x8000 - - /* The symbol denotes a data object. Used in ELF, and perhaps - others someday. */ - #define BSF_OBJECT 0x10000 - - flagword flags; - - /* A pointer to the section to which this symbol is - relative. This will always be non NULL, there are special - sections for undefined and absolute symbols. */ - struct sec *section; - - /* Back end special data. */ - union - { - PTR p; - bfd_vma i; - } udata; - - } asymbol; - - -File: bfd.info, Node: symbol handling functions, Prev: typedef asymbol, Up: Symbols - -Symbol handling functions -------------------------- - -`bfd_get_symtab_upper_bound' -............................ - -*Description* -Return the number of bytes required to store a vector of pointers to -`asymbols' for all the symbols in the BFD ABFD, including a terminal -NULL pointer. If there are no symbols in the BFD, then return 0. If an -error occurs, return -1. - #define bfd_get_symtab_upper_bound(abfd) \ - BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) - -`bfd_is_local_label' -.................... - -*Synopsis* - boolean bfd_is_local_label(bfd *abfd, asymbol *sym); - *Description* -Return true if the given symbol SYM in the BFD ABFD is a compiler -generated local label, else return false. -`bfd_is_local_label_name' -......................... - -*Synopsis* - boolean bfd_is_local_label_name(bfd *abfd, const char *name); - *Description* -Return true if a symbol with the name NAME in the BFD ABFD is a -compiler generated local label, else return false. This just checks -whether the name has the form of a local label. - #define bfd_is_local_label_name(abfd, name) \ - BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) - -`bfd_canonicalize_symtab' -......................... - -*Description* -Read the symbols from the BFD ABFD, and fills in the vector LOCATION -with pointers to the symbols and a trailing NULL. Return the actual -number of symbol pointers, not including the NULL. - #define bfd_canonicalize_symtab(abfd, location) \ - BFD_SEND (abfd, _bfd_canonicalize_symtab,\ - (abfd, location)) - -`bfd_set_symtab' -................ - -*Synopsis* - boolean bfd_set_symtab (bfd *abfd, asymbol **location, unsigned int count); - *Description* -Arrange that when the output BFD ABFD is closed, the table LOCATION of -COUNT pointers to symbols will be written. -`bfd_print_symbol_vandf' -........................ - -*Synopsis* - void bfd_print_symbol_vandf(PTR file, asymbol *symbol); - *Description* -Print the value and flags of the SYMBOL supplied to the stream FILE. -`bfd_make_empty_symbol' -....................... - -*Description* -Create a new `asymbol' structure for the BFD ABFD and return a pointer -to it. - - This routine is necessary because each back end has private -information surrounding the `asymbol'. Building your own `asymbol' and -pointing to it will not create the private information, and will cause -problems later on. - #define bfd_make_empty_symbol(abfd) \ - BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) - -`bfd_make_debug_symbol' -....................... - -*Description* -Create a new `asymbol' structure for the BFD ABFD, to be used as a -debugging symbol. Further details of its use have yet to be worked out. - #define bfd_make_debug_symbol(abfd,ptr,size) \ - BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) - -`bfd_decode_symclass' -..................... - -*Description* -Return a character corresponding to the symbol class of SYMBOL, or '?' -for an unknown class. -*Synopsis* - int bfd_decode_symclass(asymbol *symbol); - -`bfd_symbol_info' -................. - - *Description* -Fill in the basic info about symbol that nm needs. Additional info may -be added by the back-ends after calling this function. -*Synopsis* - void bfd_symbol_info(asymbol *symbol, symbol_info *ret); - -`bfd_copy_private_symbol_data' -.............................. - - *Synopsis* - boolean bfd_copy_private_symbol_data(bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); - *Description* -Copy private symbol information from ISYM in the BFD IBFD to the symbol -OSYM in the BFD OBFD. Return `true' on success, `false' on error. -Possible error returns are: - - * `bfd_error_no_memory' - Not enough memory exists to create private - data for OSEC. - #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ - BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ - (ibfd, isymbol, obfd, osymbol)) - - -File: bfd.info, Node: Archives, Next: Formats, Prev: Symbols, Up: BFD front end - -Archives -======== - -*Description* -An archive (or library) is just another BFD. It has a symbol table, -although there's not much a user program will do with it. - - The big difference between an archive BFD and an ordinary BFD is -that the archive doesn't have sections. Instead it has a chain of BFDs -that are considered its contents. These BFDs can be manipulated like -any other. The BFDs contained in an archive opened for reading will -all be opened for reading. You may put either input or output BFDs -into an archive opened for output; they will be handled correctly when -the archive is closed. - - Use `bfd_openr_next_archived_file' to step through the contents of -an archive opened for input. You don't have to read the entire archive -if you don't want to! Read it until you find what you want. - - Archive contents of output BFDs are chained through the `next' -pointer in a BFD. The first one is findable through the `archive_head' -slot of the archive. Set it with `bfd_set_archive_head' (q.v.). A -given BFD may be in only one open output archive at a time. - - As expected, the BFD archive code is more general than the archive -code of any given environment. BFD archives may contain files of -different formats (e.g., a.out and coff) and even different -architectures. You may even place archives recursively into archives! - - This can cause unexpected confusion, since some archive formats are -more expressive than others. For instance, Intel COFF archives can -preserve long filenames; SunOS a.out archives cannot. If you move a -file from the first to the second format and back again, the filename -may be truncated. Likewise, different a.out environments have different -conventions as to how they truncate filenames, whether they preserve -directory names in filenames, etc. When interoperating with native -tools, be sure your files are homogeneous. - - Beware: most of these formats do not react well to the presence of -spaces in filenames. We do the best we can, but can't always handle -this case due to restrictions in the format of archives. Many Unix -utilities are braindead in regards to spaces and such in filenames -anyway, so this shouldn't be much of a restriction. - - Archives are supported in BFD in `archive.c'. -`bfd_get_next_mapent' -..................... - -*Synopsis* - symindex bfd_get_next_mapent(bfd *abfd, symindex previous, carsym **sym); - *Description* -Step through archive ABFD's symbol table (if it has one). Successively -update SYM with the next symbol's information, returning that symbol's -(internal) index into the symbol table. - - Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first -one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one. - - A `carsym' is a canonical archive symbol. The only user-visible -element is its name, a null-terminated string. -`bfd_set_archive_head' -...................... - -*Synopsis* - boolean bfd_set_archive_head(bfd *output, bfd *new_head); - *Description* -Set the head of the chain of BFDs contained in the archive OUTPUT to -NEW_HEAD. -`bfd_openr_next_archived_file' -.............................. - -*Synopsis* - bfd *bfd_openr_next_archived_file(bfd *archive, bfd *previous); - *Description* -Provided a BFD, ARCHIVE, containing an archive and NULL, open an input -BFD on the first contained element and returns that. Subsequent calls -should pass the archive and the previous return value to return a -created BFD to the next contained element. NULL is returned when there -are no more. - -File: bfd.info, Node: Formats, Next: Relocations, Prev: Archives, Up: BFD front end - -File formats -============ - -A format is a BFD concept of high level file contents type. The formats -supported by BFD are: - - * `bfd_object' The BFD may contain data, symbols, relocations and -debug info. - - * `bfd_archive' The BFD contains other BFDs and an optional index. - - * `bfd_core' The BFD contains the result of an executable core dump. -`bfd_check_format' -.................. - -*Synopsis* - boolean bfd_check_format(bfd *abfd, bfd_format format); - *Description* -Verify if the file attached to the BFD ABFD is compatible with the -format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core'). - - If the BFD has been set to a specific target before the call, only -the named target and format combination is checked. If the target has -not been set, or has been set to `default', then all the known target -backends is interrogated to determine a match. If the default target -matches, it is used. If not, exactly one target must recognize the -file, or an error results. - - The function returns `true' on success, otherwise `false' with one -of the following error codes: - - * `bfd_error_invalid_operation' - if `format' is not one of - `bfd_object', `bfd_archive' or `bfd_core'. - - * `bfd_error_system_call' - if an error occured during a read - even - some file mismatches can cause bfd_error_system_calls. - - * `file_not_recognised' - none of the backends recognised the file - format. - - * `bfd_error_file_ambiguously_recognized' - more than one backend - recognised the file format. -`bfd_check_format_matches' -.......................... - -*Synopsis* - boolean bfd_check_format_matches(bfd *abfd, bfd_format format, char ***matching); - *Description* -Like `bfd_check_format', except when it returns false with `bfd_errno' -set to `bfd_error_file_ambiguously_recognized'. In that case, if -MATCHING is not NULL, it will be filled in with a NULL-terminated list -of the names of the formats that matched, allocated with `malloc'. -Then the user may choose a format and try again. - - When done with the list that MATCHING points to, the caller should -free it. -`bfd_set_format' -................ - -*Synopsis* - boolean bfd_set_format(bfd *abfd, bfd_format format); - *Description* -This function sets the file format of the BFD ABFD to the format -FORMAT. If the target set in the BFD does not support the format -requested, the format is invalid, or the BFD is not open for writing, -then an error occurs. -`bfd_format_string' -................... - -*Synopsis* - CONST char *bfd_format_string(bfd_format format); - *Description* -Return a pointer to a const string `invalid', `object', `archive', -`core', or `unknown', depending upon the value of FORMAT. - -File: bfd.info, Node: Relocations, Next: Core Files, Prev: Formats, Up: BFD front end - -Relocations -=========== - -BFD maintains relocations in much the same way it maintains symbols: -they are left alone until required, then read in en-mass and translated -into an internal form. A common routine `bfd_perform_relocation' acts -upon the canonical form to do the fixup. - - Relocations are maintained on a per section basis, while symbols are -maintained on a per BFD basis. - - All that a back end has to do to fit the BFD interface is to create -a `struct reloc_cache_entry' for each relocation in a particular -section, and fill in the right bits of the structures. - -* Menu: - -* typedef arelent:: -* howto manager:: - - -File: bfd.info, Node: typedef arelent, Next: howto manager, Prev: Relocations, Up: Relocations - -typedef arelent ---------------- - -This is the structure of a relocation entry: -. - typedef enum bfd_reloc_status - { - /* No errors detected */ - bfd_reloc_ok, - - /* The relocation was performed, but there was an overflow. */ - bfd_reloc_overflow, - - /* The address to relocate was not within the section supplied. */ - bfd_reloc_outofrange, - - /* Used by special functions */ - bfd_reloc_continue, - - /* Unsupported relocation size requested. */ - bfd_reloc_notsupported, - - /* Unused */ - bfd_reloc_other, - - /* The symbol to relocate against was undefined. */ - bfd_reloc_undefined, - - /* The relocation was performed, but may not be ok - presently - generated only when linking i960 coff files with i960 b.out - symbols. If this type is returned, the error_message argument - to bfd_perform_relocation will be set. */ - bfd_reloc_dangerous - } - bfd_reloc_status_type; - - - typedef struct reloc_cache_entry - { - /* A pointer into the canonical table of pointers */ - struct symbol_cache_entry **sym_ptr_ptr; - - /* offset in section */ - bfd_size_type address; - - /* addend for relocation value */ - bfd_vma addend; - - /* Pointer to how to perform the required relocation */ - reloc_howto_type *howto; - - } arelent; - *Description* -Here is a description of each of the fields within an `arelent': - - * `sym_ptr_ptr' The symbol table pointer points to a pointer to the -symbol associated with the relocation request. It is the pointer into -the table returned by the back end's `get_symtab' action. *Note -Symbols::. The symbol is referenced through a pointer to a pointer so -that tools like the linker can fix up all the symbols of the same name -by modifying only one pointer. The relocation routine looks in the -symbol and uses the base of the section the symbol is attached to and -the value of the symbol as the initial relocation offset. If the symbol -pointer is zero, then the section provided is looked up. - - * `address' The `address' field gives the offset in bytes from the -base of the section data which owns the relocation record to the first -byte of relocatable information. The actual data relocated will be -relative to this point; for example, a relocation type which modifies -the bottom two bytes of a four byte word would not touch the first byte -pointed to in a big endian world. - - * `addend' The `addend' is a value provided by the back end to be -added (!) to the relocation offset. Its interpretation is dependent upon -the howto. For example, on the 68k the code: - - char foo[]; - main() - { - return foo[0x12345678]; - } - - Could be compiled into: - - linkw fp,#-4 - moveb @#12345678,d0 - extbl d0 - unlk fp - rts - - This could create a reloc pointing to `foo', but leave the offset in -the data, something like: - - RELOCATION RECORDS FOR [.text]: - offset type value - 00000006 32 _foo - - 00000000 4e56 fffc ; linkw fp,#-4 - 00000004 1039 1234 5678 ; moveb @#12345678,d0 - 0000000a 49c0 ; extbl d0 - 0000000c 4e5e ; unlk fp - 0000000e 4e75 ; rts - - Using coff and an 88k, some instructions don't have enough space in -them to represent the full address range, and pointers have to be -loaded in two parts. So you'd get something like: - - or.u r13,r0,hi16(_foo+0x12345678) - ld.b r2,r13,lo16(_foo+0x12345678) - jmp r1 - - This should create two relocs, both pointing to `_foo', and with -0x12340000 in their addend field. The data would consist of: - - RELOCATION RECORDS FOR [.text]: - offset type value - 00000002 HVRT16 _foo+0x12340000 - 00000006 LVRT16 _foo+0x12340000 - - 00000000 5da05678 ; or.u r13,r0,0x5678 - 00000004 1c4d5678 ; ld.b r2,r13,0x5678 - 00000008 f400c001 ; jmp r1 - - The relocation routine digs out the value from the data, adds it to -the addend to get the original offset, and then adds the value of -`_foo'. Note that all 32 bits have to be kept around somewhere, to cope -with carry from bit 15 to bit 16. - - One further example is the sparc and the a.out format. The sparc has -a similar problem to the 88k, in that some instructions don't have room -for an entire offset, but on the sparc the parts are created in odd -sized lumps. The designers of the a.out format chose to not use the -data within the section for storing part of the offset; all the offset -is kept within the reloc. Anything in the data should be ignored. - - save %sp,-112,%sp - sethi %hi(_foo+0x12345678),%g2 - ldsb [%g2+%lo(_foo+0x12345678)],%i0 - ret - restore - - Both relocs contain a pointer to `foo', and the offsets contain junk. - - RELOCATION RECORDS FOR [.text]: - offset type value - 00000004 HI22 _foo+0x12345678 - 00000008 LO10 _foo+0x12345678 - - 00000000 9de3bf90 ; save %sp,-112,%sp - 00000004 05000000 ; sethi %hi(_foo+0),%g2 - 00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0 - 0000000c 81c7e008 ; ret - 00000010 81e80000 ; restore - - * `howto' The `howto' field can be imagined as a relocation -instruction. It is a pointer to a structure which contains information -on what to do with all of the other information in the reloc record and -data section. A back end would normally have a relocation instruction -set and turn relocations into pointers to the correct structure on -input - but it would be possible to create each howto field on demand. -`enum complain_overflow' -........................ - -Indicates what sort of overflow checking should be done when performing -a relocation. -. - enum complain_overflow - { - /* Do not complain on overflow. */ - complain_overflow_dont, - - /* Complain if the bitfield overflows, whether it is considered - as signed or unsigned. */ - complain_overflow_bitfield, - - /* Complain if the value overflows when considered as signed - number. */ - complain_overflow_signed, - - /* Complain if the value overflows when considered as an - unsigned number. */ - complain_overflow_unsigned - }; - -`reloc_howto_type' -.................. - - The `reloc_howto_type' is a structure which contains all the -information that libbfd needs to know to tie up a back end's data. -.struct symbol_cache_entry; /* Forward declaration */ - - struct reloc_howto_struct - { - /* The type field has mainly a documentary use - the back end can - do what it wants with it, though normally the back end's - external idea of what a reloc number is stored - in this field. For example, a PC relative word relocation - in a coff environment has the type 023 - because that's - what the outside world calls a R_PCRWORD reloc. */ - unsigned int type; - - /* The value the final relocation is shifted right by. This drops - unwanted data from the relocation. */ - unsigned int rightshift; - - /* The size of the item to be relocated. This is *not* a - power-of-two measure. To get the number of bytes operated - on by a type of relocation, use bfd_get_reloc_size. */ - int size; - - /* The number of bits in the item to be relocated. This is used - when doing overflow checking. */ - unsigned int bitsize; - - /* Notes that the relocation is relative to the location in the - data section of the addend. The relocation function will - subtract from the relocation value the address of the location - being relocated. */ - boolean pc_relative; - - /* The bit position of the reloc value in the destination. - The relocated value is left shifted by this amount. */ - unsigned int bitpos; - - /* What type of overflow error should be checked for when - relocating. */ - enum complain_overflow complain_on_overflow; - - /* If this field is non null, then the supplied function is - called rather than the normal function. This allows really - strange relocation methods to be accomodated (e.g., i960 callj - instructions). */ - bfd_reloc_status_type (*special_function) - PARAMS ((bfd *abfd, - arelent *reloc_entry, - struct symbol_cache_entry *symbol, - PTR data, - asection *input_section, - bfd *output_bfd, - char **error_message)); - - /* The textual name of the relocation type. */ - char *name; - - /* When performing a partial link, some formats must modify the - relocations rather than the data - this flag signals this.*/ - boolean partial_inplace; - - /* The src_mask selects which parts of the read in data - are to be used in the relocation sum. E.g., if this was an 8 bit - bit of data which we read and relocated, this would be - 0x000000ff. When we have relocs which have an addend, such as - sun4 extended relocs, the value in the offset part of a - relocating field is garbage so we never use it. In this case - the mask would be 0x00000000. */ - bfd_vma src_mask; - - /* The dst_mask selects which parts of the instruction are replaced - into the instruction. In most cases src_mask == dst_mask, - except in the above special case, where dst_mask would be - 0x000000ff, and src_mask would be 0x00000000. */ - bfd_vma dst_mask; - - /* When some formats create PC relative instructions, they leave - the value of the pc of the place being relocated in the offset - slot of the instruction, so that a PC relative relocation can - be made just by adding in an ordinary offset (e.g., sun3 a.out). - Some formats leave the displacement part of an instruction - empty (e.g., m88k bcs); this flag signals the fact.*/ - boolean pcrel_offset; - - }; - -`The HOWTO Macro' -................. - - *Description* -The HOWTO define is horrible and will go away. - #define HOWTO(C, R,S,B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ - {(unsigned)C,R,S,B, P, BI, O,SF,NAME,INPLACE,MASKSRC,MASKDST,PC} - -*Description* -And will be replaced with the totally magic way. But for the moment, we -are compatible, so do it this way. - #define NEWHOWTO( FUNCTION, NAME,SIZE,REL,IN) HOWTO(0,0,SIZE,0,REL,0,complain_overflow_dont,FUNCTION, NAME,false,0,0,IN) - -*Description* -Helper routine to turn a symbol into a relocation value. - #define HOWTO_PREPARE(relocation, symbol) \ - { \ - if (symbol != (asymbol *)NULL) { \ - if (bfd_is_com_section (symbol->section)) { \ - relocation = 0; \ - } \ - else { \ - relocation = symbol->value; \ - } \ - } \ - } - -`bfd_get_reloc_size' -.................... - -*Synopsis* - int bfd_get_reloc_size (reloc_howto_type *); - *Description* -For a reloc_howto_type that operates on a fixed number of bytes, this -returns the number of bytes operated on. -`arelent_chain' -............... - -*Description* -How relocs are tied together in an `asection': - typedef struct relent_chain { - arelent relent; - struct relent_chain *next; - } arelent_chain; - -`bfd_perform_relocation' -........................ - -*Synopsis* - bfd_reloc_status_type - bfd_perform_relocation - (bfd *abfd, - arelent *reloc_entry, - PTR data, - asection *input_section, - bfd *output_bfd, - char **error_message); - *Description* -If OUTPUT_BFD is supplied to this function, the generated image will be -relocatable; the relocations are copied to the output file after they -have been changed to reflect the new state of the world. There are two -ways of reflecting the results of partial linkage in an output file: by -modifying the output data in place, and by modifying the relocation -record. Some native formats (e.g., basic a.out and basic coff) have no -way of specifying an addend in the relocation type, so the addend has -to go in the output data. This is no big deal since in these formats -the output data slot will always be big enough for the addend. Complex -reloc types with addends were invented to solve just this problem. The -ERROR_MESSAGE argument is set to an error message if this return -`bfd_reloc_dangerous'. -`bfd_install_relocation' -........................ - -*Synopsis* - bfd_reloc_status_type - bfd_install_relocation - (bfd *abfd, - arelent *reloc_entry, - PTR data, bfd_vma data_start, - asection *input_section, - char **error_message); - *Description* -This looks remarkably like `bfd_perform_relocation', except it does not -expect that the section contents have been filled in. I.e., it's -suitable for use when creating, rather than applying a relocation. - - For now, this function should be considered reserved for the -assembler. diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info-3 b/gnu/usr.bin/binutils/bfd/doc/bfd.info-3 deleted file mode 100644 index 8d51c9c2c59..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info-3 +++ /dev/null @@ -1,1322 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: howto manager, Prev: typedef arelent, Up: Relocations - -The howto manager -================= - -When an application wants to create a relocation, but doesn't know what -the target machine might call it, it can find out by using this bit of -code. -`bfd_reloc_code_type' -..................... - -*Description* -The insides of a reloc code. The idea is that, eventually, there will -be one enumerator for every type of relocation we ever do. Pass one of -these values to `bfd_reloc_type_lookup', and it'll return a howto -pointer. - - This does mean that the application must determine the correct -enumerator value; you can't get a howto pointer from a random set of -attributes. -Here are the possible values for `enum bfd_reloc_code_real': - - - : BFD_RELOC_64 - - : BFD_RELOC_32 - - : BFD_RELOC_26 - - : BFD_RELOC_24 - - : BFD_RELOC_16 - - : BFD_RELOC_14 - - : BFD_RELOC_8 - Basic absolute relocations of N bits. - - - : BFD_RELOC_64_PCREL - - : BFD_RELOC_32_PCREL - - : BFD_RELOC_24_PCREL - - : BFD_RELOC_16_PCREL - - : BFD_RELOC_12_PCREL - - : BFD_RELOC_8_PCREL - PC-relative relocations. Sometimes these are relative to the - address of the relocation itself; sometimes they are relative to - the start of the section containing the relocation. It depends on - the specific target. - - The 24-bit relocation is used in some Intel 960 configurations. - - - : BFD_RELOC_32_GOT_PCREL - - : BFD_RELOC_16_GOT_PCREL - - : BFD_RELOC_8_GOT_PCREL - - : BFD_RELOC_32_GOTOFF - - : BFD_RELOC_16_GOTOFF - - : BFD_RELOC_LO16_GOTOFF - - : BFD_RELOC_HI16_GOTOFF - - : BFD_RELOC_HI16_S_GOTOFF - - : BFD_RELOC_8_GOTOFF - - : BFD_RELOC_32_PLT_PCREL - - : BFD_RELOC_24_PLT_PCREL - - : BFD_RELOC_16_PLT_PCREL - - : BFD_RELOC_8_PLT_PCREL - - : BFD_RELOC_32_PLTOFF - - : BFD_RELOC_16_PLTOFF - - : BFD_RELOC_LO16_PLTOFF - - : BFD_RELOC_HI16_PLTOFF - - : BFD_RELOC_HI16_S_PLTOFF - - : BFD_RELOC_8_PLTOFF - For ELF. - - - : BFD_RELOC_68K_GLOB_DAT - - : BFD_RELOC_68K_JMP_SLOT - - : BFD_RELOC_68K_RELATIVE - Relocations used by 68K ELF. - - - : BFD_RELOC_32_BASEREL - - : BFD_RELOC_16_BASEREL - - : BFD_RELOC_LO16_BASEREL - - : BFD_RELOC_HI16_BASEREL - - : BFD_RELOC_HI16_S_BASEREL - - : BFD_RELOC_8_BASEREL - - : BFD_RELOC_RVA - Linkage-table relative. - - - : BFD_RELOC_8_FFnn - Absolute 8-bit relocation, but used to form an address like 0xFFnn. - - - : BFD_RELOC_32_PCREL_S2 - - : BFD_RELOC_16_PCREL_S2 - - : BFD_RELOC_23_PCREL_S2 - These PC-relative relocations are stored as word displacements - - i.e., byte displacements shifted right two bits. The 30-bit word - displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the - SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The - signed 16-bit displacement is used on the MIPS, and the 23-bit - displacement is used on the Alpha. - - - : BFD_RELOC_HI22 - - : BFD_RELOC_LO10 - High 22 bits and low 10 bits of 32-bit value, placed into lower - bits of the target word. These are used on the SPARC. - - - : BFD_RELOC_GPREL16 - - : BFD_RELOC_GPREL32 - For systems that allocate a Global Pointer register, these are - displacements off that register. These relocation types are - handled specially, because the value the register will have is - decided relatively late. - - - : BFD_RELOC_I960_CALLJ - Reloc types used for i960/b.out. - - - : BFD_RELOC_NONE - - : BFD_RELOC_SPARC_WDISP22 - - : BFD_RELOC_SPARC22 - - : BFD_RELOC_SPARC13 - - : BFD_RELOC_SPARC_GOT10 - - : BFD_RELOC_SPARC_GOT13 - - : BFD_RELOC_SPARC_GOT22 - - : BFD_RELOC_SPARC_PC10 - - : BFD_RELOC_SPARC_PC22 - - : BFD_RELOC_SPARC_WPLT30 - - : BFD_RELOC_SPARC_COPY - - : BFD_RELOC_SPARC_GLOB_DAT - - : BFD_RELOC_SPARC_JMP_SLOT - - : BFD_RELOC_SPARC_RELATIVE - - : BFD_RELOC_SPARC_UA32 - SPARC ELF relocations. There is probably some overlap with other - relocation types already defined. - - - : BFD_RELOC_SPARC_BASE13 - - : BFD_RELOC_SPARC_BASE22 - I think these are specific to SPARC a.out (e.g., Sun 4). - - - : BFD_RELOC_SPARC_64 - - : BFD_RELOC_SPARC_10 - - : BFD_RELOC_SPARC_11 - - : BFD_RELOC_SPARC_OLO10 - - : BFD_RELOC_SPARC_HH22 - - : BFD_RELOC_SPARC_HM10 - - : BFD_RELOC_SPARC_LM22 - - : BFD_RELOC_SPARC_PC_HH22 - - : BFD_RELOC_SPARC_PC_HM10 - - : BFD_RELOC_SPARC_PC_LM22 - - : BFD_RELOC_SPARC_WDISP16 - - : BFD_RELOC_SPARC_WDISP19 - - : BFD_RELOC_SPARC_GLOB_JMP - - : BFD_RELOC_SPARC_7 - - : BFD_RELOC_SPARC_6 - - : BFD_RELOC_SPARC_5 - Some relocations we're using for SPARC V9 - subject to change. - - - : BFD_RELOC_ALPHA_GPDISP_HI16 - Alpha ECOFF and ELF relocations. Some of these treat the symbol or - "addend" in some special way. For GPDISP_HI16 ("gpdisp") - relocations, the symbol is ignored when writing; when reading, it - will be the absolute section symbol. The addend is the - displacement in bytes of the "lda" instruction from the "ldah" - instruction (which is at the address of this reloc). - - - : BFD_RELOC_ALPHA_GPDISP_LO16 - For GPDISP_LO16 ("ignore") relocations, the symbol is handled as - with GPDISP_HI16 relocs. The addend is ignored when writing the - relocations out, and is filled in with the file's GP value on - reading, for convenience. - - - : BFD_RELOC_ALPHA_GPDISP - The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 - relocation except that there is no accompanying GPDISP_LO16 - relocation. - - - : BFD_RELOC_ALPHA_LITERAL - - : BFD_RELOC_ALPHA_ELF_LITERAL - - : BFD_RELOC_ALPHA_LITUSE - The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; - the assembler turns it into a LDQ instruction to load the address - of the symbol, and then fills in a register in the real - instruction. - - The LITERAL reloc, at the LDQ instruction, refers to the .lita - section symbol. The addend is ignored when writing, but is filled - in with the file's GP value on reading, for convenience, as with - the GPDISP_LO16 reloc. - - The ELF_LITERAL reloc is somewhere between 16_GOTOFF and - GPDISP_LO16. It should refer to the symbol to be referenced, as - with 16_GOTOFF, but it generates output not based on the position - within the .got section, but relative to the GP value chosen for - the file during the final link stage. - - The LITUSE reloc, on the instruction using the loaded address, - gives information to the linker that it might be able to use to - optimize away some literal section references. The symbol is - ignored (read as the absolute section symbol), and the "addend" - indicates the type of instruction using the register: 1 - "memory" - fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target - of branch) - - The GNU linker currently doesn't do any of this optimizing. - - - : BFD_RELOC_ALPHA_HINT - The HINT relocation indicates a value that should be filled into - the "hint" field of a jmp/jsr/ret instruction, for possible branch- - prediction logic which may be provided on some processors. - - - : BFD_RELOC_ALPHA_LINKAGE - The LINKAGE relocation outputs a linkage pair in the object file, - which is filled by the linker. - - - : BFD_RELOC_ALPHA_CODEADDR - The CODEADDR relocation outputs a STO_CA in the object file, which - is filled by the linker. - - - : BFD_RELOC_MIPS_JMP - Bits 27..2 of the relocation address shifted right 2 bits; simple - reloc otherwise. - - - : BFD_RELOC_MIPS16_JMP - The MIPS16 jump instruction. - - - : BFD_RELOC_MIPS16_GPREL - MIPS16 GP relative reloc. - - - : BFD_RELOC_HI16 - High 16 bits of 32-bit value; simple reloc. - - - : BFD_RELOC_HI16_S - High 16 bits of 32-bit value but the low 16 bits will be sign - extended and added to form the final result. If the low 16 bits - form a negative number, we need to add one to the high value to - compensate for the borrow when the low bits are added. - - - : BFD_RELOC_LO16 - Low 16 bits. - - - : BFD_RELOC_PCREL_HI16_S - Like BFD_RELOC_HI16_S, but PC relative. - - - : BFD_RELOC_PCREL_LO16 - Like BFD_RELOC_LO16, but PC relative. - - - : BFD_RELOC_MIPS_GPREL - Relocation relative to the global pointer. - - - : BFD_RELOC_MIPS_LITERAL - Relocation against a MIPS literal section. - - - : BFD_RELOC_MIPS_GOT16 - - : BFD_RELOC_MIPS_CALL16 - - : BFD_RELOC_MIPS_GPREL32 - - : BFD_RELOC_MIPS_GOT_HI16 - - : BFD_RELOC_MIPS_GOT_LO16 - - : BFD_RELOC_MIPS_CALL_HI16 - - : BFD_RELOC_MIPS_CALL_LO16 - MIPS ELF relocations. - - - : BFD_RELOC_386_GOT32 - - : BFD_RELOC_386_PLT32 - - : BFD_RELOC_386_COPY - - : BFD_RELOC_386_GLOB_DAT - - : BFD_RELOC_386_JUMP_SLOT - - : BFD_RELOC_386_RELATIVE - - : BFD_RELOC_386_GOTOFF - - : BFD_RELOC_386_GOTPC - i386/elf relocations - - - : BFD_RELOC_NS32K_IMM_8 - - : BFD_RELOC_NS32K_IMM_16 - - : BFD_RELOC_NS32K_IMM_32 - - : BFD_RELOC_NS32K_IMM_8_PCREL - - : BFD_RELOC_NS32K_IMM_16_PCREL - - : BFD_RELOC_NS32K_IMM_32_PCREL - - : BFD_RELOC_NS32K_DISP_8 - - : BFD_RELOC_NS32K_DISP_16 - - : BFD_RELOC_NS32K_DISP_32 - - : BFD_RELOC_NS32K_DISP_8_PCREL - - : BFD_RELOC_NS32K_DISP_16_PCREL - - : BFD_RELOC_NS32K_DISP_32_PCREL - ns32k relocations - - - : BFD_RELOC_PPC_B26 - - : BFD_RELOC_PPC_BA26 - - : BFD_RELOC_PPC_TOC16 - - : BFD_RELOC_PPC_B16 - - : BFD_RELOC_PPC_B16_BRTAKEN - - : BFD_RELOC_PPC_B16_BRNTAKEN - - : BFD_RELOC_PPC_BA16 - - : BFD_RELOC_PPC_BA16_BRTAKEN - - : BFD_RELOC_PPC_BA16_BRNTAKEN - - : BFD_RELOC_PPC_COPY - - : BFD_RELOC_PPC_GLOB_DAT - - : BFD_RELOC_PPC_JMP_SLOT - - : BFD_RELOC_PPC_RELATIVE - - : BFD_RELOC_PPC_LOCAL24PC - - : BFD_RELOC_PPC_EMB_NADDR32 - - : BFD_RELOC_PPC_EMB_NADDR16 - - : BFD_RELOC_PPC_EMB_NADDR16_LO - - : BFD_RELOC_PPC_EMB_NADDR16_HI - - : BFD_RELOC_PPC_EMB_NADDR16_HA - - : BFD_RELOC_PPC_EMB_SDAI16 - - : BFD_RELOC_PPC_EMB_SDA2I16 - - : BFD_RELOC_PPC_EMB_SDA2REL - - : BFD_RELOC_PPC_EMB_SDA21 - - : BFD_RELOC_PPC_EMB_MRKREF - - : BFD_RELOC_PPC_EMB_RELSEC16 - - : BFD_RELOC_PPC_EMB_RELST_LO - - : BFD_RELOC_PPC_EMB_RELST_HI - - : BFD_RELOC_PPC_EMB_RELST_HA - - : BFD_RELOC_PPC_EMB_BIT_FLD - - : BFD_RELOC_PPC_EMB_RELSDA - Power(rs6000) and PowerPC relocations. - - - : BFD_RELOC_CTOR - The type of reloc used to build a contructor table - at the moment - probably a 32 bit wide absolute relocation, but the target can - choose. It generally does map to one of the other relocation - types. - - - : BFD_RELOC_ARM_PCREL_BRANCH - ARM 26 bit pc-relative branch. The lowest two bits must be zero - and are not stored in the instruction. - - - : BFD_RELOC_ARM_IMMEDIATE - - : BFD_RELOC_ARM_OFFSET_IMM - - : BFD_RELOC_ARM_SHIFT_IMM - - : BFD_RELOC_ARM_SWI - - : BFD_RELOC_ARM_MULTI - - : BFD_RELOC_ARM_CP_OFF_IMM - - : BFD_RELOC_ARM_ADR_IMM - - : BFD_RELOC_ARM_LDR_IMM - - : BFD_RELOC_ARM_LITERAL - - : BFD_RELOC_ARM_IN_POOL - - : BFD_RELOC_ARM_OFFSET_IMM8 - - : BFD_RELOC_ARM_HWLITERAL - - : BFD_RELOC_ARM_THUMB_ADD - - : BFD_RELOC_ARM_THUMB_IMM - - : BFD_RELOC_ARM_THUMB_SHIFT - - : BFD_RELOC_ARM_THUMB_OFFSET - These relocs are only used within the ARM assembler. They are not - (at present) written to any object files. - - - : BFD_RELOC_SH_PCDISP8BY2 - - : BFD_RELOC_SH_PCDISP12BY2 - - : BFD_RELOC_SH_IMM4 - - : BFD_RELOC_SH_IMM4BY2 - - : BFD_RELOC_SH_IMM4BY4 - - : BFD_RELOC_SH_IMM8 - - : BFD_RELOC_SH_IMM8BY2 - - : BFD_RELOC_SH_IMM8BY4 - - : BFD_RELOC_SH_PCRELIMM8BY2 - - : BFD_RELOC_SH_PCRELIMM8BY4 - - : BFD_RELOC_SH_SWITCH16 - - : BFD_RELOC_SH_SWITCH32 - - : BFD_RELOC_SH_USES - - : BFD_RELOC_SH_COUNT - - : BFD_RELOC_SH_ALIGN - - : BFD_RELOC_SH_CODE - - : BFD_RELOC_SH_DATA - - : BFD_RELOC_SH_LABEL - Hitachi SH relocs. Not all of these appear in object files. - - - : BFD_RELOC_D10V_10_PCREL_R - Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 - bits assumed to be 0. - - - : BFD_RELOC_D10V_10_PCREL_L - Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 - bits assumed to be 0. This is the same as the previous reloc - except it is in the left container, i.e., shifted left 15 bits. - - - : BFD_RELOC_D10V_18 - This is an 18-bit reloc with the right 2 bits assumed to be 0. - - - : BFD_RELOC_D10V_18_PCREL - This is an 18-bit reloc with the right 2 bits assumed to be 0. - - - : BFD_RELOC_M32R_24 - Mitsubishi M32R relocs. This is a 24 bit absolute address. - - - : BFD_RELOC_M32R_10_PCREL - This is a 10-bit pc-relative reloc with the right 2 bits assumed - to be 0. - - - : BFD_RELOC_M32R_18_PCREL - This is an 18-bit reloc with the right 2 bits assumed to be 0. - - - : BFD_RELOC_M32R_26_PCREL - This is a 26-bit reloc with the right 2 bits assumed to be 0. - - - : BFD_RELOC_M32R_HI16_ULO - This is a 16-bit reloc containing the high 16 bits of an address - used when the lower 16 bits are treated as unsigned. - - - : BFD_RELOC_M32R_HI16_SLO - This is a 16-bit reloc containing the high 16 bits of an address - used when the lower 16 bits are treated as signed. - - - : BFD_RELOC_M32R_LO16 - This is a 16-bit reloc containing the lower 16 bits of an address. - - - : BFD_RELOC_M32R_SDA16 - This is a 16-bit reloc containing the small data area offset for - use in add3, load, and store instructions. - - - : BFD_RELOC_MN10300_32_PCREL - This is a 32bit pcrel reloc for the mn10300, offset by two bytes - in the instruction. - - - : BFD_RELOC_MN10300_16_PCREL - This is a 16bit pcrel reloc for the mn10300, offset by two bytes - in the instruction. - . - typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; - -`bfd_reloc_type_lookup' -....................... - - *Synopsis* - reloc_howto_type * - bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code); - *Description* -Return a pointer to a howto structure which, when invoked, will perform -the relocation CODE on data from the architecture noted. -`bfd_default_reloc_type_lookup' -............................... - -*Synopsis* - reloc_howto_type *bfd_default_reloc_type_lookup - (bfd *abfd, bfd_reloc_code_real_type code); - *Description* -Provides a default relocation lookup routine for any architecture. -`bfd_get_reloc_code_name' -......................... - -*Synopsis* - const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); - *Description* -Provides a printable name for the supplied relocation code. Useful -mainly for printing error messages. -`bfd_generic_relax_section' -........................... - -*Synopsis* - boolean bfd_generic_relax_section - (bfd *abfd, - asection *section, - struct bfd_link_info *, - boolean *); - *Description* -Provides default handling for relaxing for back ends which don't do -relaxing - i.e., does nothing. -`bfd_generic_get_relocated_section_contents' -............................................ - -*Synopsis* - bfd_byte * - bfd_generic_get_relocated_section_contents (bfd *abfd, - struct bfd_link_info *link_info, - struct bfd_link_order *link_order, - bfd_byte *data, - boolean relocateable, - asymbol **symbols); - *Description* -Provides default handling of relocation effort for back ends which -can't be bothered to do it efficiently. - -File: bfd.info, Node: Core Files, Next: Targets, Prev: Relocations, Up: BFD front end - -Core files -========== - -*Description* -These are functions pertaining to core files. -`bfd_core_file_failing_command' -............................... - -*Synopsis* - CONST char *bfd_core_file_failing_command(bfd *abfd); - *Description* -Return a read-only string explaining which program was running when it -failed and produced the core file ABFD. -`bfd_core_file_failing_signal' -.............................. - -*Synopsis* - int bfd_core_file_failing_signal(bfd *abfd); - *Description* -Returns the signal number which caused the core dump which generated -the file the BFD ABFD is attached to. -`core_file_matches_executable_p' -................................ - -*Synopsis* - boolean core_file_matches_executable_p - (bfd *core_bfd, bfd *exec_bfd); - *Description* -Return `true' if the core file attached to CORE_BFD was generated by a -run of the executable file attached to EXEC_BFD, `false' otherwise. - -File: bfd.info, Node: Targets, Next: Architectures, Prev: Core Files, Up: BFD front end - -Targets -======= - -*Description* -Each port of BFD to a different machine requries the creation of a -target back end. All the back end provides to the root part of BFD is a -structure containing pointers to functions which perform certain low -level operations on files. BFD translates the applications's requests -through a pointer into calls to the back end routines. - - When a file is opened with `bfd_openr', its format and target are -unknown. BFD uses various mechanisms to determine how to interpret the -file. The operations performed are: - - * Create a BFD by calling the internal routine `_bfd_new_bfd', then - call `bfd_find_target' with the target string supplied to - `bfd_openr' and the new BFD pointer. - - * If a null target string was provided to `bfd_find_target', look up - the environment variable `GNUTARGET' and use that as the target - string. - - * If the target string is still `NULL', or the target string is - `default', then use the first item in the target vector as the - target type, and set `target_defaulted' in the BFD to cause - `bfd_check_format' to loop through all the targets. *Note - bfd_target::. *Note Formats::. - - * Otherwise, inspect the elements in the target vector one by one, - until a match on target name is found. When found, use it. - - * Otherwise return the error `bfd_error_invalid_target' to - `bfd_openr'. - - * `bfd_openr' attempts to open the file using `bfd_open_file', and - returns the BFD. Once the BFD has been opened and the target -selected, the file format may be determined. This is done by calling -`bfd_check_format' on the BFD with a suggested format. If -`target_defaulted' has been set, each possible target type is tried to -see if it recognizes the specified format. `bfd_check_format' returns -`true' when the caller guesses right. - -* Menu: - -* bfd_target:: - - -File: bfd.info, Node: bfd_target, Prev: Targets, Up: Targets - -bfd_target ----------- - -*Description* -This structure contains everything that BFD knows about a target. It -includes things like its byte order, name, and which routines to call -to do various operations. - - Every BFD points to a target structure with its `xvec' member. - - The macros below are used to dispatch to functions through the -`bfd_target' vector. They are used in a number of macros further down -in `bfd.h', and are also used when calling various routines by hand -inside the BFD implementation. The ARGLIST argument must be -parenthesized; it contains all the arguments to the called function. - - They make the documentation (more) unpleasant to read, so if someone -wants to fix this and not break the above, please do. - #define BFD_SEND(bfd, message, arglist) \ - ((*((bfd)->xvec->message)) arglist) - - #ifdef DEBUG_BFD_SEND - #undef BFD_SEND - #define BFD_SEND(bfd, message, arglist) \ - (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ - ((*((bfd)->xvec->message)) arglist) : \ - (bfd_assert (__FILE__,__LINE__), NULL)) - #endif - For operations which index on the BFD format: - #define BFD_SEND_FMT(bfd, message, arglist) \ - (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) - - #ifdef DEBUG_BFD_SEND - #undef BFD_SEND_FMT - #define BFD_SEND_FMT(bfd, message, arglist) \ - (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ - (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) : \ - (bfd_assert (__FILE__,__LINE__), NULL)) - #endif - This is the structure which defines the type of BFD this is. The -`xvec' member of the struct `bfd' itself points here. Each module that -implements access to a different target under BFD, defines one of these. - - FIXME, these names should be rationalised with the names of the -entry points which call them. Too bad we can't have one macro to define -them both! - enum bfd_flavour { - bfd_target_unknown_flavour, - bfd_target_aout_flavour, - bfd_target_coff_flavour, - bfd_target_ecoff_flavour, - bfd_target_elf_flavour, - bfd_target_ieee_flavour, - bfd_target_nlm_flavour, - bfd_target_oasys_flavour, - bfd_target_tekhex_flavour, - bfd_target_srec_flavour, - bfd_target_ihex_flavour, - bfd_target_som_flavour, - bfd_target_os9k_flavour, - bfd_target_versados_flavour, - bfd_target_msdos_flavour, - bfd_target_evax_flavour - }; - - enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; - - /* Forward declaration. */ - typedef struct bfd_link_info _bfd_link_info; - - typedef struct bfd_target - { - Identifies the kind of target, e.g., SunOS4, Ultrix, etc. - char *name; - The "flavour" of a back end is a general indication about the -contents of a file. - enum bfd_flavour flavour; - The order of bytes within the data area of a file. - enum bfd_endian byteorder; - The order of bytes within the header parts of a file. - enum bfd_endian header_byteorder; - A mask of all the flags which an executable may have set - from the -set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'. - flagword object_flags; - A mask of all the flags which a section may have set - from the set -`SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'. - flagword section_flags; - The character normally found at the front of a symbol (if any), -perhaps `_'. - char symbol_leading_char; - The pad character for file names within an archive header. - char ar_pad_char; - The maximum number of characters in an archive header. - unsigned short ar_max_namelen; - Entries for byte swapping for data. These are different from the -other entry points, since they don't take a BFD asthe first argument. -Certain other handlers could do the same. - bfd_vma (*bfd_getx64) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *)); - void (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *)); - bfd_vma (*bfd_getx32) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_getx_signed_32) PARAMS ((const bfd_byte *)); - void (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *)); - bfd_vma (*bfd_getx16) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *)); - void (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *)); - Byte swapping for the headers - bfd_vma (*bfd_h_getx64) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *)); - void (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *)); - bfd_vma (*bfd_h_getx32) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_h_getx_signed_32) PARAMS ((const bfd_byte *)); - void (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *)); - bfd_vma (*bfd_h_getx16) PARAMS ((const bfd_byte *)); - bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *)); - void (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *)); - Format dependent routines: these are vectors of entry points within -the target vector structure, one for each format to check. - - Check the format of a file being read. Return a `bfd_target *' or -zero. - const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *)); - Set the format of a file being written. - boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *)); - Write cached information into a file being written, at `bfd_close'. - boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *)); - The general target vector. - - /* Generic entry points. */ - #define BFD_JUMP_TABLE_GENERIC(NAME)\ - CAT(NAME,_close_and_cleanup),\ - CAT(NAME,_bfd_free_cached_info),\ - CAT(NAME,_new_section_hook),\ - CAT(NAME,_get_section_contents),\ - CAT(NAME,_get_section_contents_in_window) - - /* Called when the BFD is being closed to do any necessary cleanup. */ - boolean (*_close_and_cleanup) PARAMS ((bfd *)); - /* Ask the BFD to free all cached information. */ - boolean (*_bfd_free_cached_info) PARAMS ((bfd *)); - /* Called when a new section is created. */ - boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr)); - /* Read the contents of a section. */ - boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, - file_ptr, bfd_size_type)); - boolean (*_bfd_get_section_contents_in_window) - PARAMS ((bfd *, sec_ptr, bfd_window *, - file_ptr, bfd_size_type)); - - /* Entry points to copy private data. */ - #define BFD_JUMP_TABLE_COPY(NAME)\ - CAT(NAME,_bfd_copy_private_bfd_data),\ - CAT(NAME,_bfd_merge_private_bfd_data),\ - CAT(NAME,_bfd_copy_private_section_data),\ - CAT(NAME,_bfd_copy_private_symbol_data),\ - CAT(NAME,_bfd_set_private_flags),\ - CAT(NAME,_bfd_print_private_bfd_data)\ - /* Called to copy BFD general private data from one object file - to another. */ - boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); - /* Called to merge BFD general private data from one object file - to a common output file when linking. */ - boolean (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *)); - /* Called to copy BFD private section data from one object file - to another. */ - boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, - bfd *, sec_ptr)); - /* Called to copy BFD private symbol data from one symbol - to another. */ - boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *, - bfd *, asymbol *)); - /* Called to set private backend flags */ - boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); - - /* Called to print private BFD data */ - boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR)); - - /* Core file entry points. */ - #define BFD_JUMP_TABLE_CORE(NAME)\ - CAT(NAME,_core_file_failing_command),\ - CAT(NAME,_core_file_failing_signal),\ - CAT(NAME,_core_file_matches_executable_p) - char * (*_core_file_failing_command) PARAMS ((bfd *)); - int (*_core_file_failing_signal) PARAMS ((bfd *)); - boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *)); - - /* Archive entry points. */ - #define BFD_JUMP_TABLE_ARCHIVE(NAME)\ - CAT(NAME,_slurp_armap),\ - CAT(NAME,_slurp_extended_name_table),\ - CAT(NAME,_construct_extended_name_table),\ - CAT(NAME,_truncate_arname),\ - CAT(NAME,_write_armap),\ - CAT(NAME,_read_ar_hdr),\ - CAT(NAME,_openr_next_archived_file),\ - CAT(NAME,_get_elt_at_index),\ - CAT(NAME,_generic_stat_arch_elt),\ - CAT(NAME,_update_armap_timestamp) - boolean (*_bfd_slurp_armap) PARAMS ((bfd *)); - boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *)); - boolean (*_bfd_construct_extended_name_table) - PARAMS ((bfd *, char **, bfd_size_type *, const char **)); - void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *)); - boolean (*write_armap) PARAMS ((bfd *arch, - unsigned int elength, - struct orl *map, - unsigned int orl_count, - int stridx)); - PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *)); - bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); - #define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i)) - bfd * (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex)); - int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); - boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *)); - - /* Entry points used for symbols. */ - #define BFD_JUMP_TABLE_SYMBOLS(NAME)\ - CAT(NAME,_get_symtab_upper_bound),\ - CAT(NAME,_get_symtab),\ - CAT(NAME,_make_empty_symbol),\ - CAT(NAME,_print_symbol),\ - CAT(NAME,_get_symbol_info),\ - CAT(NAME,_bfd_is_local_label_name),\ - CAT(NAME,_get_lineno),\ - CAT(NAME,_find_nearest_line),\ - CAT(NAME,_bfd_make_debug_symbol),\ - CAT(NAME,_read_minisymbols),\ - CAT(NAME,_minisymbol_to_symbol) - long (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *)); - long (*_bfd_canonicalize_symtab) PARAMS ((bfd *, - struct symbol_cache_entry **)); - struct symbol_cache_entry * - (*_bfd_make_empty_symbol) PARAMS ((bfd *)); - void (*_bfd_print_symbol) PARAMS ((bfd *, PTR, - struct symbol_cache_entry *, - bfd_print_symbol_type)); - #define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e)) - void (*_bfd_get_symbol_info) PARAMS ((bfd *, - struct symbol_cache_entry *, - symbol_info *)); - #define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e)) - boolean (*_bfd_is_local_label_name) PARAMS ((bfd *, const char *)); - - alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *)); - boolean (*_bfd_find_nearest_line) PARAMS ((bfd *abfd, - struct sec *section, struct symbol_cache_entry **symbols, - bfd_vma offset, CONST char **file, CONST char **func, - unsigned int *line)); - /* Back-door to allow format-aware applications to create debug symbols - while using BFD for everything else. Currently used by the assembler - when creating COFF files. */ - asymbol * (*_bfd_make_debug_symbol) PARAMS (( - bfd *abfd, - void *ptr, - unsigned long size)); - #define bfd_read_minisymbols(b, d, m, s) \ - BFD_SEND (b, _read_minisymbols, (b, d, m, s)) - long (*_read_minisymbols) PARAMS ((bfd *, boolean, PTR *, - unsigned int *)); - #define bfd_minisymbol_to_symbol(b, d, m, f) \ - BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) - asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR, - asymbol *)); - - /* Routines for relocs. */ - #define BFD_JUMP_TABLE_RELOCS(NAME)\ - CAT(NAME,_get_reloc_upper_bound),\ - CAT(NAME,_canonicalize_reloc),\ - CAT(NAME,_bfd_reloc_type_lookup) - long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr)); - long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, - struct symbol_cache_entry **)); - /* See documentation on reloc types. */ - reloc_howto_type * - (*reloc_type_lookup) PARAMS ((bfd *abfd, - bfd_reloc_code_real_type code)); - - /* Routines used when writing an object file. */ - #define BFD_JUMP_TABLE_WRITE(NAME)\ - CAT(NAME,_set_arch_mach),\ - CAT(NAME,_set_section_contents) - boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, - unsigned long)); - boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR, - file_ptr, bfd_size_type)); - - /* Routines used by the linker. */ - #define BFD_JUMP_TABLE_LINK(NAME)\ - CAT(NAME,_sizeof_headers),\ - CAT(NAME,_bfd_get_relocated_section_contents),\ - CAT(NAME,_bfd_relax_section),\ - CAT(NAME,_bfd_link_hash_table_create),\ - CAT(NAME,_bfd_link_add_symbols),\ - CAT(NAME,_bfd_final_link),\ - CAT(NAME,_bfd_link_split_section) - int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); - bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *, - struct bfd_link_info *, struct bfd_link_order *, - bfd_byte *data, boolean relocateable, - struct symbol_cache_entry **)); - - boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *, - struct bfd_link_info *, boolean *again)); - - /* Create a hash table for the linker. Different backends store - different information in this table. */ - struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *)); - - /* Add symbols from this object file into the hash table. */ - boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *)); - - /* Do a link based on the link_order structures attached to each - section of the BFD. */ - boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); - - /* Should this section be split up into smaller pieces during linking. */ - boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *)); - - /* Routines to handle dynamic symbols and relocs. */ - #define BFD_JUMP_TABLE_DYNAMIC(NAME)\ - CAT(NAME,_get_dynamic_symtab_upper_bound),\ - CAT(NAME,_canonicalize_dynamic_symtab),\ - CAT(NAME,_get_dynamic_reloc_upper_bound),\ - CAT(NAME,_canonicalize_dynamic_reloc) - /* Get the amount of memory required to hold the dynamic symbols. */ - long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *)); - /* Read in the dynamic symbols. */ - long (*_bfd_canonicalize_dynamic_symtab) - PARAMS ((bfd *, struct symbol_cache_entry **)); - /* Get the amount of memory required to hold the dynamic relocs. */ - long (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *)); - /* Read in the dynamic relocs. */ - long (*_bfd_canonicalize_dynamic_reloc) - PARAMS ((bfd *, arelent **, struct symbol_cache_entry **)); - Data for use by back-end routines, which isn't generic enough to -belong in this structure. - PTR backend_data; - } bfd_target; - -`bfd_set_default_target' -........................ - -*Synopsis* - boolean bfd_set_default_target (const char *name); - *Description* -Set the default target vector to use when recognizing a BFD. This -takes the name of the target, which may be a BFD target name or a -configuration triplet. -`bfd_find_target' -................. - -*Synopsis* - const bfd_target *bfd_find_target(CONST char *target_name, bfd *abfd); - *Description* -Return a pointer to the transfer vector for the object target named -TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the -environment variable `GNUTARGET'; if that is null or not defined, then -choose the first entry in the target list. Passing in the string -"default" or setting the environment variable to "default" will cause -the first entry in the target list to be returned, and -"target_defaulted" will be set in the BFD. This causes -`bfd_check_format' to loop over all the targets to find the one that -matches the file being read. -`bfd_target_list' -................. - -*Synopsis* - const char **bfd_target_list(void); - *Description* -Return a freshly malloced NULL-terminated vector of the names of all -the valid BFD targets. Do not modify the names. - -File: bfd.info, Node: Architectures, Next: Opening and Closing, Prev: Targets, Up: BFD front end - -Architectures -============= - -BFD keeps one atom in a BFD describing the architecture of the data -attached to the BFD: a pointer to a `bfd_arch_info_type'. - - Pointers to structures can be requested independently of a BFD so -that an architecture's information can be interrogated without access -to an open BFD. - - The architecture information is provided by each architecture -package. The set of default architectures is selected by the macro -`SELECT_ARCHITECTURES'. This is normally set up in the -`config/TARGET.mt' file of your choice. If the name is not defined, -then all the architectures supported are included. - - When BFD starts up, all the architectures are called with an -initialize method. It is up to the architecture back end to insert as -many items into the list of architectures as it wants to; generally -this would be one for each machine and one for the default case (an -item with a machine field of 0). - - BFD's idea of an architecture is implemented in `archures.c'. -bfd_architecture ----------------- - -*Description* -This enum gives the object file's CPU architecture, in a global -sense--i.e., what processor family does it belong to? Another field -indicates which processor within the family is in use. The machine -gives a number which distinguishes different versions of the -architecture, containing, for example, 2 and 3 for Intel i960 KA and -i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. - enum bfd_architecture - { - bfd_arch_unknown, /* File arch not known */ - bfd_arch_obscure, /* Arch known, not one of these */ - bfd_arch_m68k, /* Motorola 68xxx */ - bfd_arch_vax, /* DEC Vax */ - bfd_arch_i960, /* Intel 960 */ - /* The order of the following is important. - lower number indicates a machine type that - only accepts a subset of the instructions - available to machines with higher numbers. - The exception is the "ca", which is - incompatible with all other machines except - "core". */ - - #define bfd_mach_i960_core 1 - #define bfd_mach_i960_ka_sa 2 - #define bfd_mach_i960_kb_sb 3 - #define bfd_mach_i960_mc 4 - #define bfd_mach_i960_xa 5 - #define bfd_mach_i960_ca 6 - #define bfd_mach_i960_jx 7 - #define bfd_mach_i960_hx 8 - - bfd_arch_a29k, /* AMD 29000 */ - bfd_arch_sparc, /* SPARC */ - #define bfd_mach_sparc 1 - /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ - #define bfd_mach_sparc_sparclet 2 - #define bfd_mach_sparc_sparclite 3 - #define bfd_mach_sparc_v8plus 4 - #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */ - #define bfd_mach_sparc_v9 6 - #define bfd_mach_sparc_v9a 7 /* with ultrasparc add'ns */ - /* Nonzero if MACH has the v9 instruction set. */ - #define bfd_mach_sparc_v9_p(mach) \ - ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a) - bfd_arch_mips, /* MIPS Rxxxx */ - bfd_arch_i386, /* Intel 386 */ - #define bfd_mach_i386_i386 0 - #define bfd_mach_i386_i8086 1 - bfd_arch_we32k, /* AT&T WE32xxx */ - bfd_arch_tahoe, /* CCI/Harris Tahoe */ - bfd_arch_i860, /* Intel 860 */ - bfd_arch_romp, /* IBM ROMP PC/RT */ - bfd_arch_alliant, /* Alliant */ - bfd_arch_convex, /* Convex */ - bfd_arch_m88k, /* Motorola 88xxx */ - bfd_arch_pyramid, /* Pyramid Technology */ - bfd_arch_h8300, /* Hitachi H8/300 */ - #define bfd_mach_h8300 1 - #define bfd_mach_h8300h 2 - #define bfd_mach_h8300s 3 - bfd_arch_powerpc, /* PowerPC */ - bfd_arch_rs6000, /* IBM RS/6000 */ - bfd_arch_hppa, /* HP PA RISC */ - bfd_arch_d10v, /* Mitsubishi D10V */ - bfd_arch_z8k, /* Zilog Z8000 */ - #define bfd_mach_z8001 1 - #define bfd_mach_z8002 2 - bfd_arch_h8500, /* Hitachi H8/500 */ - bfd_arch_sh, /* Hitachi SH */ - bfd_arch_alpha, /* Dec Alpha */ - bfd_arch_arm, /* Advanced Risc Machines ARM */ - bfd_arch_ns32k, /* National Semiconductors ns32000 */ - bfd_arch_w65, /* WDC 65816 */ - bfd_arch_m32r, /* Mitsubishi M32R/D */ - bfd_arch_mn10200, /* Matsushita MN10200 */ - bfd_arch_mn10300, /* Matsushita MN10300 */ - bfd_arch_last - }; - -bfd_arch_info -------------- - -*Description* -This structure contains information on architectures for use within BFD. - - typedef struct bfd_arch_info - { - int bits_per_word; - int bits_per_address; - int bits_per_byte; - enum bfd_architecture arch; - unsigned long mach; - const char *arch_name; - const char *printable_name; - unsigned int section_align_power; - /* true if this is the default machine for the architecture */ - boolean the_default; - const struct bfd_arch_info * (*compatible) - PARAMS ((const struct bfd_arch_info *a, - const struct bfd_arch_info *b)); - - boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); - - const struct bfd_arch_info *next; - } bfd_arch_info_type; - -`bfd_printable_name' -.................... - -*Synopsis* - const char *bfd_printable_name(bfd *abfd); - *Description* -Return a printable string representing the architecture and machine -from the pointer to the architecture info structure. -`bfd_scan_arch' -............... - -*Synopsis* - const bfd_arch_info_type *bfd_scan_arch(const char *string); - *Description* -Figure out if BFD supports any cpu which could be described with the -name STRING. Return a pointer to an `arch_info' structure if a machine -is found, otherwise NULL. -`bfd_arch_get_compatible' -......................... - -*Synopsis* - const bfd_arch_info_type *bfd_arch_get_compatible( - const bfd *abfd, - const bfd *bbfd); - *Description* -Determine whether two BFDs' architectures and machine types are -compatible. Calculates the lowest common denominator between the two -architectures and machine types implied by the BFDs and returns a -pointer to an `arch_info' structure describing the compatible machine. -`bfd_default_arch_struct' -......................... - -*Description* -The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which -has been initialized to a fairly generic state. A BFD starts life by -pointing to this structure, until the correct back end has determined -the real architecture of the file. - extern const bfd_arch_info_type bfd_default_arch_struct; - -`bfd_set_arch_info' -................... - -*Synopsis* - void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg); - *Description* -Set the architecture info of ABFD to ARG. -`bfd_default_set_arch_mach' -........................... - -*Synopsis* - boolean bfd_default_set_arch_mach(bfd *abfd, - enum bfd_architecture arch, - unsigned long mach); - *Description* -Set the architecture and machine type in BFD ABFD to ARCH and MACH. -Find the correct pointer to a structure and insert it into the -`arch_info' pointer. -`bfd_get_arch' -.............. - -*Synopsis* - enum bfd_architecture bfd_get_arch(bfd *abfd); - *Description* -Return the enumerated type which describes the BFD ABFD's architecture. -`bfd_get_mach' -.............. - -*Synopsis* - unsigned long bfd_get_mach(bfd *abfd); - *Description* -Return the long type which describes the BFD ABFD's machine. -`bfd_arch_bits_per_byte' -........................ - -*Synopsis* - unsigned int bfd_arch_bits_per_byte(bfd *abfd); - *Description* -Return the number of bits in one of the BFD ABFD's architecture's bytes. -`bfd_arch_bits_per_address' -........................... - -*Synopsis* - unsigned int bfd_arch_bits_per_address(bfd *abfd); - *Description* -Return the number of bits in one of the BFD ABFD's architecture's -addresses. -`bfd_default_compatible' -........................ - -*Synopsis* - const bfd_arch_info_type *bfd_default_compatible - (const bfd_arch_info_type *a, - const bfd_arch_info_type *b); - *Description* -The default function for testing for compatibility. -`bfd_default_scan' -.................. - -*Synopsis* - boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string); - *Description* -The default function for working out whether this is an architecture -hit and a machine hit. -`bfd_get_arch_info' -................... - -*Synopsis* - const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd); - *Description* -Return the architecture info struct in ABFD. -`bfd_lookup_arch' -................. - -*Synopsis* - const bfd_arch_info_type *bfd_lookup_arch - (enum bfd_architecture - arch, - unsigned long machine); - *Description* -Look for the architecure info structure which matches the arguments -ARCH and MACHINE. A machine of 0 matches the machine/architecture -structure which marks itself as the default. -`bfd_printable_arch_mach' -......................... - -*Synopsis* - const char *bfd_printable_arch_mach - (enum bfd_architecture arch, unsigned long machine); - *Description* -Return a printable string representing the architecture and machine -type. - - This routine is depreciated. - -File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end - -Opening and closing BFDs -======================== - -`bfd_openr' -........... - -*Synopsis* - bfd *bfd_openr(CONST char *filename, CONST char *target); - *Description* -Open the file FILENAME (using `fopen') with the target TARGET. Return -a pointer to the created BFD. - - Calls `bfd_find_target', so TARGET is interpreted as by that -function. - - If `NULL' is returned then an error has occured. Possible errors -are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call' -error. -`bfd_fdopenr' -............. - -*Synopsis* - bfd *bfd_fdopenr(CONST char *filename, CONST char *target, int fd); - *Description* -`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'. It -opens a BFD on a file already described by the FD supplied. - - When the file is later `bfd_close'd, the file descriptor will be -closed. - - If the caller desires that this file descriptor be cached by BFD -(opened as needed, closed as needed to free descriptors for other -opens), with the supplied FD used as an initial file descriptor (but -subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the -returned BFD. The default is to assume no cacheing; the file -descriptor will remain open until `bfd_close', and will not be affected -by BFD operations on other files. - - Possible errors are `bfd_error_no_memory', -`bfd_error_invalid_target' and `bfd_error_system_call'. -`bfd_openstreamr' -................. - -*Synopsis* - bfd *bfd_openstreamr(const char *, const char *, PTR); - *Description* -Open a BFD for read access on an existing stdio stream. When the BFD -is passed to `bfd_close', the stream will be closed. -`bfd_openw' -........... - -*Synopsis* - bfd *bfd_openw(CONST char *filename, CONST char *target); - *Description* -Create a BFD, associated with file FILENAME, using the file format -TARGET, and return a pointer to it. - - Possible errors are `bfd_error_system_call', `bfd_error_no_memory', -`bfd_error_invalid_target'. -`bfd_close' -........... - -*Synopsis* - boolean bfd_close(bfd *abfd); - *Description* -Close a BFD. If the BFD was open for writing, then pending operations -are completed and the file written out and closed. If the created file -is executable, then `chmod' is called to mark it as such. - - All memory attached to the BFD is released. - - The file descriptor associated with the BFD is closed (even if it -was passed in to BFD by `bfd_fdopenr'). -*Returns* -`true' is returned if all is ok, otherwise `false'. -`bfd_close_all_done' -.................... - -*Synopsis* - boolean bfd_close_all_done(bfd *); - *Description* -Close a BFD. Differs from `bfd_close' since it does not complete any -pending operations. This routine would be used if the application had -just used BFD for swapping and didn't want to use any of the writing -code. - - If the created file is executable, then `chmod' is called to mark it -as such. - - All memory attached to the BFD is released. -*Returns* -`true' is returned if all is ok, otherwise `false'. -`bfd_create' -............ - -*Synopsis* - bfd *bfd_create(CONST char *filename, bfd *templ); - *Description* -Create a new BFD in the manner of `bfd_openw', but without opening a -file. The new BFD takes the target from the target used by TEMPLATE. The -format is always set to `bfd_object'. -`bfd_alloc' -........... - -*Synopsis* - PTR bfd_alloc (bfd *abfd, size_t wanted); - *Description* -Allocate a block of WANTED bytes of memory attached to `abfd' and -return a pointer to it. diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info-4 b/gnu/usr.bin/binutils/bfd/doc/bfd.info-4 deleted file mode 100644 index 430d0df0ba6..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info-4 +++ /dev/null @@ -1,1023 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: Internal, Next: File Caching, Prev: Opening and Closing, Up: BFD front end - -Internal functions -================== - -*Description* -These routines are used within BFD. They are not intended for export, -but are documented here for completeness. -`bfd_write_bigendian_4byte_int' -............................... - -*Synopsis* - void bfd_write_bigendian_4byte_int(bfd *abfd, int i); - *Description* -Write a 4 byte integer I to the output BFD ABFD, in big endian order -regardless of what else is going on. This is useful in archives. -`bfd_put_size' -.............. - -`bfd_get_size' -.............. - -*Description* -These macros as used for reading and writing raw data in sections; each -access (except for bytes) is vectored through the target format of the -BFD and mangled accordingly. The mangling performs any necessary endian -translations and removes alignment restrictions. Note that types -accepted and returned by these macros are identical so they can be -swapped around in macros--for example, `libaout.h' defines `GET_WORD' -to either `bfd_get_32' or `bfd_get_64'. - - In the put routines, VAL must be a `bfd_vma'. If we are on a system -without prototypes, the caller is responsible for making sure that is -true, with a cast if necessary. We don't cast them in the macro -definitions because that would prevent `lint' or `gcc -Wall' from -detecting sins such as passing a pointer. To detect calling these with -less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit -`bfd_vma''s. - - /* Byte swapping macros for user section data. */ - - #define bfd_put_8(abfd, val, ptr) \ - (*((unsigned char *)(ptr)) = (unsigned char)(val)) - #define bfd_put_signed_8 \ - bfd_put_8 - #define bfd_get_8(abfd, ptr) \ - (*(unsigned char *)(ptr)) - #define bfd_get_signed_8(abfd, ptr) \ - ((*(unsigned char *)(ptr) ^ 0x80) - 0x80) - - #define bfd_put_16(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_putx16, ((val),(ptr))) - #define bfd_put_signed_16 \ - bfd_put_16 - #define bfd_get_16(abfd, ptr) \ - BFD_SEND(abfd, bfd_getx16, (ptr)) - #define bfd_get_signed_16(abfd, ptr) \ - BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) - - #define bfd_put_32(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_putx32, ((val),(ptr))) - #define bfd_put_signed_32 \ - bfd_put_32 - #define bfd_get_32(abfd, ptr) \ - BFD_SEND(abfd, bfd_getx32, (ptr)) - #define bfd_get_signed_32(abfd, ptr) \ - BFD_SEND(abfd, bfd_getx_signed_32, (ptr)) - - #define bfd_put_64(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_putx64, ((val), (ptr))) - #define bfd_put_signed_64 \ - bfd_put_64 - #define bfd_get_64(abfd, ptr) \ - BFD_SEND(abfd, bfd_getx64, (ptr)) - #define bfd_get_signed_64(abfd, ptr) \ - BFD_SEND(abfd, bfd_getx_signed_64, (ptr)) - -`bfd_h_put_size' -................ - -*Description* -These macros have the same function as their `bfd_get_x' bretheren, -except that they are used for removing information for the header -records of object files. Believe it or not, some object files keep -their header records in big endian order and their data in little -endian order. - - /* Byte swapping macros for file header data. */ - - #define bfd_h_put_8(abfd, val, ptr) \ - bfd_put_8 (abfd, val, ptr) - #define bfd_h_put_signed_8(abfd, val, ptr) \ - bfd_put_8 (abfd, val, ptr) - #define bfd_h_get_8(abfd, ptr) \ - bfd_get_8 (abfd, ptr) - #define bfd_h_get_signed_8(abfd, ptr) \ - bfd_get_signed_8 (abfd, ptr) - - #define bfd_h_put_16(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_h_putx16,(val,ptr)) - #define bfd_h_put_signed_16 \ - bfd_h_put_16 - #define bfd_h_get_16(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx16,(ptr)) - #define bfd_h_get_signed_16(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx_signed_16, (ptr)) - - #define bfd_h_put_32(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_h_putx32,(val,ptr)) - #define bfd_h_put_signed_32 \ - bfd_h_put_32 - #define bfd_h_get_32(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx32,(ptr)) - #define bfd_h_get_signed_32(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx_signed_32, (ptr)) - - #define bfd_h_put_64(abfd, val, ptr) \ - BFD_SEND(abfd, bfd_h_putx64,(val, ptr)) - #define bfd_h_put_signed_64 \ - bfd_h_put_64 - #define bfd_h_get_64(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx64,(ptr)) - #define bfd_h_get_signed_64(abfd, ptr) \ - BFD_SEND(abfd, bfd_h_getx_signed_64, (ptr)) - -`bfd_log2' -.......... - -*Synopsis* - unsigned int bfd_log2(bfd_vma x); - *Description* -Return the log base 2 of the value supplied, rounded up. E.g., an X of -1025 returns 11. - -File: bfd.info, Node: File Caching, Next: Linker Functions, Prev: Internal, Up: BFD front end - -File caching -============ - -The file caching mechanism is embedded within BFD and allows the -application to open as many BFDs as it wants without regard to the -underlying operating system's file descriptor limit (often as low as 20 -open files). The module in `cache.c' maintains a least recently used -list of `BFD_CACHE_MAX_OPEN' files, and exports the name -`bfd_cache_lookup', which runs around and makes sure that the required -BFD is open. If not, then it chooses a file to close, closes it and -opens the one wanted, returning its file handle. -`BFD_CACHE_MAX_OPEN macro' -.......................... - -*Description* -The maximum number of files which the cache will keep open at one time. - #define BFD_CACHE_MAX_OPEN 10 - -`bfd_last_cache' -................ - -*Synopsis* - extern bfd *bfd_last_cache; - *Description* -Zero, or a pointer to the topmost BFD on the chain. This is used by -the `bfd_cache_lookup' macro in `libbfd.h' to determine when it can -avoid a function call. -`bfd_cache_lookup' -.................. - -*Description* -Check to see if the required BFD is the same as the last one looked up. -If so, then it can use the stream in the BFD with impunity, since it -can't have changed since the last lookup; otherwise, it has to perform -the complicated lookup function. - #define bfd_cache_lookup(x) \ - ((x)==bfd_last_cache? \ - (FILE*)(bfd_last_cache->iostream): \ - bfd_cache_lookup_worker(x)) - -`bfd_cache_init' -................ - -*Synopsis* - boolean bfd_cache_init (bfd *abfd); - *Description* -Add a newly opened BFD to the cache. -`bfd_cache_close' -................. - -*Synopsis* - boolean bfd_cache_close (bfd *abfd); - *Description* -Remove the BFD ABFD from the cache. If the attached file is open, then -close it too. -*Returns* -`false' is returned if closing the file fails, `true' is returned if -all is well. -`bfd_open_file' -............... - -*Synopsis* - FILE* bfd_open_file(bfd *abfd); - *Description* -Call the OS to open a file for ABFD. Return the `FILE *' (possibly -`NULL') that results from this operation. Set up the BFD so that -future accesses know the file is open. If the `FILE *' returned is -`NULL', then it won't have been put in the cache, so it won't have to -be removed from it. -`bfd_cache_lookup_worker' -......................... - -*Synopsis* - FILE *bfd_cache_lookup_worker(bfd *abfd); - *Description* -Called when the macro `bfd_cache_lookup' fails to find a quick answer. -Find a file descriptor for ABFD. If necessary, it open it. If there -are already more than `BFD_CACHE_MAX_OPEN' files open, it tries to -close one first, to avoid running out of file descriptors. - -File: bfd.info, Node: Linker Functions, Next: Hash Tables, Prev: File Caching, Up: BFD front end - -Linker Functions -================ - -The linker uses three special entry points in the BFD target vector. -It is not necessary to write special routines for these entry points -when creating a new BFD back end, since generic versions are provided. -However, writing them can speed up linking and make it use -significantly less runtime memory. - - The first routine creates a hash table used by the other routines. -The second routine adds the symbols from an object file to the hash -table. The third routine takes all the object files and links them -together to create the output file. These routines are designed so -that the linker proper does not need to know anything about the symbols -in the object files that it is linking. The linker merely arranges the -sections as directed by the linker script and lets BFD handle the -details of symbols and relocs. - - The second routine and third routines are passed a pointer to a -`struct bfd_link_info' structure (defined in `bfdlink.h') which holds -information relevant to the link, including the linker hash table -(which was created by the first routine) and a set of callback -functions to the linker proper. - - The generic linker routines are in `linker.c', and use the header -file `genlink.h'. As of this writing, the only back ends which have -implemented versions of these routines are a.out (in `aoutx.h') and -ECOFF (in `ecoff.c'). The a.out routines are used as examples -throughout this section. - -* Menu: - -* Creating a Linker Hash Table:: -* Adding Symbols to the Hash Table:: -* Performing the Final Link:: - - -File: bfd.info, Node: Creating a Linker Hash Table, Next: Adding Symbols to the Hash Table, Prev: Linker Functions, Up: Linker Functions - -Creating a linker hash table ----------------------------- - -The linker routines must create a hash table, which must be derived -from `struct bfd_link_hash_table' described in `bfdlink.c'. *Note Hash -Tables:: for information on how to create a derived hash table. This -entry point is called using the target vector of the linker output file. - - The `_bfd_link_hash_table_create' entry point must allocate and -initialize an instance of the desired hash table. If the back end does -not require any additional information to be stored with the entries in -the hash table, the entry point may simply create a `struct -bfd_link_hash_table'. Most likely, however, some additional -information will be needed. - - For example, with each entry in the hash table the a.out linker -keeps the index the symbol has in the final output file (this index -number is used so that when doing a relocateable link the symbol index -used in the output file can be quickly filled in when copying over a -reloc). The a.out linker code defines the required structures and -functions for a hash table derived from `struct bfd_link_hash_table'. -The a.out linker hash table is created by the function -`NAME(aout,link_hash_table_create)'; it simply allocates space for the -hash table, initializes it, and returns a pointer to it. - - When writing the linker routines for a new back end, you will -generally not know exactly which fields will be required until you have -finished. You should simply create a new hash table which defines no -additional fields, and then simply add fields as they become necessary. - -File: bfd.info, Node: Adding Symbols to the Hash Table, Next: Performing the Final Link, Prev: Creating a Linker Hash Table, Up: Linker Functions - -Adding symbols to the hash table --------------------------------- - -The linker proper will call the `_bfd_link_add_symbols' entry point for -each object file or archive which is to be linked (typically these are -the files named on the command line, but some may also come from the -linker script). The entry point is responsible for examining the file. -For an object file, BFD must add any relevant symbol information to -the hash table. For an archive, BFD must determine which elements of -the archive should be used and adding them to the link. - - The a.out version of this entry point is -`NAME(aout,link_add_symbols)'. - -* Menu: - -* Differing file formats:: -* Adding symbols from an object file:: -* Adding symbols from an archive:: - - -File: bfd.info, Node: Differing file formats, Next: Adding symbols from an object file, Prev: Adding Symbols to the Hash Table, Up: Adding Symbols to the Hash Table - -Differing file formats -...................... - -Normally all the files involved in a link will be of the same format, -but it is also possible to link together different format object files, -and the back end must support that. The `_bfd_link_add_symbols' entry -point is called via the target vector of the file to be added. This -has an important consequence: the function may not assume that the hash -table is the type created by the corresponding -`_bfd_link_hash_table_create' vector. All the `_bfd_link_add_symbols' -function can assume about the hash table is that it is derived from -`struct bfd_link_hash_table'. - - Sometimes the `_bfd_link_add_symbols' function must store some -information in the hash table entry to be used by the `_bfd_final_link' -function. In such a case the `creator' field of the hash table must be -checked to make sure that the hash table was created by an object file -of the same format. - - The `_bfd_final_link' routine must be prepared to handle a hash -entry without any extra information added by the -`_bfd_link_add_symbols' function. A hash entry without extra -information will also occur when the linker script directs the linker -to create a symbol. Note that, regardless of how a hash table entry is -added, all the fields will be initialized to some sort of null value by -the hash table entry initialization function. - - See `ecoff_link_add_externals' for an example of how to check the -`creator' field before saving information (in this case, the ECOFF -external symbol debugging information) in a hash table entry. - -File: bfd.info, Node: Adding symbols from an object file, Next: Adding symbols from an archive, Prev: Differing file formats, Up: Adding Symbols to the Hash Table - -Adding symbols from an object file -.................................. - -When the `_bfd_link_add_symbols' routine is passed an object file, it -must add all externally visible symbols in that object file to the hash -table. The actual work of adding the symbol to the hash table is -normally handled by the function `_bfd_generic_link_add_one_symbol'. -The `_bfd_link_add_symbols' routine is responsible for reading all the -symbols from the object file and passing the correct information to -`_bfd_generic_link_add_one_symbol'. - - The `_bfd_link_add_symbols' routine should not use -`bfd_canonicalize_symtab' to read the symbols. The point of providing -this routine is to avoid the overhead of converting the symbols into -generic `asymbol' structures. - - `_bfd_generic_link_add_one_symbol' handles the details of combining -common symbols, warning about multiple definitions, and so forth. It -takes arguments which describe the symbol to add, notably symbol flags, -a section, and an offset. The symbol flags include such things as -`BSF_WEAK' or `BSF_INDIRECT'. The section is a section in the object -file, or something like `bfd_und_section_ptr' for an undefined symbol -or `bfd_com_section_ptr' for a common symbol. - - If the `_bfd_final_link' routine is also going to need to read the -symbol information, the `_bfd_link_add_symbols' routine should save it -somewhere attached to the object file BFD. However, the information -should only be saved if the `keep_memory' field of the `info' argument -is true, so that the `-no-keep-memory' linker switch is effective. - - The a.out function which adds symbols from an object file is -`aout_link_add_object_symbols', and most of the interesting work is in -`aout_link_add_symbols'. The latter saves pointers to the hash tables -entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol -number, so that the `_bfd_final_link' routine does not have to call the -hash table lookup routine to locate the entry. - -File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table - -Adding symbols from an archive -.............................. - -When the `_bfd_link_add_symbols' routine is passed an archive, it must -look through the symbols defined by the archive and decide which -elements of the archive should be included in the link. For each such -element it must call the `add_archive_element' linker callback, and it -must add the symbols from the object file to the linker hash table. - - In most cases the work of looking through the symbols in the archive -should be done by the `_bfd_generic_link_add_archive_symbols' function. -This function builds a hash table from the archive symbol table and -looks through the list of undefined symbols to see which elements -should be included. `_bfd_generic_link_add_archive_symbols' is passed -a function to call to make the final decision about adding an archive -element to the link and to do the actual work of adding the symbols to -the linker hash table. - - The function passed to `_bfd_generic_link_add_archive_symbols' must -read the symbols of the archive element and decide whether the archive -element should be included in the link. If the element is to be -included, the `add_archive_element' linker callback routine must be -called with the element as an argument, and the elements symbols must -be added to the linker hash table just as though the element had itself -been passed to the `_bfd_link_add_symbols' function. - - When the a.out `_bfd_link_add_symbols' function receives an archive, -it calls `_bfd_generic_link_add_archive_symbols' passing -`aout_link_check_archive_element' as the function argument. -`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'. -If the latter decides to add the element (an element is only added if -it provides a real, non-common, definition for a previously undefined -or common symbol) it calls the `add_archive_element' callback and then -`aout_link_check_archive_element' calls `aout_link_add_symbols' to -actually add the symbols to the linker hash table. - - The ECOFF back end is unusual in that it does not normally call -`_bfd_generic_link_add_archive_symbols', because ECOFF archives already -contain a hash table of symbols. The ECOFF back end searches the -archive itself to avoid the overhead of creating a new hash table. - -File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions - -Performing the final link -------------------------- - -When all the input files have been processed, the linker calls the -`_bfd_final_link' entry point of the output BFD. This routine is -responsible for producing the final output file, which has several -aspects. It must relocate the contents of the input sections and copy -the data into the output sections. It must build an output symbol -table including any local symbols from the input files and the global -symbols from the hash table. When producing relocateable output, it -must modify the input relocs and write them into the output file. -There may also be object format dependent work to be done. - - The linker will also call the `write_object_contents' entry point -when the BFD is closed. The two entry points must work together in -order to produce the correct output file. - - The details of how this works are inevitably dependent upon the -specific object file format. The a.out `_bfd_final_link' routine is -`NAME(aout,final_link)'. - -* Menu: - -* Information provided by the linker:: -* Relocating the section contents:: -* Writing the symbol table:: - - -File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link - -Information provided by the linker -.................................. - -Before the linker calls the `_bfd_final_link' entry point, it sets up -some data structures for the function to use. - - The `input_bfds' field of the `bfd_link_info' structure will point -to a list of all the input files included in the link. These files are -linked through the `link_next' field of the `bfd' structure. - - Each section in the output file will have a list of `link_order' -structures attached to the `link_order_head' field (the `link_order' -structure is defined in `bfdlink.h'). These structures describe how to -create the contents of the output section in terms of the contents of -various input sections, fill constants, and, eventually, other types of -information. They also describe relocs that must be created by the BFD -backend, but do not correspond to any input file; this is used to -support -Ur, which builds constructors while generating a relocateable -object file. - -File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link - -Relocating the section contents -............................... - -The `_bfd_final_link' function should look through the `link_order' -structures attached to each section of the output file. Each -`link_order' structure should either be handled specially, or it should -be passed to the function `_bfd_default_link_order' which will do the -right thing (`_bfd_default_link_order' is defined in `linker.c'). - - For efficiency, a `link_order' of type `bfd_indirect_link_order' -whose associated section belongs to a BFD of the same format as the -output BFD must be handled specially. This type of `link_order' -describes part of an output section in terms of a section belonging to -one of the input files. The `_bfd_final_link' function should read the -contents of the section and any associated relocs, apply the relocs to -the section contents, and write out the modified section contents. If -performing a relocateable link, the relocs themselves must also be -modified and written out. - - The functions `_bfd_relocate_contents' and -`_bfd_final_link_relocate' provide some general support for performing -the actual relocations, notably overflow checking. Their arguments -include information about the symbol the relocation is against and a -`reloc_howto_type' argument which describes the relocation to perform. -These functions are defined in `reloc.c'. - - The a.out function which handles reading, relocating, and writing -section contents is `aout_link_input_section'. The actual relocation -is done in `aout_link_input_section_std' and -`aout_link_input_section_ext'. - -File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link - -Writing the symbol table -........................ - -The `_bfd_final_link' function must gather all the symbols in the input -files and write them out. It must also write out all the symbols in -the global hash table. This must be controlled by the `strip' and -`discard' fields of the `bfd_link_info' structure. - - The local symbols of the input files will not have been entered into -the linker hash table. The `_bfd_final_link' routine must consider -each input file and include the symbols in the output file. It may be -convenient to do this when looking through the `link_order' structures, -or it may be done by stepping through the `input_bfds' list. - - The `_bfd_final_link' routine must also traverse the global hash -table to gather all the externally visible symbols. It is possible -that most of the externally visible symbols may be written out when -considering the symbols of each input file, but it is still necessary -to traverse the hash table since the linker script may have defined -some symbols that are not in any of the input files. - - The `strip' field of the `bfd_link_info' structure controls which -symbols are written out. The possible values are listed in -`bfdlink.h'. If the value is `strip_some', then the `keep_hash' field -of the `bfd_link_info' structure is a hash table of symbols to keep; -each symbol should be looked up in this hash table, and only symbols -which are present should be included in the output file. - - If the `strip' field of the `bfd_link_info' structure permits local -symbols to be written out, the `discard' field is used to further -controls which local symbols are included in the output file. If the -value is `discard_l', then all local symbols which begin with a certain -prefix are discarded; this is controlled by the -`bfd_is_local_label_name' entry point. - - The a.out backend handles symbols by calling -`aout_link_write_symbols' on each input BFD and then traversing the -global hash table with the function `aout_link_write_other_symbol'. It -builds a string table while writing out the symbols, which is written -to the output file at the end of `NAME(aout,final_link)'. -`bfd_link_split_section' -........................ - -*Synopsis* - boolean bfd_link_split_section(bfd *abfd, asection *sec); - *Description* -Return nonzero if SEC should be split during a reloceatable or final -link. - #define bfd_link_split_section(abfd, sec) \ - BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) - - -File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end - -Hash Tables -=========== - -BFD provides a simple set of hash table functions. Routines are -provided to initialize a hash table, to free a hash table, to look up a -string in a hash table and optionally create an entry for it, and to -traverse a hash table. There is currently no routine to delete an -string from a hash table. - - The basic hash table does not permit any data to be stored with a -string. However, a hash table is designed to present a base class from -which other types of hash tables may be derived. These derived types -may store additional information with the string. Hash tables were -implemented in this way, rather than simply providing a data pointer in -a hash table entry, because they were designed for use by the linker -back ends. The linker may create thousands of hash table entries, and -the overhead of allocating private data and storing and following -pointers becomes noticeable. - - The basic hash table code is in `hash.c'. - -* Menu: - -* Creating and Freeing a Hash Table:: -* Looking Up or Entering a String:: -* Traversing a Hash Table:: -* Deriving a New Hash Table Type:: - - -File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables - -Creating and freeing a hash table ---------------------------------- - -To create a hash table, create an instance of a `struct bfd_hash_table' -(defined in `bfd.h') and call `bfd_hash_table_init' (if you know -approximately how many entries you will need, the function -`bfd_hash_table_init_n', which takes a SIZE argument, may be used). -`bfd_hash_table_init' returns `false' if some sort of error occurs. - - The function `bfd_hash_table_init' take as an argument a function to -use to create new entries. For a basic hash table, use the function -`bfd_hash_newfunc'. *Note Deriving a New Hash Table Type:: for why you -would want to use a different value for this argument. - - `bfd_hash_table_init' will create an objalloc which will be used to -allocate new entries. You may allocate memory on this objalloc using -`bfd_hash_allocate'. - - Use `bfd_hash_table_free' to free up all the memory that has been -allocated for a hash table. This will not free up the `struct -bfd_hash_table' itself, which you must provide. - -File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables - -Looking up or entering a string -------------------------------- - -The function `bfd_hash_lookup' is used both to look up a string in the -hash table and to create a new entry. - - If the CREATE argument is `false', `bfd_hash_lookup' will look up a -string. If the string is found, it will returns a pointer to a `struct -bfd_hash_entry'. If the string is not found in the table -`bfd_hash_lookup' will return `NULL'. You should not modify any of the -fields in the returns `struct bfd_hash_entry'. - - If the CREATE argument is `true', the string will be entered into -the hash table if it is not already there. Either way a pointer to a -`struct bfd_hash_entry' will be returned, either to the existing -structure or to a newly created one. In this case, a `NULL' return -means that an error occurred. - - If the CREATE argument is `true', and a new entry is created, the -COPY argument is used to decide whether to copy the string onto the -hash table objalloc or not. If COPY is passed as `false', you must be -careful not to deallocate or modify the string as long as the hash table -exists. - -File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables - -Traversing a hash table ------------------------ - -The function `bfd_hash_traverse' may be used to traverse a hash table, -calling a function on each element. The traversal is done in a random -order. - - `bfd_hash_traverse' takes as arguments a function and a generic -`void *' pointer. The function is called with a hash table entry (a -`struct bfd_hash_entry *') and the generic pointer passed to -`bfd_hash_traverse'. The function must return a `boolean' value, which -indicates whether to continue traversing the hash table. If the -function returns `false', `bfd_hash_traverse' will stop the traversal -and return immediately. - -File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables - -Deriving a new hash table type ------------------------------- - -Many uses of hash tables want to store additional information which -each entry in the hash table. Some also find it convenient to store -additional information with the hash table itself. This may be done -using a derived hash table. - - Since C is not an object oriented language, creating a derived hash -table requires sticking together some boilerplate routines with a few -differences specific to the type of hash table you want to create. - - An example of a derived hash table is the linker hash table. The -structures for this are defined in `bfdlink.h'. The functions are in -`linker.c'. - - You may also derive a hash table from an already derived hash table. -For example, the a.out linker backend code uses a hash table derived -from the linker hash table. - -* Menu: - -* Define the Derived Structures:: -* Write the Derived Creation Routine:: -* Write Other Derived Routines:: - - -File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type - -Define the derived structures -............................. - -You must define a structure for an entry in the hash table, and a -structure for the hash table itself. - - The first field in the structure for an entry in the hash table must -be of the type used for an entry in the hash table you are deriving -from. If you are deriving from a basic hash table this is `struct -bfd_hash_entry', which is defined in `bfd.h'. The first field in the -structure for the hash table itself must be of the type of the hash -table you are deriving from itself. If you are deriving from a basic -hash table, this is `struct bfd_hash_table'. - - For example, the linker hash table defines `struct -bfd_link_hash_entry' (in `bfdlink.h'). The first field, `root', is of -type `struct bfd_hash_entry'. Similarly, the first field in `struct -bfd_link_hash_table', `table', is of type `struct bfd_hash_table'. - -File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type - -Write the derived creation routine -.................................. - -You must write a routine which will create and initialize an entry in -the hash table. This routine is passed as the function argument to -`bfd_hash_table_init'. - - In order to permit other hash tables to be derived from the hash -table you are creating, this routine must be written in a standard way. - - The first argument to the creation routine is a pointer to a hash -table entry. This may be `NULL', in which case the routine should -allocate the right amount of space. Otherwise the space has already -been allocated by a hash table type derived from this one. - - After allocating space, the creation routine must call the creation -routine of the hash table type it is derived from, passing in a pointer -to the space it just allocated. This will initialize any fields used -by the base hash table. - - Finally the creation routine must initialize any local fields for -the new hash table type. - - Here is a boilerplate example of a creation routine. FUNCTION_NAME -is the name of the routine. ENTRY_TYPE is the type of an entry in the -hash table you are creating. BASE_NEWFUNC is the name of the creation -routine of the hash table type your hash table is derived from. -.struct bfd_hash_entry * - FUNCTION_NAME (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; - { - struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry; - - /* Allocate the structure if it has not already been allocated by a - derived class. */ - if (ret == (ENTRY_TYPE *) NULL) - { - ret = ((ENTRY_TYPE *) - bfd_hash_allocate (table, sizeof (ENTRY_TYPE))); - if (ret == (ENTRY_TYPE *) NULL) - return NULL; - } - - /* Call the allocation method of the base class. */ - ret = ((ENTRY_TYPE *) - BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string)); - - /* Initialize the local fields here. */ - - return (struct bfd_hash_entry *) ret; - } - *Description* -The creation routine for the linker hash table, which is in `linker.c', -looks just like this example. FUNCTION_NAME is -`_bfd_link_hash_newfunc'. ENTRY_TYPE is `struct bfd_link_hash_entry'. -BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic -hash table. - - `_bfd_link_hash_newfunc' also initializes the local fields in a -linker hash table entry: `type', `written' and `next'. - -File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type - -Write other derived routines -............................ - -You will want to write other routines for your new hash table, as well. - - You will want an initialization routine which calls the -initialization routine of the hash table you are deriving from and -initializes any other local fields. For the linker hash table, this is -`_bfd_link_hash_table_init' in `linker.c'. - - You will want a lookup routine which calls the lookup routine of the -hash table you are deriving from and casts the result. The linker hash -table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an -additional argument which it uses to decide how to return the looked up -value). - - You may want a traversal routine. This should just call the -traversal routine of the hash table you are deriving from with -appropriate casts. The linker hash table uses `bfd_link_hash_traverse' -in `linker.c'. - - These routines may simply be defined as macros. For example, the -a.out backend linker hash table, which is derived from the linker hash -table, uses macros for the lookup and traversal routines. These are -`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h. - -File: bfd.info, Node: BFD back ends, Next: Index, Prev: BFD front end, Up: Top - -BFD back ends -************* - -* Menu: - -* What to Put Where:: -* aout :: a.out backends -* coff :: coff backends -* elf :: elf backends - - -File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends - - All of BFD lives in one directory. - - -File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends - -a.out backends -============== - -*Description* -BFD supports a number of different flavours of a.out format, though the -major differences are only the sizes of the structures on disk, and the -shape of the relocation information. - - The support is split into a basic support file `aoutx.h' and other -files which derive functions from the base. One derivation file is -`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions -support for sun3, sun4, 386 and 29k a.out files, to create a target -jump vector for a specific target. - - This information is further split out into more specific files for -each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for -the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out -format. - - The base file `aoutx.h' defines general mechanisms for reading and -writing records to and from disk and various other methods which BFD -requires. It is included by `aout32.c' and `aout64.c' to form the names -`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc. - - As an example, this is what goes on to make the back end for a sun4, -from `aout32.c': - - #define ARCH_SIZE 32 - #include "aoutx.h" - - Which exports names: - - ... - aout_32_canonicalize_reloc - aout_32_find_nearest_line - aout_32_get_lineno - aout_32_get_reloc_upper_bound - ... - - from `sunos.c': - - #define TARGET_NAME "a.out-sunos-big" - #define VECNAME sunos_big_vec - #include "aoutf1.h" - - requires all the names from `aout32.c', and produces the jump vector - - sunos_big_vec - - The file `host-aout.c' is a special case. It is for a large set of -hosts that use "more or less standard" a.out files, and for which -cross-debugging is not interesting. It uses the standard 32-bit a.out -support routines, but determines the file offsets and addresses of the -text, data, and BSS sections, the machine architecture and machine -type, and the entry point address, in a host-dependent manner. Once -these values have been determined, generic code is used to handle the -object file. - - When porting it to run on a new system, you must supply: - - HOST_PAGE_SIZE - HOST_SEGMENT_SIZE - HOST_MACHINE_ARCH (optional) - HOST_MACHINE_MACHINE (optional) - HOST_TEXT_START_ADDR - HOST_STACK_END_ADDR - - in the file `../include/sys/h-XXX.h' (for your host). These values, -plus the structures and macros defined in `a.out.h' on your host -system, will produce a BFD target that will access ordinary a.out files -on your host. To configure a new machine to use `host-aout.c', specify: - - TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec - TDEPFILES= host-aout.o trad-core.o - - in the `config/XXX.mt' file, and modify `configure.in' to use the -`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration -is selected. -Relocations ------------ - -*Description* -The file `aoutx.h' provides for both the *standard* and *extended* -forms of a.out relocation records. - - The standard records contain only an address, a symbol index, and a -type field. The extended records (used on 29ks and sparcs) also have a -full integer for an addend. -Internal entry points ---------------------- - -*Description* -`aoutx.h' exports several routines for accessing the contents of an -a.out file, which are gathered and exported in turn by various format -specific files (eg sunos.c). -`aout_SIZE_swap_exec_header_in' -............................... - -*Synopsis* - void aout_SIZE_swap_exec_header_in, - (bfd *abfd, - struct external_exec *raw_bytes, - struct internal_exec *execp); - *Description* -Swap the information in an executable header RAW_BYTES taken from a raw -byte stream memory image into the internal exec header structure EXECP. -`aout_SIZE_swap_exec_header_out' -................................ - -*Synopsis* - void aout_SIZE_swap_exec_header_out - (bfd *abfd, - struct internal_exec *execp, - struct external_exec *raw_bytes); - *Description* -Swap the information in an internal exec header structure EXECP into -the buffer RAW_BYTES ready for writing to disk. -`aout_SIZE_some_aout_object_p' -.............................. - -*Synopsis* - const bfd_target *aout_SIZE_some_aout_object_p - (bfd *abfd, - const bfd_target *(*callback_to_real_object_p)()); - *Description* -Some a.out variant thinks that the file open in ABFD checking is an -a.out file. Do some more checking, and set up for access if it really -is. Call back to the calling environment's "finish up" function just -before returning, to handle any last-minute setup. -`aout_SIZE_mkobject' -.................... - -*Synopsis* - boolean aout_SIZE_mkobject, (bfd *abfd); - *Description* -Initialize BFD ABFD for use with a.out files. -`aout_SIZE_machine_type' -........................ - -*Synopsis* - enum machine_type aout_SIZE_machine_type - (enum bfd_architecture arch, - unsigned long machine)); - *Description* -Keep track of machine architecture and machine type for a.out's. Return -the `machine_type' for a particular architecture and machine, or -`M_UNKNOWN' if that exact architecture and machine can't be represented -in a.out format. - - If the architecture is understood, machine type 0 (default) is -always understood. -`aout_SIZE_set_arch_mach' -......................... - -*Synopsis* - boolean aout_SIZE_set_arch_mach, - (bfd *, - enum bfd_architecture arch, - unsigned long machine)); - *Description* -Set the architecture and the machine of the BFD ABFD to the values ARCH -and MACHINE. Verify that ABFD's format can support the architecture -required. -`aout_SIZE_new_section_hook' -............................ - -*Synopsis* - boolean aout_SIZE_new_section_hook, - (bfd *abfd, - asection *newsect)); - *Description* -Called by the BFD in response to a `bfd_make_section' request. diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.info-5 b/gnu/usr.bin/binutils/bfd/doc/bfd.info-5 deleted file mode 100644 index 86acfab2e46..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.info-5 +++ /dev/null @@ -1,991 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo-1.64 from the input -file ./bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends - -coff backends -============= - -BFD supports a number of different flavours of coff format. The major -differences between formats are the sizes and alignments of fields in -structures on disk, and the occasional extra field. - - Coff in all its varieties is implemented with a few common files and -a number of implementation specific files. For example, The 88k bcs -coff format is implemented in the file `coff-m88k.c'. This file -`#include's `coff/m88k.h' which defines the external structure of the -coff format for the 88k, and `coff/internal.h' which defines the -internal structure. `coff-m88k.c' also defines the relocations used by -the 88k format *Note Relocations::. - - The Intel i960 processor version of coff is implemented in -`coff-i960.c'. This file has the same structure as `coff-m88k.c', -except that it includes `coff/i960.h' rather than `coff-m88k.h'. -Porting to a new version of coff --------------------------------- - -The recommended method is to select from the existing implementations -the version of coff which is most like the one you want to use. For -example, we'll say that i386 coff is the one you select, and that your -coff flavour is called foo. Copy `i386coff.c' to `foocoff.c', copy -`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines -to `targets.c' and `Makefile.in' so that your new back end is used. -Alter the shapes of the structures in `../include/coff/foo.h' so that -they match what you need. You will probably also have to add `#ifdef's -to the code in `coff/internal.h' and `coffcode.h' if your version of -coff is too wild. - - You can verify that your new BFD backend works quite simply by -building `objdump' from the `binutils' directory, and making sure that -its version of what's going on and your host system's idea (assuming it -has the pretty standard coff dump utility, usually called `att-dump' or -just `dump') are the same. Then clean up your code, and send what -you've done to Cygnus. Then your stuff will be in the next release, and -you won't have to keep integrating it. -How the coff backend works --------------------------- - -File layout -........... - -The Coff backend is split into generic routines that are applicable to -any Coff target and routines that are specific to a particular target. -The target-specific routines are further split into ones which are -basically the same for all Coff targets except that they use the -external symbol format or use different values for certain constants. - - The generic routines are in `coffgen.c'. These routines work for -any Coff target. They use some hooks into the target specific code; -the hooks are in a `bfd_coff_backend_data' structure, one of which -exists for each target. - - The essentially similar target-specific routines are in -`coffcode.h'. This header file includes executable C code. The -various Coff targets first include the appropriate Coff header file, -make any special defines that are needed, and then include `coffcode.h'. - - Some of the Coff targets then also have additional routines in the -target source file itself. - - For example, `coff-i960.c' includes `coff/internal.h' and -`coff/i960.h'. It then defines a few constants, such as `I960', and -includes `coffcode.h'. Since the i960 has complex relocation types, -`coff-i960.c' also includes some code to manipulate the i960 relocs. -This code is not in `coffcode.h' because it would not be used by any -other target. -Bit twiddling -............. - -Each flavour of coff supported in BFD has its own header file -describing the external layout of the structures. There is also an -internal description of the coff layout, in `coff/internal.h'. A major -function of the coff backend is swapping the bytes and twiddling the -bits to translate the external form of the structures into the normal -internal form. This is all performed in the `bfd_swap'_thing_direction -routines. Some elements are different sizes between different versions -of coff; it is the duty of the coff version specific include file to -override the definitions of various packing routines in `coffcode.h'. -E.g., the size of line number entry in coff is sometimes 16 bits, and -sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO' -will select the correct one. No doubt, some day someone will find a -version of coff which has a varying field size not catered to at the -moment. To port BFD, that person will have to add more `#defines'. -Three of the bit twiddling routines are exported to `gdb'; -`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_linno_in'. `GDB' -reads the symbol table on its own, but uses BFD to fix things up. More -of the bit twiddlers are exported for `gas'; `coff_swap_aux_out', -`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out', -`coff_swap_filehdr_out', `coff_swap_aouthdr_out', -`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol -table and reloc drudgery itself, thereby saving the internal BFD -overhead, but uses BFD to swap things on the way out, making cross -ports much safer. Doing so also allows BFD (and thus the linker) to -use the same header files as `gas', which makes one avenue to disaster -disappear. -Symbol reading -.............. - -The simple canonical form for symbols used by BFD is not rich enough to -keep all the information available in a coff symbol table. The back end -gets around this problem by keeping the original symbol table around, -"behind the scenes". - - When a symbol table is requested (through a call to -`bfd_canonicalize_symtab'), a request gets through to -`coff_get_normalized_symtab'. This reads the symbol table from the coff -file and swaps all the structures inside into the internal form. It -also fixes up all the pointers in the table (represented in the file by -offsets from the first symbol in the table) into physical pointers to -elements in the new internal table. This involves some work since the -meanings of fields change depending upon context: a field that is a -pointer to another structure in the symbol table at one moment may be -the size in bytes of a structure at the next. Another pass is made -over the table. All symbols which mark file names (`C_FILE' symbols) -are modified so that the internal string points to the value in the -auxent (the real filename) rather than the normal text associated with -the symbol (`".file"'). - - At this time the symbol names are moved around. Coff stores all -symbols less than nine characters long physically within the symbol -table; longer strings are kept at the end of the file in the string -table. This pass moves all strings into memory and replaces them with -pointers to the strings. - - The symbol table is massaged once again, this time to create the -canonical table used by the BFD application. Each symbol is inspected -in turn, and a decision made (using the `sclass' field) about the -various flags to set in the `asymbol'. *Note Symbols::. The generated -canonical table shares strings with the hidden internal symbol table. - - Any linenumbers are read from the coff file too, and attached to the -symbols which own the functions the linenumbers belong to. -Symbol writing -.............. - -Writing a symbol to a coff file which didn't come from a coff file will -lose any debugging information. The `asymbol' structure remembers the -BFD from which the symbol was taken, and on output the back end makes -sure that the same destination target as source target is present. - - When the symbols have come from a coff file then all the debugging -information is preserved. - - Symbol tables are provided for writing to the back end in a vector -of pointers to pointers. This allows applications like the linker to -accumulate and output large symbol tables without having to do too much -byte copying. - - This function runs through the provided symbol table and patches -each symbol marked as a file place holder (`C_FILE') to point to the -next file place holder in the list. It also marks each `offset' field -in the list with the offset from the first symbol of the current symbol. - - Another function of this procedure is to turn the canonical value -form of BFD into the form used by coff. Internally, BFD expects symbol -values to be offsets from a section base; so a symbol physically at -0x120, but in a section starting at 0x100, would have the value 0x20. -Coff expects symbols to contain their final value, so symbols have -their values changed at this point to reflect their sum with their -owning section. This transformation uses the `output_section' field of -the `asymbol''s `asection' *Note Sections::. - - * `coff_mangle_symbols' This routine runs though the provided symbol -table and uses the offsets generated by the previous pass and the -pointers generated when the symbol table was read in to create the -structured hierachy required by coff. It changes each pointer to a -symbol into the index into the symbol table of the asymbol. - - * `coff_write_symbols' This routine runs through the symbol table -and patches up the symbols from their internal form into the coff way, -calls the bit twiddlers, and writes out the table to the file. -`coff_symbol_type' -.................. - -*Description* -The hidden information for an `asymbol' is described in a -`combined_entry_type': -. - typedef struct coff_ptr_struct - { - - /* Remembers the offset from the first symbol in the file for - this symbol. Generated by coff_renumber_symbols. */ - unsigned int offset; - - /* Should the value of this symbol be renumbered. Used for - XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */ - unsigned int fix_value : 1; - - /* Should the tag field of this symbol be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_tag : 1; - - /* Should the endidx field of this symbol be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_end : 1; - - /* Should the x_csect.x_scnlen field be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_scnlen : 1; - - /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the - index into the line number entries. Set by - coff_slurp_symbol_table. */ - unsigned int fix_line : 1; - - /* The container for the symbol structure as read and translated - from the file. */ - - union { - union internal_auxent auxent; - struct internal_syment syment; - } u; - } combined_entry_type; - - - /* Each canonical asymbol really looks like this: */ - - typedef struct coff_symbol_struct - { - /* The actual symbol which the rest of BFD works with */ - asymbol symbol; - - /* A pointer to the hidden information for this symbol */ - combined_entry_type *native; - - /* A pointer to the linenumber information for this symbol */ - struct lineno_cache_entry *lineno; - - /* Have the line numbers been relocated yet ? */ - boolean done_lineno; - } coff_symbol_type; - -`bfd_coff_backend_data' -....................... - - Special entry points for gdb to swap in coff symbol table parts: - typedef struct - { - void (*_bfd_coff_swap_aux_in) PARAMS (( - bfd *abfd, - PTR ext, - int type, - int class, - int indaux, - int numaux, - PTR in)); - - void (*_bfd_coff_swap_sym_in) PARAMS (( - bfd *abfd , - PTR ext, - PTR in)); - - void (*_bfd_coff_swap_lineno_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - Special entry points for gas to swap out coff parts: - unsigned int (*_bfd_coff_swap_aux_out) PARAMS (( - bfd *abfd, - PTR in, - int type, - int class, - int indaux, - int numaux, - PTR ext)); - - unsigned int (*_bfd_coff_swap_sym_out) PARAMS (( - bfd *abfd, - PTR in, - PTR ext)); - - unsigned int (*_bfd_coff_swap_lineno_out) PARAMS (( - bfd *abfd, - PTR in, - PTR ext)); - - unsigned int (*_bfd_coff_swap_reloc_out) PARAMS (( - bfd *abfd, - PTR src, - PTR dst)); - - unsigned int (*_bfd_coff_swap_filehdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - - unsigned int (*_bfd_coff_swap_aouthdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - - unsigned int (*_bfd_coff_swap_scnhdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - Special entry points for generic COFF routines to call target -dependent COFF routines: - unsigned int _bfd_filhsz; - unsigned int _bfd_aoutsz; - unsigned int _bfd_scnhsz; - unsigned int _bfd_symesz; - unsigned int _bfd_auxesz; - unsigned int _bfd_relsz; - unsigned int _bfd_linesz; - boolean _bfd_coff_long_filenames; - boolean _bfd_coff_long_section_names; - unsigned int _bfd_coff_default_section_alignment_power; - void (*_bfd_coff_swap_filehdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_aouthdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_scnhdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_reloc_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - boolean (*_bfd_coff_bad_format_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr)); - boolean (*_bfd_coff_set_arch_mach_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr)); - PTR (*_bfd_coff_mkobject_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr, - PTR internal_aouthdr)); - flagword (*_bfd_styp_to_sec_flags_hook) PARAMS (( - bfd *abfd, - PTR internal_scnhdr, - const char *name)); - void (*_bfd_set_alignment_hook) PARAMS (( - bfd *abfd, - asection *sec, - PTR internal_scnhdr)); - boolean (*_bfd_coff_slurp_symbol_table) PARAMS (( - bfd *abfd)); - boolean (*_bfd_coff_symname_in_debug) PARAMS (( - bfd *abfd, - struct internal_syment *sym)); - boolean (*_bfd_coff_pointerize_aux_hook) PARAMS (( - bfd *abfd, - combined_entry_type *table_base, - combined_entry_type *symbol, - unsigned int indaux, - combined_entry_type *aux)); - boolean (*_bfd_coff_print_aux) PARAMS (( - bfd *abfd, - FILE *file, - combined_entry_type *table_base, - combined_entry_type *symbol, - combined_entry_type *aux, - unsigned int indaux)); - void (*_bfd_coff_reloc16_extra_cases) PARAMS (( - bfd *abfd, - struct bfd_link_info *link_info, - struct bfd_link_order *link_order, - arelent *reloc, - bfd_byte *data, - unsigned int *src_ptr, - unsigned int *dst_ptr)); - int (*_bfd_coff_reloc16_estimate) PARAMS (( - bfd *abfd, - asection *input_section, - arelent *r, - unsigned int shrink, - struct bfd_link_info *link_info)); - boolean (*_bfd_coff_sym_is_global) PARAMS (( - bfd *abfd, - struct internal_syment *)); - boolean (*_bfd_coff_compute_section_file_positions) PARAMS (( - bfd *abfd)); - boolean (*_bfd_coff_start_final_link) PARAMS (( - bfd *output_bfd, - struct bfd_link_info *info)); - boolean (*_bfd_coff_relocate_section) PARAMS (( - bfd *output_bfd, - struct bfd_link_info *info, - bfd *input_bfd, - asection *input_section, - bfd_byte *contents, - struct internal_reloc *relocs, - struct internal_syment *syms, - asection **sections)); - reloc_howto_type *(*_bfd_coff_rtype_to_howto) PARAMS (( - bfd *abfd, - asection *sec, - struct internal_reloc *rel, - struct coff_link_hash_entry *h, - struct internal_syment *sym, - bfd_vma *addendp)); - boolean (*_bfd_coff_adjust_symndx) PARAMS (( - bfd *obfd, - struct bfd_link_info *info, - bfd *ibfd, - asection *sec, - struct internal_reloc *reloc, - boolean *adjustedp)); - boolean (*_bfd_coff_link_add_one_symbol) PARAMS (( - struct bfd_link_info *info, - bfd *abfd, - const char *name, - flagword flags, - asection *section, - bfd_vma value, - const char *string, - boolean copy, - boolean collect, - struct bfd_link_hash_entry **hashp)); - - } bfd_coff_backend_data; - - #define coff_backend_info(abfd) ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) - - #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ - ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) - - #define bfd_coff_swap_sym_in(a,e,i) \ - ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) - - #define bfd_coff_swap_lineno_in(a,e,i) \ - ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) - - #define bfd_coff_swap_reloc_out(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) - - #define bfd_coff_swap_lineno_out(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) - - #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ - ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) - - #define bfd_coff_swap_sym_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) - - #define bfd_coff_swap_scnhdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) - - #define bfd_coff_swap_filehdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) - - #define bfd_coff_swap_aouthdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) - - #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) - #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) - #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) - #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) - #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) - #define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) - #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) - #define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames) - #define bfd_coff_long_section_names(abfd) \ - (coff_backend_info (abfd)->_bfd_coff_long_section_names) - #define bfd_coff_default_section_alignment_power(abfd) \ - (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) - #define bfd_coff_swap_filehdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) - - #define bfd_coff_swap_aouthdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) - - #define bfd_coff_swap_scnhdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) - - #define bfd_coff_swap_reloc_in(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) - - #define bfd_coff_bad_format_hook(abfd, filehdr) \ - ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) - - #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ - ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) - #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ - ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr)) - - #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name)\ - ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name)) - - #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ - ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) - - #define bfd_coff_slurp_symbol_table(abfd)\ - ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) - - #define bfd_coff_symname_in_debug(abfd, sym)\ - ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) - - #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ - ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ - (abfd, file, base, symbol, aux, indaux)) - - #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)\ - ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ - (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) - - #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ - ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ - (abfd, section, reloc, shrink, link_info)) - - #define bfd_coff_sym_is_global(abfd, sym)\ - ((coff_backend_info (abfd)->_bfd_coff_sym_is_global)\ - (abfd, sym)) - - #define bfd_coff_compute_section_file_positions(abfd)\ - ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ - (abfd)) - - #define bfd_coff_start_final_link(obfd, info)\ - ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ - (obfd, info)) - #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ - ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ - (obfd, info, ibfd, o, con, rel, isyms, secs)) - #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ - ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ - (abfd, sec, rel, h, sym, addendp)) - #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ - ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ - (obfd, info, ibfd, sec, rel, adjustedp)) - #define bfd_coff_link_add_one_symbol(info,abfd,name,flags,section,value,string,cp,coll,hashp)\ - ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ - (info, abfd, name, flags, section, value, string, cp, coll, hashp)) - -Writing relocations -................... - - To write relocations, the back end steps though the canonical -relocation table and create an `internal_reloc'. The symbol index to -use is removed from the `offset' field in the symbol table supplied. -The address comes directly from the sum of the section base address and -the relocation offset; the type is dug directly from the howto field. -Then the `internal_reloc' is swapped into the shape of an -`external_reloc' and written out to disk. -Reading linenumbers -................... - -Creating the linenumber table is done by reading in the entire coff -linenumber table, and creating another table for internal use. - - A coff linenumber table is structured so that each function is -marked as having a line number of 0. Each line within the function is -an offset from the first line in the function. The base of the line -number information for the table is stored in the symbol associated -with the function. - - The information is copied from the external to the internal table, -and each symbol which marks a function is marked by pointing its... - - How does this work ? -Reading relocations -................... - -Coff relocations are easily transformed into the internal BFD form -(`arelent'). - - Reading a coff relocation table is done in the following stages: - - * Read the entire coff relocation table into memory. - - * Process each relocation in turn; first swap it from the external - to the internal form. - - * Turn the symbol referenced in the relocation's symbol index into a - pointer into the canonical symbol table. This table is the same - as the one returned by a call to `bfd_canonicalize_symtab'. The - back end will call that routine and save the result if a - canonicalization hasn't been done. - - * The reloc index is turned into a pointer to a howto structure, in - a back end specific way. For instance, the 386 and 960 use the - `r_type' to directly produce an index into a howto table vector; - the 88k subtracts a number from the `r_type' field and creates an - addend field. - -File: bfd.info, Node: elf, Prev: coff, Up: BFD back ends - -ELF backends -============ - -BFD support for ELF formats is being worked on. Currently, the best -supported back ends are for sparc and i386 (running svr4 or Solaris 2). - - Documentation of the internals of the support code still needs to be -written. The code is changing quickly enough that we haven't bothered -yet. -`bfd_elf_find_section' -...................... - -*Synopsis* - struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name); - *Description* -Helper functions for GDB to locate the string tables. Since BFD hides -string tables from callers, GDB needs to use an internal hook to find -them. Sun's .stabstr, in particular, isn't even pointed to by the -.stab section, so ordinary mechanisms wouldn't work to find it, even if -we had some. - -File: bfd.info, Node: Index, Prev: BFD back ends, Up: Top - -Index -***** - -* Menu: - -* _bfd_final_link_relocate: Relocating the section contents. -* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive. -* _bfd_generic_link_add_one_symbol: Adding symbols from an object file. -* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table. -* _bfd_link_final_link in target vector: Performing the Final Link. -* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table. -* _bfd_relocate_contents: Relocating the section contents. -* aout_SIZE_machine_type: aout. -* aout_SIZE_mkobject: aout. -* aout_SIZE_new_section_hook: aout. -* aout_SIZE_set_arch_mach: aout. -* aout_SIZE_some_aout_object_p: aout. -* aout_SIZE_swap_exec_header_in: aout. -* aout_SIZE_swap_exec_header_out: aout. -* arelent_chain: typedef arelent. -* BFD: Overview. -* BFD canonical format: Canonical format. -* bfd_alloc: Opening and Closing. -* bfd_arch_bits_per_address: Architectures. -* bfd_arch_bits_per_byte: Architectures. -* bfd_arch_get_compatible: Architectures. -* bfd_cache_close: File Caching. -* bfd_cache_init: File Caching. -* bfd_cache_lookup: File Caching. -* bfd_cache_lookup_worker: File Caching. -* BFD_CACHE_MAX_OPEN macro: File Caching. -* bfd_canonicalize_reloc: BFD front end. -* bfd_canonicalize_symtab: symbol handling functions. -* bfd_check_format: Formats. -* bfd_check_format_matches: Formats. -* bfd_close: Opening and Closing. -* bfd_close_all_done: Opening and Closing. -* bfd_coff_backend_data: coff. -* bfd_copy_private_bfd_data: BFD front end. -* bfd_copy_private_section_data: section prototypes. -* bfd_copy_private_symbol_data: symbol handling functions. -* bfd_core_file_failing_command: Core Files. -* bfd_core_file_failing_signal: Core Files. -* bfd_create: Opening and Closing. -* bfd_decode_symclass: symbol handling functions. -* bfd_default_arch_struct: Architectures. -* bfd_default_compatible: Architectures. -* bfd_default_reloc_type_lookup: howto manager. -* bfd_default_scan: Architectures. -* bfd_default_set_arch_mach: Architectures. -* bfd_elf_find_section: elf. -* bfd_errmsg: BFD front end. -* bfd_fdopenr: Opening and Closing. -* bfd_find_target: bfd_target. -* bfd_format_string: Formats. -* bfd_generic_get_relocated_section_contents: howto manager. -* bfd_generic_relax_section: howto manager. -* bfd_get_arch: Architectures. -* bfd_get_arch_info: Architectures. -* bfd_get_error: BFD front end. -* bfd_get_gp_size: BFD front end. -* bfd_get_mach: Architectures. -* bfd_get_mtime: BFD front end. -* bfd_get_next_mapent: Archives. -* bfd_get_reloc_code_name: howto manager. -* bfd_get_reloc_size: typedef arelent. -* bfd_get_reloc_upper_bound: BFD front end. -* bfd_get_section_by_name: section prototypes. -* bfd_get_section_contents: section prototypes. -* bfd_get_size <1>: Internal. -* bfd_get_size: BFD front end. -* bfd_get_symtab_upper_bound: symbol handling functions. -* bfd_h_put_size: Internal. -* bfd_hash_allocate: Creating and Freeing a Hash Table. -* bfd_hash_lookup: Looking Up or Entering a String. -* bfd_hash_newfunc: Creating and Freeing a Hash Table. -* bfd_hash_table_free: Creating and Freeing a Hash Table. -* bfd_hash_table_init: Creating and Freeing a Hash Table. -* bfd_hash_table_init_n: Creating and Freeing a Hash Table. -* bfd_hash_traverse: Traversing a Hash Table. -* bfd_init: Initialization. -* bfd_install_relocation: typedef arelent. -* bfd_is_local_label: symbol handling functions. -* bfd_is_local_label_name: symbol handling functions. -* bfd_last_cache: File Caching. -* bfd_link_split_section: Writing the symbol table. -* bfd_log2: Internal. -* bfd_lookup_arch: Architectures. -* bfd_make_debug_symbol: symbol handling functions. -* bfd_make_empty_symbol: symbol handling functions. -* bfd_make_section: section prototypes. -* bfd_make_section_anyway: section prototypes. -* bfd_make_section_old_way: section prototypes. -* bfd_map_over_sections: section prototypes. -* bfd_merge_private_bfd_data: BFD front end. -* bfd_open_file: File Caching. -* bfd_openr: Opening and Closing. -* bfd_openr_next_archived_file: Archives. -* bfd_openstreamr: Opening and Closing. -* bfd_openw: Opening and Closing. -* bfd_perform_relocation: typedef arelent. -* bfd_perror: BFD front end. -* bfd_print_symbol_vandf: symbol handling functions. -* bfd_printable_arch_mach: Architectures. -* bfd_printable_name: Architectures. -* bfd_put_size: Internal. -* BFD_RELOC_12_PCREL: howto manager. -* BFD_RELOC_14: howto manager. -* BFD_RELOC_16: howto manager. -* BFD_RELOC_16_BASEREL: howto manager. -* BFD_RELOC_16_GOT_PCREL: howto manager. -* BFD_RELOC_16_GOTOFF: howto manager. -* BFD_RELOC_16_PCREL: howto manager. -* BFD_RELOC_16_PCREL_S2: howto manager. -* BFD_RELOC_16_PLT_PCREL: howto manager. -* BFD_RELOC_16_PLTOFF: howto manager. -* BFD_RELOC_23_PCREL_S2: howto manager. -* BFD_RELOC_24: howto manager. -* BFD_RELOC_24_PCREL: howto manager. -* BFD_RELOC_24_PLT_PCREL: howto manager. -* BFD_RELOC_26: howto manager. -* BFD_RELOC_32: howto manager. -* BFD_RELOC_32_BASEREL: howto manager. -* BFD_RELOC_32_GOT_PCREL: howto manager. -* BFD_RELOC_32_GOTOFF: howto manager. -* BFD_RELOC_32_PCREL: howto manager. -* BFD_RELOC_32_PCREL_S2: howto manager. -* BFD_RELOC_32_PLT_PCREL: howto manager. -* BFD_RELOC_32_PLTOFF: howto manager. -* BFD_RELOC_386_COPY: howto manager. -* BFD_RELOC_386_GLOB_DAT: howto manager. -* BFD_RELOC_386_GOT32: howto manager. -* BFD_RELOC_386_GOTOFF: howto manager. -* BFD_RELOC_386_GOTPC: howto manager. -* BFD_RELOC_386_JUMP_SLOT: howto manager. -* BFD_RELOC_386_PLT32: howto manager. -* BFD_RELOC_386_RELATIVE: howto manager. -* BFD_RELOC_64: howto manager. -* BFD_RELOC_64_PCREL: howto manager. -* BFD_RELOC_68K_GLOB_DAT: howto manager. -* BFD_RELOC_68K_JMP_SLOT: howto manager. -* BFD_RELOC_68K_RELATIVE: howto manager. -* BFD_RELOC_8: howto manager. -* BFD_RELOC_8_BASEREL: howto manager. -* BFD_RELOC_8_FFnn: howto manager. -* BFD_RELOC_8_GOT_PCREL: howto manager. -* BFD_RELOC_8_GOTOFF: howto manager. -* BFD_RELOC_8_PCREL: howto manager. -* BFD_RELOC_8_PLT_PCREL: howto manager. -* BFD_RELOC_8_PLTOFF: howto manager. -* BFD_RELOC_ALPHA_CODEADDR: howto manager. -* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. -* BFD_RELOC_ALPHA_GPDISP: howto manager. -* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. -* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. -* BFD_RELOC_ALPHA_HINT: howto manager. -* BFD_RELOC_ALPHA_LINKAGE: howto manager. -* BFD_RELOC_ALPHA_LITERAL: howto manager. -* BFD_RELOC_ALPHA_LITUSE: howto manager. -* BFD_RELOC_ARM_ADR_IMM: howto manager. -* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. -* BFD_RELOC_ARM_HWLITERAL: howto manager. -* BFD_RELOC_ARM_IMMEDIATE: howto manager. -* BFD_RELOC_ARM_IN_POOL: howto manager. -* BFD_RELOC_ARM_LDR_IMM: howto manager. -* BFD_RELOC_ARM_LITERAL: howto manager. -* BFD_RELOC_ARM_MULTI: howto manager. -* BFD_RELOC_ARM_OFFSET_IMM: howto manager. -* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. -* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. -* BFD_RELOC_ARM_SHIFT_IMM: howto manager. -* BFD_RELOC_ARM_SWI: howto manager. -* BFD_RELOC_ARM_THUMB_ADD: howto manager. -* BFD_RELOC_ARM_THUMB_IMM: howto manager. -* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. -* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. -* bfd_reloc_code_type: howto manager. -* BFD_RELOC_CTOR: howto manager. -* BFD_RELOC_D10V_10_PCREL_L: howto manager. -* BFD_RELOC_D10V_10_PCREL_R: howto manager. -* BFD_RELOC_D10V_18: howto manager. -* BFD_RELOC_D10V_18_PCREL: howto manager. -* BFD_RELOC_GPREL16: howto manager. -* BFD_RELOC_GPREL32: howto manager. -* BFD_RELOC_HI16: howto manager. -* BFD_RELOC_HI16_BASEREL: howto manager. -* BFD_RELOC_HI16_GOTOFF: howto manager. -* BFD_RELOC_HI16_PLTOFF: howto manager. -* BFD_RELOC_HI16_S: howto manager. -* BFD_RELOC_HI16_S_BASEREL: howto manager. -* BFD_RELOC_HI16_S_GOTOFF: howto manager. -* BFD_RELOC_HI16_S_PLTOFF: howto manager. -* BFD_RELOC_HI22: howto manager. -* BFD_RELOC_I960_CALLJ: howto manager. -* BFD_RELOC_LO10: howto manager. -* BFD_RELOC_LO16: howto manager. -* BFD_RELOC_LO16_BASEREL: howto manager. -* BFD_RELOC_LO16_GOTOFF: howto manager. -* BFD_RELOC_LO16_PLTOFF: howto manager. -* BFD_RELOC_M32R_10_PCREL: howto manager. -* BFD_RELOC_M32R_18_PCREL: howto manager. -* BFD_RELOC_M32R_24: howto manager. -* BFD_RELOC_M32R_26_PCREL: howto manager. -* BFD_RELOC_M32R_HI16_SLO: howto manager. -* BFD_RELOC_M32R_HI16_ULO: howto manager. -* BFD_RELOC_M32R_LO16: howto manager. -* BFD_RELOC_M32R_SDA16: howto manager. -* BFD_RELOC_MIPS16_GPREL: howto manager. -* BFD_RELOC_MIPS16_JMP: howto manager. -* BFD_RELOC_MIPS_CALL16: howto manager. -* BFD_RELOC_MIPS_CALL_HI16: howto manager. -* BFD_RELOC_MIPS_CALL_LO16: howto manager. -* BFD_RELOC_MIPS_GOT16: howto manager. -* BFD_RELOC_MIPS_GOT_HI16: howto manager. -* BFD_RELOC_MIPS_GOT_LO16: howto manager. -* BFD_RELOC_MIPS_GPREL: howto manager. -* BFD_RELOC_MIPS_GPREL32: howto manager. -* BFD_RELOC_MIPS_JMP: howto manager. -* BFD_RELOC_MIPS_LITERAL: howto manager. -* BFD_RELOC_MN10300_16_PCREL: howto manager. -* BFD_RELOC_MN10300_32_PCREL: howto manager. -* BFD_RELOC_NONE: howto manager. -* BFD_RELOC_NS32K_DISP_16: howto manager. -* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. -* BFD_RELOC_NS32K_DISP_32: howto manager. -* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. -* BFD_RELOC_NS32K_DISP_8: howto manager. -* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_16: howto manager. -* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_32: howto manager. -* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_8: howto manager. -* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. -* BFD_RELOC_PCREL_HI16_S: howto manager. -* BFD_RELOC_PCREL_LO16: howto manager. -* BFD_RELOC_PPC_B16: howto manager. -* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. -* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. -* BFD_RELOC_PPC_B26: howto manager. -* BFD_RELOC_PPC_BA16: howto manager. -* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. -* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. -* BFD_RELOC_PPC_BA26: howto manager. -* BFD_RELOC_PPC_COPY: howto manager. -* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. -* BFD_RELOC_PPC_EMB_MRKREF: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. -* BFD_RELOC_PPC_EMB_NADDR32: howto manager. -* BFD_RELOC_PPC_EMB_RELSDA: howto manager. -* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. -* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. -* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. -* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. -* BFD_RELOC_PPC_EMB_SDA21: howto manager. -* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. -* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. -* BFD_RELOC_PPC_EMB_SDAI16: howto manager. -* BFD_RELOC_PPC_GLOB_DAT: howto manager. -* BFD_RELOC_PPC_JMP_SLOT: howto manager. -* BFD_RELOC_PPC_LOCAL24PC: howto manager. -* BFD_RELOC_PPC_RELATIVE: howto manager. -* BFD_RELOC_PPC_TOC16: howto manager. -* BFD_RELOC_RVA: howto manager. -* BFD_RELOC_SH_ALIGN: howto manager. -* BFD_RELOC_SH_CODE: howto manager. -* BFD_RELOC_SH_COUNT: howto manager. -* BFD_RELOC_SH_DATA: howto manager. -* BFD_RELOC_SH_IMM4: howto manager. -* BFD_RELOC_SH_IMM4BY2: howto manager. -* BFD_RELOC_SH_IMM4BY4: howto manager. -* BFD_RELOC_SH_IMM8: howto manager. -* BFD_RELOC_SH_IMM8BY2: howto manager. -* BFD_RELOC_SH_IMM8BY4: howto manager. -* BFD_RELOC_SH_LABEL: howto manager. -* BFD_RELOC_SH_PCDISP12BY2: howto manager. -* BFD_RELOC_SH_PCDISP8BY2: howto manager. -* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. -* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. -* BFD_RELOC_SH_SWITCH16: howto manager. -* BFD_RELOC_SH_SWITCH32: howto manager. -* BFD_RELOC_SH_USES: howto manager. -* BFD_RELOC_SPARC13: howto manager. -* BFD_RELOC_SPARC22: howto manager. -* BFD_RELOC_SPARC_10: howto manager. -* BFD_RELOC_SPARC_11: howto manager. -* BFD_RELOC_SPARC_5: howto manager. -* BFD_RELOC_SPARC_6: howto manager. -* BFD_RELOC_SPARC_64: howto manager. -* BFD_RELOC_SPARC_7: howto manager. -* BFD_RELOC_SPARC_BASE13: howto manager. -* BFD_RELOC_SPARC_BASE22: howto manager. -* BFD_RELOC_SPARC_COPY: howto manager. -* BFD_RELOC_SPARC_GLOB_DAT: howto manager. -* BFD_RELOC_SPARC_GLOB_JMP: howto manager. -* BFD_RELOC_SPARC_GOT10: howto manager. -* BFD_RELOC_SPARC_GOT13: howto manager. -* BFD_RELOC_SPARC_GOT22: howto manager. -* BFD_RELOC_SPARC_HH22: howto manager. -* BFD_RELOC_SPARC_HM10: howto manager. -* BFD_RELOC_SPARC_JMP_SLOT: howto manager. -* BFD_RELOC_SPARC_LM22: howto manager. -* BFD_RELOC_SPARC_OLO10: howto manager. -* BFD_RELOC_SPARC_PC10: howto manager. -* BFD_RELOC_SPARC_PC22: howto manager. -* BFD_RELOC_SPARC_PC_HH22: howto manager. -* BFD_RELOC_SPARC_PC_HM10: howto manager. -* BFD_RELOC_SPARC_PC_LM22: howto manager. -* BFD_RELOC_SPARC_RELATIVE: howto manager. -* BFD_RELOC_SPARC_UA32: howto manager. -* BFD_RELOC_SPARC_WDISP16: howto manager. -* BFD_RELOC_SPARC_WDISP19: howto manager. -* BFD_RELOC_SPARC_WDISP22: howto manager. -* BFD_RELOC_SPARC_WPLT30: howto manager. -* bfd_reloc_type_lookup: howto manager. -* bfd_scan_arch: Architectures. -* bfd_scan_vma: BFD front end. -* bfd_set_arch_info: Architectures. -* bfd_set_archive_head: Archives. -* bfd_set_default_target: bfd_target. -* bfd_set_error: BFD front end. -* bfd_set_error_handler: BFD front end. -* bfd_set_error_program_name: BFD front end. -* bfd_set_file_flags: BFD front end. -* bfd_set_format: Formats. -* bfd_set_gp_size: BFD front end. -* bfd_set_private_flags: BFD front end. -* bfd_set_reloc: BFD front end. -* bfd_set_section_contents: section prototypes. -* bfd_set_section_flags: section prototypes. -* bfd_set_section_size: section prototypes. -* bfd_set_start_address: BFD front end. -* bfd_set_symtab: symbol handling functions. -* bfd_symbol_info: symbol handling functions. -* bfd_target_list: bfd_target. -* bfd_write_bigendian_4byte_int: Internal. -* coff_symbol_type: coff. -* core_file_matches_executable_p: Core Files. -* Hash tables: Hash Tables. -* internal object-file format: Canonical format. -* Linker: Linker Functions. -* stuff: BFD front end. -* target vector (_bfd_final_link): Performing the Final Link. -* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. -* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table. -* The HOWTO Macro: typedef arelent. -* what is it?: Overview. - - diff --git a/gnu/usr.bin/binutils/bfd/doc/bfd.texi b/gnu/usr.bin/binutils/bfd/doc/bfd.texi deleted file mode 100644 index ea0ca9e56dc..00000000000 --- a/gnu/usr.bin/binutils/bfd/doc/bfd.texi +++ /dev/null @@ -1,585 +0,0 @@ -@section @code{typedef bfd} -A BFD has type @code{bfd}; objects of this type are the -cornerstone of any application using BFD. Using BFD -consists of making references though the BFD and to data in the BFD. - -Here is the structure that defines the type @code{bfd}. It -contains the major data about the file and pointers -to the rest of the data. -@* -. -@example -struct _bfd -@{ - /* The filename the application opened the BFD with. */ - CONST char *filename; - - /* A pointer to the target jump table. */ - const struct bfd_target *xvec; - - /* To avoid dragging too many header files into every file that - includes `@code{bfd.h}', IOSTREAM has been declared as a "char - *", and MTIME as a "long". Their correct types, to which they - are cast when used, are "FILE *" and "time_t". The iostream - is the result of an fopen on the filename. However, if the - BFD_IN_MEMORY flag is set, then iostream is actually a pointer - to a bfd_in_memory struct. */ - PTR iostream; - - /* Is the file descriptor being cached? That is, can it be closed as - needed, and re-opened when accessed later? */ - - boolean cacheable; - - /* Marks whether there was a default target specified when the - BFD was opened. This is used to select which matching algorithm - to use to choose the back end. */ - - boolean target_defaulted; - - /* The caching routines use these to maintain a - least-recently-used list of BFDs */ - - struct _bfd *lru_prev, *lru_next; - - /* When a file is closed by the caching routines, BFD retains - state information on the file here: */ - - file_ptr where; - - /* and here: (``once'' means at least once) */ - - boolean opened_once; - - /* Set if we have a locally maintained mtime value, rather than - getting it from the file each time: */ - - boolean mtime_set; - - /* File modified time, if mtime_set is true: */ - - long mtime; - - /* Reserved for an unimplemented file locking extension.*/ - - int ifd; - - /* The format which belongs to the BFD. (object, core, etc.) */ - - bfd_format format; - - /* The direction the BFD was opened with*/ - - enum bfd_direction @{no_direction = 0, - read_direction = 1, - write_direction = 2, - both_direction = 3@} direction; - - /* Format_specific flags*/ - - flagword flags; - - /* Currently my_archive is tested before adding origin to - anything. I believe that this can become always an add of - origin, with origin set to 0 for non archive files. */ - - file_ptr origin; - - /* Remember when output has begun, to stop strange things - from happening. */ - boolean output_has_begun; - - /* Pointer to linked list of sections*/ - struct sec *sections; - - /* The number of sections */ - unsigned int section_count; - - /* Stuff only useful for object files: - The start address. */ - bfd_vma start_address; - - /* Used for input and output*/ - unsigned int symcount; - - /* Symbol table for output BFD (with symcount entries) */ - struct symbol_cache_entry **outsymbols; - - /* Pointer to structure which contains architecture information*/ - const struct bfd_arch_info *arch_info; - - /* Stuff only useful for archives:*/ - PTR arelt_data; - struct _bfd *my_archive; /* The containing archive BFD. */ - struct _bfd *next; /* The next BFD in the archive. */ - struct _bfd *archive_head; /* The first BFD in the archive. */ - boolean has_armap; - - /* A chain of BFD structures involved in a link. */ - struct _bfd *link_next; - - /* A field used by _bfd_generic_link_add_archive_symbols. This will - be used only for archive elements. */ - int archive_pass; - - /* Used by the back end to hold private data. */ - - union - @{ - struct aout_data_struct *aout_data; - struct artdata *aout_ar_data; - struct _oasys_data *oasys_obj_data; - struct _oasys_ar_data *oasys_ar_data; - struct coff_tdata *coff_obj_data; - struct pe_tdata *pe_obj_data; - struct xcoff_tdata *xcoff_obj_data; - struct ecoff_tdata *ecoff_obj_data; - struct ieee_data_struct *ieee_data; - struct ieee_ar_data_struct *ieee_ar_data; - struct srec_data_struct *srec_data; - struct ihex_data_struct *ihex_data; - struct tekhex_data_struct *tekhex_data; - struct elf_obj_tdata *elf_obj_data; - struct nlm_obj_tdata *nlm_obj_data; - struct bout_data_struct *bout_data; - struct sun_core_struct *sun_core_data; - struct trad_core_struct *trad_core_data; - struct som_data_struct *som_data; - struct hpux_core_struct *hpux_core_data; - struct hppabsd_core_struct *hppabsd_core_data; - struct sgi_core_struct *sgi_core_data; - struct lynx_core_struct *lynx_core_data; - struct osf_core_struct *osf_core_data; - struct cisco_core_struct *cisco_core_data; - struct versados_data_struct *versados_data; - struct netbsd_core_struct *netbsd_core_data; - PTR any; - @} tdata; - - /* Used by the application to hold private data*/ - PTR usrdata; - - /* Where all the allocated stuff under this BFD goes. This is a - struct objalloc *, but we use PTR to avoid requiring the inclusion of - objalloc.h. */ - PTR memory; -@}; - -@end example -@section Error reporting -Most BFD functions return nonzero on success (check their -individual documentation for precise semantics). On an error, -they call @code{bfd_set_error} to set an error condition that callers -can check by calling @code{bfd_get_error}. -If that returns @code{bfd_error_system_call}, then check -@code{errno}. - -The easiest way to report a BFD error to the user is to -use @code{bfd_perror}. -@* -@subsection Type @code{bfd_error_type} -The values returned by @code{bfd_get_error} are defined by the -enumerated type @code{bfd_error_type}. -@* -. -@example -typedef enum bfd_error -@{ - bfd_error_no_error = 0, - bfd_error_system_call, - bfd_error_invalid_target, - bfd_error_wrong_format, - bfd_error_invalid_operation, - bfd_error_no_memory, - bfd_error_no_symbols, - bfd_error_no_armap, - bfd_error_no_more_archived_files, - bfd_error_malformed_archive, - bfd_error_file_not_recognized, - bfd_error_file_ambiguously_recognized, - bfd_error_no_contents, - bfd_error_nonrepresentable_section, - bfd_error_no_debug_section, - bfd_error_bad_value, - bfd_error_file_truncated, - bfd_error_file_too_big, - bfd_error_invalid_error_code -@} bfd_error_type; - -@end example -@findex bfd_get_error -@subsubsection @code{bfd_get_error} -@strong{Synopsis} -@example -bfd_error_type bfd_get_error (void); -@end example -@strong{Description}@* -Return the current BFD error condition. -@* -@findex bfd_set_error -@subsubsection @code{bfd_set_error} -@strong{Synopsis} -@example -void bfd_set_error (bfd_error_type error_tag); -@end example -@strong{Description}@* -Set the BFD error condition to be @var{error_tag}. -@* -@findex bfd_errmsg -@subsubsection @code{bfd_errmsg} -@strong{Synopsis} -@example -CONST char *bfd_errmsg (bfd_error_type error_tag); -@end example -@strong{Description}@* -Return a string describing the error @var{error_tag}, or -the system error if @var{error_tag} is @code{bfd_error_system_call}. -@* -@findex bfd_perror -@subsubsection @code{bfd_perror} -@strong{Synopsis} -@example -void bfd_perror (CONST char *message); -@end example -@strong{Description}@* -Print to the standard error stream a string describing the -last BFD error that occurred, or the last system error if -the last BFD error was a system call failure. If @var{message} -is non-NULL and non-empty, the error string printed is preceded -by @var{message}, a colon, and a space. It is followed by a newline. -@* -@subsection BFD error handler -Some BFD functions want to print messages describing the -problem. They call a BFD error handler function. This -function may be overriden by the program. - -The BFD error handler acts like printf. -@* -. -@example -typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...)); - -@end example -@findex bfd_set_error_handler -@subsubsection @code{bfd_set_error_handler} -@strong{Synopsis} -@example -bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); -@end example -@strong{Description}@* -Set the BFD error handler function. Returns the previous -function. -@* -@findex bfd_set_error_program_name -@subsubsection @code{bfd_set_error_program_name} -@strong{Synopsis} -@example -void bfd_set_error_program_name (const char *); -@end example -@strong{Description}@* -Set the program name to use when printing a BFD error. This -is printed before the error message followed by a colon and -space. The string must not be changed after it is passed to -this function. -@* -@section Symbols - -@* -@findex bfd_get_reloc_upper_bound -@subsubsection @code{bfd_get_reloc_upper_bound} -@strong{Synopsis} -@example -long bfd_get_reloc_upper_bound(bfd *abfd, asection *sect); -@end example -@strong{Description}@* -Return the number of bytes required to store the -relocation information associated with section @var{sect} -attached to bfd @var{abfd}. If an error occurs, return -1. -@* -@findex bfd_canonicalize_reloc -@subsubsection @code{bfd_canonicalize_reloc} -@strong{Synopsis} -@example -long bfd_canonicalize_reloc - (bfd *abfd, - asection *sec, - arelent **loc, - asymbol **syms); -@end example -@strong{Description}@* -Call the back end associated with the open BFD -@var{abfd} and translate the external form of the relocation -information attached to @var{sec} into the internal canonical -form. Place the table into memory at @var{loc}, which has -been preallocated, usually by a call to -@code{bfd_get_reloc_upper_bound}. Returns the number of relocs, or --1 on error. - -The @var{syms} table is also needed for horrible internal magic -reasons. -@* -@findex bfd_set_reloc -@subsubsection @code{bfd_set_reloc} -@strong{Synopsis} -@example -void bfd_set_reloc - (bfd *abfd, asection *sec, arelent **rel, unsigned int count) -@end example -@strong{Description}@* -Set the relocation pointer and count within -section @var{sec} to the values @var{rel} and @var{count}. -The argument @var{abfd} is ignored. -@* -@findex bfd_set_file_flags -@subsubsection @code{bfd_set_file_flags} -@strong{Synopsis} -@example -boolean bfd_set_file_flags(bfd *abfd, flagword flags); -@end example -@strong{Description}@* -Set the flag word in the BFD @var{abfd} to the value @var{flags}. - -Possible errors are: -@itemize @bullet - -@item -@code{bfd_error_wrong_format} - The target bfd was not of object format. -@item -@code{bfd_error_invalid_operation} - The target bfd was open for reading. -@item -@code{bfd_error_invalid_operation} - -The flag word contained a bit which was not applicable to the -type of file. E.g., an attempt was made to set the @code{D_PAGED} bit -on a BFD format which does not support demand paging. -@end itemize -@* -@findex bfd_set_start_address -@subsubsection @code{bfd_set_start_address} -@strong{Synopsis} -@example -boolean bfd_set_start_address(bfd *abfd, bfd_vma vma); -@end example -@strong{Description}@* -Make @var{vma} the entry point of output BFD @var{abfd}. -@* -@strong{Returns}@* -Returns @code{true} on success, @code{false} otherwise. -@* -@findex bfd_get_mtime -@subsubsection @code{bfd_get_mtime} -@strong{Synopsis} -@example -long bfd_get_mtime(bfd *abfd); -@end example -@strong{Description}@* -Return the file modification time (as read from the file system, or -from the archive header for archive members). -@* -@findex bfd_get_size -@subsubsection @code{bfd_get_size} -@strong{Synopsis} -@example -long bfd_get_size(bfd *abfd); -@end example -@strong{Description}@* -Return the file size (as read from file system) for the file -associated with BFD @var{abfd}. - -The initial motivation for, and use of, this routine is not -so we can get the exact size of the object the BFD applies to, since -that might not be generally possible (archive members for example). -It would be ideal if someone could eventually modify -it so that such results were guaranteed. - -Instead, we want to ask questions like "is this NNN byte sized -object I'm about to try read from file offset YYY reasonable?" -As as example of where we might do this, some object formats -use string tables for which the first @code{sizeof(long)} bytes of the -table contain the size of the table itself, including the size bytes. -If an application tries to read what it thinks is one of these -string tables, without some way to validate the size, and for -some reason the size is wrong (byte swapping error, wrong location -for the string table, etc.), the only clue is likely to be a read -error when it tries to read the table, or a "virtual memory -exhausted" error when it tries to allocate 15 bazillon bytes -of space for the 15 bazillon byte table it is about to read. -This function at least allows us to answer the quesion, "is the -size reasonable?". -@* -@findex bfd_get_gp_size -@subsubsection @code{bfd_get_gp_size} -@strong{Synopsis} -@example -int bfd_get_gp_size(bfd *abfd); -@end example -@strong{Description}@* -Return the maximum size of objects to be optimized using the GP -register under MIPS ECOFF. This is typically set by the @code{-G} -argument to the compiler, assembler or linker. -@* -@findex bfd_set_gp_size -@subsubsection @code{bfd_set_gp_size} -@strong{Synopsis} -@example -void bfd_set_gp_size(bfd *abfd, int i); -@end example -@strong{Description}@* -Set the maximum size of objects to be optimized using the GP -register under ECOFF or MIPS ELF. This is typically set by -the @code{-G} argument to the compiler, assembler or linker. -@* -@findex bfd_scan_vma -@subsubsection @code{bfd_scan_vma} -@strong{Synopsis} -@example -bfd_vma bfd_scan_vma(CONST char *string, CONST char **end, int base); -@end example -@strong{Description}@* -Convert, like @code{strtoul}, a numerical expression -@var{string} into a @code{bfd_vma} integer, and return that integer. -(Though without as many bells and whistles as @code{strtoul}.) -The expression is assumed to be unsigned (i.e., positive). -If given a @var{base}, it is used as the base for conversion. -A base of 0 causes the function to interpret the string -in hex if a leading "0x" or "0X" is found, otherwise -in octal if a leading zero is found, otherwise in decimal. - -Overflow is not detected. -@* -@findex bfd_copy_private_bfd_data -@subsubsection @code{bfd_copy_private_bfd_data} -@strong{Synopsis} -@example -boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd); -@end example -@strong{Description}@* -Copy private BFD information from the BFD @var{ibfd} to the -the BFD @var{obfd}. Return @code{true} on success, @code{false} on error. -Possible error returns are: - -@itemize @bullet - -@item -@code{bfd_error_no_memory} - -Not enough memory exists to create private data for @var{obfd}. -@end itemize -@example -#define bfd_copy_private_bfd_data(ibfd, obfd) \ - BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ - (ibfd, obfd)) -@end example -@* -@findex bfd_merge_private_bfd_data -@subsubsection @code{bfd_merge_private_bfd_data} -@strong{Synopsis} -@example -boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd); -@end example -@strong{Description}@* -Merge private BFD information from the BFD @var{ibfd} to the -the output file BFD @var{obfd} when linking. Return @code{true} -on success, @code{false} on error. Possible error returns are: - -@itemize @bullet - -@item -@code{bfd_error_no_memory} - -Not enough memory exists to create private data for @var{obfd}. -@end itemize -@example -#define bfd_merge_private_bfd_data(ibfd, obfd) \ - BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ - (ibfd, obfd)) -@end example -@* -@findex bfd_set_private_flags -@subsubsection @code{bfd_set_private_flags} -@strong{Synopsis} -@example -boolean bfd_set_private_flags(bfd *abfd, flagword flags); -@end example -@strong{Description}@* -Set private BFD flag information in the BFD @var{abfd}. -Return @code{true} on success, @code{false} on error. Possible error -returns are: - -@itemize @bullet - -@item -@code{bfd_error_no_memory} - -Not enough memory exists to create private data for @var{obfd}. -@end itemize -@example -#define bfd_set_private_flags(abfd, flags) \ - BFD_SEND (abfd, _bfd_set_private_flags, \ - (abfd, flags)) -@end example -@* -@findex stuff -@subsubsection @code{stuff} -@strong{Description}@* -Stuff which should be documented: -@example -#define bfd_sizeof_headers(abfd, reloc) \ - BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc)) - -#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ - BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line)) - - /* Do these three do anything useful at all, for any back end? */ -#define bfd_debug_info_start(abfd) \ - BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) - -#define bfd_debug_info_end(abfd) \ - BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) - -#define bfd_debug_info_accumulate(abfd, section) \ - BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) - - -#define bfd_stat_arch_elt(abfd, stat) \ - BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) - -#define bfd_update_armap_timestamp(abfd) \ - BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) - -#define bfd_set_arch_mach(abfd, arch, mach)\ - BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) - -#define bfd_relax_section(abfd, section, link_info, again) \ - BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) - -#define bfd_link_hash_table_create(abfd) \ - BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) - -#define bfd_link_add_symbols(abfd, info) \ - BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) - -#define bfd_final_link(abfd, info) \ - BFD_SEND (abfd, _bfd_final_link, (abfd, info)) - -#define bfd_free_cached_info(abfd) \ - BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) - -#define bfd_get_dynamic_symtab_upper_bound(abfd) \ - BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) - -#define bfd_print_private_bfd_data(abfd, file)\ - BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) - -#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ - BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) - -#define bfd_get_dynamic_reloc_upper_bound(abfd) \ - BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) - -#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ - BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) - -extern bfd_byte *bfd_get_relocated_section_contents - PARAMS ((bfd *, struct bfd_link_info *, - struct bfd_link_order *, bfd_byte *, - boolean, asymbol **)); - -@end example -@* diff --git a/gnu/usr.bin/binutils/bfd/elf32-mn10200.c b/gnu/usr.bin/binutils/bfd/elf32-mn10200.c deleted file mode 100644 index 88c3cbecb84..00000000000 --- a/gnu/usr.bin/binutils/bfd/elf32-mn10200.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Matsushita 10200 specific support for 32-bit ELF - Copyright (C) 1996 Free Software Foundation, Inc. - -This file is part of BFD, the Binary File Descriptor library. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" -#include "elf-bfd.h" - -static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup - PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); -static void mn10200_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); - -/* Try to minimize the amount of space occupied by relocation tables - on the ROM (not that the ROM won't be swamped by other ELF overhead). */ -#define USE_REL - -enum reloc_type -{ - R_MN10200_NONE = 0, - R_MN10200_MAX -}; - -static reloc_howto_type elf_mn10200_howto_table[] = -{ - /* */ - HOWTO (R_MN10200_NONE, - 0, - 2, - 16, - false, - 0, - complain_overflow_bitfield, - bfd_elf_generic_reloc, - "R_MN10200_NONE", - false, - 0, - 0, - false), -}; - -struct mn10200_reloc_map -{ - unsigned char bfd_reloc_val; - unsigned char elf_reloc_val; -}; - -static const struct mn10200_reloc_map mn10200_reloc_map[] = -{ - { BFD_RELOC_NONE, R_MN10200_NONE, }, -}; - -static reloc_howto_type * -bfd_elf32_bfd_reloc_type_lookup (abfd, code) - bfd *abfd; - bfd_reloc_code_real_type code; -{ - unsigned int i; - - for (i = 0; - i < sizeof (mn10200_reloc_map) / sizeof (struct mn10200_reloc_map); - i++) - { - if (mn10200_reloc_map[i].bfd_reloc_val == code) - return &elf_mn10200_howto_table[mn10200_reloc_map[i].elf_reloc_val]; - } - - return NULL; -} - -/* Set the howto pointer for an V850 ELF reloc. */ - -static void -mn10200_info_to_howto_rel (abfd, cache_ptr, dst) - bfd *abfd; - arelent *cache_ptr; - Elf32_Internal_Rel *dst; -{ - unsigned int r_type; - - r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_MN10200_MAX); - cache_ptr->howto = &elf_mn10200_howto_table[r_type]; -} - -#define TARGET_LITTLE_SYM bfd_elf32_mn10200_vec -#define TARGET_LITTLE_NAME "elf32-mn10200" -#define ELF_ARCH bfd_arch_mn10200 -#define ELF_MACHINE_CODE EM_CYGNUS_MN10200 -#define ELF_MAXPAGESIZE 0x1000 - -#define elf_info_to_howto 0 -#define elf_info_to_howto_rel mn10200_info_to_howto_rel - -#include "elf32-target.h" diff --git a/gnu/usr.bin/binutils/bfd/elf32-mn10300.c b/gnu/usr.bin/binutils/bfd/elf32-mn10300.c deleted file mode 100644 index 309fa40a215..00000000000 --- a/gnu/usr.bin/binutils/bfd/elf32-mn10300.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Matsushita 10300 specific support for 32-bit ELF - Copyright (C) 1996 Free Software Foundation, Inc. - -This file is part of BFD, the Binary File Descriptor library. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" -#include "elf-bfd.h" - -static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup - PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); -static void mn10300_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); - -/* Try to minimize the amount of space occupied by relocation tables - on the ROM (not that the ROM won't be swamped by other ELF overhead). */ -#define USE_REL - -enum reloc_type -{ - R_MN10300_NONE = 0, - R_MN10300_MAX -}; - -static reloc_howto_type elf_mn10300_howto_table[] = -{ - /* */ - HOWTO (R_MN10300_NONE, - 0, - 2, - 16, - false, - 0, - complain_overflow_bitfield, - bfd_elf_generic_reloc, - "R_MN10300_NONE", - false, - 0, - 0, - false), -}; - -struct mn10300_reloc_map -{ - unsigned char bfd_reloc_val; - unsigned char elf_reloc_val; -}; - -static const struct mn10300_reloc_map mn10300_reloc_map[] = -{ - { BFD_RELOC_NONE, R_MN10300_NONE, }, -}; - -static reloc_howto_type * -bfd_elf32_bfd_reloc_type_lookup (abfd, code) - bfd *abfd; - bfd_reloc_code_real_type code; -{ - unsigned int i; - - for (i = 0; - i < sizeof (mn10300_reloc_map) / sizeof (struct mn10300_reloc_map); - i++) - { - if (mn10300_reloc_map[i].bfd_reloc_val == code) - return &elf_mn10300_howto_table[mn10300_reloc_map[i].elf_reloc_val]; - } - - return NULL; -} - -/* Set the howto pointer for an V850 ELF reloc. */ - -static void -mn10300_info_to_howto_rel (abfd, cache_ptr, dst) - bfd *abfd; - arelent *cache_ptr; - Elf32_Internal_Rel *dst; -{ - unsigned int r_type; - - r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_MN10300_MAX); - cache_ptr->howto = &elf_mn10300_howto_table[r_type]; -} - -#define TARGET_LITTLE_SYM bfd_elf32_mn10300_vec -#define TARGET_LITTLE_NAME "elf32-mn10300" -#define ELF_ARCH bfd_arch_mn10300 -#define ELF_MACHINE_CODE EM_CYGNUS_MN10300 -#define ELF_MAXPAGESIZE 0x1000 - -#define elf_info_to_howto 0 -#define elf_info_to_howto_rel mn10300_info_to_howto_rel - -#include "elf32-target.h" diff --git a/gnu/usr.bin/binutils/bfd/elf64-mips.c b/gnu/usr.bin/binutils/bfd/elf64-mips.c index 35c5218c29f..6fc0dcdf0e4 100644 --- a/gnu/usr.bin/binutils/bfd/elf64-mips.c +++ b/gnu/usr.bin/binutils/bfd/elf64-mips.c @@ -74,7 +74,7 @@ static long mips_elf64_get_reloc_upper_bound PARAMS ((bfd *, asection *)); static boolean mips_elf64_slurp_one_reloc_table PARAMS ((bfd *, asection *, asymbol **, const Elf_Internal_Shdr *)); static boolean mips_elf64_slurp_reloc_table - PARAMS ((bfd *, asection *, asymbol **)); + PARAMS ((bfd *, asection *, asymbol **, boolean)); static void mips_elf64_write_relocs PARAMS ((bfd *, asection *, PTR)); static boolean mips_elf64_slurp_armap PARAMS ((bfd *)); static boolean mips_elf64_write_armap @@ -1625,13 +1625,20 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr) associated with a single data section. */ static boolean -mips_elf64_slurp_reloc_table (abfd, asect, symbols) +mips_elf64_slurp_reloc_table (abfd, asect, symbols, dynamic) bfd *abfd; asection *asect; asymbol **symbols; + boolean dynamic; { struct bfd_elf_section_data * const d = elf_section_data (asect); + if (dynamic) + { + bfd_set_error (bfd_error_invalid_operation); + return false; + } + if (asect->relocation != NULL || (asect->flags & SEC_RELOC) == 0 || asect->reloc_count == 0) diff --git a/gnu/usr.bin/binutils/bfd/evax-alpha.c b/gnu/usr.bin/binutils/bfd/evax-alpha.c deleted file mode 100644 index 20a5a979fd2..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax-alpha.c +++ /dev/null @@ -1,1783 +0,0 @@ -/* evax-alpha.c -- BFD back-end for ALPHA EVAX (openVMS/AXP) files. - Copyright 1996 Free Software Foundation, Inc. - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -#include <stdio.h> - -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "evax.h" - -static boolean evax_initialize PARAMS ((bfd *)); -static boolean fill_section_ptr PARAMS ((struct bfd_hash_entry *, PTR)); -static boolean evax_fixup_sections PARAMS ((bfd *)); -static boolean copy_symbols PARAMS ((struct bfd_hash_entry *, PTR)); -static bfd_reloc_status_type reloc_nil - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static const struct bfd_target *evax_object_p PARAMS ((bfd *abfd)); -static const struct bfd_target *evax_archive_p PARAMS ((bfd *abfd)); -static boolean evax_mkobject PARAMS ((bfd *abfd)); -static boolean evax_write_object_contents PARAMS ((bfd *abfd)); -static boolean evax_close_and_cleanup PARAMS ((bfd *abfd)); -static boolean evax_bfd_free_cached_info PARAMS ((bfd *abfd)); -static boolean evax_new_section_hook PARAMS ((bfd *abfd, asection *section)); -static boolean evax_get_section_contents - PARAMS ((bfd *abfd, asection *section, PTR x1, file_ptr x2, - bfd_size_type x3)); -static boolean evax_get_section_contents_in_window - PARAMS ((bfd *abfd, asection *section, bfd_window *w, file_ptr offset, - bfd_size_type count)); -static boolean evax_bfd_copy_private_bfd_data PARAMS ((bfd *src, bfd *dest)); -static boolean evax_bfd_copy_private_section_data - PARAMS ((bfd *srcbfd, asection *srcsec, bfd *dstbfd, asection *dstsec)); -static boolean evax_bfd_copy_private_symbol_data - PARAMS ((bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym)); -static boolean evax_bfd_print_private_bfd_data - PARAMS ((bfd *abfd, void *file)); -static char *evax_core_file_failing_command PARAMS ((bfd *abfd)); -static int evax_core_file_failing_signal PARAMS ((bfd *abfd)); -static boolean evax_core_file_matches_executable_p - PARAMS ((bfd *abfd, bfd *bbfd)); -static boolean evax_slurp_armap PARAMS ((bfd *abfd)); -static boolean evax_slurp_extended_name_table PARAMS ((bfd *abfd)); -static boolean evax_construct_extended_name_table - PARAMS ((bfd *abfd, char **tabloc, bfd_size_type *tablen, - const char **name)); -static void evax_truncate_arname - PARAMS ((bfd *abfd, CONST char *pathname, char *arhdr)); -static boolean evax_write_armap - PARAMS ((bfd *arch, unsigned int elength, struct orl *map, - unsigned int orl_count, int stridx)); -static PTR evax_read_ar_hdr PARAMS ((bfd *abfd)); -static bfd *evax_get_elt_at_index PARAMS ((bfd *abfd, symindex index)); -static bfd *evax_openr_next_archived_file PARAMS ((bfd *arch, bfd *prev)); -static boolean evax_update_armap_timestamp PARAMS ((bfd *abfd)); -static int evax_generic_stat_arch_elt PARAMS ((bfd *abfd, struct stat *stat)); -static long evax_get_symtab_upper_bound PARAMS ((bfd *abfd)); -static long evax_get_symtab PARAMS ((bfd *abfd, asymbol **symbols)); -static void evax_print_symbol - PARAMS ((bfd *abfd, PTR file, asymbol *symbol, bfd_print_symbol_type how)); -static void evax_get_symbol_info - PARAMS ((bfd *abfd, asymbol *symbol, symbol_info *ret)); -static boolean evax_bfd_is_local_label PARAMS ((bfd *abfd, asymbol *symbol)); -static alent *evax_get_lineno PARAMS ((bfd *abfd, asymbol *symbol)); -static boolean evax_find_nearest_line - PARAMS ((bfd *abfd, asection *section, asymbol **symbols, bfd_vma offset, - const char **file, const char **func, unsigned int *line)); -static asymbol *evax_bfd_make_debug_symbol - PARAMS ((bfd *abfd, void *ptr, unsigned long size)); -static long evax_read_minisymbols - PARAMS ((bfd *abfd, boolean dynamic, PTR *minisymsp, unsigned int *sizep)); -static asymbol *evax_minisymbol_to_symbol - PARAMS ((bfd *abfd, boolean dynamic, const PTR minisym, asymbol *sym)); -static long evax_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect)); -static long evax_canonicalize_reloc - PARAMS ((bfd *abfd, asection *srcsec, arelent **location, - asymbol **symbols)); -static const struct reloc_howto_struct *evax_bfd_reloc_type_lookup - PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); -static boolean evax_set_arch_mach - PARAMS ((bfd *abfd, enum bfd_architecture arch, unsigned long mach)); -static boolean evax_set_section_contents - PARAMS ((bfd *abfd, asection *section, PTR location, file_ptr offset, - bfd_size_type count)); -static int evax_sizeof_headers PARAMS ((bfd *abfd, boolean reloc)); -static bfd_byte *evax_bfd_get_relocated_section_contents - PARAMS ((bfd *abfd, struct bfd_link_info *link_info, - struct bfd_link_order *link_order, bfd_byte *data, - boolean relocateable, asymbol **symbols)); -static boolean evax_bfd_relax_section - PARAMS ((bfd *abfd, asection *section, struct bfd_link_info *link_info, - boolean *again)); -static struct bfd_link_hash_table *evax_bfd_link_hash_table_create - PARAMS ((bfd *abfd)); -static boolean evax_bfd_link_add_symbols - PARAMS ((bfd *abfd, struct bfd_link_info *link_info)); -static boolean evax_bfd_final_link - PARAMS ((bfd *abfd, struct bfd_link_info *link_info)); -static boolean evax_bfd_link_split_section - PARAMS ((bfd *abfd, asection *section)); -static long evax_get_dynamic_symtab_upper_bound PARAMS ((bfd *abfd)); -static long evax_canonicalize_dynamic_symtab - PARAMS ((bfd *abfd, asymbol **symbols)); -static long evax_get_dynamic_reloc_upper_bound PARAMS ((bfd *abfd)); -static long evax_canonicalize_dynamic_reloc - PARAMS ((bfd *abfd, arelent **arel, asymbol **symbols)); -static boolean evax_bfd_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd)); -static boolean evax_bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags)); - -#define evax_make_empty_symbol _bfd_evax_make_empty_symbol - -/*===========================================================================*/ - -const bfd_target evax_alpha_vec = -{ - - "evax-alpha", /* name */ - bfd_target_evax_flavour, - false, /* data byte order is little */ - false, /* header byte order is little */ - - (HAS_RELOC | HAS_SYMS - | WP_TEXT | D_PAGED), /* object flags */ - (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_READONLY | SEC_CODE | SEC_DATA - | SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* sect flags */ - 0, /* symbol_leading_char */ - ' ', /* ar_pad_char */ - 15, /* ar_max_namelen */ - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, - - {_bfd_dummy_target, evax_object_p, /* bfd_check_format */ - evax_archive_p, _bfd_dummy_target}, - {bfd_false, evax_mkobject, /* bfd_set_format */ - _bfd_generic_mkarchive, bfd_false}, - {bfd_false, evax_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, - - BFD_JUMP_TABLE_GENERIC (evax), - BFD_JUMP_TABLE_COPY (evax), - BFD_JUMP_TABLE_CORE (evax), - BFD_JUMP_TABLE_ARCHIVE (evax), - BFD_JUMP_TABLE_SYMBOLS (evax), - BFD_JUMP_TABLE_RELOCS (evax), - BFD_JUMP_TABLE_WRITE (evax), - BFD_JUMP_TABLE_LINK (evax), - BFD_JUMP_TABLE_DYNAMIC (evax), - - (PTR) 0 -}; - - -/*===========================================================================*/ - -/* Initialize private data */ - -static boolean -evax_initialize (abfd) - bfd *abfd; -{ - int i; - - if (abfd->tdata.any != 0) - return true; - - bfd_set_start_address (abfd, (bfd_vma)-1); - - abfd->tdata.any = ((struct evax_private_data_struct*) - bfd_malloc (sizeof (struct evax_private_data_struct))); - if (abfd->tdata.any == 0) - return false; - PRIV(evax_buf) = 0; - PRIV(buf_size) = 0; - PRIV(rec_length) = 0; - PRIV(file_format) = FF_UNKNOWN; - PRIV(filename) = NULL; - PRIV(fixup_done) = false; - PRIV(sections) = NULL; - - PRIV(stack) = ((struct stack_struct *) - bfd_malloc (sizeof (struct stack_struct) * STACKSIZE)); - if (PRIV(stack) == 0) - { - evax_init_no_mem1: - free (abfd->tdata.any); - abfd->tdata.any = 0; - return false; - } - PRIV(stackptr) = 0; - - PRIV(evax_symbol_table) = ((struct bfd_hash_table *) - bfd_malloc (sizeof (struct bfd_hash_table))); - if (PRIV(evax_symbol_table) == 0) - { - evax_init_no_mem2: - free (PRIV(stack)); - PRIV(stack) = 0; - goto evax_init_no_mem1; - } - - if (!bfd_hash_table_init (PRIV(evax_symbol_table), _bfd_evax_hash_newfunc)) - return false; - - PRIV(location_stack) = ((struct location_struct *) - bfd_malloc (sizeof (struct location_struct) - * LOCATION_SAVE_SIZE)); - if (PRIV(location_stack) == 0) - { - evax_init_no_mem3: - free (PRIV(evax_symbol_table)); - PRIV(evax_symbol_table) = 0; - goto evax_init_no_mem2; - } - - for (i = 0; i < EVAX_SECTION_COUNT; i++) - PRIV(evax_section_table)[i] = NULL; - - PRIV(output_buf) = (unsigned char *) malloc (MAX_OUTREC_SIZE); - if (PRIV(output_buf) == 0) - { - free (PRIV(location_stack)); - PRIV(location_stack) = 0; - goto evax_init_no_mem3; - } - PRIV(push_level) = 0; - PRIV(pushed_size) = 0; - PRIV(length_pos) = 2; - PRIV(output_size) = 0; - PRIV(output_alignment) = 1; - - return true; -} - - -/* Fill symbol->section with section ptr - symbol->section is filled with the section index for defined symbols - during reading the EGSD section. But we need the pointer to the - bfd section later. - - It has the correct value for referenced (undefined section) symbols - - called from bfd_hash_traverse in evax_fixup_sections */ - -static boolean -fill_section_ptr (entry, sections) - struct bfd_hash_entry *entry; - PTR sections; -{ - asection *sec; - asymbol *sym; - - sym = ((evax_symbol_entry *)entry)->symbol; - sec = sym->section; - - if (!bfd_is_und_section (sec)) - { - sec = ((evax_symbol_entry *)entry)->symbol->section = - ((asection **)sections)[(int)sec]; - } - - if (strcmp (sym->name, sec->name) == 0) - sym->flags |= BSF_SECTION_SYM; - - return true; -} - - -/* Fixup sections - set up all pointers and arrays, counters and sizes are fixed now - - we build a private sections vector for easy access since sections - are always referenced by an index number. - - alloc PRIV(sections) according to abfd->section_count - copy abfd->sections to PRIV(sections) */ - -static boolean -evax_fixup_sections (abfd) - bfd *abfd; -{ - asection *s; - - if (PRIV(fixup_done)) - return true; - - PRIV(sections) = ((asection **) - bfd_malloc (abfd->section_count * sizeof (asection *))); - if (PRIV(sections) == 0) - return false; - PRIV(egsd_sec_count) = abfd->section_count; - s = abfd->sections; - while (s) - { - PRIV(sections)[s->index] = s; - s = s->next; - } - - /* - * traverse symbol table and fill in all section pointers - */ - - bfd_hash_traverse (PRIV(evax_symbol_table), fill_section_ptr, - (PTR)(PRIV(sections))); - - PRIV(fixup_done) = true; - - return true; -} - -/*===========================================================================*/ - -/* Check the format for a file being read. - Return a (bfd_target *) if it's an object file or zero if not. */ - -static const struct bfd_target * -evax_object_p (abfd) - bfd *abfd; -{ - int err = 0; - int prev_type; -#if EVAX_DEBUG - evax_debug (1, "evax_object_p(%p)\n", abfd); -#endif - if (bfd_seek (abfd, 0L, SEEK_SET)) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - prev_type = -1; - - do - { -#if EVAX_DEBUG - evax_debug (3, "reading at %08lx\n", bfd_tell(abfd)); -#endif - if (_bfd_evax_next_record (abfd) < 0) - { -#if EVAX_DEBUG - evax_debug (2, "next_record failed\n"); -#endif - bfd_set_error (bfd_error_wrong_format); - return 0; - } - - if ((prev_type == EOBJ_S_C_EGSD) && (PRIV(rec_type) != EOBJ_S_C_EGSD)) - { - if (evax_fixup_sections (abfd) == false) - { -#if EVAX_DEBUG - evax_debug (2, "evax_fixup_sections failed\n"); -#endif - bfd_set_error (bfd_error_wrong_format); - return 0; - } - } - - prev_type = PRIV(rec_type); - - switch (PRIV(rec_type)) - { - case EOBJ_S_C_EMH: - err = _bfd_evax_slurp_emh (abfd); - break; - case EOBJ_S_C_EEOM: - err = _bfd_evax_slurp_eeom (abfd); - break; - case EOBJ_S_C_EGSD: - err = _bfd_evax_slurp_egsd (abfd); - break; - case EOBJ_S_C_ETIR: - err = _bfd_evax_slurp_etir (abfd); - break; - case EOBJ_S_C_EDBG: - err = _bfd_evax_slurp_edbg (abfd); - break; - case EOBJ_S_C_ETBT: - err = _bfd_evax_slurp_etbt (abfd); - break; - default: - err = -1; - } - if (err != 0) - { -#if EVAX_DEBUG - evax_debug (2, "slurp type %d failed with %d\n", PRIV(rec_type), err); -#endif - bfd_set_error (bfd_error_wrong_format); - return 0; - } - } - while (prev_type != EOBJ_S_C_EEOM); - - /* set arch_info to alpha */ - - { - const bfd_arch_info_type *arch = bfd_scan_arch ("alpha"); - if (arch == 0) - { -#if EVAX_DEBUG - evax_debug (2, "arch not found\n"); -#endif - bfd_set_error (bfd_error_wrong_format); - return 0; - } - abfd->arch_info = arch; - } - - return &evax_alpha_vec; -} - - -/* Check the format for a file being read. - Return a (bfd_target *) if it's an archive file or zero. */ - -static const struct bfd_target * -evax_archive_p (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_archive_p(%p)\n", abfd); -#endif - - if (!evax_initialize (abfd)) - return 0; - - return 0; -} - - -/* Set the format of a file being written. */ - -static boolean -evax_mkobject (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_mkobject(%p)\n", abfd); -#endif - - if (!evax_initialize (abfd)) - return 0; - - { - const bfd_arch_info_type *arch = bfd_scan_arch ("alpha"); - if (arch == 0) - { - bfd_set_error(bfd_error_wrong_format); - return 0; - } - abfd->arch_info = arch; - } - - return true; -} - - -/* Write cached information into a file being written, at bfd_close. */ - -static boolean -evax_write_object_contents (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_write_object_contents(%p)\n", abfd); -#endif - - if (abfd->section_count > 0) /* we have sections */ - { - if (_bfd_evax_write_emh (abfd) != 0) - return false; - if (_bfd_evax_write_egsd (abfd) != 0) - return false; - if (_bfd_evax_write_etir (abfd) != 0) - return false; - if (_bfd_evax_write_etbt (abfd) != 0) - return false; - if (_bfd_evax_write_eeom (abfd) != 0) - return false; - } - return true; -} - -/*-- 4.1, generic -----------------------------------------------------------*/ - -/* Called when the BFD is being closed to do any necessary cleanup. */ - -static boolean -evax_close_and_cleanup (abfd) - bfd *abfd; -{ - asection *sec; - evax_section *es, *es1; - evax_reloc *er, *er1; - int i; - -#if EVAX_DEBUG - evax_debug (1, "evax_close_and_cleanup(%p)\n", abfd); -#endif - if (abfd == 0) - return true; - - if (PRIV(evax_buf) != NULL) - { - free (PRIV(evax_buf)); - PRIV(evax_buf) = NULL; - } - PRIV(buf_size) = 0; - - if (PRIV(filename) != NULL) - { - free (PRIV(filename)); - PRIV(filename) = NULL; - } - - if (PRIV(output_buf) != 0) - { - free (PRIV(output_buf)); - PRIV(output_buf) = 0; - } - - sec = abfd->sections; - while (sec != NULL) - { - if (sec->contents) - free (sec->contents); - sec = sec->next; - } - - if (PRIV(sections) != NULL) - { - free (PRIV(sections)); - PRIV(sections) = NULL; - } - - if (PRIV(evax_symbol_table)) - { - bfd_hash_table_free (PRIV(evax_symbol_table)); - PRIV(evax_symbol_table) = 0; - } - - if (PRIV(stack)) - { - free (PRIV(stack)); - PRIV(stack) = 0; - } - - if (PRIV(location_stack)) - { - free (PRIV(location_stack)); - PRIV(location_stack) = 0; - } - - for (i = 0; i < EVAX_SECTION_COUNT; i++) - { - es = PRIV(evax_section_table)[i]; - while (es != NULL) - { - es1 = es->next; - free (es); - es = es1; - } - PRIV(evax_section_table)[i] = NULL; - } - - free (abfd->tdata.any); - abfd->tdata.any = NULL; - - return true; -} - - -/* Ask the BFD to free all cached information. */ -static boolean -evax_bfd_free_cached_info (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_free_cached_info(%p)\n", abfd); -#endif - return true; -} - - -/* Called when a new section is created. */ - -static boolean -evax_new_section_hook (abfd, section) - bfd *abfd; - asection *section; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_new_section_hook(%p, %s)\n", abfd, section->name); -#endif - bfd_set_section_alignment(abfd, section, 4); - return true; -} - - -/* Read the contents of a section. - buf points to a buffer of buf_size bytes to be filled with - section data (starting at offset into section) */ - -static boolean -evax_get_section_contents (abfd, section, buf, offset, buf_size) - bfd *abfd; - asection *section; - PTR buf; - file_ptr offset; - bfd_size_type buf_size; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_section_contents(%p, %s, %p, off %ld, size %d)\n", - abfd, section->name, buf, offset, (int)buf_size); -#endif - - /* shouldn't be called, since all sections are IN_MEMORY */ - - return false; -} - -/* Read the contents of a section. - buf points to a buffer of buf_size bytes to be filled with - section data (starting at offset into section) */ - -static boolean -evax_get_section_contents_in_window (abfd, section, w, offset, count) - bfd *abfd; - asection *section; - bfd_window *w; - file_ptr offset; - bfd_size_type count; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_section_contents_in_window(%p, %s, %p, off %ld, count %d)\n", - abfd, section->name, w, offset, (int)count); -#endif - - /* shouldn't be called, since all sections are IN_MEMORY */ - - return false; -} - -/*-- Part 4.2, copy private data --------------------------------------------*/ - -/* Called to copy BFD general private data from one object file - to another. */ - -static boolean -evax_bfd_copy_private_bfd_data (src, dest) - bfd *src; - bfd *dest; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_copy_private_bfd_data(%p, %p)\n", src, dest); -#endif - return true; -} - - -/* Merge private BFD information from the BFD @var{ibfd} to the - the output file BFD @var{obfd} when linking. Return <<true>> - on success, <<false>> on error. Possible error returns are: - - o <<bfd_error_no_memory>> - - Not enough memory exists to create private data for @var{obfd}. */ - -static boolean -evax_bfd_merge_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ -#if EVAX_DEBUG - evax_debug (1,"evax_bfd_merge_private_bfd_data(%p, %p)\n", ibfd, obfd); -#endif - return true; -} - - -/* Set private BFD flag information in the BFD @var{abfd}. - Return <<true>> on success, <<false>> on error. Possible error - returns are: - - o <<bfd_error_no_memory>> - - Not enough memory exists to create private data for @var{obfd}. */ - -static boolean -evax_bfd_set_private_flags (abfd, flags) - bfd *abfd; - flagword flags; -{ -#if EVAX_DEBUG - evax_debug (1,"evax_bfd_set_private_flags(%p, %lx)\n", abfd, (long)flags); -#endif - return true; -} - - -/* Called to copy BFD private section data from one object file - to another. */ - -static boolean -evax_bfd_copy_private_section_data (srcbfd, srcsec, dstbfd, dstsec) - bfd *srcbfd; - asection *srcsec; - bfd *dstbfd; - asection *dstsec; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_copy_private_section_data(%p, %s, %p, %s)\n", - srcbfd, srcsec->name, dstbfd, dstsec->name); -#endif - return true; -} - -/* Called to copy BFD private symbol data from one object file - to another. */ - -static boolean -evax_bfd_copy_private_symbol_data (ibfd, isym, obfd, osym) - bfd *ibfd; - asymbol *isym; - bfd *obfd; - asymbol *osym; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_copy_private_symbol_data(%p, %s, %p, %s)\n", - ibfd, isym->name, obfd, osym->name); -#endif - return true; -} - -/*-- Part 4.3, core file ----------------------------------------------------*/ - -/* Return a read-only string explaining which program was running - when it failed and produced the core file abfd. */ - -static char * -evax_core_file_failing_command (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_core_file_failing_command(%p)\n", abfd); -#endif - return 0; -} - - -/* Returns the signal number which caused the core dump which - generated the file the BFD abfd is attached to. */ - -static int -evax_core_file_failing_signal (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_core_file_failing_signal(%p)\n", abfd); -#endif - return 0; -} - - -/* Return true if the core file attached to core_bfd was generated - by a run of the executable file attached to exec_bfd, false otherwise. */ - -static boolean -evax_core_file_matches_executable_p (abfd, bbfd) - bfd *abfd; - bfd *bbfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_core_file_matches_executable_p(%p, %p)\n", abfd, bbfd); -#endif - return false; -} - -/*-- Part 4.4, archive ------------------------------------------------------*/ - -/* ??? do something with an archive map. - Return false on error, true otherwise. */ - -static boolean -evax_slurp_armap (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_slurp_armap(%p)\n", abfd); -#endif - return false; -} - - -/* ??? do something with an extended name table. - Return false on error, true otherwise. */ - -static boolean -evax_slurp_extended_name_table (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_slurp_extended_name_table(%p)\n", abfd); -#endif - return false; -} - - -/* ??? do something with an extended name table. - Return false on error, true otherwise. */ - -static boolean -evax_construct_extended_name_table (abfd, tabloc, tablen, name) - bfd *abfd; - char **tabloc; - bfd_size_type *tablen; - const char **name; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_construct_extended_name_table(%p)\n", abfd); -#endif - return false; -} - - -/* Truncate the name of an archive to match system-dependent restrictions */ - -static void -evax_truncate_arname (abfd, pathname, arhdr) - bfd *abfd; - CONST char *pathname; - char *arhdr; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_truncate_arname(%p, %s, %s)\n", abfd, pathname, arhdr); -#endif - return; -} - - -/* ??? write archive map */ - -static boolean -evax_write_armap (arch, elength, map, orl_count, stridx) - bfd *arch; - unsigned int elength; - struct orl *map; - unsigned int orl_count; - int stridx; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_write_armap(%p, %d, %p, %d %d)\n", - arch, elength, map, orl_count, stridx); -#endif - return true; -} - -/* Read archive header ??? */ - -static PTR -evax_read_ar_hdr (abfd) - bfd * abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_read_ar_hdr(%p)\n", abfd); -#endif - return (PTR)0; -} - - -/* Provided a BFD, @var{archive}, containing an archive and NULL, open - an input BFD on the first contained element and returns that. - Subsequent calls should pass the archive and the previous return value - to return a created BFD to the next contained element. - NULL is returned when there are no more. */ - -static bfd * -evax_openr_next_archived_file (arch, prev) - bfd *arch; - bfd *prev; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_openr_next_archived_file(%p, %p)\n", arch, prev); -#endif - return false; -} - - -/* Return the BFD which is referenced by the symbol in ABFD indexed by - INDEX. INDEX should have been returned by bfd_get_next_mapent. */ - -static bfd * -evax_get_elt_at_index (abfd, index) - bfd *abfd; - symindex index; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_elt_at_index(%p, %p)\n", abfd, index); -#endif - return _bfd_generic_get_elt_at_index(abfd, index); -} - - -/* ??? - -> bfd_generic_stat_arch_elt */ - -static int -evax_generic_stat_arch_elt (abfd, stat) - bfd *abfd; - struct stat *stat; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_generic_stat_arch_elt(%p, %p)\n", abfd, stat); -#endif - return bfd_generic_stat_arch_elt(abfd, stat); -} - - -/* This is a new function in bfd 2.5 */ - -static boolean -evax_update_armap_timestamp (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_update_armap_timestamp(%p)\n", abfd); -#endif - return true; -} - -/*-- Part 4.5, symbols --------------------------------------------------------*/ - -/* Return the number of bytes required to store a vector of pointers - to asymbols for all the symbols in the BFD abfd, including a - terminal NULL pointer. If there are no symbols in the BFD, - then return 0. If an error occurs, return -1. */ - -static long -evax_get_symtab_upper_bound (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_symtab_upper_bound(%p), %d symbols\n", abfd, PRIV(egsd_sym_count)); -#endif - return (PRIV(egsd_sym_count)+1) * sizeof(asymbol *); -} - - -/* Copy symbols from hash table to symbol vector - - called from bfd_hash_traverse in evax_get_symtab - init counter to 0 if entry == 0 */ - -static boolean -copy_symbols (entry, arg) - struct bfd_hash_entry *entry; - PTR arg; -{ - bfd *abfd = (bfd *) arg; - - if (entry == NULL) /* init counter */ - PRIV(symnum) = 0; - else /* fill vector, inc counter */ - PRIV(symcache)[PRIV(symnum)++] = ((evax_symbol_entry *)entry)->symbol; - - return true; -} - - -/* Read the symbols from the BFD abfd, and fills in the vector - location with pointers to the symbols and a trailing NULL. - - return # of symbols read */ - -static long -evax_get_symtab (abfd, symbols) - bfd *abfd; - asymbol **symbols; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_symtab(%p, <ret>)\n", abfd); -#endif - - /* init counter */ - (void)copy_symbols((struct bfd_hash_entry *)0, abfd); - - /* traverse table and fill symbols vector */ - - PRIV(symcache) = symbols; - bfd_hash_traverse(PRIV(evax_symbol_table), copy_symbols, (PTR)abfd); - - symbols[bfd_get_symcount(abfd)] = NULL; - - return bfd_get_symcount(abfd); -} - - -/* Create a new asymbol structure for the BFD abfd and return a pointer - to it. - This routine is necessary because each back end has private information - surrounding the asymbol. Building your own asymbol and pointing to it - will not create the private information, and will cause problems later on. */ - -asymbol * -_bfd_evax_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *symbol = (asymbol *)bfd_zalloc(abfd, sizeof(asymbol)); - -#if EVAX_DEBUG - evax_debug (1, "_bfd_evax_make_empty_symbol(%p)\n", abfd); -#endif - - if (symbol == 0) - { - bfd_set_error (bfd_error_no_memory); - return 0; - } - symbol->the_bfd = abfd; - - return symbol; -} - - -/* Print symbol to file according to how. how is one of - bfd_print_symbol_name just print the name - bfd_print_symbol_more print more (???) - bfd_print_symbol_all print all we know, which is not much right now :-) */ - -static void -evax_print_symbol (abfd, file, symbol, how) - bfd *abfd; - PTR file; - asymbol *symbol; - bfd_print_symbol_type how; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_print_symbol(%p, %p, %p, %d)\n", abfd, file, symbol, how); -#endif - - switch (how) - { - case bfd_print_symbol_name: - case bfd_print_symbol_more: - fprintf((FILE *)file," %s", symbol->name); - break; - - break; - - case bfd_print_symbol_all: - { - CONST char *section_name = symbol->section->name; - - bfd_print_symbol_vandf((PTR)file,symbol); - - fprintf((FILE *)file," %-8s %s", section_name, symbol->name); - } - break; - } - return; -} - - -/* Return information about symbol in ret. - - fill type, value and name - type: - A absolute - B bss segment symbol - C common symbol - D data segment symbol - f filename - t a static function symbol - T text segment symbol - U undefined - - debug */ - -static void -evax_get_symbol_info (abfd, symbol, ret) - bfd *abfd; - asymbol *symbol; - symbol_info *ret; -{ - asection *sec; - -#if EVAX_DEBUG - evax_debug (1, "evax_get_symbol_info(%p, %p, <ret>)\n", abfd, symbol); -#endif - - sec = symbol->section; - - if (bfd_is_com_section (sec)) - ret->type = 'C'; - else if (bfd_is_abs_section (sec)) - ret->type = 'A'; - else if (bfd_is_und_section (sec)) - ret->type = 'U'; - else if (bfd_is_abs_section (sec)) - ret->type = 'A'; - else if (bfd_is_ind_section (sec)) - ret->type = 'I'; - else if (bfd_get_section_flags (abfd, sec) & SEC_CODE) - ret->type = 'T'; - else if (bfd_get_section_flags (abfd, sec) & SEC_DATA) - ret->type = 'D'; - else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) - ret->type = 'B'; - else - ret->type = '-'; - - if (ret->type != 'U') - ret->value = symbol->value + symbol->section->vma; - else - ret->value = 0; - ret->name = symbol->name; - - return; -} - - -/* Return true if the given symbol sym in the BFD abfd is - a compiler generated local label, else return false. */ - -static boolean -evax_bfd_is_local_label (abfd, symbol) - bfd *abfd; - asymbol *symbol; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_is_local_label(%p, %p)\n", abfd, symbol); -#endif - return false; -} - - -/* Get source line number for symbol */ - -static alent * -evax_get_lineno (abfd, symbol) - bfd *abfd; - asymbol *symbol; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_lineno(%p, %p)\n", abfd, symbol); -#endif - return 0; -} - - -/* Provided a BFD, a section and an offset into the section, calculate and - return the name of the source file and the line nearest to the wanted - location. */ - -static boolean -evax_find_nearest_line (abfd, section, symbols, offset, file, func, line) - bfd *abfd; - asection *section; - asymbol **symbols; - bfd_vma offset; - CONST char **file; - CONST char **func; - unsigned int *line; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_find_nearest_line(%p, %s, %p, %ld, <ret>, <ret>, <ret>)\n", - abfd, section->name, symbols, (long int)offset); -#endif - return false; -} - - -/* Back-door to allow format-aware applications to create debug symbols - while using BFD for everything else. Currently used by the assembler - when creating COFF files. */ - -static asymbol * -evax_bfd_make_debug_symbol (abfd, ptr, size) - bfd *abfd; - void *ptr; - unsigned long size; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_make_debug_symbol(%p, %p, %ld)\n", abfd, ptr, size); -#endif - return 0; -} - - -/* Read minisymbols. For minisymbols, we use the unmodified a.out - symbols. The minisymbol_to_symbol function translates these into - BFD asymbol structures. */ - -static long -evax_read_minisymbols (abfd, dynamic, minisymsp, sizep) - bfd *abfd; - boolean dynamic; - PTR *minisymsp; - unsigned int *sizep; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_read_minisymbols(%p, %d, %p, %d)\n", abfd, dynamic, minisymsp, *sizep); -#endif - return _bfd_generic_read_minisymbols (abfd, dynamic, minisymsp, sizep); -} - -/* Convert a minisymbol to a BFD asymbol. A minisymbol is just an - unmodified a.out symbol. The SYM argument is a structure returned - by bfd_make_empty_symbol, which we fill in here. */ - -static asymbol * -evax_minisymbol_to_symbol (abfd, dynamic, minisym, sym) - bfd *abfd; - boolean dynamic; - const PTR minisym; - asymbol *sym; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_minisymbol_to_symbol(%p, %d, %p, %p)\n", abfd, dynamic, minisym, sym); -#endif - return _bfd_generic_minisymbol_to_symbol (abfd, dynamic, minisym, sym); -} - -/*-- Part 4.6, relocations --------------------------------------------------*/ - -/* Return the number of bytes required to store the relocation information - associated with section sect attached to bfd abfd. - If an error occurs, return -1. */ - -static long -evax_get_reloc_upper_bound (abfd, section) - bfd *abfd; - asection *section; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_reloc_upper_bound(%p, %s)\n", abfd, section->name); -#endif - return -1L; -} - - -/* Call the back end associated with the open BFD abfd and translate the - external form of the relocation information attached to sec into the - internal canonical form. Place the table into memory at loc, which has - been preallocated, usually by a call to bfd_get_reloc_upper_bound. - Returns the number of relocs, or -1 on error. */ - -static long -evax_canonicalize_reloc (abfd, section, location, symbols) - bfd *abfd; - asection *section; - arelent **location; - asymbol **symbols; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_canonicalize_reloc(%p, %s, <ret>, <ret>)\n", abfd, section->name); -#endif - return false; -} - -/*---------------------------------------------------------------------------*/ -/* this is just copied from ecoff-alpha, needs to be fixed probably */ - -/* How to process the various reloc types. */ - -static bfd_reloc_status_type -reloc_nil (abfd, reloc, sym, data, sec, output_bfd, error_message) - bfd *abfd; - arelent *reloc; - asymbol *sym; - PTR data; - asection *sec; - bfd *output_bfd; - char **error_message; -{ -#if EVAX_DEBUG - evax_debug (1, "reloc_nil(abfd %p, output_bfd %p)\n", abfd, output_bfd); - evax_debug (2, "In section %s, symbol %s\n", - sec->name, sym->name); - evax_debug (2, "reloc sym %s, addr %08lx, addend %08lx, reloc is a %s\n", - reloc->sym_ptr_ptr[0]->name, - (unsigned long)reloc->address, - (unsigned long)reloc->addend, reloc->howto->name); - evax_debug (2, "data at %p\n", data); -/* _bfd_hexdump (2, data, bfd_get_reloc_size(reloc->howto),0); */ -#endif - - return bfd_reloc_ok; -} - -/* In case we're on a 32-bit machine, construct a 64-bit "-1" value - from smaller values. Start with zero, widen, *then* decrement. */ -#define MINUS_ONE (((bfd_vma)0) - 1) - -static reloc_howto_type alpha_howto_table[] = -{ - HOWTO (ALPHA_R_IGNORE, /* type */ - 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 8, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "IGNORE", /* name */ - true, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - true), /* pcrel_offset */ - - /* A 64 bit reference to a symbol. */ - HOWTO (ALPHA_R_REFQUAD, /* type */ - 0, /* rightshift */ - 4, /* size (0 = byte, 1 = short, 2 = long) */ - 64, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "REFQUAD", /* name */ - true, /* partial_inplace */ - MINUS_ONE, /* src_mask */ - MINUS_ONE, /* dst_mask */ - false), /* pcrel_offset */ - - /* A 21 bit branch. The native assembler generates these for - branches within the text segment, and also fills in the PC - relative offset in the instruction. */ - HOWTO (ALPHA_R_BRADDR, /* type */ - 2, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 21, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_signed, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "BRADDR", /* name */ - true, /* partial_inplace */ - 0x1fffff, /* src_mask */ - 0x1fffff, /* dst_mask */ - false), /* pcrel_offset */ - - /* A hint for a jump to a register. */ - HOWTO (ALPHA_R_HINT, /* type */ - 2, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ - 14, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "HINT", /* name */ - true, /* partial_inplace */ - 0x3fff, /* src_mask */ - 0x3fff, /* dst_mask */ - false), /* pcrel_offset */ - - /* 16 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL16, /* type */ - 0, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ - 16, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_signed, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "SREL16", /* name */ - true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ - false), /* pcrel_offset */ - - /* 32 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL32, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_signed, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "SREL32", /* name */ - true, /* partial_inplace */ - 0xffffffff, /* src_mask */ - 0xffffffff, /* dst_mask */ - false), /* pcrel_offset */ - - /* A 64 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL64, /* type */ - 0, /* rightshift */ - 4, /* size (0 = byte, 1 = short, 2 = long) */ - 64, /* bitsize */ - true, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_signed, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "SREL64", /* name */ - true, /* partial_inplace */ - MINUS_ONE, /* src_mask */ - MINUS_ONE, /* dst_mask */ - false), /* pcrel_offset */ - - /* Push a value on the reloc evaluation stack. */ - HOWTO (ALPHA_R_OP_PUSH, /* type */ - 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "OP_PUSH", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - false), /* pcrel_offset */ - - /* Store the value from the stack at the given address. Store it in - a bitfield of size r_size starting at bit position r_offset. */ - HOWTO (ALPHA_R_OP_STORE, /* type */ - 0, /* rightshift */ - 4, /* size (0 = byte, 1 = short, 2 = long) */ - 64, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "OP_STORE", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - MINUS_ONE, /* dst_mask */ - false), /* pcrel_offset */ - - /* Subtract the reloc address from the value on the top of the - relocation stack. */ - HOWTO (ALPHA_R_OP_PSUB, /* type */ - 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "OP_PSUB", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - false), /* pcrel_offset */ - - /* Shift the value on the top of the relocation stack right by the - given value. */ - HOWTO (ALPHA_R_OP_PRSHIFT, /* type */ - 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "OP_PRSHIFT", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - false), /* pcrel_offset */ - - /* Hack. Linkage is done by linker. */ - HOWTO (ALPHA_R_LINKAGE, /* type */ - 0, /* rightshift */ - 8, /* size (0 = byte, 1 = short, 2 = long) */ - 256, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "LINKAGE", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - false), /* pcrel_offset */ - - /* A 32 bit reference to a symbol. */ - HOWTO (ALPHA_R_REFLONG, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - reloc_nil, /* special_function */ - "REFLONG", /* name */ - true, /* partial_inplace */ - 0xffffffff, /* src_mask */ - 0xffffffff, /* dst_mask */ - false), /* pcrel_offset */ - -}; - -/* Return a pointer to a howto structure which, when invoked, will perform - the relocation code on data from the architecture noted. */ - -static const struct reloc_howto_struct * -evax_bfd_reloc_type_lookup (abfd, code) - bfd *abfd; - bfd_reloc_code_real_type code; -{ - int alpha_type; - -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_reloc_type_lookup(%p, %d)\t", abfd, code); -#endif - - switch (code) - { - case BFD_RELOC_16: alpha_type = ALPHA_R_SREL16; break; - case BFD_RELOC_32: alpha_type = ALPHA_R_REFLONG; break; - case BFD_RELOC_64: alpha_type = ALPHA_R_REFQUAD; break; - case BFD_RELOC_CTOR: alpha_type = ALPHA_R_REFQUAD; break; - case BFD_RELOC_23_PCREL_S2: alpha_type = ALPHA_R_BRADDR; break; - case BFD_RELOC_ALPHA_HINT: alpha_type = ALPHA_R_HINT; break; - case BFD_RELOC_16_PCREL: alpha_type = ALPHA_R_SREL16; break; - case BFD_RELOC_32_PCREL: alpha_type = ALPHA_R_SREL32; break; - case BFD_RELOC_64_PCREL: alpha_type = ALPHA_R_SREL64; break; - case BFD_RELOC_ALPHA_LINKAGE: alpha_type = ALPHA_R_LINKAGE; break; -#if 0 - case ???: alpha_type = ALPHA_R_OP_PUSH; break; - case ???: alpha_type = ALPHA_R_OP_STORE; break; - case ???: alpha_type = ALPHA_R_OP_PSUB; break; - case ???: alpha_type = ALPHA_R_OP_PRSHIFT;break; - case ???: alpha_type = ALPHA_R_GPVALUE; break; -#endif - default: - (*_bfd_error_handler) ("reloc (%d) is *UNKNOWN*", code); - return (const struct reloc_howto_struct *) NULL; - } -#if EVAX_DEBUG - evax_debug (2, "reloc is %s\n", alpha_howto_table[alpha_type].name); -#endif - return &alpha_howto_table[alpha_type]; -} - - -/*-- Part 4.7, writing an object file ---------------------------------------*/ - -/* Set the architecture and machine type in BFD abfd to arch and mach. - Find the correct pointer to a structure and insert it into the arch_info - pointer. */ - -static boolean -evax_set_arch_mach (abfd, arch, mach) - bfd *abfd; - enum bfd_architecture arch; - unsigned long mach; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_set_arch_mach(%p, %d, %ld)\n", abfd, arch, mach); -#endif - abfd->arch_info = bfd_scan_arch("alpha"); - - return true; -} - - -/* Sets the contents of the section section in BFD abfd to the data starting - in memory at data. The data is written to the output section starting at - offset offset for count bytes. - - Normally true is returned, else false. Possible error returns are: - o bfd_error_no_contents - The output section does not have the - SEC_HAS_CONTENTS attribute, so nothing can be written to it. - o and some more too */ - -static boolean -evax_set_section_contents (abfd, section, location, offset, count) - bfd *abfd; - asection *section; - PTR location; - file_ptr offset; - bfd_size_type count; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_set_section_contents(%p, sec %s, loc %p, off %ld, count %d)\n", - abfd, section->name, location, (long int)offset, (int)count); - evax_debug (2, "secraw %d, seccooked %d\n", (int)section->_raw_size, (int)section->_cooked_size); -#endif - return _bfd_save_evax_section(abfd, section, location, offset, count); -} - - -/*-- Part 4.8, linker -------------------------------------------------------*/ - -/* Get the size of the section headers. */ - -static int -evax_sizeof_headers (abfd, reloc) - bfd *abfd; - boolean reloc; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_sizeof_headers(%p, %s)\n", abfd, (reloc)?"True":"False"); -#endif - return 0; -} - - -/* Provides default handling of relocation effort for back ends - which can't be bothered to do it efficiently. */ - -static bfd_byte * -evax_bfd_get_relocated_section_contents (abfd, link_info, link_order, data, - relocateable, symbols) - bfd *abfd; - struct bfd_link_info *link_info; - struct bfd_link_order *link_order; - bfd_byte *data; - boolean relocateable; - asymbol **symbols; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_get_relocated_section_contents(%p, %p, %p, %p, %s, %p)\n", - abfd, link_info, link_order, data, (relocateable)?"True":"False", symbols); -#endif - return 0; -} - - -/* ??? */ - -static boolean -evax_bfd_relax_section (abfd, section, link_info, again) - bfd *abfd; - asection *section; - struct bfd_link_info *link_info; - boolean *again; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_relax_section(%p, %s, %p, <ret>)\n", - abfd, section->name, link_info); -#endif - return true; -} - - -/* Create a hash table for the linker. Different backends store - different information in this table. */ - -static struct bfd_link_hash_table * -evax_bfd_link_hash_table_create (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_link_hash_table_create(%p)\n", abfd); -#endif - return 0; -} - - -/* Add symbols from this object file into the hash table. */ - -static boolean -evax_bfd_link_add_symbols (abfd, link_info) - bfd *abfd; - struct bfd_link_info *link_info; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_link_add_symbols(%p, %p)\n", abfd, link_info); -#endif - return false; -} - - -/* Do a link based on the link_order structures attached to each - section of the BFD. */ - -static boolean -evax_bfd_final_link (abfd, link_info) - bfd *abfd; - struct bfd_link_info *link_info; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_final_link(%p, %p)\n", abfd, link_info); -#endif - return true; -} - -/* Should this section be split up into smaller pieces during linking. */ - -static boolean -evax_bfd_link_split_section (abfd, section) - bfd *abfd; - asection *section; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_link_split_section(%p, %s)\n", abfd, section->name); -#endif - return false; -} - -/*-- Part 4.9, dynamic symbols and relocations ------------------------------*/ - -/* Get the amount of memory required to hold the dynamic symbols. */ - -static long -evax_get_dynamic_symtab_upper_bound (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_dynamic_symtab_upper_bound(%p)\n", abfd); -#endif - return 0; -} - -static boolean -evax_bfd_print_private_bfd_data (abfd, file) - bfd *abfd; - void *file; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_bfd_print_private_bfd_data(%p)\n", abfd); -#endif - return 0; -} - - -/* Read in the dynamic symbols. */ - -static long -evax_canonicalize_dynamic_symtab (abfd, symbols) - bfd *abfd; - asymbol **symbols; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_canonicalize_dynamic_symtab(%p, <ret>)\n", abfd); -#endif - return 0L; -} - - -/* Get the amount of memory required to hold the dynamic relocs. */ - -static long -evax_get_dynamic_reloc_upper_bound (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_get_dynamic_reloc_upper_bound(%p)\n", abfd); -#endif - return 0L; -} - - -/* Read in the dynamic relocs. */ - -static long -evax_canonicalize_dynamic_reloc (abfd, arel, symbols) - bfd *abfd; - arelent **arel; - asymbol **symbols; -{ -#if EVAX_DEBUG - evax_debug (1, "evax_canonicalize_dynamic_reloc(%p)\n", abfd); -#endif - return 0L; -} diff --git a/gnu/usr.bin/binutils/bfd/evax-egsd.c b/gnu/usr.bin/binutils/bfd/evax-egsd.c deleted file mode 100644 index f5275a98567..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax-egsd.c +++ /dev/null @@ -1,582 +0,0 @@ -/* evax-egsd.c -- BFD back-end for ALPHA EVAX (openVMS/AXP) files. - Copyright 1996 Free Software Foundation Inc. - - go and read the openVMS linker manual (esp. appendix B) - if you don't know what's going on here :-) - - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -#include <stdio.h> -#include <ctype.h> - -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "evax.h" - -/*-----------------------------------------------------------------------------*/ - -/* sections every evax object file has */ - -#define EVAX_ABS_NAME "$ABS$" -#define EVAX_CODE_NAME "$CODE$" -#define EVAX_LINK_NAME "$LINK$" -#define EVAX_DATA_NAME "$DATA$" -#define EVAX_BSS_NAME "$BSS$" -#define EVAX_READONLY_NAME "$READONLY$" -#define EVAX_LITERAL_NAME "$LITERAL$" - -struct sec_flags_struct { - char *name; /* name of section */ - int eflags_always; - flagword flags_always; /* flags we set always */ - int eflags_hassize; - flagword flags_hassize; /* flags we set if the section has a size > 0 */ -}; - -/* just a dummy flag array since i don't understand it yet */ - -static struct sec_flags_struct evax_section_flags[] = { - { EVAX_ABS_NAME, - (EGPS_S_V_SHR), - (SEC_DATA), - (EGPS_S_V_SHR), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) }, - { EVAX_CODE_NAME, - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_EXE), - (SEC_CODE), - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_EXE), - (SEC_IN_MEMORY|SEC_CODE|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) }, - { EVAX_LINK_NAME, - (EGPS_S_V_REL|EGPS_S_V_RD), - (SEC_DATA|SEC_READONLY), - (EGPS_S_V_REL|EGPS_S_V_RD), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) }, - { EVAX_DATA_NAME, - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT), - (SEC_DATA), - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) }, - { EVAX_BSS_NAME, - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT|EGPS_S_V_NOMOD), - (SEC_NO_FLAGS), - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT|EGPS_S_V_NOMOD), - (SEC_IN_MEMORY|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) }, - { EVAX_READONLY_NAME, - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD), - (SEC_DATA|SEC_READONLY), - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) }, - { EVAX_LITERAL_NAME, - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD), - (SEC_DATA|SEC_READONLY), - (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) }, - { NULL, - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT), - (SEC_DATA), - (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT), - (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) } -}; - -/* Retrieve bfd section flags by name and size */ - -static flagword -evax_secflag_by_name(name, size) - char *name; - int size; -{ - int i = 0; - - while (evax_section_flags[i].name != NULL) - { - if (strcmp (name, evax_section_flags[i].name) == 0) - { - if (size > 0) - return evax_section_flags[i].flags_hassize; - else - return evax_section_flags[i].flags_always; - } - i++; - } - if (size > 0) - return evax_section_flags[i].flags_hassize; - return evax_section_flags[i].flags_always; -} - - -/* Retrieve evax section flags by name and size */ - -static flagword -evax_esecflag_by_name(name, size) - char *name; - int size; -{ - int i = 0; - - while (evax_section_flags[i].name != NULL) - { - if (strcmp (name, evax_section_flags[i].name) == 0) - { - if (size > 0) - return evax_section_flags[i].eflags_hassize; - else - return evax_section_flags[i].eflags_always; - } - i++; - } - if (size > 0) - return evax_section_flags[i].eflags_hassize; - return evax_section_flags[i].eflags_always; -} - -/*-----------------------------------------------------------------------------*/ -#if EVAX_DEBUG -/* debug */ - -struct flagdescstruct { char *name; flagword value; }; - -/* Convert flag to printable string */ - -static char * -flag2str(flagdesc, flags) - struct flagdescstruct *flagdesc; - flagword flags; -{ - - static char res[64]; - int next = 0; - - res[0] = 0; - while (flagdesc->name != NULL) - { - if ((flags & flagdesc->value) != 0) - { - if (next) - strcat(res, ","); - else - next = 1; - strcat (res, flagdesc->name); - } - flagdesc++; - } - return res; -} -#endif - -/*-----------------------------------------------------------------------------*/ -/* input routines */ - -/* Process EGSD record - return 0 on success, -1 on error */ - -int -_bfd_evax_slurp_egsd (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - static struct flagdescstruct gpsflagdesc[] = - { - { "PIC", 0x0001 }, - { "LIB", 0x0002 }, - { "OVR", 0x0004 }, - { "REL", 0x0008 }, - { "GBL", 0x0010 }, - { "SHR", 0x0020 }, - { "EXE", 0x0040 }, - { "RD", 0x0080 }, - { "WRT", 0x0100 }, - { "VEC", 0x0200 }, - { "NOMOD", 0x0400 }, - { "COM", 0x0800 }, - { NULL, 0 } - }; - - static struct flagdescstruct gsyflagdesc[] = - { - { "WEAK", 0x0001 }, - { "DEF", 0x0002 }, - { "UNI", 0x0004 }, - { "REL", 0x0008 }, - { "COMM", 0x0010 }, - { "VECEP", 0x0020 }, - { "NORM", 0x0040 }, - { NULL, 0 } - }; -#endif - - int gsd_type, gsd_size; - asection *section; - unsigned char *evax_rec; - flagword new_flags, old_flags; - char *name; - asymbol *symbol; - evax_symbol_entry *entry; - unsigned long base_addr; - unsigned long align_addr; - -#if EVAX_DEBUG - evax_debug (2, "EGSD\n"); -#endif - - PRIV(evax_rec) += 8; /* skip type, size, l_temp */ - PRIV(rec_size) -= 8; - - /* calculate base address for each section */ - base_addr = 0L; - - abfd->symcount = 0; - - while (PRIV(rec_size) > 0) - { - evax_rec = PRIV(evax_rec); - _bfd_evax_get_header_values (abfd, evax_rec, &gsd_type, &gsd_size); - switch (gsd_type) - { - case EGSD_S_C_PSC: - { - /* program section definition */ - - name = _bfd_evax_save_counted_string ((char *)evax_rec+12); - section = bfd_make_section (abfd, name); - if (!section) - return -1; - old_flags = bfd_getl16 (evax_rec + 6); - section->_raw_size = bfd_getl32 (evax_rec + 8); /* allocation */ - new_flags = evax_secflag_by_name (name, (int) section->_raw_size); - if (old_flags & EGPS_S_V_REL) - new_flags |= SEC_RELOC; - if (!bfd_set_section_flags (abfd, section, new_flags)) - return -1; - section->alignment_power = evax_rec[4]; - align_addr = (1 << section->alignment_power); - if ((base_addr % align_addr) != 0) - base_addr += (align_addr - (base_addr % align_addr)); - section->vma = (bfd_vma)base_addr; - base_addr += section->_raw_size; - section->contents = ((unsigned char *) - bfd_malloc (section->_raw_size)); - if (section->contents == NULL) - return -1; - memset (section->contents, 0, (size_t) section->_raw_size); - section->_cooked_size = section->_raw_size; -#if EVAX_DEBUG - evax_debug(3, "egsd psc %d (%s, flags %04x=%s) ", - section->index, name, old_flags, flag2str(gpsflagdesc, old_flags)); - evax_debug(3, "%d bytes at 0x%08lx (mem %p)\n", - section->_raw_size, section->vma, section->contents); -#endif - } - break; - - case EGSD_S_C_SYM: - { - /* symbol specification (definition or reference) */ - - symbol = _bfd_evax_make_empty_symbol (abfd); - if (symbol == 0) - return -1; - - old_flags = bfd_getl16 (evax_rec + 6); - new_flags = BSF_NO_FLAGS; - - if (old_flags & EGSY_S_V_WEAK) - new_flags |= BSF_WEAK; - - if (evax_rec[6] & EGSY_S_V_DEF) /* symbol definition */ - { - symbol->name = - _bfd_evax_save_counted_string ((char *)evax_rec+32); - if (old_flags & EGSY_S_V_NORM) - { /* proc def */ - new_flags |= BSF_FUNCTION; - } - symbol->value = bfd_getl64 (evax_rec+8); - symbol->section = (asection *)((unsigned long) bfd_getl32 (evax_rec+28)); -#if EVAX_DEBUG - evax_debug(3, "egsd sym def #%d (%s, %d, %04x=%s)\n", abfd->symcount, - symbol->name, (int)symbol->section, old_flags, flag2str(gsyflagdesc, old_flags)); -#endif - } - else /* symbol reference */ - { -#if EVAX_DEBUG - evax_debug(3, "egsd sym ref #%d (%s, %04x=%s)\n", abfd->symcount, evax_rec+9, old_flags, flag2str(gsyflagdesc, old_flags)); -#endif - symbol->name = - _bfd_evax_save_counted_string ((char *)evax_rec+8); - symbol->section = bfd_make_section (abfd, BFD_UND_SECTION_NAME); - } - - symbol->flags = new_flags; - - /* save symbol in evax_symbol_table */ - - entry = (evax_symbol_entry *) bfd_hash_lookup (PRIV(evax_symbol_table), symbol->name, true, false); - if (entry == (evax_symbol_entry *)NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - if (entry->symbol != (asymbol *)NULL) - { /* FIXME ?, DEC C generates this */ -#if EVAX_DEBUG - evax_debug(3, "EGSD_S_C_SYM: duplicate \"%s\"\n", symbol->name); -#endif - } - else - { - entry->symbol = symbol; - PRIV(egsd_sym_count)++; - abfd->symcount++; - } - } - break; - - case EGSD_S_C_IDC: - break; - - default: - (*_bfd_error_handler) ("unknown egsd subtype %d", gsd_type); - bfd_set_error (bfd_error_bad_value); - return -1; - - } /* switch */ - - PRIV(rec_size) -= gsd_size; - PRIV(evax_rec) += gsd_size; - - } /* while (recsize > 0) */ - - if (abfd->symcount > 0) - abfd->flags |= HAS_SYMS; - - return 0; -} - -/*-----------------------------------------------------------------------------*/ -/* output routines */ - -/* Write section and symbol directory of bfd abfd */ - -int -_bfd_evax_write_egsd (abfd) - bfd *abfd; -{ - asection *section; - asymbol *symbol; - int symnum; - int last_index = -1; - char dummy_name[10]; - char *sname; - flagword new_flags, old_flags; - char uname[200]; - char *nptr, *uptr; - -#if EVAX_DEBUG - evax_debug (2, "evax_write_egsd(%p)\n", abfd); -#endif - - /* output sections */ - - section = abfd->sections; -#if EVAX_DEBUG - evax_debug (3, "%d sections found\n", abfd->section_count); -#endif - - /* egsd is quadword aligned */ - - _bfd_evax_output_alignment (abfd, 8); - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_evax_output_long (abfd, 0); - _bfd_evax_output_push (abfd); /* prepare output for subrecords */ - - while (section != 0) - { -#if EVAX_DEBUG - evax_debug (3, "Section #%d %s, %d bytes\n", section->index, section->name, (int)section->_raw_size); -#endif - - /* 13 bytes egsd, max 31 chars name -> should be 44 bytes */ - if (_bfd_evax_output_check (abfd, 64) < 0) - { - _bfd_evax_output_pop (abfd); - _bfd_evax_output_end (abfd); - _bfd_evax_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_evax_output_long (abfd, 0); - _bfd_evax_output_push (abfd); /* prepare output for subrecords */ - } - - /* Create dummy sections to keep consecutive indices */ - - while (section->index - last_index > 1) - { -#if EVAX_DEBUG - evax_debug (3, "index %d, last %d\n", section->index, last_index); -#endif - _bfd_evax_output_begin (abfd, EGSD_S_C_PSC, -1); - _bfd_evax_output_short (abfd, 0); - _bfd_evax_output_short (abfd, 0); - _bfd_evax_output_long (abfd, 0); - sprintf (dummy_name, ".DUMMY%02d", last_index); - _bfd_evax_output_counted (abfd, dummy_name); - _bfd_evax_output_flush (abfd); - last_index++; - } - - /* Don't know if this is neccesary for the linker but for now it keeps - evax_slurp_egsd happy */ - - sname = (char *)section->name; - if (*sname == '.') - { - sname++; - if ((*sname == 't') && (strcmp (sname, "text") == 0)) - sname = EVAX_CODE_NAME; - else if ((*sname == 'd') && (strcmp (sname, "data") == 0)) - sname = EVAX_DATA_NAME; - else if ((*sname == 'b') && (strcmp (sname, "bss") == 0)) - sname = EVAX_BSS_NAME; - else if ((*sname == 'l') && (strcmp (sname, "link") == 0)) - sname = EVAX_LINK_NAME; - else if ((*sname == 'r') && (strcmp (sname, "rdata") == 0)) - sname = EVAX_READONLY_NAME; - else if ((*sname == 'l') && (strcmp (sname, "literal") == 0)) - sname = EVAX_LITERAL_NAME; - } - - _bfd_evax_output_begin (abfd, EGSD_S_C_PSC, -1); - _bfd_evax_output_short (abfd, section->alignment_power & 0xff); - _bfd_evax_output_short (abfd, - evax_esecflag_by_name (sname, - section->_raw_size)); - _bfd_evax_output_long (abfd, section->_raw_size); - _bfd_evax_output_counted (abfd, sname); - _bfd_evax_output_flush (abfd); - - last_index = section->index; - section = section->next; - } - - /* output symbols */ - -#if EVAX_DEBUG - evax_debug (3, "%d symbols found\n", abfd->symcount); -#endif - - bfd_set_start_address (abfd, (bfd_vma)-1); - - for (symnum = 0; symnum < abfd->symcount; symnum++) - { - - symbol = abfd->outsymbols[symnum]; - if (*(symbol->name) == '_') - { - if (strcmp (symbol->name, "__main") == 0) - bfd_set_start_address (abfd, (bfd_vma)symbol->value); - } - old_flags = symbol->flags; - - if (((old_flags & BSF_GLOBAL) == 0) /* not xdef */ - && (!bfd_is_und_section (symbol->section))) /* and not xref */ - continue; /* dont output */ - - /* 13 bytes egsd, max 64 chars name -> should be 77 bytes */ - - if (_bfd_evax_output_check (abfd, 80) < 0) - { - _bfd_evax_output_pop (abfd); - _bfd_evax_output_end (abfd); - _bfd_evax_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_evax_output_long (abfd, 0); - _bfd_evax_output_push (abfd); /* prepare output for subrecords */ - } - - _bfd_evax_output_begin (abfd, EGSD_S_C_SYM, -1); - - _bfd_evax_output_short (abfd, 0); /* data type, alignment */ - - new_flags = 0; - if (old_flags & BSF_WEAK) - new_flags |= EGSY_S_V_WEAK; - if (old_flags & BSF_FUNCTION) - { - new_flags |= EGSY_S_V_NORM; - new_flags |= EGSY_S_V_REL; - } - if (old_flags & BSF_GLOBAL) - { - new_flags |= EGSY_S_V_DEF; - if (!bfd_is_abs_section (symbol->section)) - new_flags |= EGSY_S_V_REL; - } - _bfd_evax_output_short (abfd, new_flags); - - if (old_flags & BSF_GLOBAL) /* symbol definition */ - { - if (old_flags & BSF_FUNCTION) - { - _bfd_evax_output_quad (abfd, symbol->value); - _bfd_evax_output_quad (abfd, - ((asymbol *)(symbol->udata.p))->value); - _bfd_evax_output_long (abfd, - (((asymbol *)(symbol->udata.p)) - ->section->index)); - _bfd_evax_output_long (abfd, symbol->section->index); - } - else - { - _bfd_evax_output_quad (abfd, symbol->value); /* L_VALUE */ - _bfd_evax_output_quad (abfd, 0); /* L_CODE_ADDRESS */ - _bfd_evax_output_long (abfd, 0); /* L_CA_PSINDX */ - _bfd_evax_output_long (abfd, symbol->section->index);/* L_PSINDX, FIXME */ - } - } - if (strlen ((char *)symbol->name) > 198) - { - (*_bfd_error_handler) ("Name '%s' too long\n", symbol->name); - abort (); - } - nptr = (char *)symbol->name; - uptr = uname; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - uptr++; - nptr++; - } - *uptr = 0; - _bfd_evax_output_counted (abfd, uname); - - _bfd_evax_output_flush (abfd); - - } - - _bfd_evax_output_alignment (abfd, 8); - _bfd_evax_output_pop (abfd); - _bfd_evax_output_end (abfd); - - return 0; -} diff --git a/gnu/usr.bin/binutils/bfd/evax-emh.c b/gnu/usr.bin/binutils/bfd/evax-emh.c deleted file mode 100644 index 69f7e0be91b..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax-emh.c +++ /dev/null @@ -1,266 +0,0 @@ -/* evax-emh.c -- BFD back-end for ALPHA EVAX (openVMS/AXP) files. - Copyright 1996 Free Software Foundation, Inc. - - EMH record handling functions - and - EEOM record handling functions - - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <stdio.h> - -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "evax.h" - -/*---------------------------------------------------------------------------*/ - - -/* Read & process emh record - return 0 on success, -1 on error */ - -int -_bfd_evax_slurp_emh (abfd) - bfd *abfd; -{ - unsigned char *ptr; - unsigned char *evax_rec; - - evax_rec = PRIV(evax_rec); - -#if EVAX_DEBUG - evax_debug(2, "EMH\n"); -#endif - - switch (bfd_getl16 (evax_rec + 4)) - { - - case EMH_S_C_MHD: - /* - * module header - */ - PRIV(emh_data).emh_b_strlvl = evax_rec[6]; - PRIV(emh_data).emh_l_arch1 = bfd_getl32 (evax_rec + 8); - PRIV(emh_data).emh_l_arch2 = bfd_getl32 (evax_rec + 12); - PRIV(emh_data).emh_l_recsiz = bfd_getl32 (evax_rec + 16); - PRIV(emh_data).emh_t_name = - _bfd_evax_save_counted_string ((char *)evax_rec + 20); - ptr = evax_rec + 20 + evax_rec[20] + 1; - PRIV(emh_data).emh_t_version = - _bfd_evax_save_counted_string ((char *)ptr); - ptr += *ptr + 1; - PRIV(emh_data).emh_t_date = - _bfd_evax_save_sized_string ((char *)ptr, 17); - - break; - - case EMH_S_C_LNM: - /* - * - */ - PRIV(emh_data).emh_c_lnm = - _bfd_evax_save_sized_string ((char *)evax_rec, PRIV(rec_length-6)); - break; - - case EMH_S_C_SRC: - /* - * - */ - PRIV(emh_data).emh_c_src = - _bfd_evax_save_sized_string ((char *)evax_rec, PRIV(rec_length-6)); - break; - - case EMH_S_C_TTL: - /* - * - */ - PRIV(emh_data).emh_c_ttl = - _bfd_evax_save_sized_string ((char *)evax_rec, PRIV(rec_length-6)); - break; - - case EMH_S_C_CPR: - /* - * - */ - break; - - case EMH_S_C_MTC: - /* - * - */ - break; - - case EMH_S_C_GTX: - /* - * - */ - break; - - default: - bfd_set_error (bfd_error_wrong_format); - return -1; - - } /* switch */ - - return 0; -} - - -/* write object header for bfd abfd */ - -int -_bfd_evax_write_emh (abfd) - bfd *abfd; -{ - char *name; - -#if EVAX_DEBUG - evax_debug (2, "evax_write_emh(%p)\n", abfd); -#endif - - _bfd_evax_output_alignment (abfd, 2); - - /* MHD */ - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_MHD); - _bfd_evax_output_short (abfd, EOBJ_S_C_STRLVL); - _bfd_evax_output_long (abfd, 0); - _bfd_evax_output_long (abfd, 0); - _bfd_evax_output_long (abfd, MAX_OUTREC_SIZE); - if (bfd_get_filename (abfd) != NULL) - { - name = strdup (bfd_get_filename (abfd)); - _bfd_evax_output_counted (abfd, _bfd_evax_basename (name)); - } - else - _bfd_evax_output_counted (abfd, "NONAME"); - _bfd_evax_output_counted (abfd, BFD_VERSION); - _bfd_evax_output_dump (abfd, (unsigned char *)_bfd_get_vms_time_string (), - 17); - _bfd_evax_output_fill (abfd, 0, 17); - _bfd_evax_output_flush (abfd); - - /* LMN */ - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_LNM); - _bfd_evax_output_dump (abfd, (unsigned char *)"GAS proGIS", 10); - _bfd_evax_output_flush (abfd); - - /* SRC */ - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_SRC); - if (PRIV(filename) != 0) - _bfd_evax_output_dump (abfd, (unsigned char *)PRIV(filename), strlen (PRIV(filename))); - else - _bfd_evax_output_dump (abfd, (unsigned char *)"noname", 6); - _bfd_evax_output_flush (abfd); - - /* TTL */ - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_TTL); - _bfd_evax_output_dump (abfd, (unsigned char *)"TTL", 3); - _bfd_evax_output_flush (abfd); - - /* CPR */ - - _bfd_evax_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_CPR); - _bfd_evax_output_dump (abfd, - (unsigned char *)"GNU BFD ported by Klaus Kämpf 1994-1996", - 39); - _bfd_evax_output_flush (abfd); - - return 0; -} - -/*-----------------------------------------------------------------------------*/ - -/* Process EEOM record - return 0 on success, -1 on error */ - -int -_bfd_evax_slurp_eeom (abfd) - bfd *abfd; -{ - unsigned char *evax_rec; - -#if EVAX_DEBUG - evax_debug(2, "EEOM\n"); -#endif - - evax_rec = PRIV(evax_rec); - - PRIV(eeom_data).eeom_l_total_lps = bfd_getl32 (evax_rec + 4); - PRIV(eeom_data).eeom_b_comcod = *(evax_rec + 8); - if (PRIV(eeom_data).eeom_b_comcod > 1) - { - (*_bfd_error_handler) ("Object module NOT error-free !\n"); - bfd_set_error (bfd_error_bad_value); - return -1; - } - PRIV(eeom_data).eeom_has_transfer = false; - if (PRIV(rec_size) > 10) - { - PRIV(eeom_data).eeom_has_transfer = true; - PRIV(eeom_data).eeom_b_tfrflg = *(evax_rec + 9); - PRIV(eeom_data).eeom_l_psindx = bfd_getl32 (evax_rec + 12); - PRIV(eeom_data).eeom_l_tfradr = bfd_getl32 (evax_rec + 16); - - abfd->start_address = PRIV(eeom_data).eeom_l_tfradr; - } - return 0; -} - - -/* Write eom record for bfd abfd */ - -int -_bfd_evax_write_eeom (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (2, "evax_write_eeom(%p)\n", abfd); -#endif - - _bfd_evax_output_begin (abfd,EOBJ_S_C_EEOM, -1); - _bfd_evax_output_long (abfd, (unsigned long)(PRIV(evax_linkage_index) >> 1)); - _bfd_evax_output_byte (abfd, 0); /* completion code */ - _bfd_evax_output_byte (abfd, 0); /* fill byte */ - - if (bfd_get_start_address (abfd) != (bfd_vma)-1) - { - asection *section; - - section = bfd_get_section_by_name (abfd, ".link"); - if (section == 0) - { - bfd_set_error (bfd_error_nonrepresentable_section); - return -1; - } - _bfd_evax_output_short (abfd, 0); - _bfd_evax_output_long (abfd, (unsigned long)(section->index)); - _bfd_evax_output_long (abfd, - (unsigned long) bfd_get_start_address (abfd)); - _bfd_evax_output_long (abfd, 0); - } - - _bfd_evax_output_end (abfd); - return 0; -} diff --git a/gnu/usr.bin/binutils/bfd/evax-etir.c b/gnu/usr.bin/binutils/bfd/evax-etir.c deleted file mode 100644 index cb186f11e96..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax-etir.c +++ /dev/null @@ -1,1553 +0,0 @@ -/* evax-etir.c -- BFD back-end for ALPHA EVAX (openVMS/AXP) files. - Copyright 1996 Free Software Foundation, Inc. - ETIR record handling functions - - go and read the openVMS linker manual (esp. appendix B) - if you don't know what's going on here :-) - - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -/* The following type abbreviations are used: - - cs counted string (ascii string with length byte) - by byte (1 byte) - sh short (2 byte, 16 bit) - lw longword (4 byte, 32 bit) - qw quadword (8 byte, 64 bit) - da data stream */ - -#include <stdio.h> -#include <ctype.h> - -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "evax.h" - -#if 0 -static void location_save - PARAMS ((bfd *abfd, unsigned long index, unsigned long loc, int section)); -static unsigned long location_restore - PARAMS ((bfd *abfd, unsigned long index, int *section)); -#endif /* 0 */ - -static void image_set_ptr PARAMS ((bfd *abfd, int psect, uquad offset)); -static void image_inc_ptr PARAMS ((bfd *abfd, uquad offset)); -static void image_dump PARAMS ((bfd *abfd, unsigned char *ptr, int size, int offset)); -static void image_write_b PARAMS ((bfd *abfd, unsigned int value)); -static void image_write_w PARAMS ((bfd *abfd, unsigned int value)); -static void image_write_l PARAMS ((bfd *abfd, unsigned long value)); -static void image_write_q PARAMS ((bfd *abfd, uquad value)); - -/*-----------------------------------------------------------------------------*/ - -#if 0 - -/* Save location counter at index */ - -static void -location_save (abfd, index, loc, section) - bfd *abfd; - unsigned long index; - unsigned long loc; - int section; -{ - PRIV(location_stack)[index].value = loc; - PRIV(location_stack)[index].psect = section; - - return; -} - -/* Restore location counter from index */ - -static unsigned long -location_restore (abfd, index, section) - bfd *abfd; - unsigned long index; - int *section; -{ - if (section != NULL) - *section = PRIV(location_stack)[index].psect; - return PRIV(location_stack)[index].value; -} - -#endif /* 0 */ - -/* routines to fill sections contents during etir read */ - -/* Initialize image buffer pointer to be filled */ - -static void -image_set_ptr (abfd, psect, offset) - bfd *abfd; - int psect; - uquad offset; -{ -#if EVAX_DEBUG - evax_debug (4, "image_set_ptr(%d=%s, %d)\n", - psect, PRIV(sections)[psect]->name, offset); -#endif - - PRIV(image_ptr) = PRIV(sections)[psect]->contents + offset; - return; -} - - -/* Increment image buffer pointer by offset */ - -static void -image_inc_ptr (abfd, offset) - bfd *abfd; - uquad offset; -{ -#if EVAX_DEBUG - evax_debug (4, "image_inc_ptr(%d)\n", offset); -#endif - - PRIV(image_ptr) += offset; - - return; -} - - -/* Dump multiple bytes to section image */ - -static void -image_dump (abfd, ptr, size, offset) - bfd *abfd; - unsigned char *ptr; - int size; - int offset; -{ -#if EVAX_DEBUG - evax_debug (6, "image_dump from (%p, %d) to (%p)\n", ptr, size, PRIV(image_ptr)); - _bfd_hexdump (7, ptr, size, offset); -#endif - - while (size-- > 0) - *PRIV(image_ptr)++ = *ptr++; - return; -} - - -/* Write byte to section image */ - -static void -image_write_b (abfd, value) - bfd *abfd; - unsigned int value; -{ -#if EVAX_DEBUG - evax_debug (6, "image_write_b(%02x)\n", (int)value); -#endif - - *PRIV(image_ptr)++ = (value & 0xff); - return; -} - - -/* Write 2-byte word to image */ - -static void -image_write_w (abfd, value) - bfd *abfd; - unsigned int value; -{ -#if EVAX_DEBUG - evax_debug (6, "image_write_w(%04x)\n", (int)value); -#endif - - bfd_putl16 (value, PRIV(image_ptr)); - PRIV(image_ptr) += 2; - - return; -} - - -/* Write 4-byte long to image */ - -static void -image_write_l (abfd, value) - bfd *abfd; - unsigned long value; -{ -#if EVAX_DEBUG - evax_debug (6, "image_write_l(%08lx)\n", value); -#endif - - bfd_putl32 (value, PRIV(image_ptr)); - PRIV(image_ptr) += 4; - - return; -} - - -/* Write 4-byte long to image */ - -static void -image_write_q (abfd, value) - bfd *abfd; - uquad value; -{ -#if EVAX_DEBUG - evax_debug (6, "image_write_q(%016lx)\n", value); -#endif - - bfd_putl64 (value, PRIV(image_ptr)); - PRIV(image_ptr) += 8; - - return; -} - - -#define HIGHBIT(op) ((op & 0x80000000L) == 0x80000000L) - -/* etir_sta - - evax stack commands - - handle sta_xxx commands in etir section - ptr points to data area in record - - see table B-8 of the openVMS linker manual */ - -static boolean -etir_sta (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - - switch (cmd) - { - /* stack */ - - /* stack global - arg: cs symbol name - - stack 32 bit value of symbol (high bits set to 0) */ - - case ETIR_S_C_STA_GBL: - { - char *name; - evax_symbol_entry *entry; - - name = _bfd_evax_save_counted_string ((char *)ptr); - entry = (evax_symbol_entry *) - bfd_hash_lookup (PRIV(evax_symbol_table), name, false, false); - if (entry == (evax_symbol_entry *)NULL) - { -#if EVAX_DEBUG - evax_debug (3, "ETIR_S_C_STA_GBL: no symbol \"%s\"\n", name); -#endif - return false; - } - else - { - _bfd_evax_push (abfd, (uquad)(entry->symbol->value), -1); - } - } - break; - - /* stack longword - arg: lw value - - stack 32 bit value, sign extend to 64 bit */ - - case ETIR_S_C_STA_LW: - _bfd_evax_push (abfd, (uquad)bfd_getl32 (ptr), -1); - break; - - /* stack global - arg: qw value - - stack 64 bit value of symbol */ - - case ETIR_S_C_STA_QW: - _bfd_evax_push (abfd, (uquad)bfd_getl64(ptr), -1); - break; - - /* stack psect base plus quadword offset - arg: lw section index - qw signed quadword offset (low 32 bits) - - stack qw argument and section index - (see ETIR_S_C_STO_OFF, ETIR_S_C_CTL_SETRB) */ - - case ETIR_S_C_STA_PQ: - { - uquad dummy; - int psect; - - psect = bfd_getl32 (ptr); - if (psect >= PRIV(egsd_sec_count)) - { - (*_bfd_error_handler) ("Bad section index in ETIR_S_C_STA_PQ"); - bfd_set_error (bfd_error_bad_value); - return false; - } - dummy = bfd_getl64 (ptr+4); - _bfd_evax_push (abfd, dummy, psect); - } - break; - - /* all not supported */ - - case ETIR_S_C_STA_LI: - case ETIR_S_C_STA_MOD: - case ETIR_S_C_STA_CKARG: - - (*_bfd_error_handler) ("Unsupported STA cmd %d", cmd); - return false; - break; - - default: - (*_bfd_error_handler) ("Reserved STA cmd %d", cmd); - return false; - break; - } - return true; -} - - -/* - etir_sto - - evax store commands - - handle sto_xxx commands in etir section - ptr points to data area in record - - see table B-9 of the openVMS linker manual */ - -static boolean -etir_sto (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - uquad dummy; - int psect; - - switch (cmd) - { - - /* store byte: pop stack, write byte - arg: - */ - - case ETIR_S_C_STO_B: - dummy = _bfd_evax_pop (abfd, &psect); -#if 0 - if (is_share) /* FIXME */ - (*_bfd_error_handler) ("ETIR_S_C_STO_B: byte fixups not supported"); -#endif - image_write_b (abfd, dummy & 0xff); /* FIXME: check top bits */ - break; - - /* store word: pop stack, write word - arg: - */ - - case ETIR_S_C_STO_W: - dummy = _bfd_evax_pop (abfd, &psect); -#if 0 - if (is_share) /* FIXME */ - (*_bfd_error_handler) ("ETIR_S_C_STO_B: word fixups not supported"); -#endif - image_write_w (abfd, dummy & 0xffff); /* FIXME: check top bits */ - break; - - /* store longword: pop stack, write longword - arg: - */ - - case ETIR_S_C_STO_LW: - dummy = _bfd_evax_pop (abfd, &psect); - dummy += (PRIV(sections)[psect])->vma; - image_write_l (abfd, dummy & 0xffffffff);/* FIXME: check top bits */ -#if 0 /* FIXME */ - if (is_rel) - evax_debug (3, "ETIR_S_C_STO_LW: Relocation !\n"); - if (is_share) - evax_debug (3, "ETIR_S_C_STO_LW: Fix-up share !\n"); -#endif - break; - - /* store quadword: pop stack, write quadword - arg: - */ - - case ETIR_S_C_STO_QW: - dummy = _bfd_evax_pop (abfd, &psect); - dummy += (PRIV(sections)[psect])->vma; - image_write_q(abfd, dummy); /* FIXME: check top bits */ -#if 0 /* FIXME */ - if (is_rel) - evax_debug (3, "ETIR_S_C_STO_LW: Relocation !\n"); - if (is_share) - evax_debug (3, "ETIR_S_C_STO_LW: Fix-up share !\n"); -#endif - break; - - /* store immediate repeated: pop stack for repeat count - arg: lw byte count - da data */ - - case ETIR_S_C_STO_IMMR: - { - unsigned long size; - - size = bfd_getl32 (ptr); - dummy = (unsigned long)_bfd_evax_pop (abfd, NULL); - while (dummy-- > 0L) - image_dump (abfd, ptr+4, size, 0); - } - break; - - /* store global: write symbol value - arg: cs global symbol name */ - - case ETIR_S_C_STO_GBL: - { - evax_symbol_entry *entry; - char *name; - - name = _bfd_evax_save_counted_string ((char *)ptr); - entry = (evax_symbol_entry *)bfd_hash_lookup (PRIV(evax_symbol_table), name, false, false); - if (entry == (evax_symbol_entry *)NULL) - { - (*_bfd_error_handler) ("ETIR_S_C_STO_GBL: no symbol \"%s\"", - name); - return false; - } - else - image_write_q (abfd, (uquad)(entry->symbol->value)); /* FIXME, reloc */ - } - break; - - /* store code address: write address of entry point - arg: cs global symbol name (procedure) */ - - case ETIR_S_C_STO_CA: - { - evax_symbol_entry *entry; - char *name; - - name = _bfd_evax_save_counted_string ((char *)ptr); - entry = (evax_symbol_entry *) bfd_hash_lookup (PRIV(evax_symbol_table), name, false, false); - if (entry == (evax_symbol_entry *)NULL) - { - (*_bfd_error_handler) ("ETIR_S_C_STO_CA: no symbol \"%s\"", - name); - return false; - } - else - image_write_q (abfd, (uquad)(entry->symbol->value)); /* FIXME, reloc */ - } - break; - - /* not supported */ - - case ETIR_S_C_STO_RB: - case ETIR_S_C_STO_AB: - (*_bfd_error_handler) ("ETIR_S_C_STO_RB/AB: Not supported"); - break; - - /* store offset to psect: pop stack, add low 32 bits to base of psect - arg: - */ - - case ETIR_S_C_STO_OFF: - { - uquad q; - int psect; - - q = _bfd_evax_pop (abfd, &psect); - q += (PRIV(sections)[psect])->vma; - image_write_q (abfd, q); - } - break; - - /* store immediate - arg: lw count of bytes - da data */ - - case ETIR_S_C_STO_IMM: - { - int size; - - size = bfd_getl32 (ptr); - image_dump (abfd, ptr+4, size, 0); - } - break; - - /* this code is 'reserved to digital' according to the openVMS linker manual, - however it is generated by the DEC C compiler and defined in the include file. - FIXME, since the following is just a guess - store global longword: store 32bit value of symbol - arg: cs symbol name */ - - case ETIR_S_C_STO_GBL_LW: - { - evax_symbol_entry *entry; - char *name; - - name = _bfd_evax_save_counted_string ((char *)ptr); - entry = (evax_symbol_entry *)bfd_hash_lookup (PRIV(evax_symbol_table), name, false, false); - if (entry == (evax_symbol_entry *)NULL) - { -#if EVAX_DEBUG - evax_debug (3, "ETIR_S_C_STO_GBL_LW: no symbol \"%s\"\n", name); -#endif - return false; - } - else - image_write_l (abfd, (unsigned long)(entry->symbol->value)); /* FIXME, reloc */ - } - break; - - /* not supported */ - - case ETIR_S_C_STO_LP_PSB: - (*_bfd_error_handler) ("ETIR_S_C_STO_LP_PSB: Not supported"); - break; - - /* */ - - case ETIR_S_C_STO_HINT_GBL: - (*_bfd_error_handler) ("ETIR_S_C_STO_HINT_GBL: not implemented"); - break; - - /* */ - - case ETIR_S_C_STO_HINT_PS: - (*_bfd_error_handler) ("ETIR_S_C_STO_HINT_PS: not implemented"); - break; - - default: - (*_bfd_error_handler) ("Reserved STO cmd %d", cmd); - break; - } - - return true; -} - -/* stack operator commands - all 32 bit signed arithmetic - all word just like a stack calculator - arguments are popped from stack, results are pushed on stack - - see table B-10 of the openVMS linker manual */ - -static boolean -etir_opr (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - long op1, op2; - - switch (cmd) - { - /* operation */ - - /* no-op */ - - case ETIR_S_C_OPR_NOP: - break; - - /* add */ - - case ETIR_S_C_OPR_ADD: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 + op2), -1); - break; - - /* subtract */ - - case ETIR_S_C_OPR_SUB: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op2 - op1), -1); - break; - - /* multiply */ - - case ETIR_S_C_OPR_MUL: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 * op2), -1); - break; - - /* divide */ - - case ETIR_S_C_OPR_DIV: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - if (op2 == 0) - _bfd_evax_push (abfd, (uquad)0L, -1); - else - _bfd_evax_push (abfd, (uquad)(op2 / op1), -1); - break; - - /* logical and */ - - case ETIR_S_C_OPR_AND: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 & op2), -1); - break; - - /* logical inclusive or */ - - case ETIR_S_C_OPR_IOR: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 | op2), -1); - break; - - /* logical exclusive or */ - - case ETIR_S_C_OPR_EOR: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 ^ op2), -1); - break; - - /* negate */ - - case ETIR_S_C_OPR_NEG: - op1 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(-op1), -1); - break; - - /* complement */ - - case ETIR_S_C_OPR_COM: - op1 = (long)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)(op1 ^ -1L), -1); - break; - - /* insert field */ - - case ETIR_S_C_OPR_INSV: - (void)_bfd_evax_pop (abfd, NULL); - (*_bfd_error_handler) ("ETIR_S_C_OPR_INSV: Not supported"); - break; - - /* arithmetic shift */ - - case ETIR_S_C_OPR_ASH: - op1 = (long)_bfd_evax_pop (abfd, NULL); - op2 = (long)_bfd_evax_pop (abfd, NULL); - if (op2 < 0) /* shift right */ - op1 >>= -op2; - else /* shift left */ - op1 <<= op2; - _bfd_evax_push (abfd, (uquad)op1, -1); - break; - - /* unsigned shift */ - - case ETIR_S_C_OPR_USH: - (*_bfd_error_handler) ("ETIR_S_C_OPR_USH: Not supported"); - break; - - /* rotate */ - - case ETIR_S_C_OPR_ROT: - (*_bfd_error_handler) ("ETIR_S_C_OPR_ROT: Not supported"); - break; - - /* select */ - - case ETIR_S_C_OPR_SEL: - if ((long)_bfd_evax_pop (abfd, NULL) & 0x01L) - (void)_bfd_evax_pop (abfd, NULL); - else - { - op1 = (long)_bfd_evax_pop (abfd, NULL); - (void)_bfd_evax_pop (abfd, NULL); - _bfd_evax_push (abfd, (uquad)op1, -1); - } - break; - - /* redefine symbol to current location */ - - case ETIR_S_C_OPR_REDEF: - (*_bfd_error_handler) ("ETIR_S_C_OPR_REDEF: Not supported"); - break; - - /* define a literal */ - - case ETIR_S_C_OPR_DFLIT: - (*_bfd_error_handler) ("ETIR_S_C_OPR_DFLIT: Not supported"); - break; - - default: - (*_bfd_error_handler) ("Reserved OPR cmd %d", cmd); - break; - } - - return true; -} - - -/* control commands - - see table B-11 of the openVMS linker manual */ - -static boolean -etir_ctl (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - uquad dummy; - int psect; - - switch (cmd) - { - /* set relocation base: pop stack, set image location counter - arg: - */ - - case ETIR_S_C_CTL_SETRB: - dummy = _bfd_evax_pop (abfd, &psect); - image_set_ptr (abfd, psect, dummy); - break; - - /* augment relocation base: increment image location counter by offset - arg: lw offset value */ - - case ETIR_S_C_CTL_AUGRB: - dummy = bfd_getl32 (ptr); - image_inc_ptr (abfd, dummy); - break; - - /* define location: pop index, save location counter under index - arg: - */ - - case ETIR_S_C_CTL_DFLOC: - dummy = _bfd_evax_pop (abfd, NULL); - /* FIXME */ - break; - - /* set location: pop index, restore location counter from index - arg: - */ - - case ETIR_S_C_CTL_STLOC: - dummy = _bfd_evax_pop (abfd, &psect); - /* FIXME */ - break; - - /* stack defined location: pop index, push location counter from index - arg: - */ - - case ETIR_S_C_CTL_STKDL: - dummy = _bfd_evax_pop (abfd, &psect); - /* FIXME */ - break; - - default: - (*_bfd_error_handler) ("Reserved CTL cmd %d", cmd); - break; - } - return true; -} - - -/* store conditional commands - - see table B-12 and B-13 of the openVMS linker manual */ - -static boolean -etir_stc (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - - switch (cmd) - { - /* 200 Store-conditional Linkage Pair - arg: */ - - case ETIR_S_C_STC_LP: - (*_bfd_error_handler) ("ETIR_S_C_STC_LP: not supported"); - break; - - /* 201 Store-conditional Linkage Pair with Procedure Signature - arg: lw linkage index - cs procedure name - by signature length - da signature */ - - case ETIR_S_C_STC_LP_PSB: - image_inc_ptr (abfd, 16); /* skip entry,procval */ - break; - - /* 202 Store-conditional Address at global address - arg: lw linkage index - cs global name */ - - case ETIR_S_C_STC_GBL: - (*_bfd_error_handler) ("ETIR_S_C_STC_GBL: not supported"); - break; - - /* 203 Store-conditional Code Address at global address - arg: lw linkage index - cs procedure name */ - - case ETIR_S_C_STC_GCA: - (*_bfd_error_handler) ("ETIR_S_C_STC_GCA: not supported"); - break; - - /* 204 Store-conditional Address at psect + offset - arg: lw linkage index - lw psect index - qw offset */ - - case ETIR_S_C_STC_PS: - (*_bfd_error_handler) ("ETIR_S_C_STC_PS: not supported"); - break; - - /* 205 Store-conditional NOP at address of global - arg: */ - - case ETIR_S_C_STC_NOP_GBL: - - /* 206 Store-conditional NOP at pect + offset - arg: */ - - case ETIR_S_C_STC_NOP_PS: - - /* 207 Store-conditional BSR at global address - arg: */ - - case ETIR_S_C_STC_BSR_GBL: - - /* 208 Store-conditional BSR at pect + offset - arg: */ - - case ETIR_S_C_STC_BSR_PS: - - /* 209 Store-conditional LDA at global address - arg: */ - - case ETIR_S_C_STC_LDA_GBL: - - /* 210 Store-conditional LDA at psect + offset - arg: */ - - case ETIR_S_C_STC_LDA_PS: - - /* 211 Store-conditional BSR or Hint at global address - arg: */ - - case ETIR_S_C_STC_BOH_GBL: - - /* 212 Store-conditional BSR or Hint at pect + offset - arg: */ - - case ETIR_S_C_STC_BOH_PS: - - /* 213 Store-conditional NOP,BSR or HINT at global address - arg: */ - - case ETIR_S_C_STC_NBH_GBL: - - /* 214 Store-conditional NOP,BSR or HINT at psect + offset - arg: */ - - case ETIR_S_C_STC_NBH_PS: -/* FIXME (*_bfd_error_handler) ("ETIR_S_C_STC_xx: (%d) not supported", cmd); */ - break; - - default: -#if EVAX_DEBUG - evax_debug (3, "Reserved STC cmd %d", cmd); -#endif - break; - } - return true; -} - - -/* handle command from ETIR section */ - -static boolean -tir_cmd (abfd, cmd, ptr) - bfd *abfd; - int cmd; - unsigned char *ptr; -{ - static struct { - int mincod; - int maxcod; - boolean (*explain) PARAMS((bfd *, int, unsigned char *)); - } tir_table[] = { - { ETIR_S_C_MINSTACOD, ETIR_S_C_MAXSTACOD, etir_sta }, - { ETIR_S_C_MINSTOCOD, ETIR_S_C_MAXSTOCOD, etir_sto }, - { ETIR_S_C_MINOPRCOD, ETIR_S_C_MAXOPRCOD, etir_opr }, - { ETIR_S_C_MINCTLCOD, ETIR_S_C_MAXCTLCOD, etir_ctl }, - { ETIR_S_C_MINSTCCOD, ETIR_S_C_MAXSTCCOD, etir_stc }, - { -1, -1, NULL } - }; - - int i = 0; - boolean res = true; - - while (tir_table[i].mincod >= 0) - { - if ( (tir_table[i].mincod <= cmd) - && (cmd <= tir_table[i].maxcod)) - { - res = tir_table[i].explain (abfd, cmd, ptr); - break; - } - i++; - } - - return res; -} - - -/* Text Information and Relocation Records (OBJ$C_TIR) - handle etir record */ - -static boolean -analyze_etir (abfd, ptr, length) - bfd *abfd; - unsigned char *ptr; - unsigned int length; -{ - int cmd; - unsigned char *maxptr; - boolean res = true; - - maxptr = ptr + length; - - while (ptr < maxptr) - { - cmd = bfd_getl16 (ptr); - length = bfd_getl16 (ptr + 2); - res = tir_cmd (abfd, cmd, ptr+4); - if (!res) - break; - ptr += length; - } - return res; -} - - -/* process ETIR record - - return 0 on success, -1 on error */ - -int -_bfd_evax_slurp_etir (abfd) - bfd *abfd; -{ - -#if EVAX_DEBUG - evax_debug (2, "ETIR\n"); -#endif - - PRIV(evax_rec) += 4; /* skip type, size */ - PRIV(rec_size) -= 4; - if (analyze_etir (abfd, PRIV(evax_rec), PRIV(rec_size))) - return 0; - - return -1; -} - - -/* process EDBG record - return 0 on success, -1 on error - - not implemented yet */ - -int -_bfd_evax_slurp_edbg (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (2, "EDBG\n"); -#endif - - abfd->flags |= (HAS_DEBUG | HAS_LINENO); - return 0; -} - - -/* process ETBT record - return 0 on success, -1 on error - - not implemented yet */ - -int -_bfd_evax_slurp_etbt (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (2, "ETBT\n"); -#endif - - return 0; -} - -/*----------------------------------------------------------------------*/ -/* */ -/* WRITE ETIR SECTION */ -/* */ -/* this is still under construction and therefore not documented */ -/* */ -/*----------------------------------------------------------------------*/ - -static void start_etir_record PARAMS ((bfd *abfd, int index, uquad offset, boolean justoffset)); -static void sto_imm PARAMS ((bfd *abfd, evax_section *sptr, bfd_vma vaddr, int index)); -static void end_etir_record PARAMS ((bfd *abfd)); - -static void -sto_imm (abfd, sptr, vaddr, index) - bfd *abfd; - evax_section *sptr; - bfd_vma vaddr; - int index; -{ - int size; - int ssize; - unsigned char *cptr; - -#if EVAX_DEBUG - evax_debug (8, "sto_imm %d bytes\n", sptr->size); - _bfd_hexdump (9, sptr->contents, (int)sptr->size, (int)vaddr); -#endif - - ssize = sptr->size; - cptr = sptr->contents; - - while (ssize > 0) - { - - size = ssize; /* try all the rest */ - - if (_bfd_evax_output_check (abfd, size) < 0) - { /* doesn't fit, split ! */ - end_etir_record (abfd); - start_etir_record (abfd, index, vaddr, false); - size = _bfd_evax_output_check (abfd, 0); /* get max size */ - if (size > ssize) /* more than what's left ? */ - size = ssize; - } - - _bfd_evax_output_begin (abfd, ETIR_S_C_STO_IMM, -1); - _bfd_evax_output_long (abfd, (unsigned long)(size)); - _bfd_evax_output_dump (abfd, cptr, size); - _bfd_evax_output_flush (abfd); - -#if EVAX_DEBUG - evax_debug (10, "dumped %d bytes\n", size); - _bfd_hexdump (10, cptr, (int)size, (int)vaddr); -#endif - - vaddr += size; - ssize -= size; - cptr += size; - } - - return; -} - -/*-------------------------------------------------------------------*/ - -/* start ETIR record for section #index at virtual addr offset. */ - -static void -start_etir_record (abfd, index, offset, justoffset) - bfd *abfd; - int index; - uquad offset; - boolean justoffset; -{ - if (!justoffset) - { - _bfd_evax_output_begin (abfd, EOBJ_S_C_ETIR, -1); /* one ETIR per section */ - _bfd_evax_output_push (abfd); - } - - _bfd_evax_output_begin (abfd, ETIR_S_C_STA_PQ, -1); /* push start offset */ - _bfd_evax_output_long (abfd, (unsigned long)index); - _bfd_evax_output_quad (abfd, (uquad)offset); - _bfd_evax_output_flush (abfd); - - _bfd_evax_output_begin (abfd, ETIR_S_C_CTL_SETRB, -1); /* start = pop() */ - _bfd_evax_output_flush (abfd); - - return; -} - - -/* end etir record */ -static void -end_etir_record (abfd) - bfd *abfd; -{ - _bfd_evax_output_pop (abfd); - _bfd_evax_output_end (abfd); -} - -/* write section contents for bfd abfd */ - -int -_bfd_evax_write_etir (abfd) - bfd *abfd; -{ - asection *section; - evax_section *sptr; - int nextoffset; - char uname[200]; - char *nptr, *uptr; - -#if EVAX_DEBUG - evax_debug (2, "evax_write_etir(%p)\n", abfd); -#endif - - _bfd_evax_output_alignment (abfd, 4); - - nextoffset = 0; - PRIV(evax_linkage_index) = 1; - - /* dump all other sections */ - - section = abfd->sections; - - while (section != NULL) - { - -#if EVAX_DEBUG - evax_debug (4, "writing %d. section '%s' (%d bytes)\n", section->index, section->name, (int)(section->_raw_size)); -#endif - - if (section->flags & SEC_RELOC) - { - int i; - - if ((i = section->reloc_count) <= 0) - { - (*_bfd_error_handler) ("SEC_RELOC with no relocs in section %s", - section->name); - } -#if EVAX_DEBUG - else - { - arelent **rptr; - evax_debug (4, "%d relocations:\n", i); - rptr = section->orelocation; - while (i-- > 0) - { - evax_debug (4, "sym %s in sec %s, value %08lx, addr %08lx, off %08lx, len %d: %s\n", - (*(*rptr)->sym_ptr_ptr)->name, - (*(*rptr)->sym_ptr_ptr)->section->name, - (long)(*(*rptr)->sym_ptr_ptr)->value, - (*rptr)->address, (*rptr)->addend, - bfd_get_reloc_size((*rptr)->howto), - (*rptr)->howto->name); - rptr++; - } - } -#endif - } - - if (section->flags & SEC_HAS_CONTENTS) - { - bfd_vma vaddr; /* virtual addr in section */ - - sptr = _bfd_get_evax_section (abfd, section->index); - if (sptr == NULL) - { - bfd_set_error (bfd_error_no_contents); - return -1; - } - - vaddr = (bfd_vma)(sptr->offset); - - start_etir_record (abfd, section->index, (uquad) sptr->offset, - false); - - while (sptr != NULL) /* one STA_PQ, CTL_SETRB per evax_section */ - { - - if (section->flags & SEC_RELOC) /* check for relocs */ - { - arelent **rptr = section->orelocation; - int i = section->reloc_count; - for (;;) - { - bfd_size_type addr = (*rptr)->address; - int len = bfd_get_reloc_size ((*rptr)->howto); - if (sptr->offset < addr) /* sptr starts before reloc */ - { - int before = addr - sptr->offset; - if (sptr->size <= before) /* complete before */ - { - sto_imm (abfd, sptr, vaddr, section->index); - vaddr += sptr->size; - break; - } - else /* partly before */ - { - int after = sptr->size - before; - sptr->size = before; - sto_imm (abfd, sptr, vaddr, section->index); - vaddr += sptr->size; - sptr->contents += before; - sptr->offset += before; - sptr->size = after; - } - } - else if (sptr->offset == addr) /* sptr starts at reloc */ - { - asymbol *sym = *(*rptr)->sym_ptr_ptr; - asection *sec = sym->section; - - switch ((*rptr)->howto->type) - { - case ALPHA_R_IGNORE: - break; - - case ALPHA_R_REFLONG: - { - if (bfd_is_und_section (sym->section)) - { - if (_bfd_evax_output_check (abfd, - strlen((char *)sym->name)) - < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_GBL_LW, - -1); - uptr = uname; - nptr = (char *)sym->name; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - nptr++; - uptr++; - } - *uptr = 0; - _bfd_evax_output_counted (abfd, uname); - _bfd_evax_output_flush (abfd); - } - else if (bfd_is_abs_section (sym->section)) - { - if (_bfd_evax_output_check (abfd, 16) < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STA_LW, - -1); - _bfd_evax_output_quad (abfd, - (uquad)sym->value); - _bfd_evax_output_flush (abfd); - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_LW, - -1); - _bfd_evax_output_flush (abfd); - } - else - { - if (_bfd_evax_output_check (abfd, 32) < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STA_PQ, - -1); - _bfd_evax_output_long (abfd, - (unsigned long)(sec->index)); - _bfd_evax_output_quad (abfd, - ((uquad)(*rptr)->addend - + (uquad)sym->value)); - _bfd_evax_output_flush (abfd); - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_LW, - -1); - _bfd_evax_output_flush (abfd); - } - } - break; - - case ALPHA_R_REFQUAD: - { - if (bfd_is_und_section (sym->section)) - { - if (_bfd_evax_output_check (abfd, - strlen((char *)sym->name)) - < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_GBL, - -1); - uptr = uname; - nptr = (char *)sym->name; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - nptr++; - uptr++; - } - *uptr = 0; - _bfd_evax_output_counted (abfd, uname); - _bfd_evax_output_flush (abfd); - } - else if (bfd_is_abs_section (sym->section)) - { - if (_bfd_evax_output_check (abfd, 16) < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STA_QW, - -1); - _bfd_evax_output_quad (abfd, - (uquad)sym->value); - _bfd_evax_output_flush (abfd); - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_QW, - -1); - _bfd_evax_output_flush (abfd); - } - else - { - if (_bfd_evax_output_check (abfd, 32) < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, - section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STA_PQ, - -1); - _bfd_evax_output_long (abfd, - (unsigned long)(sec->index)); - _bfd_evax_output_quad (abfd, - ((uquad)(*rptr)->addend - + (uquad)sym->value)); - _bfd_evax_output_flush (abfd); - _bfd_evax_output_begin (abfd, - ETIR_S_C_STO_OFF, - -1); - _bfd_evax_output_flush (abfd); - } - } - break; - - case ALPHA_R_HINT: - { - int hint_size; - - hint_size = sptr->size; - sptr->size = len; - sto_imm (abfd, sptr, vaddr, section->index); - sptr->size = hint_size; -#if 0 - evax_output_begin(abfd, ETIR_S_C_STO_HINT_GBL, -1); - evax_output_long(abfd, (unsigned long)(sec->index)); - evax_output_quad(abfd, (uquad)addr); - uptr = uname; - nptr = (char *)(*(*rptr)->sym_ptr_ptr)->name; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - nptr++; - uptr++; - } - *uptr = 0; - - evax_output_counted(abfd, uname); - evax_output_flush(abfd); -#endif - } - break; -#if 0 - case ALPHA_R_BRADDR: - break; - case ALPHA_R_SREL16: - break; - case ALPHA_R_SREL32: - break; - case ALPHA_R_SREL64: - break; - case ALPHA_R_OP_PUSH: - break; - case ALPHA_R_OP_STORE: - break; - case ALPHA_R_OP_PSUB: - break; - case ALPHA_R_OP_PRSHIFT: - break; -#endif - case ALPHA_R_LINKAGE: - { - if (_bfd_evax_output_check (abfd, 64) < 0) - { - end_etir_record (abfd); - start_etir_record (abfd, section->index, - vaddr, false); - } - _bfd_evax_output_begin (abfd, - ETIR_S_C_STC_LP_PSB, - -1); - _bfd_evax_output_long (abfd, - (unsigned long)PRIV(evax_linkage_index)); - PRIV(evax_linkage_index) += 2; - uptr = uname; - nptr = (char *)(*(*rptr)->sym_ptr_ptr)->name; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - nptr++; - uptr++; - } - *uptr = 0; - _bfd_evax_output_counted (abfd, uname); - _bfd_evax_output_byte (abfd, 0); - _bfd_evax_output_flush (abfd); - } - break; - - default: - (*_bfd_error_handler) ("Unhandled relocation %s", - (*rptr)->howto->name); - break; - } - - vaddr += len; - - if (len == sptr->size) - { - break; - } - else - { - sptr->contents += len; - sptr->offset += len; - sptr->size -= len; - i--; - rptr++; - } - } - else /* sptr starts after reloc */ - { - i--; /* check next reloc */ - rptr++; - } - - if (i==0) /* all reloc checked */ - { - if (sptr->size > 0) - { - sto_imm (abfd, sptr, vaddr, section->index); /* dump rest */ - vaddr += sptr->size; - } - break; - } - } /* for (;;) */ - } /* if SEC_RELOC */ - else /* no relocs, just dump */ - { - sto_imm (abfd, sptr, vaddr, section->index); - vaddr += sptr->size; - } - - sptr = sptr->next; - - } /* while (sptr != 0) */ - - end_etir_record (abfd); - - } /* has_contents */ - - section = section->next; - } - - _bfd_evax_output_alignment(abfd, 2); - return 0; -} - - -/* write traceback data for bfd abfd */ - -int -_bfd_evax_write_etbt (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (2, "evax_write_etbt(%p)\n", abfd); -#endif - - return 0; -} - - -/* write debug info for bfd abfd */ - -int -_bfd_evax_write_edbg (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (2, "evax_write_edbg(%p)\n", abfd); -#endif - - return 0; -} diff --git a/gnu/usr.bin/binutils/bfd/evax-misc.c b/gnu/usr.bin/binutils/bfd/evax-misc.c deleted file mode 100644 index 3da89997805..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax-misc.c +++ /dev/null @@ -1,1049 +0,0 @@ -/* evax-misc.c -- Miscellaneous functions for ALPHA EVAX (openVMS/AXP) files. - Copyright 1996 Free Software Foundation, Inc. - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -#if __STDC__ -#include <stdarg.h> -#endif -#include <stdio.h> - -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "evax.h" - -/*-----------------------------------------------------------------------------*/ -#if EVAX_DEBUG -/* debug functions */ - -/* debug function for all evax extensions - evaluates environment variable EVAX_DEBUG for a - numerical value on the first call - all error levels below this value are printed - - levels: - 1 toplevel bfd calls (functions from the bfd vector) - 2 functions called by bfd calls - ... - 9 almost everything - - level is also identation level. Indentation is performed - if level > 0 - */ - -#if __STDC__ -void -_bfd_evax_debug (int level, char *format, ...) -{ - static int min_level = -1; - static FILE *output = NULL; - char *eptr; - va_list args; - int abslvl = (level > 0)?level:-level; - - if (min_level == -1) - { - if ((eptr = getenv("EVAX_DEBUG")) != NULL) - { - min_level = atoi(eptr); - output = stderr; - } - else - min_level = 0; - } - if (output == NULL) - return; - if (abslvl > min_level) - return; - - while(--level>0) - fprintf(output, " "); - va_start(args, format); - vfprintf(output, format, args); - fflush(output); - va_end(args); - - return; -} - -#else /* not __STDC__ */ - -void -_bfd_evax_debug (level, format, a1, a2, a3, a4, a5, a6) - int level; - char *format; - long a1; long a2; long a3; - long a4; long a5; long a6; -{ - static int min_level = -1; - static FILE *output = NULL; - char *eptr; - - if (min_level == -1) - { - if ((eptr = getenv("EVAX_DEBUG")) != NULL) - { - min_level = atoi(eptr); - output = stderr; - } - else - min_level = 0; - } - if (output == NULL) - return; - if (level > min_level) - return; - - while(--level>0) - fprintf(output, " "); - fprintf(output, format, a1, a2, a3, a4, a5, a6); - fflush(output); - - return; -} -#endif /* __STDC__ */ - - -/* a debug function - hex dump 'size' bytes starting at 'ptr' */ - -void -_bfd_hexdump (level, ptr, size, offset) - int level; - unsigned char *ptr; - int size; - int offset; -{ - unsigned char *lptr = ptr; - int count = 0; - long start = offset; - - while (size-- > 0) - { - if ((count%16) == 0) - evax_debug (level, "%08lx:", start); - evax_debug (-level, " %02x", *ptr++); - count++; - start++; - if (size == 0) - { - while ((count%16) != 0) - { - evax_debug (-level, " "); - count++; - } - } - if ((count%16) == 0) - { - evax_debug (-level, " "); - while (lptr < ptr) - { - evax_debug (-level, "%c", (*lptr < 32)?'.':*lptr); - lptr++; - } - evax_debug (-level, "\n"); - } - } - if ((count%16) != 0) - evax_debug (-level, "\n"); - - return; -} -#endif - - -/* hash functions - - These are needed when reading an object file. */ - -/* allocate new evax_hash_entry - keep the symbol name and a pointer to the bfd symbol in the table */ - -struct bfd_hash_entry * -_bfd_evax_hash_newfunc (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; -{ - evax_symbol_entry *ret = (evax_symbol_entry *)entry; - -#if EVAX_DEBUG - evax_debug (5, "_bfd_evax_hash_newfunc(%p, %p, %s)\n", entry, table, string); -#endif - - if (ret == (evax_symbol_entry *)NULL) - ret = ((evax_symbol_entry *) bfd_hash_allocate (table, sizeof (evax_symbol_entry))); - if (ret == (evax_symbol_entry *)NULL) - { - bfd_set_error (bfd_error_no_memory); - return (struct bfd_hash_entry *)NULL; - } - ret = (evax_symbol_entry *) bfd_hash_newfunc ((struct bfd_hash_entry *)ret, table, string); - - ret->symbol = (asymbol *)NULL; - - return (struct bfd_hash_entry *)ret; -} - - -/* object file input functions */ - -/* Return type and length from record header (buf) */ - -void -_bfd_evax_get_header_values (abfd, buf, type, length) - bfd *abfd; - unsigned char *buf; - int *type; - int *length; -{ - if (type != 0) - *type = bfd_getl16 (buf); - buf += 2; - if (length != 0) - *length = bfd_getl16 (buf); - - return; -} - - -/* Get next record from object file to evax_buf - set PRIV(buf_size) and return it - - this is a little tricky since it should be portable. - - the openVMS/AXP object file has 'variable length' which means that - read() returns data in chunks of (hopefully) correct and expected - size. The linker (and other tools on vms) depend on that. Unix doesn't - know about 'formatted' files, so reading and writing such an object - file in a unix environment is not trivial. - - With the tool 'file' (available on all vms ftp sites), one - can view and change the attributes of a file. Changing from - 'variable length' to 'fixed length, 512 bytes' reveals the - record length at the first 2 bytes of every record. The same - happens during the transfer of object files from vms to unix, - at least with ucx, dec's implementation of tcp/ip. - - The EVAX format repeats the length at bytes 2 & 3 of every record. - - On the first call (file_format == FF_UNKNOWN) we check if - the first and the third byte pair (!) of the record match. - If they do it's an object file in an unix environment or with - wrong attributes (FF_FOREIGN), else we should be in a vms - environment where read() returns the record size (FF_NATIVE). - - reading is always done in 2 steps. - first just the record header is read and the length extracted - by get_header_values - then the read buffer is adjusted and the remaining bytes are - read in. - - all file i/o is always done on even file positions */ - -int -_bfd_evax_get_record (abfd) - bfd *abfd; -{ - int test_len, test_start, remaining; - unsigned char *evax_buf; - -#if EVAX_DEBUG - evax_debug (8, "_bfd_evax_get_record\n"); -#endif - - /* minimum is 6 bytes - (2 bytes length, 2 bytes record id, 2 bytes length repeated) */ - - if (PRIV(buf_size) == 0) - { - PRIV(evax_buf) = (unsigned char *) malloc (6); -#if EVAX_DEBUG - evax_debug (9, "PRIV(evax_buf) %p\n", PRIV(evax_buf)); -#endif - } - - evax_buf = PRIV(evax_buf); - - if (evax_buf == 0) - { -#if EVAX_DEBUG - evax_debug (9, "can't alloc evax_buf\n"); -#endif - bfd_set_error (bfd_error_no_memory); - return -1; - } - - switch (PRIV(file_format)) - { - case FF_UNKNOWN: - case FF_FOREIGN: - test_len = 6; /* probe 6 bytes */ - test_start = 2; /* where the record starts */ - break; - - case FF_NATIVE: - test_len = 4; - test_start = 0; - break; - } - - /* skip odd alignment byte */ -#if 0 - if (PRIV(file_format) == FF_FOREIGN) - { -#endif - if (bfd_tell (abfd) & 1) - { -#if EVAX_DEBUG - evax_debug (10, "skip odd\n"); -#endif - if (bfd_read (PRIV(evax_buf), 1, 1, abfd) != 1) - { -#if EVAX_DEBUG - evax_debug (9, "skip odd failed\n"); -#endif - bfd_set_error (bfd_error_file_truncated); - return 0; - } - } -#if 0 - } -#endif - /* read the record header */ - - if (bfd_read (PRIV(evax_buf), 1, test_len, abfd) != test_len) - { -#if EVAX_DEBUG - evax_debug (9, "can't bfd_read test %d bytes\n", test_len); -#endif - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* check file format on first call */ - - if (PRIV(file_format) == FF_UNKNOWN) - { /* record length repeats ? */ - if ( (evax_buf[0] == evax_buf[4]) - && (evax_buf[1] == evax_buf[5])) - { - PRIV(file_format) = FF_FOREIGN; /* Y: foreign environment */ - test_start = 2; - } - else - { - PRIV(file_format) = FF_NATIVE; /* N: native environment */ - test_start = 0; - } -#if EVAX_DEBUG - evax_debug (10, "File format is %s\n", (PRIV(file_format) == FF_FOREIGN)?"foreign":"native"); -#endif - } - - /* extract evax record length */ - - _bfd_evax_get_header_values (abfd, evax_buf+test_start, NULL, - &PRIV(rec_length)); - - if (PRIV(rec_length) <= 0) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* that's what the linker manual says */ - - if (PRIV(rec_length) > EOBJ_S_C_MAXRECSIZ) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* adjust the buffer */ - - if (PRIV(rec_length) > PRIV(buf_size)) - { - PRIV(evax_buf) = (unsigned char *) realloc (evax_buf, PRIV(rec_length)); -#if EVAX_DEBUG - evax_debug (3, "adjusted the buffer (%p) from %d to %d\n", PRIV(evax_buf), PRIV(buf_size), PRIV(rec_length)); -#endif - evax_buf = PRIV(evax_buf); - if (evax_buf == 0) - { -#if EVAX_DEBUG - evax_debug (9, "can't realloc evax_buf to %d bytes\n", PRIV(rec_length)); -#endif - bfd_set_error (bfd_error_no_memory); - return -1; - } - PRIV(buf_size) = PRIV(rec_length); - } - - /* read the remaining record */ - - remaining = PRIV(rec_length) - test_len + test_start; - - if (bfd_read (evax_buf + test_len, 1, remaining, abfd) != remaining) - { -#if EVAX_DEBUG - evax_debug (9, "can't bfd_read remaining %d bytes\n", remaining); -#endif - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - PRIV(evax_rec) = evax_buf + test_start; - - return PRIV(rec_length); -} - - -/* get next EVAX record from file - update evax_rec and rec_length to new (remaining) values */ - -int -_bfd_evax_next_record (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (8, "_bfd_evax_next_record (len %d, size %d)\n", - PRIV(rec_length), PRIV(rec_size)); -#endif - - if (PRIV(rec_length) > 0) - { - PRIV(evax_rec) += PRIV(rec_size); - } - else - { - if (_bfd_evax_get_record (abfd) <= 0) - return -1; - } - _bfd_evax_get_header_values (abfd, PRIV(evax_rec), &PRIV(rec_type), - &PRIV(rec_size)); - PRIV(rec_length) -= PRIV(rec_size); - -#if EVAX_DEBUG - evax_debug (8, "_bfd_evax_next_record: rec %p, size %d, length %d, type %d\n", - PRIV(evax_rec), PRIV(rec_size), PRIV(rec_length), - PRIV(rec_type)); -#endif - - return PRIV(rec_type); -} - - - -/* Copy sized string (string with fixed length) to new allocated area - size is string length (size of record) */ - -char * -_bfd_evax_save_sized_string (str, size) - char *str; - int size; -{ - char *newstr = bfd_malloc (size + 1); - - if (newstr == NULL) - return 0; - strncpy (newstr, str, size); - newstr[size] = 0; - - return newstr; -} - -/* Copy counted string (string with length at first byte) to new allocated area - ptr points to length byte on entry */ - -char * -_bfd_evax_save_counted_string (ptr) - char *ptr; -{ - int len = *ptr++; - - return _bfd_evax_save_sized_string (ptr, len); -} - - -/* stack routines for EVAX ETIR commands */ - -/* Push value and section index */ - -void -_bfd_evax_push (abfd, val, psect) - bfd *abfd; - uquad val; - int psect; -{ - static int last_psect; - -#if EVAX_DEBUG - evax_debug (4, "<push %016lx(%d) at %d>\n", val, psect, PRIV(stackptr)); -#endif - - if (psect >= 0) - last_psect = psect; - - PRIV(stack[PRIV(stackptr)]).value = val; - PRIV(stack[PRIV(stackptr)]).psect = last_psect; - PRIV(stackptr)++; - if (PRIV(stackptr) >= STACKSIZE) - { - bfd_set_error (bfd_error_bad_value); - exit(1); - } - return; -} - - -/* Pop value and section index */ - -uquad -_bfd_evax_pop (abfd, psect) - bfd *abfd; - int *psect; -{ - uquad value; - - if (PRIV(stackptr) == 0) - { - bfd_set_error (bfd_error_bad_value); - exit(1); - } - PRIV(stackptr)--; - value = PRIV(stack[PRIV(stackptr)]).value; - if ((psect != NULL) && (PRIV(stack[PRIV(stackptr)]).psect >= 0)) - *psect = PRIV(stack[PRIV(stackptr)]).psect; - -#if EVAX_DEBUG - evax_debug (4, "<pop %016lx(%d)>\n", value, PRIV(stack[PRIV(stackptr)]).psect); -#endif - - return value; -} - - -/* object file output functions */ - -/* GAS tends to write sections in little chunks (bfd_set_section_contents) - which we can't use directly. So we save the little chunks in linked - lists (one per section) and write them later. */ - -/* Add a new evax_section structure to evax_section_table - - forward chaining - */ - -static evax_section * -add_new_contents (abfd, section) - bfd *abfd; - sec_ptr section; -{ - evax_section *sptr, *newptr; - - sptr = PRIV(evax_section_table)[section->index]; - if (sptr != NULL) - return sptr; - - newptr = (evax_section *) bfd_malloc (sizeof (evax_section)); - if (newptr == (evax_section *) NULL) - return NULL; - newptr->contents = (unsigned char *) bfd_alloc (abfd, section->_raw_size); - if (newptr->contents == (unsigned char *)NULL) - return NULL; - newptr->offset = 0; - newptr->size = section->_raw_size; - newptr->next = 0; - PRIV(evax_section_table)[section->index] = newptr; - return newptr; -} - - -/* Save section data & offset to an evax_section structure - evax_section_table[] holds the evax_section chain */ - -boolean -_bfd_save_evax_section (abfd, section, data, offset, count) - bfd *abfd; - sec_ptr section; - PTR data; - file_ptr offset; - bfd_size_type count; -{ - evax_section *sptr; - - if (section->index >= EVAX_SECTION_COUNT) - { - bfd_set_error (bfd_error_nonrepresentable_section); - return false; - } - if (count == (bfd_size_type)0) - return true; - sptr = add_new_contents (abfd, section); - if (sptr == NULL) - return false; - memcpy (sptr->contents + offset, data, (size_t) count); - - return true; -} - - -/* Get evax_section pointer to saved contents for section # index */ - -evax_section * -_bfd_get_evax_section (abfd, index) - bfd *abfd; - int index; -{ - if (index >= EVAX_SECTION_COUNT) - { - bfd_set_error (bfd_error_nonrepresentable_section); - return NULL; - } - return PRIV(evax_section_table)[index]; -} - - -/* Object output routines */ - -/* Begin new record or record header - write 2 bytes rectype - write 2 bytes record length (filled in at flush) - write 2 bytes header type (ommitted if rechead == -1) */ - -void -_bfd_evax_output_begin (abfd, rectype, rechead) - bfd *abfd; - int rectype; - int rechead; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_begin(type %d, head %d)\n", rectype, - rechead); -#endif - - _bfd_evax_output_short (abfd,rectype); - - /* save current output position to fill in lenght later */ - - if (PRIV(push_level) > 0) - PRIV(length_pos) = PRIV(output_size); - -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_begin: length_pos = %d\n", - PRIV(length_pos)); -#endif - - _bfd_evax_output_short (abfd,0); /* placeholder for length */ - - if (rechead != -1) - _bfd_evax_output_short (abfd,rechead); - - return; -} - - -/* Set record/subrecord alignment */ - -void -_bfd_evax_output_alignment (abfd, alignto) - bfd *abfd; - int alignto; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_alignment(%d)\n", alignto); -#endif - - PRIV(output_alignment) = alignto; - return; -} - - -/* Prepare for subrecord fields */ - -void -_bfd_evax_output_push (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (6, "evax_output_push(pushed_size = %d)\n", PRIV(output_size)); -#endif - - PRIV(push_level)++; - PRIV(pushed_size) = PRIV(output_size); - return; -} - - -/* End of subrecord fields */ - -void -_bfd_evax_output_pop (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (6, "evax_output_pop(pushed_size = %d)\n", PRIV(pushed_size)); -#endif - - _bfd_evax_output_flush (abfd); - PRIV(length_pos) = 2; - -#if EVAX_DEBUG - evax_debug (6, "evax_output_pop: length_pos = %d\n", PRIV(length_pos)); -#endif - - PRIV(pushed_size) = 0; - PRIV(push_level)--; - return; -} - - -/* Flush unwritten output, ends current record */ - -void -_bfd_evax_output_flush (abfd) - bfd *abfd; -{ - int real_size = PRIV(output_size); - int aligncount; - int length; - -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_flush(real_size = %d, pushed_size %d at lenpos %d)\n", - real_size, PRIV(pushed_size), PRIV(length_pos)); -#endif - - if (PRIV(push_level) > 0) - length = real_size - PRIV(pushed_size); - else - length = real_size; - - if (length == 0) - return; - aligncount = (PRIV(output_alignment) - - (length % PRIV(output_alignment))) % PRIV(output_alignment); - -#if EVAX_DEBUG - evax_debug (6, "align: adding %d bytes\n", aligncount); -#endif - - while(aligncount-- > 0) - { - PRIV(output_buf)[real_size++] = 0; -#if 0 - /* this is why I *love* vms: inconsistency :-} - alignment is added to the subrecord length - but not to the record length */ - if (PRIV(push_level) > 0) -#endif - length++; - } - - /* put length to buffer */ - PRIV(output_size) = PRIV(length_pos); - _bfd_evax_output_short (abfd, (unsigned int)length); - - if (PRIV(push_level) == 0) - { -#ifndef VMS - /* write length first, see FF_FOREIGN in the input routines */ - fwrite (PRIV(output_buf)+2, 2, 1, (FILE *)abfd->iostream); -#endif - fwrite (PRIV(output_buf), real_size, 1, (FILE *)abfd->iostream); - - PRIV(output_size) = 0; - } - else - { - PRIV(output_size) = real_size; - PRIV(pushed_size) = PRIV(output_size); - } - - return; -} - - -/* End record output */ - -void -_bfd_evax_output_end (abfd) - bfd *abfd; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_end\n"); -#endif - - _bfd_evax_output_flush (abfd); - - return; -} - - -/* check remaining buffer size - - return what's left. */ - -int -_bfd_evax_output_check (abfd, size) - bfd *abfd; - int size; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_check(%d)\n", size); -#endif - - return (MAX_OUTREC_SIZE - (PRIV(output_size) + size + MIN_OUTREC_LUFT)); -} - - -/* Output byte (8 bit) value */ - -void -_bfd_evax_output_byte (abfd, value) - bfd *abfd; - unsigned int value; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_byte(%02x)\n", value); -#endif - - bfd_put_8 (abfd, value & 0xff, PRIV(output_buf) + PRIV(output_size)); - PRIV(output_size) += 1; - return; -} - - -/* Output short (16 bit) value */ - -void -_bfd_evax_output_short (abfd, value) - bfd *abfd; - unsigned int value; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_short (%04x)\n", value); -#endif - - bfd_put_16 (abfd, value & 0xffff, PRIV(output_buf) + PRIV(output_size)); - PRIV(output_size) += 2; - return; -} - - -/* Output long (32 bit) value */ - -void -_bfd_evax_output_long (abfd, value) - bfd *abfd; - unsigned long value; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_long (%08lx)\n", value); -#endif - - bfd_put_32 (abfd, value, PRIV(output_buf) + PRIV(output_size)); - PRIV(output_size) += 4; - return; -} - - -/* Output quad (64 bit) value */ - -void -_bfd_evax_output_quad (abfd, value) - bfd *abfd; - uquad value; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_quad(%016lx)\n", value); -#endif - - bfd_put_64(abfd, value, PRIV(output_buf) + PRIV(output_size)); - PRIV(output_size) += 8; - return; -} - - -/* Output c-string as counted string */ - -void -_bfd_evax_output_counted (abfd, value) - bfd *abfd; - char *value; -{ -int len; - -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_counted(%s)\n", value); -#endif - - len = strlen (value); - if (len == 0) - { - (*_bfd_error_handler) ("_bfd_evax_output_counted called with zero bytes"); - return; - } - if (len > 255) - { - (*_bfd_error_handler) ("_bfd_evax_output_counted called with too many bytes"); - return; - } - _bfd_evax_output_byte (abfd, len & 0xff); - _bfd_evax_output_dump (abfd, (unsigned char *)value, len); -} - - -/* Output character area */ - -void -_bfd_evax_output_dump (abfd, data, length) - bfd *abfd; - unsigned char *data; - int length; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_dump(%d)\n", length); -#endif - - if (length == 0) - return; - - memcpy (PRIV(output_buf) + PRIV(output_size), data, length); - PRIV(output_size) += length; - - return; -} - - -/* Output count bytes of value */ - -void -_bfd_evax_output_fill (abfd, value, count) - bfd *abfd; - int value; - int count; -{ -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_output_fill(val %02x times %d)\n", value, count); -#endif - - if (count == 0) - return; - memset (PRIV(output_buf) + PRIV(output_size), value, count); - PRIV(output_size) += count; - - return; -} - -/*-----------------------------------------------------------------------------*/ - -/* Return basename (stripped of directory information) of filename */ - -char * -_bfd_evax_basename (name) - char *name; -{ - char *ptr; - -#if EVAX_DEBUG - evax_debug (6, "_bfd_evax_basename %s -> ", name); -#endif - -#ifndef VMS - /* assume unix host */ - ptr = strrchr (name, '.'); - if (ptr) - *ptr = 0; - ptr = strrchr (name, '/'); - if (ptr) - *ptr++ = 0; - else - ptr = name; -#else - /* assume vms host */ - ptr = strrchr (name, '.'); - if (ptr) - { - *ptr = 0; - ptr = name; - } - else - { - ptr = strrchr (name, ']'); - if (ptr) - *ptr++ = 0; - else - { - ptr = strrchr (name, ':'); - if (ptr) - *ptr++ = 0; - else - ptr = name; - } - } -#endif - -#if EVAX_DEBUG - evax_debug (6, "%s\n", ptr); -#endif - - return ptr; -} - - -/* Manufacure a VMS like time on a unix based system. - stolen from obj-vms.c */ - -char * -_bfd_get_vms_time_string () -{ - static char tbuf[18]; -#ifndef VMS -#include <sys/types.h> -#include <time.h> - - char *pnt; - time_t timeb; - time (&timeb); - pnt = ctime (&timeb); - pnt[3] = 0; - pnt[7] = 0; - pnt[10] = 0; - pnt[16] = 0; - pnt[24] = 0; - sprintf (tbuf, "%2s-%3s-%s %s", pnt + 8, pnt + 4, pnt + 20, pnt + 11); -#else -#include <starlet.h> - struct - { - int Size; - char *Ptr; - } Descriptor; - Descriptor.Size = 17; - Descriptor.Ptr = tbuf; - sys$asctim (0, &Descriptor, 0, 0); -#endif /* not VMS */ - -#if EVAX_DEBUG - evax_debug (6, "vmstimestring:'%s'\n", tbuf); -#endif - - return tbuf; -} diff --git a/gnu/usr.bin/binutils/bfd/evax.h b/gnu/usr.bin/binutils/bfd/evax.h deleted file mode 100644 index 7d6c9b4ec42..00000000000 --- a/gnu/usr.bin/binutils/bfd/evax.h +++ /dev/null @@ -1,379 +0,0 @@ -/* evax.h -- Header file for ALPHA EVAX (openVMS/AXP) support. - Copyright 1996 Free Software Foundation, Inc. - Written by Klaus Kämpf (kkaempf@progis.de) - of proGIS Softwareentwicklung, Aachen, Germany - -This file is part of BFD, the Binary File Descriptor library. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef EVAX_H -#define EVAX_H - -/* EVAX Text, information and relocation record (ETIR) definitions. */ - -#define ETIR_S_C_MINSTACOD 0 /* Minimum store code */ -#define ETIR_S_C_STA_GBL 0 /* Stack global symbol value */ -#define ETIR_S_C_STA_LW 1 /* Stack longword */ -#define ETIR_S_C_STA_QW 2 /* Stack quadword */ -#define ETIR_S_C_STA_PQ 3 /* Stack psect base plus quadword offset */ -#define ETIR_S_C_STA_LI 4 /* Stack literal */ -#define ETIR_S_C_STA_MOD 5 /* Stack module */ -#define ETIR_S_C_STA_CKARG 6 /* Check Arguments */ -#define ETIR_S_C_MAXSTACOD 6 /* Maximum stack code */ -#define ETIR_S_C_MINSTOCOD 50 /* Minimum store code */ -#define ETIR_S_C_STO_B 50 /* Store byte */ -#define ETIR_S_C_STO_W 51 /* Store word */ -#define ETIR_S_C_STO_LW 52 /* Store longword */ -#define ETIR_S_C_STO_QW 53 /* Store quadword */ -#define ETIR_S_C_STO_IMMR 54 /* Store immediate Repeated */ -#define ETIR_S_C_STO_GBL 55 /* Store global */ -#define ETIR_S_C_STO_CA 56 /* Store code address */ -#define ETIR_S_C_STO_RB 57 /* Store relative branch */ -#define ETIR_S_C_STO_AB 58 /* Store absolute branch */ -#define ETIR_S_C_STO_OFF 59 /* Store offset within psect */ -#define ETIR_S_C_STO_IMM 61 /* Store immediate */ -#define ETIR_S_C_STO_GBL_LW 62 /* Store global Longword */ -#define ETIR_S_C_STO_LP_PSB 63 /* STO_LP_PSB not valid in level 2 use STC_LP_PSB */ -#define ETIR_S_C_STO_HINT_GBL 64 /* Store 14 bit HINT at global address */ -#define ETIR_S_C_STO_HINT_PS 65 /* Store 14 bit HINT at psect + offset */ -#define ETIR_S_C_MAXSTOCOD 65 /* Maximum store code */ -#define ETIR_S_C_MINOPRCOD 100 /* Minimum operate code */ -#define ETIR_S_C_OPR_NOP 100 /* No-op */ -#define ETIR_S_C_OPR_ADD 101 /* Add */ -#define ETIR_S_C_OPR_SUB 102 /* Subtract */ -#define ETIR_S_C_OPR_MUL 103 /* Multiply */ -#define ETIR_S_C_OPR_DIV 104 /* Divide */ -#define ETIR_S_C_OPR_AND 105 /* Logical AND */ -#define ETIR_S_C_OPR_IOR 106 /* Logical inclusive OR */ -#define ETIR_S_C_OPR_EOR 107 /* Logical exclusive OR */ -#define ETIR_S_C_OPR_NEG 108 /* Negate */ -#define ETIR_S_C_OPR_COM 109 /* Complement */ -#define ETIR_S_C_OPR_INSV 110 /* Insert bit field */ -#define ETIR_S_C_OPR_ASH 111 /* Arithmetic shift */ -#define ETIR_S_C_OPR_USH 112 /* Unsigned shift */ -#define ETIR_S_C_OPR_ROT 113 /* Rotate */ -#define ETIR_S_C_OPR_SEL 114 /* Select one of three longwords on top of stack */ -#define ETIR_S_C_OPR_REDEF 115 /* Redefine this symbol after pass 2 */ -#define ETIR_S_C_OPR_DFLIT 116 /* Define a literal */ -#define ETIR_S_C_MAXOPRCOD 116 /* Maximum operate code */ -#define ETIR_S_C_MINCTLCOD 150 /* Minimum control code */ -#define ETIR_S_C_CTL_SETRB 150 /* Set relocation base */ -#define ETIR_S_C_CTL_AUGRB 151 /* Augment relocation base */ -#define ETIR_S_C_CTL_DFLOC 152 /* Define debug location */ -#define ETIR_S_C_CTL_STLOC 153 /* Set debug location */ -#define ETIR_S_C_CTL_STKDL 154 /* Stack debug location */ -#define ETIR_S_C_MAXCTLCOD 154 /* Maximum control code */ -#define ETIR_S_C_MINSTCCOD 200 /* Minimum store-conditional code */ -#define ETIR_S_C_STC_LP 200 /* Store-conditional Linkage Pair */ -#define ETIR_S_C_STC_LP_PSB 201 /* Store-conditional Linkage Pair with Procedure Signature */ -#define ETIR_S_C_STC_GBL 202 /* Store-conditional Address at global address */ -#define ETIR_S_C_STC_GCA 203 /* Store-conditional Code Address at global address */ -#define ETIR_S_C_STC_PS 204 /* Store-conditional Address at psect + offset */ -#define ETIR_S_C_STC_NOP_GBL 205 /* Store-conditional NOP at address of global */ -#define ETIR_S_C_STC_NOP_PS 206 /* Store-conditional NOP at pect + offset */ -#define ETIR_S_C_STC_BSR_GBL 207 /* Store-conditional BSR at global address */ -#define ETIR_S_C_STC_BSR_PS 208 /* Store-conditional BSR at pect + offset */ -#define ETIR_S_C_STC_LDA_GBL 209 /* Store-conditional LDA at global address */ -#define ETIR_S_C_STC_LDA_PS 210 /* Store-conditional LDA at psect + offset */ -#define ETIR_S_C_STC_BOH_GBL 211 /* Store-conditional BSR or Hint at global address */ -#define ETIR_S_C_STC_BOH_PS 212 /* Store-conditional BSR or Hint at pect + offset */ -#define ETIR_S_C_STC_NBH_GBL 213 /* Store-conditional NOP,BSR or HINT at global address */ -#define ETIR_S_C_STC_NBH_PS 214 /* Store-conditional NOP,BSR or HINT at psect + offset */ -#define ETIR_S_C_MAXSTCCOD 214 /* Maximum store-conditional code */ - -/* EVAX Global symbol definition record (EGSD). */ - -#define EGSD_S_K_ENTRIES 2 /* Offset to first entry in record */ -#define EGSD_S_C_ENTRIES 2 /* Offset to first entry in record */ -#define EGSD_S_C_PSC 0 /* Psect definition */ -#define EGSD_S_C_SYM 1 /* Symbol specification */ -#define EGSD_S_C_IDC 2 /* Random entity check */ -#define EGSD_S_C_SPSC 5 /* Shareable image psect definition */ -#define EGSD_S_C_SYMV 6 /* Vectored (dual-valued) versions of SYM, */ -#define EGSD_S_C_SYMM 7 /* Masked versions of SYM, */ -#define EGSD_S_C_SYMG 8 /* EGST - gst version of SYM */ -#define EGSD_S_C_MAXRECTYP 8 /* Maximum entry type defined */ - -#define EGPS_S_V_PIC 0x0001 -#define EGPS_S_V_LIB 0x0002 -#define EGPS_S_V_OVR 0x0004 -#define EGPS_S_V_REL 0x0008 -#define EGPS_S_V_GBL 0x0010 -#define EGPS_S_V_SHR 0x0020 -#define EGPS_S_V_EXE 0x0040 -#define EGPS_S_V_RD 0x0080 -#define EGPS_S_V_WRT 0x0100 -#define EGPS_S_V_VEC 0x0200 -#define EGPS_S_V_NOMOD 0x0400 -#define EGPS_S_V_COM 0x0800 - -#define EGSY_S_V_WEAK 0x0001 -#define EGSY_S_V_DEF 0x0002 -#define EGSY_S_V_UNI 0x0004 -#define EGSY_S_V_REL 0x0008 -#define EGSY_S_V_COMM 0x0010 -#define EGSY_S_V_VECEP 0x0020 -#define EGSY_S_V_NORM 0x0040 - -/* EVAX Module header record (EMH) definitions. */ - -#define EMH_S_C_MHD 0 /* Main header record */ -#define EMH_S_C_LNM 1 /* Language name and version */ -#define EMH_S_C_SRC 2 /* Source file specification */ -#define EMH_S_C_TTL 3 /* Title text of module */ -#define EMH_S_C_CPR 4 /* Copyright notice */ -#define EMH_S_C_MTC 5 /* Maintenance status */ -#define EMH_S_C_GTX 6 /* General text */ -#define EMH_S_C_MAXHDRTYP 6 /* Maximum allowable type */ - -/* evax-alpha.c. */ - -extern asymbol *_bfd_evax_make_empty_symbol PARAMS ((bfd *abfd)); - -/* evax-egsd.c. */ - -extern int _bfd_evax_slurp_egsd PARAMS ((bfd *abfd)); -extern int _bfd_evax_write_egsd PARAMS ((bfd *abfd)); - -/* evax-emh.c. */ - -extern int _bfd_evax_slurp_emh PARAMS ((bfd *abfd)); -extern int _bfd_evax_write_emh PARAMS ((bfd *abfd)); -extern int _bfd_evax_slurp_eeom PARAMS ((bfd *abfd)); -extern int _bfd_evax_write_eeom PARAMS ((bfd *abfd)); - -/* evax-etir.c. */ - -extern int _bfd_evax_slurp_etir PARAMS ((bfd *abfd)); -extern int _bfd_evax_slurp_edbg PARAMS ((bfd *abfd)); -extern int _bfd_evax_slurp_etbt PARAMS ((bfd *abfd)); - -extern int _bfd_evax_write_etir PARAMS ((bfd *abfd)); -extern int _bfd_evax_write_etbt PARAMS ((bfd *abfd)); -extern int _bfd_evax_write_edbg PARAMS ((bfd *abfd)); - -/* The r_type field in a reloc is one of the following values. */ -#define ALPHA_R_IGNORE 0 -#define ALPHA_R_REFQUAD 1 -#define ALPHA_R_BRADDR 2 -#define ALPHA_R_HINT 3 -#define ALPHA_R_SREL16 4 -#define ALPHA_R_SREL32 5 -#define ALPHA_R_SREL64 6 -#define ALPHA_R_OP_PUSH 7 -#define ALPHA_R_OP_STORE 8 -#define ALPHA_R_OP_PSUB 9 -#define ALPHA_R_OP_PRSHIFT 10 -#define ALPHA_R_LINKAGE 11 -#define ALPHA_R_REFLONG 12 - -/* Object language definitions. */ - -#define EOBJ_S_C_EMH 8 /*EVAX module header record */ -#define EOBJ_S_C_EEOM 9 /*EVAX end of module record */ -#define EOBJ_S_C_EGSD 10 /*EVAX global symbol definition record */ -#define EOBJ_S_C_ETIR 11 /*EVAX text information record */ -#define EOBJ_S_C_EDBG 12 /*EVAX Debugger information record */ -#define EOBJ_S_C_ETBT 13 /*EVAX Traceback information record */ -#define EOBJ_S_C_MAXRECTYP 13 /*Last assigned record type */ -#define EOBJ_S_K_SUBTYP 4 -#define EOBJ_S_C_SUBTYP 4 -#define EOBJ_S_C_MAXRECSIZ 8192 /*Maximum legal record size */ -#define EOBJ_S_C_STRLVL 2 /*Structure level */ -#define EOBJ_S_C_SYMSIZ 64 /*Maxymum symbol length */ -#define EOBJ_S_C_STOREPLIM -1 /*Maximum repeat count on store commands */ -#define EOBJ_S_C_PSCALILIM 16 /*Maximum p-sect alignment */ - -/* Miscellaneous definitions. */ - -#if __GNUC__ -typedef unsigned long long uquad; -#else -typedef unsigned long uquad; -#endif - -#define MAX_OUTREC_SIZE 4096 -#define MIN_OUTREC_LUFT 64 - -typedef struct _evax_section { - unsigned char *contents; - bfd_vma offset; - bfd_size_type size; - struct _evax_section *next; -} evax_section; - -extern boolean _bfd_save_evax_section - PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, - bfd_size_type count)); -extern evax_section *_bfd_get_evax_section PARAMS ((bfd *abfd, int index)); - -typedef struct _evax_reloc { - struct _evax_reloc *next; - arelent *reloc; - asection *section; -} evax_reloc; - -/* evax module header */ - -struct emh_struc { - int emh_b_strlvl; - long emh_l_arch1; - long emh_l_arch2; - long emh_l_recsiz; - char *emh_t_name; - char *emh_t_version; - char *emh_t_date; - char *emh_c_lnm; - char *emh_c_src; - char *emh_c_ttl; -}; - - -/* evax end of module */ - -struct eeom_struc { - long eeom_l_total_lps; - unsigned char eeom_b_comcod; - boolean eeom_has_transfer; - unsigned char eeom_b_tfrflg; - long eeom_l_psindx; - long eeom_l_tfradr; -}; - -enum file_format_enum { FF_UNKNOWN, FF_FOREIGN, FF_NATIVE }; - -typedef struct evax_symbol_struct { - struct bfd_hash_entry bfd_hash; - asymbol *symbol; -} evax_symbol_entry; - -/* stack value for push/pop commands */ - -struct stack_struct { - uquad value; - int psect; -}; -#define STACKSIZE 50 - -/* location stack definitions for CTL_DFLOC, CTL_STLOC, and CTL_STKDL */ - -struct location_struct { - unsigned long value; - int psect; -}; -#define LOCATION_SAVE_SIZE 32 - -#define EVAX_SECTION_COUNT 32 - -struct evax_private_data_struct { - char *filename; /* Filename of object file */ - boolean fixup_done; /* Flag to indicate if all - section pointers and PRIV(sections) - are set up correctly */ - unsigned char *evax_buf; /* buffer to record */ - int buf_size; /* max size of buffer */ - unsigned char *evax_rec; /* actual record ptr */ - int rec_length; /* remaining record length */ - int rec_size; /* actual record size */ - int rec_type; /* actual record type */ - enum file_format_enum file_format; - - struct emh_struc emh_data; /* data from EMH record */ - struct eeom_struc eeom_data; /* data from EEOM record */ - int egsd_sec_count; /* # of EGSD sections */ - asection **sections; /* vector of EGSD sections */ - int egsd_sym_count; /* # of EGSD symbols */ - asymbol **symbols; /* vector of EGSD symbols */ - struct proc_value *procedure; - - struct stack_struct *stack; - int stackptr; - - evax_section *evax_section_table[EVAX_SECTION_COUNT]; - - struct bfd_hash_table *evax_symbol_table; - struct symbol_cache_entry **symcache; - int symnum; - - struct location_struct *location_stack; - - unsigned char *image_ptr; /* a pointer to section->contents */ - - unsigned char pdsc[8]; /* procedure descriptor */ - - /* Output routine storage */ - - unsigned char *output_buf; /* output data */ - int push_level; - int pushed_size; - int length_pos; - int output_size; - int output_alignment; - - /* linkage index counter - used by conditional store commands (ETIR_S_C_STC_) */ - - int evax_linkage_index; - -}; - -#define PRIV(name) ((struct evax_private_data_struct *)abfd->tdata.any)->name - -#if EVAX_DEBUG -extern void _bfd_evax_debug PARAMS((int level, char *format, ...)); -extern void _bfd_hexdump - PARAMS ((int level, unsigned char *ptr, int size, int offset)); - -#define evax_debug _bfd_evax_debug - -#endif - -extern struct bfd_hash_entry *_bfd_evax_hash_newfunc - PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table, - const char *string)); -extern void _bfd_evax_get_header_values - PARAMS ((bfd *abfd, unsigned char *buf, int *type, int *length)); -extern int _bfd_evax_get_record PARAMS ((bfd *abfd)); -extern int _bfd_evax_next_record PARAMS ((bfd *abfd)); - -extern char *_bfd_evax_save_sized_string PARAMS ((char *str, int size)); -extern char *_bfd_evax_save_counted_string PARAMS ((char *ptr)); -extern void _bfd_evax_push PARAMS ((bfd *abfd, uquad val, int psect)); -extern uquad _bfd_evax_pop PARAMS ((bfd *abfd, int *psect)); - -extern boolean _bfd_save_evax_section - PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, - bfd_size_type count)); -extern void _bfd_evax_output_begin - PARAMS ((bfd *abfd, int rectype, int rechead)); -extern void _bfd_evax_output_alignment PARAMS ((bfd *abfd, int alignto)); -extern void _bfd_evax_output_push PARAMS ((bfd *abfd)); -extern void _bfd_evax_output_pop PARAMS ((bfd *abfd)); -extern void _bfd_evax_output_flush PARAMS ((bfd *abfd)); -extern void _bfd_evax_output_end PARAMS ((bfd *abfd)); -extern int _bfd_evax_output_check PARAMS ((bfd *abfd, int size)); -extern void _bfd_evax_output_byte PARAMS ((bfd *abfd, unsigned int value)); -extern void _bfd_evax_output_short PARAMS ((bfd *abfd, unsigned int value)); -extern void _bfd_evax_output_long PARAMS ((bfd *abfd, unsigned long value)); -extern void _bfd_evax_output_quad PARAMS ((bfd *abfd, uquad value)); -extern void _bfd_evax_output_counted PARAMS ((bfd *abfd, char *value)); -extern void _bfd_evax_output_dump PARAMS ((bfd *abfd, unsigned char *data, - int length)); -extern void _bfd_evax_output_fill PARAMS ((bfd *abfd, int value, int length)); -extern char *_bfd_get_vms_time_string PARAMS ((void)); -extern char *_bfd_evax_basename PARAMS ((char *name)); - -#endif /* EVAX_H */ diff --git a/gnu/usr.bin/binutils/bfd/filemode.c b/gnu/usr.bin/binutils/bfd/filemode.c deleted file mode 100644 index fd790b36786..00000000000 --- a/gnu/usr.bin/binutils/bfd/filemode.c +++ /dev/null @@ -1,193 +0,0 @@ -/* filemode.c -- make a string describing file modes - Copyright (C) 1985, 1990 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <sys/types.h> -#include <sys/stat.h> - -void mode_string (); -static char ftypelet (); -static void rwx (); -static void setst (); - -/* filemodestring - fill in string STR with an ls-style ASCII - representation of the st_mode field of file stats block STATP. - 10 characters are stored in STR; no terminating null is added. - The characters stored in STR are: - - 0 File type. 'd' for directory, 'c' for character - special, 'b' for block special, 'm' for multiplex, - 'l' for symbolic link, 's' for socket, 'p' for fifo, - '-' for any other file type - - 1 'r' if the owner may read, '-' otherwise. - - 2 'w' if the owner may write, '-' otherwise. - - 3 'x' if the owner may execute, 's' if the file is - set-user-id, '-' otherwise. - 'S' if the file is set-user-id, but the execute - bit isn't set. - - 4 'r' if group members may read, '-' otherwise. - - 5 'w' if group members may write, '-' otherwise. - - 6 'x' if group members may execute, 's' if the file is - set-group-id, '-' otherwise. - 'S' if it is set-group-id but not executable. - - 7 'r' if any user may read, '-' otherwise. - - 8 'w' if any user may write, '-' otherwise. - - 9 'x' if any user may execute, 't' if the file is "sticky" - (will be retained in swap space after execution), '-' - otherwise. - 'T' if the file is sticky but not executable. */ - -void -filemodestring (statp, str) - struct stat *statp; - char *str; -{ - mode_string (statp->st_mode, str); -} - -/* Like filemodestring, but only the relevant part of the `struct stat' - is given as an argument. */ - -void -mode_string (mode, str) - unsigned short mode; - char *str; -{ - str[0] = ftypelet (mode); - rwx ((mode & 0700) << 0, &str[1]); - rwx ((mode & 0070) << 3, &str[4]); - rwx ((mode & 0007) << 6, &str[7]); - setst (mode, str); -} - -/* Return a character indicating the type of file described by - file mode BITS: - 'd' for directories - 'b' for block special files - 'c' for character special files - 'm' for multiplexor files - 'l' for symbolic links - 's' for sockets - 'p' for fifos - '-' for any other file type. */ - -static char -ftypelet (bits) - unsigned short bits; -{ - switch (bits & S_IFMT) - { - default: - return '-'; - case S_IFDIR: - return 'd'; -#ifdef S_IFLNK - case S_IFLNK: - return 'l'; -#endif -#ifdef S_IFCHR - case S_IFCHR: - return 'c'; -#endif -#ifdef S_IFBLK - case S_IFBLK: - return 'b'; -#endif -#ifdef S_IFMPC - case S_IFMPC: - case S_IFMPB: - return 'm'; -#endif -#ifdef S_IFSOCK - case S_IFSOCK: - return 's'; -#endif -#ifdef S_IFIFO -#if S_IFIFO != S_IFSOCK - case S_IFIFO: - return 'p'; -#endif -#endif -#ifdef S_IFNWK /* HP-UX */ - case S_IFNWK: - return 'n'; -#endif - } -} - -/* Look at read, write, and execute bits in BITS and set - flags in CHARS accordingly. */ - -static void -rwx (bits, chars) - unsigned short bits; - char *chars; -{ - chars[0] = (bits & S_IREAD) ? 'r' : '-'; - chars[1] = (bits & S_IWRITE) ? 'w' : '-'; - chars[2] = (bits & S_IEXEC) ? 'x' : '-'; -} - -/* Set the 's' and 't' flags in file attributes string CHARS, - according to the file mode BITS. */ - -static void -setst (bits, chars) - unsigned short bits; - char *chars; -{ -#ifdef S_ISUID - if (bits & S_ISUID) - { - if (chars[3] != 'x') - /* Set-uid, but not executable by owner. */ - chars[3] = 'S'; - else - chars[3] = 's'; - } -#endif -#ifdef S_ISGID - if (bits & S_ISGID) - { - if (chars[6] != 'x') - /* Set-gid, but not executable by group. */ - chars[6] = 'S'; - else - chars[6] = 's'; - } -#endif -#ifdef S_ISVTX - if (bits & S_ISVTX) - { - if (chars[9] != 'x') - /* Sticky, but not executable by others. */ - chars[9] = 'T'; - else - chars[9] = 't'; - } -#endif -} - - diff --git a/gnu/usr.bin/binutils/bfd/hp300hpux.c b/gnu/usr.bin/binutils/bfd/hp300hpux.c index 9ceb6b8a9cd..46bfea054cf 100644 --- a/gnu/usr.bin/binutils/bfd/hp300hpux.c +++ b/gnu/usr.bin/binutils/bfd/hp300hpux.c @@ -393,7 +393,12 @@ convert_sym_type (sym_pointer, cache_ptr, abfd) default: abort (); case N_UNDF | N_EXT: - new_type = N_WEAKU; + /* If the value is nonzero, then just treat this as a + common symbol. I don't know if this is correct in + all cases, but it is more correct than treating it as + a weak undefined symbol. */ + if (cache_ptr->symbol.value == 0) + new_type = N_WEAKU; break; case N_ABS | N_EXT: new_type = N_WEAKA; diff --git a/gnu/usr.bin/binutils/bfd/i386aout.c b/gnu/usr.bin/binutils/bfd/i386aout.c index ef4b99f786c..d0b2cffef23 100644 --- a/gnu/usr.bin/binutils/bfd/i386aout.c +++ b/gnu/usr.bin/binutils/bfd/i386aout.c @@ -1,5 +1,5 @@ /* BFD back-end for i386 a.out binaries. - Copyright 1990, 91, 92, 94, 95, 1996 Free Software Foundation, Inc. + Copyright 1990, 91, 92, 94, 95, 96, 1997 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -75,6 +75,7 @@ static boolean MY(set_sizes)(); static CONST struct aout_backend_data MY(backend_data) = { 0, /* zmagic contiguous */ 1, /* text incl header */ + 0, /* entry is text address */ 0, /* exec_hdr_flags */ 0, /* text vma? */ MY(set_sizes), diff --git a/gnu/usr.bin/binutils/bfd/i386mach3.c b/gnu/usr.bin/binutils/bfd/i386mach3.c index 72a28f33bf0..eff75824658 100644 --- a/gnu/usr.bin/binutils/bfd/i386mach3.c +++ b/gnu/usr.bin/binutils/bfd/i386mach3.c @@ -1,5 +1,5 @@ /* BFD back-end for i386 a.out binaries. - Copyright (C) 1990, 1991 Free Software Foundation, Inc. + Copyright (C) 1990, 91, 93, 94, 95, 1997 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -50,6 +50,7 @@ static boolean MY(set_sizes)(); static CONST struct aout_backend_data MY(backend_data) = { 0, /* zmagic contiguous */ 1, /* text incl header */ + 0, /* entry is text address */ 0, /* exec_hdr_flags */ 0, /* text vma? */ MY(set_sizes), diff --git a/gnu/usr.bin/binutils/bfd/irix-core.c b/gnu/usr.bin/binutils/bfd/irix-core.c index 695f80c8941..006e6a751b1 100644 --- a/gnu/usr.bin/binutils/bfd/irix-core.c +++ b/gnu/usr.bin/binutils/bfd/irix-core.c @@ -1,5 +1,5 @@ /* BFD back-end for Irix core files. - Copyright 1993, 1994 Free Software Foundation, Inc. + Copyright 1993, 94, 95, 96, 1997 Free Software Foundation, Inc. Written by Stu Grossman, Cygnus Support. Converted to back-end form by Ian Lance Taylor, Cygnus Support @@ -92,7 +92,10 @@ irix_core_core_file_p (abfd) return 0; } - if (coreout.c_magic != CORE_MAGIC +#ifndef CORE_MAGICN32 +#define CORE_MAGICN32 CORE_MAGIC +#endif + if ((coreout.c_magic != CORE_MAGIC && coreout.c_magic != CORE_MAGICN32) || coreout.c_version != CORE_VERSION1) return 0; @@ -203,7 +206,8 @@ irix_core_make_empty_symbol (abfd) #define irix_core_get_symtab _bfd_nosymbols_get_symtab #define irix_core_print_symbol _bfd_nosymbols_print_symbol #define irix_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define irix_core_bfd_is_local_label _bfd_nosymbols_bfd_is_local_label +#define irix_core_bfd_is_local_label_name \ + _bfd_nosymbols_bfd_is_local_label_name #define irix_core_get_lineno _bfd_nosymbols_get_lineno #define irix_core_find_nearest_line _bfd_nosymbols_find_nearest_line #define irix_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol diff --git a/gnu/usr.bin/binutils/bfd/liboasys.h b/gnu/usr.bin/binutils/bfd/liboasys.h index 2d158137656..7f7ea59b5a7 100644 --- a/gnu/usr.bin/binutils/bfd/liboasys.h +++ b/gnu/usr.bin/binutils/bfd/liboasys.h @@ -1,5 +1,5 @@ /* BFD internal declarations for Oasys file format handling. - Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc. + Copyright (C) 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc. Scrawled by Steve Chamberlain of Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -70,7 +70,6 @@ typedef struct _oasys_ar_data { } oasys_ar_data_type; typedef struct _oasys_data { - struct obstack oasys_obstack; char *strings; asymbol *symbols; unsigned int symbol_string_length; diff --git a/gnu/usr.bin/binutils/bfd/makefile.dos b/gnu/usr.bin/binutils/bfd/makefile.dos deleted file mode 100644 index 8a22c6af201..00000000000 --- a/gnu/usr.bin/binutils/bfd/makefile.dos +++ /dev/null @@ -1,49 +0,0 @@ -CFLAGS=-O2 - -.c.o : - gcc $(CFLAGS) -I. -I../include -c $< - -all : libbfd.a - -targets.o : targets.c - gcc $(CFLAGS) -I. -I../include -DSELECT_VECS=&go32coff_vec,&i386aout_vec -DDEFAULT_VECTOR=go32coff_vec -c $*.c - -archures.o : archures.c - gcc $(CFLAGS) -I. -I../include -DSELECT_ARCHITECTURES=bfd_i386_arch -c $*.c - -OBJS = \ - libbfd.o \ - opncls.o \ - bfd.o \ - archive.o \ - targets.o \ - cache.o \ - archures.o \ - corefile.o \ - section.o \ - format.o \ - syms.o \ - reloc.o \ - init.o \ - coffgen.o \ - srec.o \ - hash.o \ - linker.o \ - ecoff.o \ - ecofflink.o \ - elf.o \ - aout32.o \ - stab-sym.o \ - i386aout.o \ - cpu-i386.o \ - coff-go32.o \ - cofflink.o \ - elf32.o \ - binary.o \ - tekhex.o \ - $E - -libbfd.a : $(OBJS) - -rm libbfd.a - ar rvs libbfd.a $(OBJS) - ranlib libbfd.a diff --git a/gnu/usr.bin/binutils/bfd/nlm-target.h b/gnu/usr.bin/binutils/bfd/nlm-target.h index e3b07eda182..5c1e255b4c8 100644 --- a/gnu/usr.bin/binutils/bfd/nlm-target.h +++ b/gnu/usr.bin/binutils/bfd/nlm-target.h @@ -1,5 +1,5 @@ /* Target definitions for 32/64-bit NLM (NetWare Loadable Module) - Copyright (C) 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1993, 94, 95, 1997 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define nlm_make_empty_symbol nlmNAME(make_empty_symbol) #define nlm_print_symbol nlmNAME(print_symbol) #define nlm_get_symbol_info nlmNAME(get_symbol_info) -#define nlm_bfd_is_local_label bfd_generic_is_local_label +#define nlm_bfd_is_local_label_name bfd_generic_is_local_label_name #define nlm_get_lineno _bfd_nosymbols_get_lineno #define nlm_find_nearest_line _bfd_nosymbols_find_nearest_line #define nlm_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol diff --git a/gnu/usr.bin/binutils/bfd/sysdep.h b/gnu/usr.bin/binutils/bfd/sysdep.h index a4ceb048660..77b5e50a9c3 100644 --- a/gnu/usr.bin/binutils/bfd/sysdep.h +++ b/gnu/usr.bin/binutils/bfd/sysdep.h @@ -34,7 +34,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <sys/stat.h> #include <errno.h> -#ifndef errno +#if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO)) extern int errno; #endif diff --git a/gnu/usr.bin/binutils/bfd/targmatch.sed b/gnu/usr.bin/binutils/bfd/targmatch.sed index 5bbd17e9ec9..2f40e723f2c 100644 --- a/gnu/usr.bin/binutils/bfd/targmatch.sed +++ b/gnu/usr.bin/binutils/bfd/targmatch.sed @@ -5,13 +5,28 @@ s/^#endif/KEEP #endif/ s/^[ ]*#.*$// s/^KEEP #/#/ s/[ ]*\\$// +t lab1 + :lab1 s/[| ][| ]*\([^|() ][^|() ]*\)[ ]*|/{ "\1", NULL },/g s/[| ][| ]*\([^|() ][^|() ]*\)[ ]*)/{ "\1",/g -s/^[ ]*targ_defvec=\([^ ]*\)/#if !defined (SELECT_VECS) || defined (HAVE_\1)\ -\&\1\ -#else\ -UNSUPPORTED_TARGET\ -#endif\ -},/ +t lab2 +s/^[ ]*targ_defvec=\([^ ]*\)/#if !defined (SELECT_VECS) || defined (HAVE_\1)/ +t lab3 s/.*=.*// s/;;// +b + :lab2 +H +d + :lab3 +G +s/\n/%EOL%/g +s/\(defined (HAVE_\)\([^)]*\)\(.*\)/\1\2\3\ +\&\2 },\ +#endif/ +s/%EOL%/\ +/g +p +s/.*//g +s/\n//g +h |