aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/.Sanitize1
-rw-r--r--bfd/ChangeLog12
-rw-r--r--bfd/Makefile.in5
-rwxr-xr-xbfd/config.bfd1
-rw-r--r--bfd/i386dynix.c76
-rw-r--r--bfd/targets.c11
6 files changed, 104 insertions, 2 deletions
diff --git a/bfd/.Sanitize b/bfd/.Sanitize
index bafe169..2b1cd91 100644
--- a/bfd/.Sanitize
+++ b/bfd/.Sanitize
@@ -153,6 +153,7 @@ hppabsd-core.c
hpux-core.c
i386aout.c
i386bsd.c
+i386dynix.c
i386linux.c
i386lynx.c
i386mach3.c
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6902205..fa10bbe 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,15 @@
+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.
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index c55d60b..ddd20a2 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -229,7 +229,7 @@ CFILES = libbfd.c opncls.c bfd.c archive.c targets.c cache.c \
coff-m88k.c coff-mips.c coff-sh.c trad-core.c cisco-core.c newsos3.c \
i386aout.c i386linux.c netbsd386.c i386mach3.c i386os9k.c \
bout.c aout-adobe.c coff-we32k.c \
- i386bsd.c cpu-h8300.c cpu-i960.c cpu-sparc.c cpu-m68k.c \
+ i386bsd.c i386dynix.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.c cpu-powerpc.c \
cpu-rs6000.c coff-h8300.c som.c cpu-hppa.c cpu-we32k.c reloc16.c \
mipsbsd.c cpu-sh.c \
@@ -602,6 +602,9 @@ coff-we32k.o : coff-we32k.c $(INCDIR)/coff/we32k.h \
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
i386bsd.o : i386bsd.c libaout.h aout-target.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386dynix.o : i386dynix.c libaout.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/dynix3.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h
cpu-h8300.o : cpu-h8300.c
cpu-i960.o : cpu-i960.c
cpu-sparc.o : cpu-sparc.c
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 669cf9d..ca52682 100755
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -35,6 +35,7 @@ case "${canon}" in
i[34]86-*-sysv*) bfd_name=i386-coff ;;
i[34]86-*-isc*) bfd_name=i386-coff ;;
i[34]86-*-sco*) bfd_name=i386-coff ;;
+ i[34]86-sequent-bsd*) bfd_name=i386-dynix ;;
i[34]86-*-bsd*) bfd_name=i386-bsd ;;
i[34]86-*-coff) bfd_name=i386-coff ;;
i[34]86-*-aix*) bfd_name=i386-coff ;;
diff --git a/bfd/i386dynix.c b/bfd/i386dynix.c
new file mode 100644
index 0000000..a27c517
--- /dev/null
+++ b/bfd/i386dynix.c
@@ -0,0 +1,76 @@
+/* BFD back-end for i386 a.out binaries under dynix.
+ Copyright (C) 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* This BFD is currently only tested with gdb, writing object files
+ may not work. */
+
+#define BYTES_IN_WORD 4
+#define ARCH 32
+
+#define TEXT_START_ADDR 4096
+#define PAGE_SIZE 4096
+#define SEGMENT_SIZE PAGE_SIZE
+
+#include "aout/dynix3.h"
+
+#define DEFAULT_ARCH bfd_arch_i386
+#define MACHTYPE_OK(mtype) ((mtype) == M_386 || (mtype) == M_UNKNOWN)
+
+#define MY(OP) CAT(i386dynix_,OP)
+#define TARGETNAME "a.out-i386-dynix"
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "libaout.h"
+
+/* (Ab)use some fields in the internal exec header to be able to read
+ executables that contain shared data. */
+
+#define a_shdata a_tload
+#define a_shdrsize a_dload
+#define aout_32_swap_exec_header_in dynix_swap_exec_header_in
+
+void
+dynix_swap_exec_header_in (abfd, raw_bytes, execp)
+ bfd *abfd;
+ struct external_exec *raw_bytes;
+ struct internal_exec *execp;
+{
+ struct external_exec *bytes = (struct external_exec *)raw_bytes;
+
+ /* The internal_exec structure has some fields that are unused in this
+ configuration (IE for i960), so ensure that all such uninitialized
+ fields are zero'd out. There are places where two of these structs
+ are memcmp'd, and thus the contents do matter. */
+ memset ((PTR) execp, 0, sizeof (struct internal_exec));
+ /* Now fill in fields in the execp, from the bytes in the raw data. */
+ execp->a_info = bfd_h_get_32 (abfd, bytes->e_info);
+ execp->a_text = GET_WORD (abfd, bytes->e_text);
+ execp->a_data = GET_WORD (abfd, bytes->e_data);
+ execp->a_bss = GET_WORD (abfd, bytes->e_bss);
+ execp->a_syms = GET_WORD (abfd, bytes->e_syms);
+ execp->a_entry = GET_WORD (abfd, bytes->e_entry);
+ execp->a_trsize = GET_WORD (abfd, bytes->e_trsize);
+ execp->a_drsize = GET_WORD (abfd, bytes->e_drsize);
+ execp->a_shdata = GET_WORD (abfd, bytes->e_shdata);
+ execp->a_shdrsize = GET_WORD (abfd, bytes->e_shdrsize);
+}
+
+#include "aout-target.h"
diff --git a/bfd/targets.c b/bfd/targets.c
index ddba2bf..d9775fe 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -269,6 +269,9 @@ Standard stuff.
. boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
. file_ptr, bfd_size_type));
. boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
+. boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
+. bfd *, sec_ptr));
+. boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));
Symbols and relocations.
@@ -288,6 +291,7 @@ Symbols and relocations.
. 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) PARAMS ((bfd *, asymbol *));
. alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));
.
@@ -315,7 +319,7 @@ Symbols and relocations.
. struct symbol_cache_entry **));
.
. boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
-. struct bfd_link_info *, struct symbol_cache_entry **));
+. struct bfd_link_info *, boolean *again));
.
. {* See documentation on reloc types. *}
. CONST struct reloc_howto_struct *
@@ -389,6 +393,7 @@ extern bfd_target hp300hpux_vec;
extern bfd_target som_vec;
extern bfd_target i386aout_vec;
extern bfd_target i386bsd_vec;
+extern bfd_target i386dynix_vec;
extern bfd_target i386os9k_vec;
extern bfd_target netbsd386_vec;
extern bfd_target i386coff_vec;
@@ -428,6 +433,7 @@ extern bfd_target symbolsrec_vec;
/* All of the xvecs for core files. */
extern bfd_target aix386_core_vec;
+extern bfd_target cisco_core_vec;
extern bfd_target hpux_core_vec;
extern bfd_target hppabsd_core_vec;
extern bfd_target irix_core_vec;
@@ -485,6 +491,9 @@ bfd_target *bfd_target_vector[] = {
&bfd_elf64_sparc_vec,
#endif
/* end-sanitize-v9 */
+ /* We don't include cisco_core_vec. Although it has a magic number,
+ the magic number isn't at the beginning of the file, and thus
+ might spuriously match other kinds of files. */
#ifdef BFD64
&demo_64_vec, /* Only compiled if host has long-long support */
#endif