aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Chamberlain <steve@cygnus>1991-10-01 03:55:40 +0000
committerSteve Chamberlain <steve@cygnus>1991-10-01 03:55:40 +0000
commit63ffe5ef86e4833dca5d777022df97677f171498 (patch)
tree81603023dcd1bc1eab2fc7fc5481710847383a33
parent7fe11a82b43a278ca46950f2e7d1176eff53132a (diff)
downloadgdb-63ffe5ef86e4833dca5d777022df97677f171498.zip
gdb-63ffe5ef86e4833dca5d777022df97677f171498.tar.gz
gdb-63ffe5ef86e4833dca5d777022df97677f171498.tar.bz2
Insert the incidentals and things I forgot to ci last time, same log message:
Mon Sep 30 15:13:46 1991 Steve Chamberlain (steve at cygnus.com) * 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.
-rw-r--r--bfd/.Sanitize84
-rw-r--r--bfd/Makefile.in18
-rw-r--r--bfd/bfd-in.h346
-rw-r--r--bfd/coff-a29k.c2
-rwxr-xr-xbfd/configure148
-rw-r--r--bfd/libbfd.h101
6 files changed, 664 insertions, 35 deletions
diff --git a/bfd/.Sanitize b/bfd/.Sanitize
index c848c12..58c808b 100644
--- a/bfd/.Sanitize
+++ b/bfd/.Sanitize
@@ -59,6 +59,17 @@ icoff.c
ieee.c
libaout.h
libbfd-in.h
+cpu-a29k.c
+cpu-i386.c
+cpu-m68k.c
+cpu-mips.c
+cpu-vax.c
+cpu-h8300.c
+cpu-i960.c
+cpu-m88k.c
+init.c
+howto.c
+cpu-sparc.c
libbfd.c
libbfd.h
libcoff-in.h
@@ -102,7 +113,78 @@ echo Done in `pwd`.
#
#
# $Log$
-# Revision 1.20 1991/09/04 03:59:15 rich
+# Revision 1.21 1991/10/01 03:55:34 steve
+# Insert the incidentals and things I forgot to ci last time, same log message:
+#
+# Mon Sep 30 15:13:46 1991 Steve Chamberlain (steve at cygnus.com)
+#
+# * 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.
+#
+# Revision 1.20 1991/09/04 03:59:15 rich
# Added "recover"'ability.
#
# Revision 1.19 1991/09/03 22:21:30 rich
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 136de67..4d25568 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -41,12 +41,16 @@ CFLAGS = -g $(HDEFINES) $(TDEFINES) $(CSEARCH) $(CSWITCHES) # -DINTEL960VERSION
BFD_LIBS = libbfd.o opncls.o bfd.o archive.o targets.o cache.o \
- archures.o core.o section.o format.o syms.o reloc.o
+ archures.o core.o section.o format.o syms.o reloc.o init.o
+
+BFD_MACHINES=cpu-h8300.o cpu-i960.o cpu-sparc.o cpu-m68k.o cpu-m88k.o \
+ cpu-vax.o cpu-mips.o cpu-a29k.o cpu-i386.o
BFD_BACKENDS = oasys.o ieee.o srec.o \
aout64.o aout32.o demo64.o sunos.o newsos3.o bout.o \
icoff.o amdcoff.o m68kcoff.o i386coff.o m88k-bcs.o ecoff.o
+
OPTIONAL_BACKENDS = trad-core.o
BFD_H=$(INCDIR)/bfd.h
@@ -56,15 +60,18 @@ SYSDEP_H=$(INCDIR)/sysdep.h
CFILES = libbfd.c opncls.c bfd.c archive.c targets.c cache.c archures.c \
i386coff.c aout64.c aout32.c sunos.c demo64.c icoff.c srec.c \
oasys.c ieee.c m68kcoff.c amdcoff.c \
- format.c section.c core.c syms.c reloc.c \
- m88k-bcs.c ecoff.c trad-core.c newsos3.c bout.c
+ format.c section.c core.c syms.c reloc.c init.c \
+ m88k-bcs.c ecoff.c trad-core.c newsos3.c bout.c \
+ cpu-h8300.c cpu-i960.c cpu-sparc.c cpu-m68k.c cpu-m88k.c \
+ cpu-vax.c cpu-mips.c cpu-a29k.c cpu-i386.o
+
STAGESTUFF = $(TARGETLIB) $(OFILES)
all: $(TARGETLIB)
# XDEPFILES comes from the host config; TDEPFILES from the target config.
-OFILES = $(BFD_LIBS) $(BFD_BACKENDS) $(XDEPFILES) $(TDEPFILES)
+OFILES = $(BFD_LIBS) $(BFD_BACKENDS) $(BFD_MACHINES) $(XDEPFILES) $(TDEPFILES)
$(TARGETLIB): $(OFILES)
rm -f $(TARGETLIB)
@@ -202,6 +209,9 @@ headers:
cp $(docdir)/bfd.h $(BFD_H)
cp $(docdir)/libbfd.h $(srcdir)/libbfd.h
cp $(docdir)/libcoff.h $(srcdir)/libcoff.h
+ rm -f $(docdir)/bfd-in.h
+ rm -f $(docdir)/libbfd-in.h
+ rm -f $(docdir)/libcoff-in.h
bfd.info:
( cd $(docdir); $(MAKE) bfd.info)
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
new file mode 100644
index 0000000..d674618
--- /dev/null
+++ b/bfd/bfd-in.h
@@ -0,0 +1,346 @@
+/* A -*- C -*- header file for the bfd library
+ Copyright 1990, 1991 Free Software Foundation, Inc.
+ Contributed by Cygnus Support.
+
+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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* bfd.h -- The only header file required by users of the bfd library
+
+This file is generated from various .c files, if you change it, your
+bits may be lost.
+
+All the prototypes and definitions following the comment "THE FOLLOWING
+IS EXTRACTED FROM THE SOURCE" are extracted from the source files for
+BFD. If you change it, someone oneday will extract it from the source
+again, and your changes will be lost. To save yourself from this bind,
+change the definitions in the source in the bfd directory. Type "make
+docs" and then "make headers" in that directory, and magically this file
+will change to reflect your changes.
+
+If you don't have the tools to perform the extraction, then you are
+safe from someone on your system trampling over your header files.
+You should still maintain the equivalence between the source and this
+file though; every change you make to the .c file should be reflected
+here. */
+
+#ifndef __BFD_H_SEEN__
+#define __BFD_H_SEEN__
+
+#include "ansidecl.h"
+#include "obstack.h"
+
+/* Make it easier to declare prototypes (puts conditional here) */
+#ifndef PROTO
+# if __STDC__
+# define PROTO(type, name, arglist) type name arglist
+# else
+# define PROTO(type, name, arglist) type name ()
+# endif
+#endif
+
+#define BFD_VERSION "1.15"
+
+/* forward declaration */
+typedef struct _bfd bfd;
+
+/* General rules: functions which are boolean return true on success
+ and false on failure (unless they're a predicate). -- bfd.doc */
+/* I'm sure this is going to break something and someone is going to
+ force me to change it. */
+typedef enum boolean {false, true} boolean;
+
+/* Try to avoid breaking stuff */
+typedef long int file_ptr;
+
+/* Support for different sizes of target format ints and addresses */
+
+#ifdef HOST_64_BIT
+typedef HOST_64_BIT rawdata_offset;
+typedef HOST_64_BIT bfd_vma;
+typedef HOST_64_BIT bfd_word;
+typedef HOST_64_BIT bfd_offset;
+typedef HOST_64_BIT bfd_size_type;
+typedef HOST_64_BIT symvalue;
+typedef HOST_64_BIT bfd_64_type;
+#define fprintf_vma(s,x) \
+ fprintf(s,"%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
+#define printf_vma(x) \
+ printf( "%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
+#else
+typedef struct {int a,b;} bfd_64_type;
+typedef unsigned long rawdata_offset;
+typedef unsigned long bfd_vma;
+typedef unsigned long bfd_offset;
+typedef unsigned long bfd_word;
+typedef unsigned long bfd_size;
+typedef unsigned long symvalue;
+typedef unsigned long bfd_size_type;
+#define printf_vma(x) printf( "%08lx", x)
+#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
+#endif
+
+typedef unsigned int flagword; /* 32 bits of flags */
+
+/** File formats */
+
+typedef enum bfd_format {
+ bfd_unknown = 0, /* file format is unknown */
+ bfd_object, /* linker/assember/compiler output */
+ bfd_archive, /* object archive file */
+ bfd_core, /* core dump */
+ bfd_type_end} /* marks the end; don't use it! */
+ bfd_format;
+
+/* Object file flag values */
+#define NO_FLAGS 0
+#define HAS_RELOC 001
+#define EXEC_P 002
+#define HAS_LINENO 004
+#define HAS_DEBUG 010
+#define HAS_SYMS 020
+#define HAS_LOCALS 040
+#define DYNAMIC 0100
+#define WP_TEXT 0200
+#define D_PAGED 0400
+
+
+/* symbols and relocation */
+
+typedef unsigned long symindex;
+
+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
+
+typedef enum bfd_symclass {
+ bfd_symclass_unknown = 0,
+ bfd_symclass_fcommon, /* fortran common symbols */
+ bfd_symclass_global, /* global symbol, what a surprise */
+ bfd_symclass_debugger, /* some debugger symbol */
+ bfd_symclass_undefined /* none known */
+ } symclass;
+
+
+typedef int symtype; /* Who knows, yet? */
+
+
+/* general purpose part of a symbol;
+ target specific parts will be found in libcoff.h, liba.out.h etc */
+
+
+#define bfd_get_section(x) ((x)->section)
+#define bfd_get_output_section(x) ((x)->section->output_section)
+#define bfd_set_section(x,y) ((x)->section) = (y)
+#define bfd_asymbol_base(x) ((x)->section?((x)->section->vma):0)
+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + x->value)
+#define bfd_asymbol_name(x) ((x)->name)
+
+/* This is a type pun with struct ranlib on purpose! */
+typedef struct carsym {
+ char *name;
+ file_ptr file_offset; /* look here to find the file */
+} carsym; /* to make these you call a carsymogen */
+
+
+/* Used in generating armaps. Perhaps just a forward definition would do? */
+struct orl { /* output ranlib */
+ char **name; /* symbol name */
+ file_ptr pos; /* bfd* or file position */
+ int namidx; /* index into string table */
+};
+
+
+
+/* Linenumber stuff */
+typedef struct lineno_cache_entry {
+ unsigned int line_number; /* Linenumber from start of function*/
+ union {
+ struct symbol_cache_entry *sym; /* Function name */
+ unsigned long offset; /* Offset into section */
+ } u;
+} alent;
+
+/* object and core file sections */
+
+
+#define align_power(addr, align) \
+ ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
+
+typedef struct sec *sec_ptr;
+
+#define bfd_section_name(bfd, ptr) ((ptr)->name)
+#define bfd_section_size(bfd, ptr) ((ptr)->size)
+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags)
+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
+
+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (val)), true)
+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
+
+typedef struct stat stat_type;
+
+/** Error handling */
+
+typedef enum bfd_error {
+ no_error = 0, system_call_error, invalid_target,
+ wrong_format, invalid_operation, no_memory,
+ no_symbols, no_relocation_info,
+ no_more_archived_files, malformed_archive,
+ symbol_not_found, file_not_recognized,
+ file_ambiguously_recognized, no_contents,
+ bfd_error_nonrepresentable_section,
+ invalid_error_code} bfd_ec;
+
+extern bfd_ec bfd_error;
+
+typedef struct bfd_error_vector {
+ PROTO(void,(* nonrepresentable_section ),(CONST bfd *CONST abfd,
+ CONST char *CONST name));
+} bfd_error_vector_type;
+
+PROTO (char *, bfd_errmsg, ());
+PROTO (void, bfd_perror, (CONST char *message));
+
+
+typedef enum bfd_print_symbol
+{
+ bfd_print_symbol_name_enum,
+ bfd_print_symbol_type_enum,
+ bfd_print_symbol_all_enum
+} bfd_print_symbol_enum_type;
+
+
+
+/* The code that implements targets can initialize a jump table with this
+ macro. It must name all its routines the same way (a prefix plus
+ the standard routine suffix), or it must #define the routines that
+ are not so named, before calling JUMP_TABLE in the initializer. */
+
+/* Semi-portable string concatenation in cpp */
+#ifndef CAT
+#ifdef __STDC__
+#define CAT(a,b) a##b
+#else
+#define CAT(a,b) a/**/b
+#endif
+#endif
+
+#define JUMP_TABLE(NAME)\
+CAT(NAME,_core_file_failing_command),\
+CAT(NAME,_core_file_failing_signal),\
+CAT(NAME,_core_file_matches_executable_p),\
+CAT(NAME,_slurp_armap),\
+CAT(NAME,_slurp_extended_name_table),\
+CAT(NAME,_truncate_arname),\
+CAT(NAME,_write_armap),\
+CAT(NAME,_close_and_cleanup), \
+CAT(NAME,_set_section_contents),\
+CAT(NAME,_get_section_contents),\
+CAT(NAME,_new_section_hook),\
+CAT(NAME,_get_symtab_upper_bound),\
+CAT(NAME,_get_symtab),\
+CAT(NAME,_get_reloc_upper_bound),\
+CAT(NAME,_canonicalize_reloc),\
+CAT(NAME,_make_empty_symbol),\
+CAT(NAME,_print_symbol),\
+CAT(NAME,_get_lineno),\
+CAT(NAME,_set_arch_mach),\
+CAT(NAME,_openr_next_archived_file),\
+CAT(NAME,_find_nearest_line),\
+CAT(NAME,_generic_stat_arch_elt),\
+CAT(NAME,_sizeof_headers),\
+CAT(NAME,_bfd_debug_info_start),\
+CAT(NAME,_bfd_debug_info_end),\
+CAT(NAME,_bfd_debug_info_accumulate)
+
+#define COFF_SWAP_TABLE coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in,
+
+/* User program access to BFD facilities */
+
+extern CONST short _bfd_host_big_endian;
+#define HOST_BYTE_ORDER_BIG_P (*(char *)&_bfd_host_big_endian)
+
+/* The bfd itself */
+
+/* Cast from const char * to char * so that caller can assign to
+ a char * without a warning. */
+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
+#define bfd_get_format(abfd) ((abfd)->format)
+#define bfd_get_target(abfd) ((abfd)->xvec->name)
+#define bfd_get_file_flags(abfd) ((abfd)->flags)
+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
+#define bfd_my_archive(abfd) ((abfd)->my_archive);
+#define bfd_has_map(abfd) ((abfd)->has_armap)
+#define bfd_header_twiddle_required(abfd) \
+ ((((abfd)->xvec->header_byteorder_big_p) \
+ != (boolean)HOST_BYTE_ORDER_BIG_P) ? true:false)
+
+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
+#define bfd_usrdata(abfd) ((abfd)->usrdata)
+
+#define bfd_get_start_address(abfd) ((abfd)->start_address)
+#define bfd_get_symcount(abfd) ((abfd)->symcount)
+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
+#define bfd_count_sections(abfd) ((abfd)->section_count)
+#define bfd_get_architecture(abfd) ((abfd)->obj_arch)
+#define bfd_get_machine(abfd) ((abfd)->obj_machine)
+
+
+
+#define BYTE_SIZE 1
+#define SHORT_SIZE 2
+#define LONG_SIZE 4
+
+
+
+/*THE FOLLOWING IS EXTRACTED FROM THE SOURCE */
+
+
+/*:init.c*/
+
+/*:opncls.c*/
+
+
+/*:libbfd.c*/
+
+/*:section.c*/
+
+
+/*:archures.c*/
+
+/*:howto.c*/
+/*:reloc.c*/
+
+/*:syms.c*/
+
+/*:bfd.c*/
+
+/*:archive.c*/
+
+/*:core.c*/
+
+/*:targets.c*/
+
+/*:format.c*/
+
+#endif
+
+
+
+
+
diff --git a/bfd/coff-a29k.c b/bfd/coff-a29k.c
index 09c011f..169bdc8 100644
--- a/bfd/coff-a29k.c
+++ b/bfd/coff-a29k.c
@@ -104,7 +104,7 @@ asection *input_section;
value -= reloc_entry->address;
if (value > 0x3ffff) {
fprintf(stderr,"Relocation problem : ");
- fprintf(stderr,"Jmp/call too far; to %d from %s\n",
+ fprintf(stderr,"Jmp/call too far; to %s from %s\n",
symbol_in->name,abfd->filename);
return(bfd_reloc_outofrange);
}
diff --git a/bfd/configure b/bfd/configure
index 175548b..2922578 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -323,7 +323,7 @@ for host in ${hosts} ; do
host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
host=${host_cpu}-${host_vendor}-${host_os}
- host_makefile_frag=config/h-${host}
+ host_makefile_frag=config/hmake-${host}
#### configure.in per-host parts come in here.
@@ -335,6 +335,7 @@ else
mips)
case "${host_vendor}" in
dec) bfd_host=dec3100 ;;
+ sgi) bfd_host=irix3 ;;
esac
;;
m88k)
@@ -376,8 +377,15 @@ else
esac
;;
- rtpc) bfd_host=rtbsd ;;
- tahoe | vax) bfd_host=${host_cpu} ;;
+ rtpc) bfd_host=rtbsd
+ ;;
+
+ a29k) bfd_host=ultra3
+ ;;
+
+ tahoe | vax)
+ bfd_host=${host_cpu}
+ ;;
esac
fi
@@ -397,7 +405,7 @@ host_makefile_frag=config/h-${bfd_host}
target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`
target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`
target=${target_cpu}-${target_vendor}-${target_os}
- target_makefile_frag=config/t-${target}
+ target_makefile_frag=config/tmake-${target}
#### configure.in per-target parts come in here.
@@ -432,9 +440,30 @@ hp)
;;
esac
;;
-none)
+sgi)
+ case "${target_cpu}" in
+ mips)
+ bfd_target=irix3 ;;
+ esac
+ ;;
+
+hitachi)
+ case "${target_cpu}" in
+ h8300) bfd_target=h8300-ieee ;;
+ *) echo "bad hitachi cpu" ;;
+ esac
+ ;;
+
+
+none|nyu)
case "${target_cpu}" in
i386) bfd_target=i386-coff ;;
+ a29k) case "${target_os}" in
+ aout) bfd_target=a29k-aout ;;
+ coff) bfd_target=a29k-coff ;;
+ sym1) bfd_target=a29k-coff ;;
+ esac
+ ;;
esac
;;
*)
@@ -711,19 +740,102 @@ exit 0
#
# $Log$
-# Revision 1.25 1991/09/03 20:48:23 steve
-# *** empty log message ***
-#
-# Revision 1.24 1991/08/23 20:55:21 gnu
-# * 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).
-#
-# Revision 1.23 1991/08/23 04:48:43 rich
+# Revision 1.28 1991/10/01 03:55:37 steve
+# Insert the incidentals and things I forgot to ci last time, same log message:
+#
+# Mon Sep 30 15:13:46 1991 Steve Chamberlain (steve at cygnus.com)
+#
+# * 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.
+#
+# Revision 1.27 1991/09/17 00:36:44 rich
+# Updated from configure.in.
+#
+# Revision 1.26 1991/09/13 02:19:42 gnu
+# Propagate
+#
+# Revision 1.37 1991/09/12 00:33:18 rich
+# Add gdbm.
+#
+# Revision 1.36 1991/08/31 03:54:36 rich
+# Welcome emacs to the mess.
+#
+# Revision 1.35 1991/08/26 04:29:31 rich
+# Welcome cvs to the big time.
+#
+# Revision 1.34 1991/08/25 23:40:23 rich
+# rcs enters the soup.
+#
+# Revision 1.33 1991/08/25 21:48:38 rich
+# Adding diff to the fray.
+#
+# Revision 1.32 1991/08/25 20:18:20 rich
+# Adding grep to the fray.
+#
+# Revision 1.31 1991/08/23 04:50:57 rich
# Minor config polish.
#
# Revision 1.22 1991/08/23 03:31:43 rich
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index f7b2912..0c3ad59 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -1,3 +1,4 @@
+
/* libbfd.h -- Declarations used by bfd library *implementation*.
(This include file is not for users of the library.)
Copyright (C) 1990-1991 Free Software Foundation, Inc.
@@ -72,7 +73,7 @@ PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
PROTO (bfd_size_type, bfd_read, (PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
-PROTO (bfd_size_type, bfd_write, (PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
+PROTO (bfd_size_type, bfd_write, (CONST PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
@@ -179,22 +180,32 @@ extern bfd *bfd_last_cache;
/* THE FOLLOWING IS EXTRACTED FROM THE SOURCE*/
-/* FROM libbfd.c*/
-/* ------------------------------START FROM libbfd.c
+/*:init.c*/
+/* bfd_check_init
+
+This routine is called before any other bfd function using initialized
+data is used to ensure that the structures have been initialized.
+Soon this function will go away, and the bfd library will assume that
+bfd_init has been called.
+*/
+
+ void EXFUN(bfd_check_init,(void));
+
+/*
+*/
-*i bfd_log2
+/*:libbfd.c*/
+/* *i bfd_log2
Return the log base 2 of the value supplied, rounded up. eg an arg
of 1025 would return 11.
*/
PROTO(bfd_vma, bfd_log2,(bfd_vma x));
/*
+*/
- --------------------------------END FROM libbfd.c*/
-
-/* FROM cache.c*/
-/* ------------------------------START FROM cache.c
- BFD_CACHE_MAX_OPEN
+/*:cache.c*/
+/* BFD_CACHE_MAX_OPEN
The maxiumum number of files which the cache will keep open at one
time.
*/
@@ -258,8 +269,76 @@ one first, to avoid running out of file descriptors.
PROTO(FILE *, bfd_cache_lookup_worker, (bfd *));
/*
+*/
+
+
+/*:reloc.c*/
+
+/*:cpu-h8300.c*/
+
+/*:cpu-i960.c*/
+
+/*:cpu-empty.c*/
+
+/*:howto.c*/
+
+/*:archures.c*/
+/* bfd_default_arch_struct
+
+What bfds are seeded with
+*/
+
+extern bfd_arch_info_struct_type bfd_default_arch_struct;
+
+/*
+ bfd_default_set_arch_mach
+
+Set the architecture and machine type in a bfd. This finds the correct
+pointer to structure and inserts it into the arch_info pointer.
+*/
+
+ boolean EXFUN(bfd_default_set_arch_mach,(bfd *abfd,
+ enum bfd_architecture arch,
+ unsigned long mach));
- --------------------------------END FROM cache.c*/
+/*
+
+This routine initializes the architecture dispatch table by calling
+all installed architecture packages and getting them to poke around.
+*/
+
+ PROTO(void, bfd_arch_init,(void));
+
+/*
+
+ bfd_arch_linkin
+
+Link the provided arch info structure into the list
+*/
+
+ void EXFUN(bfd_arch_linkin,(bfd_arch_info_struct_type *));
+
+/*
+
+ bfd_default_compatible
+
+The default function for testing for compatibility
+*/
+
+ CONST bfd_arch_info_struct_type *EXFUN(bfd_default_compatible,
+ (CONST bfd_arch_info_struct_type *a,
+ CONST bfd_arch_info_struct_type *b));
+
+/*
+
+ bfd_default_scan
+The default function for working out whether this is an architecture
+hit and a machine hit
+*/
+
+ boolean EXFUN(bfd_default_scan,(CONST struct bfd_arch_info_struct *, CONST char *));
+
+/*
+*/
-/* FROM reloc.c*/