Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
authorIan Lance Taylor <ian@airs.com>
Wed, 25 Mar 1998 20:12:49 +0000 (20:12 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 25 Mar 1998 20:12:49 +0000 (20:12 +0000)
* archures.c (bfd_mach_m68*): Add definitions for various m68k
variants.
(bfd_default_scan): Remove m68k special cases.
* bfd-in2.h: Rebuild.
* mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m680*
instead of plain numbers.
* sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
* cpu-m68k.c (arch_info_struct): Likewise.  Add entry for
m68k:68000.
(bfd_m68k_arch): Set mach field to zero to signal no explicit
selection, change printable_name to just "m68k" and make that the
default instead of m68k:68020.

bfd/ChangeLog
bfd/cpu-m68k.c [new file with mode: 0644]
bfd/mipsbsd.c
bfd/sparclynx.c

index c53e43523ea6cf3f8572bc3670224f6cac639d18..fdd9ae666ae5baf89d30f35d712a66500e2d3dd3 100644 (file)
@@ -1,5 +1,18 @@
 Wed Mar 25 13:59:24 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
+       * archures.c (bfd_mach_m68*): Add definitions for various m68k
+       variants.
+       (bfd_default_scan): Remove m68k special cases.
+       * bfd-in2.h: Rebuild.
+       * mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m680*
+       instead of plain numbers.
+       * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
+       * cpu-m68k.c (arch_info_struct): Likewise.  Add entry for
+       m68k:68000.
+       (bfd_m68k_arch): Set mach field to zero to signal no explicit
+       selection, change printable_name to just "m68k" and make that the
+       default instead of m68k:68020.
+
        * aout-tic30.c (NAME): Define this to avoid multiple definitions
        from aoutx.h.
        (MY_get_section_contents): Define as aout_32_get_section_contents
@@ -18,6 +31,9 @@ Wed Mar 25 10:41:35 1998  Richard Henderson  <rth@cygnus.com>
 
 Wed Mar 25 11:19:28 1998  Ian Lance Taylor  <ian@cygnus.com>
 
+       * libbfd-in.h (BFD_ALIGN): Cast this parameter to bfd_vma.
+       * libbfd.h: Rebuild.
+
        * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
        byte_count to unsigned int.
        (mn10300_elf_relax_section): Initialize internal_relocs.  Remove
diff --git a/bfd/cpu-m68k.c b/bfd/cpu-m68k.c
new file mode 100644 (file)
index 0000000..adf974a
--- /dev/null
@@ -0,0 +1,40 @@
+/* BFD library support routines for architectures.
+   Copyright (C) 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc.
+   Hacked by Steve Chamberlain of 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+#define N(name, print,d,next)  \
+{  32, 32, 8, bfd_arch_m68k, name, "m68k",print,2,d,bfd_default_compatible,bfd_default_scan, next, }
+
+static const bfd_arch_info_type arch_info_struct[] =
+{ 
+  N(bfd_mach_m68000,"m68k:68000",false, &arch_info_struct[1]),
+  N(bfd_mach_m68008,"m68k:68008",false, &arch_info_struct[2]),
+  N(bfd_mach_m68010,"m68k:68010",false, &arch_info_struct[3]),
+  N(bfd_mach_m68020,"m68k:68020",false, &arch_info_struct[4]),
+  N(bfd_mach_m68030,"m68k:68030",false, &arch_info_struct[5]),
+  N(bfd_mach_m68040,"m68k:68040",false, &arch_info_struct[6]),
+  N(bfd_mach_m68060,"m68k:68060",false, 0),
+};
+
+const bfd_arch_info_type bfd_m68k_arch =
+  N(0,"m68k",true, &arch_info_struct[0]);
index 9c610b430a1418c81d1b94e2c76ee32e4859fb38..9c569c6a8e790f91ec1d8360d18078515e4c8b4b 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD backend for MIPS BSD (a.out) binaries.
-   Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
    Written by Ralph Campbell.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -16,7 +16,7 @@ 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.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define BYTES_IN_WORD 4
 /* #define ENTRY_CAN_BE_ZERO */
@@ -28,8 +28,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
     )
 #define N_DATADDR(x) (N_TXTADDR(x)+N_TXTSIZE(x))
 #define TEXT_START_ADDR 4096
-#define PAGE_SIZE 4096
-#define SEGMENT_SIZE PAGE_SIZE
+#define TARGET_PAGE_SIZE 4096
+#define SEGMENT_SIZE TARGET_PAGE_SIZE
 #define DEFAULT_ARCH bfd_arch_mips
 #define MACHTYPE_OK(mtype) ((mtype) == M_UNKNOWN \
                            || (mtype) == M_MIPS1 || (mtype) == M_MIPS2)
@@ -127,11 +127,11 @@ MY(write_object_contents) (abfd)
   switch (bfd_get_arch(abfd)) {
   case bfd_arch_m68k:
     switch (bfd_get_mach(abfd)) {
-    case 68010:
+    case bfd_mach_m68010:
       N_SET_MACHTYPE(*execp, M_68010);
       break;
     default:
-    case 68020:
+    case bfd_mach_m68020:
       N_SET_MACHTYPE(*execp, M_68020);
       break;
     }
@@ -295,7 +295,7 @@ static reloc_howto_type mips_howto_table_ext[] = {
        "LO16",     false, 0, 0x0000ffff, false},
 };
 
-static const reloc_howto_type *
+static reloc_howto_type *
 MY(reloc_howto_type_lookup) (abfd, code)
      bfd *abfd;
      bfd_reloc_code_real_type code;
@@ -376,8 +376,9 @@ MY(canonicalize_reloc)(abfd, section, relptr, symbols)
 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 */
-  PAGE_SIZE,                   /* text vma */
+  TARGET_PAGE_SIZE,                    /* text vma */
   MY_set_sizes,
   0,                           /* text size includes exec header */
   0,                           /* add_dynamic_symbols */
@@ -392,16 +393,15 @@ const bfd_target aout_mips_little_vec =
 {
   "a.out-mips-little",         /* name */
   bfd_target_aout_flavour,
-  false,                       /* target byte order (little) */
-  false,                       /* target headers byte order (little) */
+  BFD_ENDIAN_LITTLE,           /* target byte order (little) */
+  BFD_ENDIAN_LITTLE,           /* target headers byte order (little) */
   (HAS_RELOC | EXEC_P |                /* object flags */
    HAS_LINENO | HAS_DEBUG |
    HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
   MY_symbol_leading_char,
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
-  1,                           /* minimum alignment */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
@@ -432,16 +432,15 @@ const bfd_target aout_mips_big_vec =
 {
   "a.out-mips-big",            /* name */
   bfd_target_aout_flavour,
-  true,                                /* target byte order (big) */
-  true,                                /* target headers byte order (big) */
+  BFD_ENDIAN_BIG,              /* target byte order (big) */
+  BFD_ENDIAN_BIG,              /* target headers byte order (big) */
   (HAS_RELOC | EXEC_P |                /* object flags */
    HAS_LINENO | HAS_DEBUG |
    HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
   MY_symbol_leading_char,
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
-  1,                           /* minimum alignment */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
      bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
index 14d2d3018494a69dbec2d286d4969cfcde4b8dba..abedc5dafe06a9d10d9d7454a3703de2a855cb75 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD support for Sparc binaries under LynxOS.
-   Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
+   Copyright (C) 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc.
 
 This file is part of BFD, the Binary File Descriptor library.
 
@@ -15,17 +15,15 @@ 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.  */
-
-#define ARCH 32
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #if 0
 #define BYTES_IN_WORD 4
 #define N_SHARED_LIB(x) 0
 
 #define TEXT_START_ADDR 0
-#define PAGE_SIZE 4096
-#define SEGMENT_SIZE PAGE_SIZE
+#define TARGET_PAGE_SIZE 4096
+#define SEGMENT_SIZE TARGET_PAGE_SIZE
 #define DEFAULT_ARCH bfd_arch_sparc
 
 #endif
@@ -38,7 +36,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "libbfd.h"
 
 #include "aout/sun4.h"
-#include "libaout.h"           /* BFD a.out internal data structures */
+#include "libaout.h"           /* BFD a.out internal data structures */
 
 #include "aout/aout64.h"
 #include "aout/stab_gnu.h"
@@ -64,7 +62,7 @@ int in the target format. It changes the sizes of the structs which
 perform the memory/disk mapping of structures.
 
 The 64 bit backend may only be used if the host compiler supports 64
-ints (eg long long with gcc), by defining the name @code{HOST_64_BIT} in @code{bfd.h}.
+ints (eg long long with gcc), by defining the name @code{BFD_HOST_64_BIT} in @code{bfd.h}.
 With this name defined, @emph{all} bfd operations are performed with 64bit
 arithmetic, not just those to a 64bit target.
 
@@ -79,167 +77,164 @@ The name put into the target vector.
 /*SUPPRESS529*/
 
 void
-DEFUN(NAME(lynxos,set_arch_mach), (abfd, machtype),
-      bfd *abfd AND int machtype)
+NAME(lynx,set_arch_mach) (abfd, machtype)
+     bfd *abfd;
+     int machtype;
 {
   /* Determine the architecture and machine type of the object file.  */
   enum bfd_architecture arch;
   long machine;
-  switch (machtype) {
+  switch (machtype)
+    {
 
-  case M_UNKNOWN:
+    case M_UNKNOWN:
       /* Some Sun3s make magic numbers without cpu types in them, so
         we'll default to the 68000. */
-    arch = bfd_arch_m68k;
-    machine = 68000;
-    break;
-    
-  case M_68010:
-  case M_HP200:
-    arch = bfd_arch_m68k;
-    machine = 68010;
-    break;
-    
-  case M_68020:
-  case M_HP300:
-    arch = bfd_arch_m68k;
-    machine = 68020;
-    break;
-    
-  case M_SPARC:
-    arch = bfd_arch_sparc;
-    machine = 0;
-    break;
-    
-  case M_386:
-  case M_386_DYNIX:
-    arch = bfd_arch_i386;
-    machine = 0;
-    break;
-    
-  case M_29K:
-    arch = bfd_arch_a29k;
-    machine = 0;
-    break;
-    
-  case M_HPUX:
-    arch = bfd_arch_m68k;
-    machine = 0;
-    break;
-
-  default:
-    arch = bfd_arch_obscure;
-    machine = 0;
-    break;
-  }
-  bfd_set_arch_mach(abfd, arch, machine);  
+      arch = bfd_arch_m68k;
+      machine = bfd_mach_m68000;
+      break;
+
+    case M_68010:
+    case M_HP200:
+      arch = bfd_arch_m68k;
+      machine = bfd_mach_m68010;
+      break;
+
+    case M_68020:
+    case M_HP300:
+      arch = bfd_arch_m68k;
+      machine = bfd_mach_m68020;
+      break;
+
+    case M_SPARC:
+      arch = bfd_arch_sparc;
+      machine = 0;
+      break;
+
+    case M_386:
+    case M_386_DYNIX:
+      arch = bfd_arch_i386;
+      machine = 0;
+      break;
+
+    case M_29K:
+      arch = bfd_arch_a29k;
+      machine = 0;
+      break;
+
+    case M_HPUX:
+      arch = bfd_arch_m68k;
+      machine = 0;
+      break;
+
+    default:
+      arch = bfd_arch_obscure;
+      machine = 0;
+      break;
+    }
+  bfd_set_arch_mach (abfd, arch, machine);
 }
 
 #define SET_ARCH_MACH(ABFD, EXEC) \
-  NAME(lynxos,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
+  NAME(lynx,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
   choose_reloc_size(ABFD);
 
 /* Determine the size of a relocation entry, based on the architecture */
 static void
-DEFUN(choose_reloc_size,(abfd),
-bfd *abfd)
+choose_reloc_size (abfd)
+     bfd *abfd;
 {
-  switch (bfd_get_arch(abfd)) {
-  case bfd_arch_sparc:
-  case bfd_arch_a29k:
-    obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
-    break;
-  default:
-    obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
-    break;
-  }
+  switch (bfd_get_arch (abfd))
+    {
+    case bfd_arch_sparc:
+    case bfd_arch_a29k:
+      obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
+      break;
+    default:
+      obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
+      break;
+    }
 }
 
-/* Write an object file in Lynxos format.
+/* Write an object file in LynxOS format.
   Section contents have already been written.  We write the
   file header, symbols, and relocation.  */
 
 static boolean
-DEFUN(NAME(aout,sparclynx_write_object_contents),
-      (abfd),
-      bfd *abfd)
+NAME(aout,sparclynx_write_object_contents) (abfd)
+     bfd *abfd;
 {
   struct external_exec exec_bytes;
   struct internal_exec *execp = exec_hdr (abfd);
-    
+
   /* Magic number, maestro, please!  */
-  switch (bfd_get_arch(abfd)) {
-  case bfd_arch_m68k:
-    switch (bfd_get_mach(abfd)) {
-    case 68010:
-      N_SET_MACHTYPE(*execp, M_68010);
+  switch (bfd_get_arch (abfd))
+    {
+    case bfd_arch_m68k:
+      switch (bfd_get_mach (abfd))
+       {
+       case bfd_mach_m68010:
+         N_SET_MACHTYPE (*execp, M_68010);
+         break;
+       default:
+       case bfd_mach_m68020:
+         N_SET_MACHTYPE (*execp, M_68020);
+         break;
+       }
       break;
-    default:
-    case 68020:
-      N_SET_MACHTYPE(*execp, M_68020);
+    case bfd_arch_sparc:
+      N_SET_MACHTYPE (*execp, M_SPARC);
+      break;
+    case bfd_arch_i386:
+      N_SET_MACHTYPE (*execp, M_386);
       break;
+    case bfd_arch_a29k:
+      N_SET_MACHTYPE (*execp, M_29K);
+      break;
+    default:
+      N_SET_MACHTYPE (*execp, M_UNKNOWN);
     }
-    break;
-  case bfd_arch_sparc:
-    N_SET_MACHTYPE(*execp, M_SPARC);
-    break;
-  case bfd_arch_i386:
-    N_SET_MACHTYPE(*execp, M_386);
-    break;
-  case bfd_arch_a29k:
-    N_SET_MACHTYPE(*execp, M_29K);
-    break;
-  default:
-    N_SET_MACHTYPE(*execp, M_UNKNOWN);
-  }
-    
-  choose_reloc_size(abfd);
 
-#if 0
-  /* Some tools want this to be 0, some tools want this to be one.
-     Today, it seems that 0 is the most important setting (PR1927) */
-  N_SET_FLAGS (*execp, 0x0);
-#else
-
-  /* Fri Jun 11 14:23:31 PDT 1993
-     FIXME 
-     Today's optimal setting is 1.  This is a pain, since it
-     reopens 1927.  This should be readdressed by creating a new
-     target for each each supported, giving perhaps sun3/m68k
-     and sun4/sparc a.out formats.
-     */
-  N_SET_FLAGS (*execp, 1);
-#endif
-    
-  WRITE_HEADERS(abfd, execp);
+  choose_reloc_size (abfd);
+
+  N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
+
+  WRITE_HEADERS (abfd, execp);
 
   return true;
 }
 
 #define MY_set_sizes sparclynx_set_sizes
 static boolean
-DEFUN (sparclynx_set_sizes, (abfd),
-       bfd *abfd)
+sparclynx_set_sizes (abfd)
+     bfd *abfd;
 {
   switch (bfd_get_arch (abfd))
     {
     default:
       return false;
     case bfd_arch_sparc:
-      adata(abfd).page_size = 0x2000;
-      adata(abfd).segment_size = 0x2000;
-      adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
+      adata (abfd).page_size = 0x2000;
+      adata (abfd).segment_size = 0x2000;
+      adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
       return true;
     case bfd_arch_m68k:
-      adata(abfd).page_size = 0x2000;
-      adata(abfd).segment_size = 0x20000;
-      adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
+      adata (abfd).page_size = 0x2000;
+      adata (abfd).segment_size = 0x20000;
+      adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
       return true;
     }
 }
 
-static CONST struct aout_backend_data sparclynx_aout_backend = {
-  0, 1, 0, sparclynx_set_sizes, 0,
+static CONST struct aout_backend_data sparclynx_aout_backend =
+{
+  0, 1, 0, 1, 0, sparclynx_set_sizes, 0,
+  0,                           /* add_dynamic_symbols */
+  0,                           /* add_one_symbol */
+  0,                           /* link_dynamic_object */
+  0,                           /* write_dynamic_symbol */
+  0,                           /* check_dynamic_reloc */
+  0                            /* finish_dynamic_link */
 };
 \f
 
@@ -253,18 +248,18 @@ static CONST struct aout_backend_data sparclynx_aout_backend = {
 
 #define TARGET_IS_BIG_ENDIAN_P
 
-#ifdef HOST_LYNX
+#ifdef LYNX_CORE
 
-char *lynx_core_file_failing_command();
-int lynx_core_file_failing_signal();
-boolean lynx_core_file_matches_executable_p();
-bfd_target *lynx_core_file_p();
+char *lynx_core_file_failing_command ();
+int lynx_core_file_failing_signal ();
+boolean lynx_core_file_matches_executable_p ();
+const bfd_target *lynx_core_file_p ();
 
 #define        MY_core_file_failing_command lynx_core_file_failing_command
 #define        MY_core_file_failing_signal lynx_core_file_failing_signal
 #define        MY_core_file_matches_executable_p lynx_core_file_matches_executable_p
 #define        MY_core_file_p lynx_core_file_p
 
-#endif /* HOST_LYNX */
+#endif /* LYNX_CORE */
 
 #include "aout-target.h"