* Makefile.in: Rebuild dependencies.
[deliverable/binutils-gdb.git] / bfd / archures.c
index 9141d5e13014662d1efb54f4fe0faf7b7af849a6..a249ad0b4e6796bf144bed299365ff529f8e41e6 100644 (file)
@@ -1,8 +1,7 @@
 /* BFD library support routines for architectures.
-   Copyright (C) 1990-1991 Free Software Foundation, Inc.
+   Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
    Hacked by John Gilmore and 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
@@ -19,160 +18,196 @@ 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.  */
 
-/*doc*
-@section Architectures
-BFD's idea of an architecture is implimented in @code{archures.c}. BFD
-keeps one atom in a BFD describing the architecture of the data
-attached to the BFD;  a pointer to a @code{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 arch information is provided by each architecture package.  The
-set of default architectures is selected by the #define
-@code{SELECT_ARCHITECTURES}.  This is normally set up in the
-@code{config\/h\-} file of your choice.  If the name is not defined,
-then all the architectures supported are included.
+SECTION
+       Architectures
 
-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 arches 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 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.
 
-/*proto* bfd_architecture
-This enum gives the object file's CPU
-architecture, in a global sense.  E.g. what processor family does it
-belong to?  There is another field, which indicates what processor
-within the family is in use.  The machine gives a number which
-distingushes 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
-
-  bfd_arch_a29k,      {* AMD 29000 *}
-  bfd_arch_sparc,     {* SPARC *}
-  bfd_arch_mips,      {* MIPS Rxxxx *}
-  bfd_arch_i386,      {* Intel 386 *}
-  bfd_arch_ns32k,     {* National Semiconductor 32xxx *}
-  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 *}
-  bfd_arch_rs6000,    {* IBM RS/6000 *}
-  bfd_arch_last
-  };
-*-
+       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
+       @file{config/@var{target}.mt} file of your choice.  If the name is not
+       defined, then all the architectures supported are included. 
 
-stuff
+       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 @file{archures.c}.
 */
 
+/*
+
+SUBSECTION
+       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
+. {* start-sanitize-i960xl *}
+.#define bfd_mach_i960_xl       7
+. {* end-sanitize-i960xl *}
+.
+.  bfd_arch_a29k,      {* AMD 29000 *}
+.  bfd_arch_sparc,     {* SPARC *}
+.  bfd_arch_mips,      {* MIPS Rxxxx *}
+.  bfd_arch_i386,      {* Intel 386 *}
+.  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
+.  bfd_arch_powerpc,   {* PowerPC *}
+.  bfd_arch_rs6000,    {* IBM RS/6000 *}
+.  bfd_arch_hppa,      {* HP PA RISC *}
+.  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 *}
+. {* start-sanitize-rce *}
+.  bfd_arch_rce,       {* Motorola RCE *}
+. {* end-sanitize-rce *}
+. {* start-sanitize-arc *}
+.  bfd_arch_arc,       {* Argonaut RISC Core *}
+. {* end-sanitize-arc *}
+.  bfd_arch_last
+.  };
 
 
-/* $Id$ */
+*/
 
 #include "bfd.h"
 #include "sysdep.h"
 #include "libbfd.h"
 
-/*proto* bfd_arch_info
-This structure contains information on architectures.
-*+
-typedef int bfd_reloc_code_type;
-
-typedef struct bfd_arch_info 
-{
-  int bits_per_word;
-  int bits_per_address;
-  int bits_per_byte;
-  enum bfd_architecture arch;
-  long mach;
-  char *arch_name;
-  CONST  char *printable_name;
-{* true if this is the default machine for the architecture *}
-  boolean the_default; 
-  CONST struct bfd_arch_info * EXFUN((*compatible),(CONST struct bfd_arch_info *a,
-                                                    CONST struct bfd_arch_info *b));
-
-  boolean EXFUN((*scan),(CONST struct bfd_arch_info *,CONST char *));
-  unsigned int EXFUN((*disassemble),(bfd_vma addr, CONST char *data,
-                                    PTR stream));
-  CONST struct reloc_howto_struct *EXFUN((*reloc_type_lookup), (CONST struct
-                                                               bfd_arch_info *,
-                                                               bfd_reloc_code_type  code));
-
-  struct bfd_arch_info *next;
-
-} bfd_arch_info_type;
-
-
-*-
+/*
+
+SUBSECTION
+       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;
+.  long mach;
+.  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 *));
+.  {* How to disassemble an instruction, producing a printable
+.     representation on a specified stdio stream.  This isn't
+.     defined for most processors at present, because of the size
+.     of the additional tables it would drag in, and because gdb
+.     wants to use a different interface.  *}
+.  unsigned int (*disassemble) PARAMS ((bfd_vma addr, CONST char *data,
+.                                      PTR stream));
+.
+.  struct bfd_arch_info *next;
+.} bfd_arch_info_type;
 */
 
 bfd_arch_info_type   *bfd_arch_info_list;
 
 
-/*proto* bfd_printable_name
+/*
+FUNCTION
+       bfd_printable_name
 
-Return a printable string representing the architecture and machine
-from the pointer to the arch info structure 
+SYNOPSIS
+       CONST char *bfd_printable_name(bfd *abfd);
 
-*; CONST char *EXFUN(bfd_printable_name,(bfd *abfd));
+DESCRIPTION
+       Return a printable string representing the architecture and machine
+       from the pointer to the architecture info structure.
 
 */
 
 CONST char *
-DEFUN(bfd_printable_name, (abfd),
-      bfd *abfd) 
+bfd_printable_name (abfd)
+     bfd *abfd;
 {
   return abfd->arch_info->printable_name;
 }
 
 
 
-/*proto*
-*i bfd_scan_arch
-This routine is provided with a string and tries to work out if bfd
-supports any cpu which could be described with the name provided.  The
-routine returns a pointer to an arch_info structure if a machine is
-found, otherwise NULL.
+/*
+FUNCTION
+       bfd_scan_arch
+
+SYNOPSIS
+       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 @var{string}.  Return a pointer to an <<arch_info>>
+       structure if a machine is found, otherwise NULL.
 
-*; bfd_arch_info_type *EXFUN(bfd_scan_arch,(CONST char *));
 */
 
 bfd_arch_info_type *
-DEFUN(bfd_scan_arch,(string),
-      CONST char *string)
+bfd_scan_arch (string)
+     CONST char *string;
 {
   struct bfd_arch_info *ap;
 
@@ -189,72 +224,95 @@ DEFUN(bfd_scan_arch,(string),
 
 
 
-/*proto* bfd_arch_get_compatible
-This routine is used to determine whether two BFDs' architectures and
-machine types are compatible.  It 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.
+/*
+FUNCTION
+       bfd_arch_get_compatible
 
-*; CONST bfd_arch_info_type *EXFUN(bfd_arch_get_compatible,
-     (CONST bfd *abfd,
-     CONST bfd *bbfd));
+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.
 */
 
 CONST bfd_arch_info_type *
-DEFUN(bfd_arch_get_compatible,(abfd, bbfd),
-CONST    bfd *abfd AND
-CONST    bfd *bbfd)
-
+bfd_arch_get_compatible (abfd, bbfd)
+     CONST bfd *abfd;
+     CONST bfd *bbfd;
 {
   return  abfd->arch_info->compatible(abfd->arch_info,bbfd->arch_info);
 }
 
 
-/*proto-internal* bfd_default_arch_struct
+/*
+INTERNAL_DEFINITION
+       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.
 
-What bfds are seeded with 
+.extern bfd_arch_info_type bfd_default_arch_struct;
 
-*+
-extern bfd_arch_info_type bfd_default_arch_struct;
-*-
 */
 
 bfd_arch_info_type bfd_default_arch_struct =
-  {
-    32,32,8,bfd_arch_unknown,0,"unknown","unknown",true,
-    bfd_default_compatible, bfd_default_scan,
-
-  };
+{
+    32,32,8,bfd_arch_unknown,0,"unknown","unknown",2,true,
+    bfd_default_compatible,
+    bfd_default_scan, 
+    0,
+};
 
-/*proto* bfd_set_arch_info
+/*
+FUNCTION
+       bfd_set_arch_info
 
-*; void EXFUN(bfd_set_arch_info,(bfd *, bfd_arch_info_type *));
+SYNOPSIS
+       void bfd_set_arch_info(bfd *abfd, bfd_arch_info_type *arg);
 
+DESCRIPTION
+       Set the architecture info of @var{abfd} to @var{arg}.
 */
 
-void DEFUN(bfd_set_arch_info,(abfd, arg),
-bfd *abfd AND
-bfd_arch_info_type *arg)
+void
+bfd_set_arch_info (abfd, arg)
+     bfd *abfd;
+     bfd_arch_info_type *arg;
 {
   abfd->arch_info = arg;
 }
 
-/*proto-internal* bfd_default_set_arch_mach
+/*
+INTERNAL_FUNCTION
+       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));
+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 @var{abfd}
+       to @var{arch} and @var{mach}.  Find the correct
+       pointer to a structure and insert it into the <<arch_info>>
+       pointer. 
 */
 
-boolean DEFUN(bfd_default_set_arch_mach,(abfd, arch, mach),
-             bfd *abfd AND
-             enum bfd_architecture arch AND
-             unsigned    long mach)
+boolean
+bfd_default_set_arch_mach (abfd, arch, mach)
+     bfd *abfd;
+     enum bfd_architecture arch;
+     unsigned    long mach;
 {
   static struct bfd_arch_info *old_ptr = &bfd_default_arch_struct;
   boolean found = false;
@@ -276,7 +334,7 @@ boolean DEFUN(bfd_default_set_arch_mach,(abfd, arch, mach),
     if (found==false) {
       /*looked for it and it wasn't there, so put in the default */
       old_ptr = &bfd_default_arch_struct;
-
+      bfd_set_error (bfd_error_bad_value);
     }
   }
   else {
@@ -290,149 +348,206 @@ boolean DEFUN(bfd_default_set_arch_mach,(abfd, arch, mach),
 }
 
 
+/*
+FUNCTION
+       bfd_get_arch
 
+SYNOPSIS
+       enum bfd_architecture bfd_get_arch(bfd *abfd);
 
+DESCRIPTION
+       Return the enumerated type which describes the BFD @var{abfd}'s
+       architecture.
 
-/*proto* bfd_get_arch
-
-Returns the enumerated type which describes the supplied bfd's
-architecture
-
-*; enum bfd_architecture EXFUN(bfd_get_arch, (bfd *abfd));
 */
 
- enum bfd_architecture DEFUN(bfd_get_arch, (abfd), bfd *abfd)
-  {
+enum bfd_architecture
+bfd_get_arch (abfd)
+     bfd *abfd;
+{
     return abfd->arch_info->arch;
+}
 
+/*
+FUNCTION
+       bfd_get_mach
 
-  }
-
-/*proto* bfd_get_mach
-
-Returns the long type which describes the supplied bfd's
-machine
+SYNOPSIS
+       unsigned long bfd_get_mach(bfd *abfd);
 
-*; unsigned long EXFUN(bfd_get_mach, (bfd *abfd));
+DESCRIPTION
+       Return the long type which describes the BFD @var{abfd}'s
+       machine.
 */
 
-unsigned long  DEFUN(bfd_get_mach, (abfd), bfd *abfd)
+unsigned long  
+bfd_get_mach (abfd)
+     bfd *abfd;
 {
     return abfd->arch_info->mach;
-  }
-
-/*proto* bfd_arch_bits_per_byte
-
-Returns the number of bits in one of the architectures bytes
+}
 
-*; unsigned int EXFUN(bfd_arch_bits_per_byte, (bfd *abfd));
-*/
+/*
+FUNCTION
+       bfd_arch_bits_per_byte
 
-unsigned int DEFUN(bfd_arch_bits_per_byte, (abfd), bfd *abfd)
-  {
-    return abfd->arch_info->bits_per_byte;
-  }
+SYNOPSIS
+       unsigned int bfd_arch_bits_per_byte(bfd *abfd);
 
-/*proto* bfd_arch_bits_per_address
+DESCRIPTION
+       Return the number of bits in one of the BFD @var{abfd}'s
+       architecture's bytes.
 
-Returns the number of bits in one of the architectures addresses
-
-*; unsigned int EXFUN(bfd_arch_bits_per_address, (bfd *abfd));
 */
 
-unsigned int DEFUN(bfd_arch_bits_per_address, (abfd), bfd *abfd)
-  {
-    return abfd->arch_info->bits_per_address;
-  }
+unsigned int
+bfd_arch_bits_per_byte (abfd)
+     bfd *abfd;
+{
+  return abfd->arch_info->bits_per_byte;
+}
 
+/*
+FUNCTION
+       bfd_arch_bits_per_address
 
+SYNOPSIS
+       unsigned int bfd_arch_bits_per_address(bfd *abfd);
 
-extern void EXFUN(bfd_h8300_arch,(void));
-extern void EXFUN(bfd_i960_arch,(void));
-extern void EXFUN(bfd_empty_arch,(void));
-extern void EXFUN(bfd_sparc_arch,(void));
-extern void EXFUN(bfd_m88k_arch,(void));
-extern void EXFUN(bfd_m68k_arch,(void));
-extern void EXFUN(bfd_vax_arch,(void));
-extern void EXFUN(bfd_a29k_arch,(void));
-extern void EXFUN(bfd_mips_arch,(void));
-extern void EXFUN(bfd_i386_arch,(void));
-extern void EXFUN(bfd_rs6000_arch,(void));
+DESCRIPTION
+       Return the number of bits in one of the BFD @var{abfd}'s
+       architecture's addresses.
+*/
 
+unsigned int
+bfd_arch_bits_per_address (abfd)
+     bfd *abfd;
+{
+  return abfd->arch_info->bits_per_address;
+}
 
 
-static void EXFUN((*archures_init_table[]),()) = 
+extern void bfd_a29k_arch PARAMS ((void));
+extern void bfd_alpha_arch PARAMS ((void));
+/* start-sanitize-arc */
+extern void bfd_arc_arch PARAMS ((void));
+/* end-sanitize-arc */
+extern void bfd_arm_arch PARAMS ((void));
+extern void bfd_h8300_arch PARAMS ((void));
+extern void bfd_h8500_arch PARAMS ((void));
+extern void bfd_hppa_arch PARAMS ((void));
+extern void bfd_i386_arch PARAMS ((void));
+extern void bfd_i960_arch PARAMS ((void));
+extern void bfd_m68k_arch PARAMS ((void));
+extern void bfd_m88k_arch PARAMS ((void));
+extern void bfd_mips_arch PARAMS ((void));
+extern void bfd_powerpc_arch PARAMS ((void));
+extern void bfd_rs6000_arch PARAMS ((void));
+extern void bfd_sh_arch PARAMS ((void));
+/* start-sanitize-rce */
+extern void bfd_rce_arch PARAMS ((void));
+/* end-sanitize-rce */
+extern void bfd_sparc_arch PARAMS ((void));
+extern void bfd_vax_arch PARAMS ((void));
+extern void bfd_we32k_arch PARAMS ((void));
+extern void bfd_z8k_arch PARAMS ((void));
+extern void bfd_ns32k_arch PARAMS ((void));
+
+static void (*const archures_init_table[]) PARAMS ((void)) = 
 {
 #ifdef SELECT_ARCHITECTURES
   SELECT_ARCHITECTURES,
 #else
-  bfd_sparc_arch,
   bfd_a29k_arch,
-  bfd_mips_arch,
+  bfd_alpha_arch,
+/* start-sanitize-arc */
+  bfd_arc_arch,
+/* end-sanitize-arc */
+  bfd_arm_arch,
   bfd_h8300_arch,
+  bfd_h8500_arch,
+  bfd_hppa_arch,
   bfd_i386_arch,
-  bfd_m88k_arch,
   bfd_i960_arch,
   bfd_m68k_arch,
-  bfd_vax_arch,
+  bfd_m88k_arch,
+  bfd_mips_arch,
+  bfd_powerpc_arch,
   bfd_rs6000_arch,
+  bfd_sh_arch,
+/* start-sanitize-rce */
+  bfd_rce_arch,
+/* end-sanitize-rce */
+  bfd_sparc_arch,
+  bfd_vax_arch,
+  bfd_we32k_arch,
+  bfd_z8k_arch,
+  bfd_ns32k_arch,
 #endif
   0
   };
 
 
 
-/*proto-internal*
-
-This routine initializes the architecture dispatch table by calling
-all installed architecture packages and getting them to poke around.
+/*
+INTERNAL_FUNCTION 
+       bfd_arch_init
 
-*; PROTO(void, bfd_arch_init,(void));
+SYNOPSIS
+       void bfd_arch_init(void);
 
+DESCRIPTION
+       Initialize the architecture dispatch table by
+       calling all installed architecture packages and getting them
+       to poke around.
 */
 
 void
-DEFUN_VOID(bfd_arch_init)
+bfd_arch_init ()
 {
-  void EXFUN((**ptable),());
-  for (ptable = archures_init_table; 
-       *ptable ;
-       ptable++)
-      {
-       (*ptable)();
-      }
+    void (*const *ptable) PARAMS ((void));
+    for (ptable = archures_init_table; *ptable ; ptable++)
+      (*ptable)();
 }
 
 
-/*proto-internal* bfd_arch_linkin
-
-Link the provided arch info structure into the list
+/*
+INTERNAL_FUNCTION
+       bfd_arch_linkin
 
-*; void EXFUN(bfd_arch_linkin,(bfd_arch_info_type *));
+SYNOPSIS
+       void bfd_arch_linkin(bfd_arch_info_type *ptr);
 
+DESCRIPTION
+       Link the architecture info structure @var{ptr} into the list.
 */
 
-void DEFUN(bfd_arch_linkin,(ptr),
-          bfd_arch_info_type *ptr)
+void
+bfd_arch_linkin (ptr)
+     bfd_arch_info_type *ptr;
 {
   ptr->next = bfd_arch_info_list;
   bfd_arch_info_list = ptr;
 }
 
 
-/*proto-internal* bfd_default_compatible
+/*
+INTERNAL_FUNCTION 
+       bfd_default_compatible
 
-The default function for testing for compatibility 
+SYNOPSIS
+       CONST bfd_arch_info_type *bfd_default_compatible
+       (CONST bfd_arch_info_type *a,
+       CONST bfd_arch_info_type *b);
 
-*; CONST bfd_arch_info_type *EXFUN(bfd_default_compatible,
-     (CONST bfd_arch_info_type *a,
-     CONST bfd_arch_info_type *b));
+DESCRIPTION
+       The default function for testing for compatibility.
 */
 
 CONST bfd_arch_info_type *
-DEFUN(bfd_default_compatible,(a,b),
-      CONST bfd_arch_info_type *a AND
-      CONST bfd_arch_info_type *b)
+bfd_default_compatible (a,b)
+     CONST bfd_arch_info_type *a;
+     CONST bfd_arch_info_type *b;
 {
   if(a->arch != b->arch) return NULL;
 
@@ -445,169 +560,206 @@ DEFUN(bfd_default_compatible,(a,b),
   return a;
 }
 
-/*proto-internal* 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 *, CONST char *));
+/*
+INTERNAL_FUNCTION
+       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.
 */
 
 boolean 
-DEFUN(bfd_default_scan,(info, string),
-CONST struct bfd_arch_info *info AND
-CONST char *string)
+bfd_default_scan (info, string)
+     CONST struct bfd_arch_info *info;
+     CONST char *string;
 {
-  CONST  char *ptr_src;
-  CONST   char *ptr_tst;
-  unsigned long number;
-  enum bfd_architecture arch;
-  /* First test for an exact match */
-  if (strcmp(string, info->printable_name) == 0) return true;
-
-  /* See how much of the supplied string matches with the
-     architecture, eg the string m68k:68020 would match the 68k entry
-     up to the :, then we get left with the machine number */
-
-  for (ptr_src = string,
-       ptr_tst = info->arch_name; 
-       *ptr_src && *ptr_tst;
-       ptr_src++,
-       ptr_tst++) 
-      {
+    CONST  char *ptr_src;
+    CONST   char *ptr_tst;
+    unsigned long number;
+    enum bfd_architecture arch;
+    /* First test for an exact match */
+    if (strcmp(string, info->printable_name) == 0) return true;
+
+    /* See how much of the supplied string matches with the
+       architecture, eg the string m68k:68020 would match the 68k entry
+       up to the :, then we get left with the machine number */
+
+    for (ptr_src = string,
+        ptr_tst = info->arch_name; 
+        *ptr_src && *ptr_tst;
+        ptr_src++,
+        ptr_tst++) 
+    {
        if (*ptr_src != *ptr_tst) break;
-      }
+    }
 
-  /* Chewed up as much of the architecture as will match, skip any
-     colons */
-  if (*ptr_src == ':') ptr_src++;
+    /* Chewed up as much of the architecture as will match, skip any
+       colons */
+    if (*ptr_src == ':') ptr_src++;
   
-  if (*ptr_src == 0) {
-    /* nothing more, then only keep this one if it is the default
-       machine for this architecture */
-    return info->the_default;
-  }
-  number = 0;
-  while (isdigit(*ptr_src)) {
-    number = number * 10 + *ptr_src  - '0';
-    ptr_src++;
-  }
+    if (*ptr_src == 0) {
+           /* nothing more, then only keep this one if it is the default
+              machine for this architecture */
+           return info->the_default;
+       }
+    number = 0;
+    while (isdigit(*ptr_src)) {
+           number = number * 10 + *ptr_src  - '0';
+           ptr_src++;
+       }
+
+    switch (number) 
+    {
+     case 300:
+      arch = bfd_arch_h8300;
+      break;
+
+     case 500:
+      arch = bfd_arch_h8500;
+      break;
+
+      case 68010:
+      case 68020:
+      case 68030:
+      case 68040:
+      case 68332:
+      case 68050:        
+      case 68000: 
+       arch = bfd_arch_m68k; 
+       break;
+      case 386: 
+      case 80386:
+      case 486:
+      case 80486:
+       arch = bfd_arch_i386;
+       break;
+      case 29000: 
+       arch = bfd_arch_a29k;
+       break;
 
-  switch (number) {
-  case 68010:
-  case 68020:
-  case 68030:
-  case 68040:
-  case 68332:
-  case 68050:        
-  case 68000: 
-    arch = bfd_arch_m68k; 
-    break;
-  case 386: 
-  case 80386:
-  case 486:
-    arch = bfd_arch_i386;
-    break;
-  case 29000: 
-    arch = bfd_arch_a29k;
-    break;
-
-  case 32016:
-  case 32032:
-  case 32132:
-  case 32232:
-  case 32332:
-  case 32432:
-  case 32532:  
-  case 32000: 
-    arch = bfd_arch_ns32k; 
-    break;
-
-  case 860:
-  case 80860: 
-    arch = bfd_arch_i860; 
-    break;
-
-  case 6000:
-    arch = bfd_arch_rs6000;
-    break;
-
-  default:  
-    return false;
-  }
-  if (arch != info->arch) 
-    return false;
+       case 8000:
+       arch = bfd_arch_z8k;
+       break;
 
-  if (number != info->mach)
-    return false;
+      case 32000:
+       arch = bfd_arch_we32k;
+       break;
 
-  return true;
-}
+      case 860:
+      case 80860: 
+       arch = bfd_arch_i860; 
+       break;
+      case 960:
+      case 80960:
+       arch = bfd_arch_i960;
+       break;
 
+      case 2000:
+      case 3000:
+      case 4000:
+      case 4400:
+        arch = bfd_arch_mips;
+        break;
 
+      case 6000:
+       arch = bfd_arch_rs6000;
+       break;
 
+      default:  
+       return false;
+    }
+    if (arch != info->arch) 
+     return false;
 
-/*proto* bfd_get_arch_info
+    if (number != info->mach)
+     return false;
 
-*; bfd_arch_info_type * EXFUN(bfd_get_arch_info,(bfd *));
+    return true;
+}
+
+
+/*
+FUNCTION
+       bfd_get_arch_info
 
+SYNOPSIS
+       bfd_arch_info_type * bfd_get_arch_info(bfd *abfd);
+
+DESCRIPTION
+       Return the architecture info struct in @var{abfd}.
 */
 
 bfd_arch_info_type *
-DEFUN(bfd_get_arch_info,(abfd),
-bfd *abfd)
+bfd_get_arch_info (abfd)
+     bfd *abfd;
 {
   return  abfd->arch_info;
 }
 
 
-/*proto* bfd_lookup_arch
-*; bfd_arch_info_type * EXFUN(bfd_lookup_arch,(enum
-    bfd_architecture arch,long machine));
+/*
+FUNCTION
+       bfd_lookup_arch
 
-Look for the architecure info struct which matches the arguments
-given. A machine of 0 will match the machine/architecture structure which
-marks itself as the default.
+SYNOPSIS
+       bfd_arch_info_type *bfd_lookup_arch
+               (enum bfd_architecture
+               arch,
+               long machine);
 
+DESCRIPTION
+       Look for the architecure info structure which matches the
+       arguments @var{arch} and @var{machine}. A machine of 0 matches the
+       machine/architecture structure which marks itself as the
+       default.
 */
 
 bfd_arch_info_type * 
-DEFUN(bfd_lookup_arch,(arch, machine),
-enum bfd_architecture arch AND
-long machine)
+bfd_lookup_arch (arch, machine)
+     enum bfd_architecture arch;
+     long machine;
 {
-  bfd_arch_info_type *ap;
-  bfd_check_init();  
-  for (ap = bfd_arch_info_list; 
-       ap !=  (bfd_arch_info_type *)NULL;
-       ap = ap->next) {
-    if (ap->arch == arch &&
-       ((ap->mach == machine) || (ap->the_default && machine == 0))) {
-      return ap;
-    }
-  }
-  return (bfd_arch_info_type *)NULL;
+    bfd_arch_info_type *ap;
+    bfd_check_init();  
+    for (ap = bfd_arch_info_list; 
+        ap !=  (bfd_arch_info_type *)NULL;
+        ap = ap->next) {
+           if (ap->arch == arch &&
+               ((ap->mach == machine) 
+                || (ap->the_default && machine == 0))) {
+                   return ap;
+               }
+       }
+    return (bfd_arch_info_type *)NULL;
 }
 
 
+/*
+FUNCTION
+       bfd_printable_arch_mach
 
-/*proto* bfd_printable_arch_mach
-Return a printable string representing the architecture and machine
-type. 
+SYNOPSIS
+       CONST char *bfd_printable_arch_mach
+               (enum bfd_architecture arch, unsigned long machine);
 
-NB. The use of this routine is depreciated.
+DESCRIPTION
+       Return a printable string representing the architecture and
+       machine type. 
 
-*; PROTO(CONST char *,bfd_printable_arch_mach,
-    (enum bfd_architecture arch, unsigned long machine));
+       This routine is depreciated.
 */
 
 CONST char *
-DEFUN(bfd_printable_arch_mach,(arch, machine),
-      enum bfd_architecture arch AND
-      unsigned long machine)
+bfd_printable_arch_mach (arch, machine)
+     enum bfd_architecture arch;
+     unsigned long machine;
 {
-  bfd_arch_info_type *ap = bfd_lookup_arch(arch, machine);
-  if(ap) return ap->printable_name;
-  return "UNKNOWN!";
+    bfd_arch_info_type *ap = bfd_lookup_arch(arch, machine);
+    if(ap) return ap->printable_name;
+    return "UNKNOWN!";
 }
This page took 0.033323 seconds and 4 git commands to generate.